  




    $(document).ready(function () {
        if (typeof treeviewDatasource != "undefined") {
            $("#ContentRouterFilter").kendoTreeView({
                dataSource: treeviewDatasource,
                select: onSelect
            });
        }

        var _keywords = getUrlParameter("keywords");
        if (_keywords != "") {

            $("a:contains(\'" + _keywords + "\')").addClass("contentRouterCategorySelectedTag");
        }


    });

    function onSelect(e) {
        var dataItem = this.dataItem(e.node);
        if (window.frba.byTagName == "True")
        {
        window.open(window.location.origin + window.location.pathname + "?keywords=" + dataItem.name,"_self");
        }
        if (window.frba.byGuid == "True") 
        {
        window.open(window.location.origin + window.location.pathname + "?keywordsIDs=" + dataItem.guid,"_self");
        } 
   }

function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};


!function(e,define){define("kendo.core.min",["jquery"],e)}(function(){return function(e,t,n){function r(){}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),r=e.substring(1);return"="===n?"+("+r+")+":":"===n?"+$kendoHtmlEncode("+r+")+":";"+e+";$kendoOutput+="}function i(e,t,n){return e+="",t=t||2,n=t-e.length,n?L[t].substring(0,n)+e:e}function a(e){var t=e.css(ye.support.transitions.css+"box-shadow")||e.css("box-shadow"),n=t?t.match(ze)||[0,0,0,0,0]:[0,0,0,0,0],r=Te.max(+n[3],+(n[4]||0));return{left:-n[1]+r,right:+n[1]+r,bottom:+n[2]+r}}function s(t,n){var r,o,i,a,s,u,l,c=ke.browser,d=ye._outerWidth,f=ye._outerHeight;return t.parent().hasClass("k-animation-container")?(u=t.parent(".k-animation-container"),l=u[0].style,u.is(":hidden")&&u.show(),r=De.test(l.width)||De.test(l.height),r||u.css({width:d(t),height:f(t),boxSizing:"content-box",mozBoxSizing:"content-box",webkitBoxSizing:"content-box"})):(o=t[0].style.width,i=t[0].style.height,a=De.test(o),s=De.test(i),r=a||s,!a&&(!n||n&&o)&&(o=d(t)),!s&&(!n||n&&i)&&(i=f(t)),t.wrap(e("<div/>").addClass("k-animation-container").css({width:o,height:i})),r&&t.css({width:"100%",height:"100%",boxSizing:"border-box",mozBoxSizing:"border-box",webkitBoxSizing:"border-box"})),c.msie&&Te.floor(c.version)<=7&&(t.css({zoom:1}),t.children(".k-menu").width(t.width())),t.parent()}function u(e){var t=1,n=arguments.length;for(t=1;t<n;t++)l(e,arguments[t]);return e}function l(e,t){var n,r,o,i,a,s=ye.data.ObservableArray,u=ye.data.LazyObservableArray,c=ye.data.DataSource,d=ye.data.HierarchicalDataSource;for(n in t)r=t[n],o=typeof r,i=o===Ae&&null!==r?r.constructor:null,i&&i!==Array&&i!==s&&i!==u&&i!==c&&i!==d&&i!==RegExp?r instanceof Date?e[n]=new Date(r.getTime()):_(r.clone)?e[n]=r.clone():(a=e[n],e[n]=typeof a===Ae?a||{}:{},l(e[n],r)):o!==Fe&&(e[n]=r);return e}function c(e,t,r){for(var o in t)if(t.hasOwnProperty(o)&&t[o].test(e))return o;return r!==n?r:e}function d(e){return e.replace(/([a-z][A-Z])/g,function(e){return e.charAt(0)+"-"+e.charAt(1).toLowerCase()})}function f(e){return e.replace(/\-(\w)/g,function(e,t){return t.toUpperCase()})}function p(t,n){var r,o={};return document.defaultView&&document.defaultView.getComputedStyle?(r=document.defaultView.getComputedStyle(t,""),n&&e.each(n,function(e,t){o[t]=r.getPropertyValue(t)})):(r=t.currentStyle,n&&e.each(n,function(e,t){o[t]=r[f(t)]})),ye.size(o)||(o=r),o}function m(e){if(e&&e.className&&"string"==typeof e.className&&e.className.indexOf("k-auto-scrollable")>-1)return!0;var t=p(e,["overflow"]).overflow;return"auto"==t||"scroll"==t}function h(t,r){var o,i=ke.browser.webkit,a=ke.browser.mozilla,s=t instanceof e?t[0]:t;if(t)return o=ke.isRtl(t),r===n?o&&i?s.scrollWidth-s.clientWidth-s.scrollLeft:Math.abs(s.scrollLeft):(s.scrollLeft=o&&i?s.scrollWidth-s.clientWidth-r:o&&a?-r:r,n)}function g(e){var t,n=0;for(t in e)e.hasOwnProperty(t)&&"toJSON"!=t&&n++;return n}function y(e,n,r){var o,i,a;return n||(n="offset"),o=e[n](),i={top:o.top,right:o.right,bottom:o.bottom,left:o.left},ke.browser.msie&&(ke.pointers||ke.msPointers)&&!r&&(a=ke.isRtl(e)?1:-1,i.top-=t.pageYOffset+a*document.documentElement.scrollTop,i.left-=t.pageXOffset+a*document.documentElement.scrollLeft),i}function v(e){var t={};return be("string"==typeof e?e.split(" "):e,function(e){t[e]=this}),t}function b(e){return new ye.effects.Element(e)}function w(e,t,n,r){return typeof e===He&&(_(t)&&(r=t,t=400,n=!1),_(n)&&(r=n,n=!1),typeof t===Pe&&(n=t,t=400),e={effects:e,duration:t,reverse:n,complete:r}),ve({effects:{},duration:400,reverse:!1,init:Se,teardown:Se,hide:!1},e,{completeCallback:e.complete,complete:Se})}function M(t,n,r,o,i){for(var a,s=0,u=t.length;s<u;s++)a=e(t[s]),a.queue(function(){B.promise(a,w(n,r,o,i))});return t}function S(e,t,n,r){return t&&(t=t.split(" "),be(t,function(t,n){e.toggleClass(n,r)})),e}function T(e){return(""+e).replace(Y,"&amp;").replace(J,"&lt;").replace(G,"&gt;").replace(q,"&quot;").replace(V,"&#39;")}function x(e,t){var r;return 0===t.indexOf("data")&&(t=t.substring(4),t=t.charAt(0).toLowerCase()+t.substring(1)),t=t.replace(oe,"-$1"),r=e.getAttribute("data-"+ye.ns+t),null===r?r=n:"null"===r?r=null:"true"===r?r=!0:"false"===r?r=!1:Ce.test(r)?r=parseFloat(r):ne.test(r)&&!re.test(r)&&(r=Function("return ("+r+")")()),r}function k(t,r){var o,i,a={};for(o in r)i=x(t,o),i!==n&&(te.test(o)&&(i="string"==typeof i?ye.template(e("#"+i).html()):t.getAttribute(o)),a[o]=i);return a}function D(t,n){return e.contains(t,n)?-1:1}function O(){var t=e(this);return e.inArray(t.attr("data-"+ye.ns+"role"),["slider","rangeslider"])>-1||t.is(":visible")}function z(e,t){var n=e.nodeName.toLowerCase();return(/input|select|textarea|button|object/.test(n)?!e.disabled:"a"===n?e.href||t:t)&&C(e)}function C(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function E(e,t){return new E.fn.init(e,t)}var H,_,A,N,P,F,R,U,I,W,$,L,j,B,Y,J,q,V,G,K,Q,Z,X,ee,te,ne,re,oe,ie,ae,se,ue,le,ce,de,fe,pe,me,he,ge,ye=t.kendo=t.kendo||{cultures:{}},ve=e.extend,be=e.each,we=e.isArray,Me=e.proxy,Se=e.noop,Te=Math,xe=t.JSON||{},ke={},De=/%/,Oe=/\{(\d+)(:[^\}]+)?\}/g,ze=/(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i,Ce=/^(\+|-?)\d+(\.?)\d*$/,Ee="function",He="string",_e="number",Ae="object",Ne="null",Pe="boolean",Fe="undefined",Re={},Ue={},Ie=[].slice;ye.version="2017.1.223".replace(/^\s+|\s+$/g,""),r.extend=function(e){var t,n,r=function(){},o=this,i=e&&e.init?e.init:function(){o.apply(this,arguments)};r.prototype=o.prototype,n=i.fn=i.prototype=new r;for(t in e)n[t]=null!=e[t]&&e[t].constructor===Object?ve(!0,{},r.prototype[t],e[t]):e[t];return n.constructor=i,i.extend=o.extend,i},r.prototype._initOptions=function(e){this.options=u({},this.options,e)},_=ye.isFunction=function(e){return"function"==typeof e},A=function(){this._defaultPrevented=!0},N=function(){return this._defaultPrevented===!0},P=r.extend({init:function(){this._events={}},bind:function(e,t,r){var o,i,a,s,u,l=this,c=typeof e===He?[e]:e,d=typeof t===Ee;if(t===n){for(o in e)l.bind(o,e[o]);return l}for(o=0,i=c.length;o<i;o++)e=c[o],s=d?t:t[e],s&&(r&&(a=s,s=function(){l.unbind(e,s),a.apply(l,arguments)},s.original=a),u=l._events[e]=l._events[e]||[],u.push(s));return l},one:function(e,t){return this.bind(e,t,!0)},first:function(e,t){var n,r,o,i,a=this,s=typeof e===He?[e]:e,u=typeof t===Ee;for(n=0,r=s.length;n<r;n++)e=s[n],o=u?t:t[e],o&&(i=a._events[e]=a._events[e]||[],i.unshift(o));return a},trigger:function(e,t){var n,r,o=this,i=o._events[e];if(i){for(t=t||{},t.sender=o,t._defaultPrevented=!1,t.preventDefault=A,t.isDefaultPrevented=N,i=i.slice(),n=0,r=i.length;n<r;n++)i[n].call(o,t);return t._defaultPrevented===!0}return!1},unbind:function(e,t){var r,o=this,i=o._events[e];if(e===n)o._events={};else if(i)if(t)for(r=i.length-1;r>=0;r--)i[r]!==t&&i[r].original!==t||i.splice(r,1);else o._events[e]=[];return o}}),F=/^\w+/,R=/\$\{([^}]*)\}/g,U=/\\\}/g,I=/__CURLY__/g,W=/\\#/g,$=/__SHARP__/g,L=["","0","00","000","0000"],H={paramName:"data",useWithBlock:!0,render:function(e,t){var n,r,o="";for(n=0,r=t.length;n<r;n++)o+=e(t[n]);return o},compile:function(e,t){var n,r,i,a=ve({},this,t),s=a.paramName,u=s.match(F)[0],l=a.useWithBlock,c="var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;";if(_(e))return e;for(c+=l?"with("+s+"){":"",c+="$kendoOutput=",r=e.replace(U,"__CURLY__").replace(R,"#=$kendoHtmlEncode($1)#").replace(I,"}").replace(W,"__SHARP__").split("#"),i=0;i<r.length;i++)c+=o(r[i],i%2===0);c+=l?";}":";",c+="return $kendoOutput;",c=c.replace($,"#");try{return n=Function(u,c),n._slotCount=Math.floor(r.length/2),n}catch(d){throw Error(ye.format("Invalid template:'{0}' Generated code:'{1}'",e,c))}}},function(){function e(e){return a.lastIndex=0,a.test(e)?'"'+e.replace(a,function(e){var t=s[e];return typeof t===He?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function t(i,a){var s,l,c,d,f,p,m=n,h=a[i];if(h&&typeof h===Ae&&typeof h.toJSON===Ee&&(h=h.toJSON(i)),typeof o===Ee&&(h=o.call(a,i,h)),p=typeof h,p===He)return e(h);if(p===_e)return isFinite(h)?h+"":Ne;if(p===Pe||p===Ne)return h+"";if(p===Ae){if(!h)return Ne;if(n+=r,f=[],"[object Array]"===u.apply(h)){for(d=h.length,s=0;s<d;s++)f[s]=t(s,h)||Ne;return c=0===f.length?"[]":n?"[\n"+n+f.join(",\n"+n)+"\n"+m+"]":"["+f.join(",")+"]",n=m,c}if(o&&typeof o===Ae)for(d=o.length,s=0;s<d;s++)typeof o[s]===He&&(l=o[s],c=t(l,h),c&&f.push(e(l)+(n?": ":":")+c));else for(l in h)Object.hasOwnProperty.call(h,l)&&(c=t(l,h),c&&f.push(e(l)+(n?": ":":")+c));return c=0===f.length?"{}":n?"{\n"+n+f.join(",\n"+n)+"\n"+m+"}":"{"+f.join(",")+"}",n=m,c}}var n,r,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",'"':'\\"',"\\":"\\\\"},u={}.toString;typeof Date.prototype.toJSON!==Ee&&(Date.prototype.toJSON=function(){var e=this;return isFinite(e.valueOf())?i(e.getUTCFullYear(),4)+"-"+i(e.getUTCMonth()+1)+"-"+i(e.getUTCDate())+"T"+i(e.getUTCHours())+":"+i(e.getUTCMinutes())+":"+i(e.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}),typeof xe.stringify!==Ee&&(xe.stringify=function(e,i,a){var s;if(n="",r="",typeof a===_e)for(s=0;s<a;s+=1)r+=" ";else typeof a===He&&(r=a);if(o=i,i&&typeof i!==Ee&&(typeof i!==Ae||typeof i.length!==_e))throw Error("JSON.stringify");return t("",{"":e})})}(),function(){function t(e){if(e){if(e.numberFormat)return e;if(typeof e===He){var t=ye.cultures;return t[e]||t[e.split("-")[0]]||null}return null}return null}function r(e){return e&&(e=t(e)),e||ye.cultures.current}function o(e,t,o){o=r(o);var a=o.calendars.standard,s=a.days,u=a.months;return t=a.patterns[t]||t,t.replace(c,function(t){var r,o,l;return"d"===t?o=e.getDate():"dd"===t?o=i(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=i(e.getMonth()+1):"MMM"===t?o=u.namesAbbr[e.getMonth()]:"MMMM"===t?o=u.names[e.getMonth()]:"yy"===t?o=i(e.getFullYear()%100):"yyyy"===t?o=i(e.getFullYear(),4):"h"===t?o=e.getHours()%12||12:"hh"===t?o=i(e.getHours()%12||12):"H"===t?o=e.getHours():"HH"===t?o=i(e.getHours()):"m"===t?o=e.getMinutes():"mm"===t?o=i(e.getMinutes()):"s"===t?o=e.getSeconds():"ss"===t?o=i(e.getSeconds()):"f"===t?o=Te.floor(e.getMilliseconds()/100):"ff"===t?(o=e.getMilliseconds(),o>99&&(o=Te.floor(o/10)),o=i(o)):"fff"===t?o=i(e.getMilliseconds(),3):"tt"===t?o=e.getHours()<12?a.AM[0]:a.PM[0]:"zzz"===t?(r=e.getTimezoneOffset(),l=r<0,o=(""+Te.abs(r/60)).split(".")[0],r=Te.abs(r)-60*o,o=(l?"+":"-")+i(o),o+=":"+i(r)):"zz"!==t&&"z"!==t||(o=e.getTimezoneOffset()/60,l=o<0,o=(""+Te.abs(o)).split(".")[0],o=(l?"+":"-")+("zz"===t?i(o):o)),o!==n?o:t.slice(1,t.length-1)})}function a(e,t,o){o=r(o);var i,a,l,c,w,M,S,T,x,k,D,O,z,C,E,H,_,A,N,P,F,R,U,I=o.numberFormat,W=I[h],$=I.decimals,L=I.pattern[0],j=[],B=e<0,Y=m,J=m,q=-1;if(e===n)return m;if(!isFinite(e))return e;if(!t)return o.name.length?e.toLocaleString():""+e;if(w=d.exec(t)){if(t=w[1].toLowerCase(),a="c"===t,l="p"===t,(a||l)&&(I=a?I.currency:I.percent,W=I[h],$=I.decimals,i=I.symbol,L=I.pattern[B?0:1]),c=w[2],c&&($=+c),"e"===t)return c?e.toExponential($):e.toExponential();if(l&&(e*=100),e=u(e,$),B=e<0,e=e.split(h),M=e[0],S=e[1],B&&(M=M.substring(1)),J=s(M,0,M.length,I),S&&(J+=W+S),"n"===t&&!B)return J;for(e=m,k=0,D=L.length;k<D;k++)O=L.charAt(k),e+="n"===O?J:"$"===O||"%"===O?i:O;return e}if(B&&(e=-e),(t.indexOf("'")>-1||t.indexOf('"')>-1||t.indexOf("\\")>-1)&&(t=t.replace(f,function(e){var t=e.charAt(0).replace("\\",""),n=e.slice(1).replace(t,"");return j.push(n),b})),t=t.split(";"),B&&t[1])t=t[1],C=!0;else if(0===e){if(t=t[2]||t[0],t.indexOf(y)==-1&&t.indexOf(v)==-1)return t}else t=t[0];if(P=t.indexOf("%"),F=t.indexOf("$"),l=P!=-1,a=F!=-1,l&&(e*=100),a&&"\\"===t[F-1]&&(t=t.split("\\").join(""),a=!1),(a||l)&&(I=a?I.currency:I.percent,W=I[h],$=I.decimals,i=I.symbol),z=t.indexOf(g)>-1,z&&(t=t.replace(p,m)),E=t.indexOf(h),D=t.length,E!=-1?(S=(""+e).split("e"),S=S[1]?u(e,Math.abs(S[1])):S[0],S=S.split(h)[1]||m,_=t.lastIndexOf(v)-E,H=t.lastIndexOf(y)-E,A=_>-1,N=H>-1,k=S.length,A||N||(t=t.substring(0,E)+t.substring(E+1),D=t.length,E=-1,k=0),A&&_>H?k=_:H>_&&(N&&k>H?k=H:A&&k<_&&(k=_)),k>-1&&(e=u(e,k))):e=u(e),H=t.indexOf(y),R=_=t.indexOf(v),q=H==-1&&_!=-1?_:H!=-1&&_==-1?H:H>_?_:H,H=t.lastIndexOf(y),_=t.lastIndexOf(v),U=H==-1&&_!=-1?_:H!=-1&&_==-1?H:H>_?H:_,q==D&&(U=q),q!=-1){for(J=(""+e).split(h),M=J[0],S=J[1]||m,T=M.length,x=S.length,B&&e*-1>=0&&(B=!1),e=t.substring(0,q),B&&!C&&(e+="-"),k=q;k<D;k++){if(O=t.charAt(k),E==-1){if(U-k<T){e+=M;break}}else if(_!=-1&&_<k&&(Y=m),E-k<=T&&E-k>-1&&(e+=M,k=E),E===k){e+=(S?W:m)+S,k+=U-E+1;continue}O===v?(e+=O,Y=O):O===y&&(e+=Y)}if(z&&(e=s(e,q+(B&&!C?1:0),Math.max(U,T+q),I)),U>=q&&(e+=t.substring(U+1)),a||l){for(J=m,k=0,D=e.length;k<D;k++)O=e.charAt(k),J+="$"===O||"%"===O?i:O;e=J}if(D=j.length)for(k=0;k<D;k++)e=e.replace(b,j[k])}return e}var s,u,l,c=/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,d=/^(n|c|p|e)(\d*)$/i,f=/(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g,p=/\,/g,m="",h=".",g=",",y="#",v="0",b="??",w="en-US",M={}.toString;ye.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}}},ye.culture=function(e){var r,o=ye.cultures;return e===n?o.current:(r=t(e)||o[w],r.calendar=r.calendars.standard,o.current=r,n)},ye.findCulture=t,ye.getCulture=r,ye.culture(w),s=function(e,t,r,o){var i,a,s,u,l,c,d=e.indexOf(o[h]),f=o.groupSize.slice(),p=f.shift();if(r=d!==-1?d:r+1,i=e.substring(t,r),a=i.length,a>=p){for(s=a,u=[];s>-1;)if(l=i.substring(s-p,s),l&&u.push(l),s-=p,c=f.shift(),p=c!==n?c:p,0===p){u.push(i.substring(0,s));break}i=u.reverse().join(o[g]),e=e.substring(0,t)+i+e.substring(r)}return e},u=function(e,t){return t=t||0,e=(""+e).split("e"),e=Math.round(+(e[0]+"e"+(e[1]?+e[1]+t:t))),e=(""+e).split("e"),e=+(e[0]+"e"+(e[1]?+e[1]-t:-t)),e.toFixed(Math.min(t,20))},l=function(e,t,r){if(t){if("[object Date]"===M.call(e))return o(e,t,r);if(typeof e===_e)return a(e,t,r)}return e!==n?e:""},ye.format=function(e){var t=arguments;return e.replace(Oe,function(e,n,r){var o=t[parseInt(n,10)+1];return l(o,r?r.substring(1):"")})},ye._extractFormat=function(e){return"{0:"===e.slice(0,3)&&(e=e.slice(3,e.length-1)),e},ye._activeElement=function(){try{return document.activeElement}catch(e){return document.documentElement.activeElement}},ye._round=u,ye._outerWidth=function(t,n){return e(t).outerWidth(n||!1)||0},ye._outerHeight=function(t,n){return e(t).outerHeight(n||!1)||0},ye.toString=l}(),function(){function t(e,t,n){return!(e>=t&&e<=n)}function r(e){return e.charAt(0)}function o(t){return e.map(t,r)}function i(e,t){t||23!==e.getHours()||e.setHours(e.getHours()+2)}function a(e){for(var t=0,n=e.length,r=[];t<n;t++)r[t]=(e[t]+"").toLowerCase();return r}function s(e){var t,n={};for(t in e)n[t]=a(e[t]);return n}function u(e,r,a){if(!e)return null;var u,l,c,d,f,h,g,y,v,w,M,S,T,x=function(e){for(var t=0;r[F]===e;)t++,F++;return t>0&&(F-=1),t},k=function(t){var n=b[t]||RegExp("^\\d{1,"+t+"}"),r=e.substr(R,t).match(n);return r?(r=r[0],R+=r.length,parseInt(r,10)):null},D=function(t,n){for(var r,o,i,a=0,s=t.length,u=0,l=0;a<s;a++)r=t[a],o=r.length,i=e.substr(R,o),n&&(i=i.toLowerCase()),i==r&&o>u&&(u=o,l=a);return u?(R+=u,l+1):null},O=function(){var t=!1;return e.charAt(R)===r[F]&&(R++,t=!0),t},z=a.calendars.standard,C=null,E=null,H=null,_=null,A=null,N=null,P=null,F=0,R=0,U=!1,I=new Date,W=z.twoDigitYearMax||2029,$=I.getFullYear();for(r||(r="d"),d=z.patterns[r],d&&(r=d),r=r.split(""),c=r.length;F<c;F++)if(u=r[F],U)"'"===u?U=!1:O();else if("d"===u){if(l=x("d"),z._lowerDays||(z._lowerDays=s(z.days)),null!==H&&l>2)continue;if(H=l<3?k(2):D(z._lowerDays[3==l?"namesAbbr":"names"],!0),null===H||t(H,1,31))return null}else if("M"===u){if(l=x("M"),z._lowerMonths||(z._lowerMonths=s(z.months)),E=l<3?k(2):D(z._lowerMonths[3==l?"namesAbbr":"names"],!0),null===E||t(E,1,12))return null;E-=1}else if("y"===u){if(l=x("y"),C=k(l),null===C)return null;2==l&&("string"==typeof W&&(W=$+parseInt(W,10)),C=$-$%100+C,C>W&&(C-=100))}else if("h"===u){if(x("h"),_=k(2),12==_&&(_=0),null===_||t(_,0,11))return null}else if("H"===u){if(x("H"),_=k(2),null===_||t(_,0,23))return null}else if("m"===u){if(x("m"),A=k(2),null===A||t(A,0,59))return null}else if("s"===u){if(x("s"),N=k(2),null===N||t(N,0,59))return null}else if("f"===u){if(l=x("f"),T=e.substr(R,l).match(b[3]),P=k(l),null!==P&&(P=parseFloat("0."+T[0],10),P=ye._round(P,3),P*=1e3),null===P||t(P,0,999))return null}else if("t"===u){if(l=x("t"),y=z.AM,v=z.PM,1===l&&(y=o(y),v=o(v)),f=D(v),!f&&!D(y))return null}else if("z"===u){if(h=!0,l=x("z"),"Z"===e.substr(R,1)){O();continue}if(g=e.substr(R,6).match(l>2?m:p),!g)return null;if(g=g[0].split(":"),w=g[0],M=g[1],!M&&w.length>3&&(R=w.length-2,M=w.substring(R),w=w.substring(0,R)),w=parseInt(w,10),t(w,-12,13))return null;if(l>2&&(M=parseInt(M,10),isNaN(M)||t(M,0,59)))return null}else if("'"===u)U=!0,O();else if(!O())return null;return S=null!==_||null!==A||N||null,null===C&&null===E&&null===H&&S?(C=$,E=I.getMonth(),H=I.getDate()):(null===C&&(C=$),null===H&&(H=1)),f&&_<12&&(_+=12),h?(w&&(_+=-w),M&&(A+=-M),e=new Date(Date.UTC(C,E,H,_,A,N,P))):(e=new Date(C,E,H,_,A,N,P),i(e,_)),C<100&&e.setFullYear(C),e.getDate()!==H&&h===n?null:e}function l(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 c(e){var t,n,r,o=Te.max(y.length,v.length),i=e.calendar.patterns,a=[];for(r=0;r<o;r++){for(t=y[r],n=0;n<t.length;n++)a.push(i[t[n]]);a=a.concat(v[r])}return a}var d=/\u00A0/g,f=/[eE][\-+]?[0-9]+/,p=/[+|\-]\d{1,2}/,m=/[+|\-]\d{1,2}:?\d{2}/,h=/^\/Date\((.*?)\)\/$/,g=/[+-]\d*/,y=[[],["G","g","F"],["D","d","y","m","T","t"]],v=[["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"]],b={2:/^\d{1,2}/,3:/^\d{1,3}/,4:/^\d{4}/},w={}.toString;ye.parseDate=function(e,t,n){var r,o,i,a;if("[object Date]"===w.call(e))return e;if(r=0,o=null,e&&0===e.indexOf("/D")&&(o=h.exec(e)))return o=o[1],a=g.exec(o.substring(1)),o=new Date(parseInt(o,10)),a&&(a=l(a[0]),o=ye.timezone.apply(o,0),o=ye.timezone.convert(o,0,-1*a)),o;for(n=ye.getCulture(n),t||(t=c(n)),t=we(t)?t:[t],i=t.length;r<i;r++)if(o=u(e,t[r],n))return o;return o},ye.parseInt=function(e,t){var n=ye.parseFloat(e,t);return n&&(n=0|n),n},ye.parseFloat=function(e,t,n){if(!e&&0!==e)return null;if(typeof e===_e)return e;e=""+e,t=ye.getCulture(t);var r,o,i=t.numberFormat,a=i.percent,s=i.currency,u=s.symbol,l=a.symbol,c=e.indexOf("-");return f.test(e)?(e=parseFloat(e.replace(i["."],".")),isNaN(e)&&(e=null),e):c>0?null:(c=c>-1,e.indexOf(u)>-1||n&&n.toLowerCase().indexOf("c")>-1?(i=s,r=i.pattern[0].replace("$",u).split("n"),e.indexOf(r[0])>-1&&e.indexOf(r[1])>-1&&(e=e.replace(r[0],"").replace(r[1],""),c=!0)):e.indexOf(l)>-1&&(o=!0,i=a,u=l),e=e.replace("-","").replace(u,"").replace(d," ").split(i[","].replace(d," ")).join("").replace(i["."],"."),e=parseFloat(e),isNaN(e)?e=null:c&&(e*=-1),e&&o&&(e/=100),e)}}(),function(){var r,o,i,a,s,u,l,d,f;ke._scrollbar=n,ke.scrollbar=function(e){if(isNaN(ke._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="&nbsp;",document.body.appendChild(n),ke._scrollbar=t=n.offsetWidth-n.scrollWidth,document.body.removeChild(n),t}return ke._scrollbar},ke.isRtl=function(t){return e(t).closest(".k-rtl").length>0},r=document.createElement("table");try{r.innerHTML="<tr><td></td></tr>",ke.tbodyInnerHtml=!0}catch(p){ke.tbodyInnerHtml=!1}ke.touch="ontouchstart"in t,o=document.documentElement.style,i=ke.transitions=!1,a=ke.transforms=!1,s="HTMLElement"in t?HTMLElement.prototype:[],ke.hasHW3D="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix||"MozPerspective"in o||"msPerspective"in o,ke.cssFlexbox="flexWrap"in o||"WebkitFlexWrap"in o||"msFlexWrap"in o,be(["Moz","webkit","O","ms"],function(){var e,t=""+this,n=typeof r.style[t+"Transition"]===He;if(n||typeof r.style[t+"Transform"]===He)return e=t.toLowerCase(),a={css:"ms"!=e?"-"+e+"-":"",prefix:t,event:"o"===e||"webkit"===e?e:""},n&&(i=a,i.event=i.event?i.event+"TransitionEnd":"transitionend"),!1}),r=null,ke.transforms=a,ke.transitions=i,ke.devicePixelRatio=t.devicePixelRatio===n?1:t.devicePixelRatio;try{ke.screenWidth=t.outerWidth||t.screen?t.screen.availWidth:t.innerWidth,ke.screenHeight=t.outerHeight||t.screen?t.screen.availHeight:t.innerHeight}catch(p){ke.screenWidth=t.screen.availWidth,ke.screenHeight=t.screen.availHeight}ke.detectOS=function(e){var n,r,o=!1,i=[],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/},u={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/},l={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(r in s)if(s.hasOwnProperty(r)&&(i=e.match(s[r]))){if("windows"==r&&"plugins"in navigator)return!1;o={},o.device=r,o.tablet=c(r,l,!1),o.browser=c(e,d,"default"),o.name=c(r,u),o[o.name]=!0,o.majorVersion=i[2],o.minorVersion=i[3].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!==Fe||typeof t.cordova!==Fe,o.appMode=t.navigator.standalone||/file|local|wmapp/.test(t.location.protocol)||o.cordova,o.android&&(ke.devicePixelRatio<1.5&&o.flatVersion<400||a)&&(ke.screenWidth>800||ke.screenHeight>800)&&(o.tablet=r);break}return o},u=ke.mobileOS=ke.detectOS(navigator.userAgent),ke.wpDevicePixelRatio=u.wp?screen.width/320:0,ke.hasNativeScrolling=!1,(u.ios||u.android&&u.majorVersion>2||u.wp)&&(ke.hasNativeScrolling=u),ke.delayedClick=function(){if(ke.touch){if(u.ios)return!0;if(u.android)return!ke.browser.chrome||!(ke.browser.version<32)&&!(e("meta[name=viewport]").attr("content")||"").match(/user-scalable=no/i)}return!1},ke.mouseAndTouchPresent=ke.touch&&!(ke.mobileOS.ios||ke.mobileOS.android),ke.detectBrowser=function(e){var t,n=!1,r=[],o={edge:/(edge)[ \/]([\w.]+)/i,webkit:/(chrome)[ \/]([\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)&&(r=e.match(o[t]))){n={},n[t]=!0,n[r[1].toLowerCase().split(" ")[0].split("/")[0]]=!0,n.version=parseInt(document.documentMode||r[2],10);break}return n},ke.browser=ke.detectBrowser(navigator.userAgent),ke.detectClipboardAccess=function(){var e={copy:!!document.queryCommandSupported&&document.queryCommandSupported("copy"),cut:!!document.queryCommandSupported&&document.queryCommandSupported("cut"),paste:!!document.queryCommandSupported&&document.queryCommandSupported("paste")};return ke.browser.chrome&&(e.paste=!1,ke.browser.version>=43&&(e.copy=!0,e.cut=!0)),e},ke.clipboard=ke.detectClipboardAccess(),ke.zoomLevel=function(){var e,n,r;try{return e=ke.browser,n=0,r=document.documentElement,e.msie&&11==e.version&&r.scrollHeight>r.clientHeight&&!ke.touch&&(n=ke.scrollbar()),ke.touch?r.clientWidth/t.innerWidth:e.msie&&e.version>=10?((top||t).document.documentElement.offsetWidth+n)/(top||t).innerWidth:1}catch(o){return 1}},ke.cssBorderSpacing=n!==o.borderSpacing&&!(ke.browser.msie&&ke.browser.version<8),function(t){var n="",r=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),ke.mobileOS&&(n+=" k-mobile"),ke.cssFlexbox||(n+=" k-no-flexbox"),r.addClass(n)}(ke.browser),ke.eventCapture=document.documentElement.addEventListener,l=document.createElement("input"),ke.placeholder="placeholder"in l,ke.propertyChangeEvent="onpropertychange"in l,ke.input=function(){for(var e,t=["number","date","time","month","week","datetime","datetime-local"],n=t.length,r="test",o={},i=0;i<n;i++)e=t[i],l.setAttribute("type",e),l.value=r,o[e.replace("-","")]="text"!==l.type&&l.value!==r;return o}(),l.style.cssText="float:left;",ke.cssFloat=!!l.style.cssFloat,l=null,ke.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}(),ke.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),r=n.length;r--;)if(n[r]==this)return!0;return!1},ke.pushState=t.history&&t.history.pushState,d=document.documentMode,ke.hashChange="onhashchange"in t&&!(ke.browser.msie&&(!d||d<=8)),ke.customElements="registerElement"in t.document,f=ke.browser.chrome,ke.msPointers=!f&&t.MSPointerEvent,ke.pointers=!f&&t.PointerEvent,ke.kineticScrollNeeded=u&&(ke.touch||ke.msPointers||ke.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"}},B={},e.extend(B,{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}}),B.promiseShim=B.promise,"kendoAnimate"in e.fn||ve(e.fn,{kendoStop:function(e,t){return this.stop(e,t)},kendoAnimate:function(e,t,n,r){return M(this,e,t,n,r)},kendoAddClass:function(e,t){return ye.toggleClass(this,e,t,!0)},kendoRemoveClass:function(e,t){return ye.toggleClass(this,e,t,!1)},kendoToggleClass:function(e,t,n){return ye.toggleClass(this,e,t,n)}}),Y=/&/g,J=/</g,q=/"/g,V=/'/g,G=/>/g,K=function(e){return e.target},ke.touch&&(K=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},be(["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap"],function(t,n){e.fn[n]=function(e){return this.bind(n,e)}})),ke.touch?ke.mobileOS?(ke.mousedown="touchstart",ke.mouseup="touchend",ke.mousemove="touchmove",ke.mousecancel="touchcancel",ke.click="touchend",ke.resize="orientationchange"):(ke.mousedown="mousedown touchstart",ke.mouseup="mouseup touchend",ke.mousemove="mousemove touchmove",ke.mousecancel="mouseleave touchcancel",ke.click="click",ke.resize="resize"):ke.pointers?(ke.mousemove="pointermove",ke.mousedown="pointerdown",ke.mouseup="pointerup",ke.mousecancel="pointercancel",ke.click="pointerup",ke.resize="orientationchange resize"):ke.msPointers?(ke.mousemove="MSPointerMove",ke.mousedown="MSPointerDown",ke.mouseup="MSPointerUp",ke.mousecancel="MSPointerCancel",ke.click="MSPointerUp",ke.resize="orientationchange resize"):(ke.mousemove="mousemove",ke.mousedown="mousedown",ke.mouseup="mouseup",ke.mousecancel="mouseleave",ke.click="click",ke.resize="resize"),Q=function(e,t){var n,r,o,i,a=t||"d",s=1;for(r=0,o=e.length;r<o;r++)i=e[r],""!==i&&(n=i.indexOf("["),0!==n&&(n==-1?i="."+i:(s++,i="."+i.substring(0,n)+" || {})"+i.substring(n))),s++,a+=i+(r<o-1?" || {})":")"));return Array(s).join("(")+a},Z=/^([a-z]+:)?\/\//i,ve(ye,{widgets:[],_widgetRegisteredCallbacks:[],ui:ye.ui||{},fx:ye.fx||b,effects:ye.effects||B,mobile:ye.mobile||{},data:ye.data||{},dataviz:ye.dataviz||{},drawing:ye.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:ye.support||ke,animate:ye.animate||M,ns:"",attr:function(e){return"data-"+ye.ns+e},getShadows:a,wrap:s,deepExtend:u,getComputedStyles:p,webComponents:ye.webComponents||[],isScrollable:m,scrollLeft:h,size:g,toCamelCase:f,toHyphens:d,getOffset:ye.getOffset||y,parseEffects:ye.parseEffects||v,toggleClass:ye.toggleClass||S,directions:ye.directions||j,Observable:P,Class:r,Template:H,template:Me(H.compile,H),render:Me(H.render,H),stringify:Me(xe.stringify,xe),eventTarget:K,htmlEncode:T,isLocalUrl:function(e){return e&&!Z.test(e)},expr:function(e,t,n){return e=e||"",typeof t==He&&(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=Q(e.split("."),n),e=e.replace(/_\$DOT\$_/g,".")):e=n+e,e},getter:function(e,t){var n=e+t;return Re[n]=Re[n]||Function("d","return "+ye.expr(e,t))},setter:function(e){return Ue[e]=Ue[e]||Function("d,value",ye.expr(e)+"=value")},accessor:function(e){return{get:ye.getter(e),set:ye.setter(e)}},guid:function(){var e,t,n="";for(e=0;e<32;e++)t=16*Te.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,"["+ye.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=ye.widgets.length;t<n;t++)e(ye.widgets[t]);ye._widgetRegisteredCallbacks.push(e)},logToConsole:function(e,r){var o=t.console;!ye.suppressLog&&n!==o&&o.log&&o[r||"log"](e)}}),X=P.extend({init:function(e,t){var n,r=this;r.element=ye.jQuery(e).handler(r),r.angular("init",t),
P.fn.init.call(r),n=t?t.dataSource:null,n&&(t=ve({},t,{dataSource:{}})),t=r.options=ve(!0,{},r.options,t),n&&(t.dataSource=n),r.element.attr(ye.attr("role"))||r.element.attr(ye.attr("role"),(t.name||"").toLowerCase()),r.element.data("kendo"+t.prefix+t.name,r),r.bind(r.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",r=e.attr(n)||t.attr(n);t.removeAttr(n),e.attr(n,isNaN(r)?0:r)},setOptions:function(t){this._setEvents(t),e.extend(this.options,t)},_setEvents:function(e){for(var t,n=this,r=0,o=n.events.length;r<o;r++)t=n.events[r],n.options[t]&&e[t]&&n.unbind(t,n.options[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 ye.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}}),ee=X.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}})}})}}),ye.dimensions=function(e,t){var n=e[0];return t&&e.css(t),{width:n.offsetWidth,height:n.offsetHeight}},ye.notify=Se,te=/template$/i,ne=/^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/,re=/^\{(\d+)(:[^\}]+)?\}|^\[[A-Za-z_]*\]$/,oe=/([A-Z])/g,ye.initWidget=function(r,o,i){var a,s,u,l,c,d,f,p,m,h,g,y,v;if(i?i.roles&&(i=i.roles):i=ye.ui.roles,r=r.nodeType?r:r[0],d=r.getAttribute("data-"+ye.ns+"role")){m=d.indexOf(".")===-1,u=m?i[d]:ye.getter(d)(t),g=e(r).data(),y=u?"kendo"+u.fn.options.prefix+u.fn.options.name:"",h=m?RegExp("^kendo.*"+d+"$","i"):RegExp("^"+y+"$","i");for(v in g)if(v.match(h)){if(v!==y)return g[v];a=g[v]}if(u){for(p=x(r,"dataSource"),o=e.extend({},k(r,u.fn.options),o),p&&(o.dataSource=typeof p===He?ye.getter(p)(t):p),l=0,c=u.fn.events.length;l<c;l++)s=u.fn.events[l],f=x(r,s),f!==n&&(o[s]=ye.getter(f)(t));return a?e.isEmptyObject(o)||a.setOptions(o):a=new u(r,o),a}}},ye.rolesFromNamespaces=function(e){var t,n,r=[];for(e[0]||(e=[ye.ui,ye.dataviz.ui]),t=0,n=e.length;t<n;t++)r[t]=e[t].roles;return ve.apply(null,[{}].concat(r.reverse()))},ye.init=function(t){var n=ye.rolesFromNamespaces(Ie.call(arguments,1));e(t).find("[data-"+ye.ns+"role]").addBack().each(function(){ye.initWidget(this,{},n)})},ye.destroy=function(t){e(t).find("[data-"+ye.ns+"role]").addBack().each(function(){var t,n=e(this).data();for(t in n)0===t.indexOf("kendo")&&typeof n[t].destroy===Ee&&n[t].destroy()})},ye.resize=function(t,n){var r,o=e(t).find("[data-"+ye.ns+"role]").addBack().filter(O);o.length&&(r=e.makeArray(o),r.sort(D),e.each(r,function(){var t=ye.widgetInstance(e(this));t&&t.resize(n)}))},ye.parseOptions=k,ve(ye.ui,{Widget:X,DataBoundWidget:ee,roles:{},progress:function(t,n){var r,o,i,a,s=t.find(".k-loading-mask"),u=ye.support,l=u.browser;n?s.length||(r=u.isRtl(t),o=r?"right":"left",a=t.scrollLeft(),i=l.webkit&&r?t[0].scrollWidth-t.width()-2*a:0,s=e("<div class='k-loading-mask'><span class='k-loading-text'>"+ye.ui.progress.messages.loading+"</span><div class='k-loading-image'/><div class='k-loading-color'/></div>").width("100%").height("100%").css("top",t.scrollTop()).css(o,Math.abs(a)+i).prependTo(t)):s&&s.remove()},plugin:function(t,r,o){var i,a,s,u,l=t.fn.options.name;for(r=r||ye.ui,o=o||"",r[l]=t,r.roles[l.toLowerCase()]=t,i="getKendo"+o+l,l="kendo"+o+l,a={name:l,widget:t,prefix:o||""},ye.widgets.push(a),s=0,u=ye._widgetRegisteredCallbacks.length;s<u;s++)ye._widgetRegisteredCallbacks[s](a);e.fn[l]=function(r){var o,i=this;return typeof r===He?(o=Ie.call(arguments,1),this.each(function(){var t,a,s=e.data(this,l);if(!s)throw Error(ye.format("Cannot call method '{0}' of {1} before it is initialized",r,l));if(t=s[r],typeof t!==Ee)throw Error(ye.format("Cannot find method '{0}' of {1}",r,l));if(a=t.apply(s,o),a!==n)return i=a,!1})):this.each(function(){return new t(this,r)}),i},e.fn[l].widget=t,e.fn[i]=function(){return this.data(l)}}}),ye.ui.progress.messages={loading:"Loading..."},ie={bind:function(){return this},nullObject:!0,options:{}},ae=X.extend({init:function(e,t){X.fn.init.call(this,e,t),this.element.autoApplyNS(),this.wrapper=this.element,this.element.addClass("km-widget")},destroy:function(){X.fn.destroy.call(this),this.element.kendoDestroy()},options:{prefix:"Mobile"},events:[],view:function(){var e=this.element.closest(ye.roleSelector("view splitview modalview drawer"));return ye.widgetInstance(e,ye.mobile.ui)||ie},viewHasNativeScrolling:function(){var e=this.view();return e&&e.options.useNativeScrolling},container:function(){var e=this.element.closest(ye.roleSelector("view layout modalview drawer splitview"));return ye.widgetInstance(e.eq(0),ye.mobile.ui)||ie}}),ve(ye.mobile,{init:function(e){ye.init(e,ye.mobile.ui,ye.ui,ye.dataviz.ui)},appLevelNativeScrolling:function(){return ye.mobile.application&&ye.mobile.application.options&&ye.mobile.application.options.useNativeScrolling},roles:{},ui:{Widget:ae,DataBoundWidget:ee.extend(ae.prototype),roles:{},plugin:function(e){ye.ui.plugin(e,ye.mobile.ui,"Mobile")}}}),u(ye.dataviz,{init:function(e){ye.init(e,ye.dataviz.ui)},ui:{roles:{},themes:{},views:[],plugin:function(e){ye.ui.plugin(e,ye.dataviz.ui)}},roles:{}}),ye.touchScroller=function(t,n){return n||(n={}),n.useNative=!0,e(t).map(function(t,r){return r=e(r),!(!ke.kineticScrollNeeded||!ye.mobile.ui.Scroller||r.data("kendoMobileScroller"))&&(r.kendoMobileScroller(n),r.data("kendoMobileScroller"))})[0]},ye.preventDefault=function(e){e.preventDefault()},ye.widgetInstance=function(e,n){var r,o,i,a,s=e.data(ye.ns+"role"),u=[];if(s){if("content"===s&&(s="scroller"),n)if(n[0])for(r=0,o=n.length;r<o;r++)u.push(n[r].roles[s]);else u.push(n.roles[s]);else u=[ye.ui.roles[s],ye.dataviz.ui.roles[s],ye.mobile.ui.roles[s]];for(s.indexOf(".")>=0&&(u=[ye.getter(s)(t)]),r=0,o=u.length;r<o;r++)if(i=u[r],i&&(a=e.data("kendo"+i.fn.options.prefix+i.fn.options.name)))return a}},ye.onResize=function(n){var r=n;return ke.mobileOS.android&&(r=function(){setTimeout(n,600)}),e(t).on(ke.resize,r),r},ye.unbindResize=function(n){e(t).off(ke.resize,n)},ye.attrValue=function(e,t){return e.data(ye.ns+t)},ye.days={Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6},e.extend(e.expr[":"],{kendoFocusable:function(t){var n=e.attr(t,"tabindex");return z(t,!isNaN(n)&&n>-1)}}),se=["mousedown","mousemove","mouseenter","mouseleave","mouseover","mouseout","mouseup","click"],ue="label, input, [data-rel=external]",le={setupMouseMute:function(){var t,n=0,r=se.length,o=document.documentElement;if(!le.mouseTrap&&ke.eventCapture)for(le.mouseTrap=!0,le.bustClick=!1,le.captureMouse=!1,t=function(t){le.captureMouse&&("click"===t.type?le.bustClick&&!e(t.target).is(ue)&&(t.preventDefault(),t.stopPropagation()):t.stopPropagation())};n<r;n++)o.addEventListener(se[n],t,!0)},muteMouse:function(e){le.captureMouse=!0,e.data.bustClick&&(le.bustClick=!0),clearTimeout(le.mouseTrapTimeoutID)},unMuteMouse:function(){clearTimeout(le.mouseTrapTimeoutID),le.mouseTrapTimeoutID=setTimeout(function(){le.captureMouse=!1,le.bustClick=!1},400)}},ce={down:"touchstart mousedown",move:"mousemove touchmove",up:"mouseup touchend touchcancel",cancel:"mouseleave touchcancel"},ke.touch&&(ke.mobileOS.ios||ke.mobileOS.android)?ce={down:"touchstart",move:"touchmove",up:"touchend touchcancel",cancel:"touchcancel"}:ke.pointers?ce={down:"pointerdown",move:"pointermove",up:"pointerup",cancel:"pointercancel pointerleave"}:ke.msPointers&&(ce={down:"MSPointerDown",move:"MSPointerMove",up:"MSPointerUp",cancel:"MSPointerCancel MSPointerLeave"}),!ke.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 r,o=this,i=t.relatedTarget,a=t.handleObj;return i&&(i===o||e.contains(o,i))||(t.type=a.origType,r=a.handler.apply(this,arguments),t.type=n),r}}}),de=function(e){return ce[e]||e},fe=/([^ ]+)/g,ye.applyEventMap=function(e,t){return e=e.replace(fe,de),t&&(e=e.replace(fe,"$1."+t)),e},pe=e.fn.on,ve(!0,E,e),E.fn=E.prototype=new e,E.fn.constructor=E,E.fn.init=function(t,n){return n&&n instanceof e&&!(n instanceof E)&&(n=E(n)),e.fn.init.call(this,t,n,me)},E.fn.init.prototype=E.fn,me=E(document),ve(E.fn,{handler:function(e){return this.data("handler",e),this},autoApplyNS:function(e){return this.data("kendoNS",e||ye.guid()),this},on:function(){var e,t,n,r,o,i,a=this,s=a.data("kendoNS");return 1===arguments.length?pe.call(a,arguments[0]):(e=a,t=Ie.call(arguments),typeof t[t.length-1]===Fe&&t.pop(),n=t[t.length-1],r=ye.applyEventMap(t[0],s),ke.mouseAndTouchPresent&&r.search(/mouse|click/)>-1&&this[0]!==document.documentElement&&(le.setupMouseMute(),o=2===t.length?null:t[1],i=r.indexOf("click")>-1&&r.indexOf("touchend")>-1,pe.call(this,{touchstart:le.muteMouse,touchend:le.unMuteMouse},o,{bustClick:i})),typeof n===He&&(e=a.data("handler"),n=e[n],t[t.length-1]=function(t){n.call(e,t)}),t[0]=r,pe.apply(a,t),a)},kendoDestroy:function(e){return e=e||this.data("kendoNS"),e&&this.off("."+e),this}}),ye.jQuery=E,ye.eventMap=ce,ye.timezone=function(){function e(e,t){var n,r,o,i=t[3],a=t[4],s=t[5],u=t[8];return u||(t[8]=u={}),u[e]?u[e]:(isNaN(a)?0===a.indexOf("last")?(n=new Date(Date.UTC(e,c[i]+1,1,s[0]-24,s[1],s[2],0)),r=d[a.substr(4,3)],o=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+r-o-(r>o?7:0))):a.indexOf(">=")>=0&&(n=new Date(Date.UTC(e,c[i],a.substr(5),s[0],s[1],s[2],0)),r=d[a.substr(0,3)],o=n.getUTCDay(),n.setUTCDate(n.getUTCDate()+r-o+(r<o?7:0))):n=new Date(Date.UTC(e,c[i],a,s[0],s[1],s[2],0)),u[e]=n)}function t(t,n,r){var o,i,a,s;return(n=n[r])?(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=r.split(":"),i=0,o.length>1&&(i=60*o[0]+ +o[1]),[-1e6,"max","-","Jan",1,[0,0,0],i,"-"])}function n(e,t,n){var r,o,i,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(r=a.length-1;r>=0&&(o=a[r][3],!(o&&e>o));r--);if(i=a[r+1],!i)throw Error('Timezone "'+n+'" not found on '+e+".");return i}function r(e,r,o,i){typeof e!=_e&&(e=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));var a=n(e,r,i);return{zone:a,rule:t(e,o,a[1])}}function o(e,t){var n,o,i;return"Etc/UTC"==t||"Etc/GMT"==t?0:(n=r(e,this.zones,this.rules,t),o=n.zone,i=n.rule,ye.parseFloat(i?o[0]-i[6]:o[0]))}function i(e,t){var n=r(e,this.zones,this.rules,t),o=n.zone,i=n.rule,a=o[2];return a.indexOf("/")>=0?a.split("/")[i&&+i[6]?1:0]:a.indexOf("%s")>=0?a.replace("%s",i&&"-"!=i[7]?i[7]:""):a}function a(e,t,n){var r,o;return typeof t==He&&(t=this.offset(e,t)),typeof n==He&&(n=this.offset(e,n)),r=e.getTimezoneOffset(),e=new Date(e.getTime()+6e4*(t-n)),o=e.getTimezoneOffset(),new Date(e.getTime()+6e4*(o-r))}function s(e,t){return this.convert(e,e.getTimezoneOffset(),t)}function u(e,t){return this.convert(e,t,e.getTimezoneOffset())}function l(e){return this.apply(new Date(e),"Etc/UTC")}var c={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11},d={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6};return{zones:{},rules:{},offset:o,convert:a,apply:s,remove:u,abbr:i,toLocalDate:l}}(),ye.date=function(){function e(e,t){return 0===t&&23===e.getHours()&&(e.setHours(e.getHours()+2),!0)}function t(t,n,r){var o=t.getHours();r=r||1,n=(n-t.getDay()+7*r)%7,t.setDate(t.getDate()+n),e(t,o)}function r(e,n,r){return e=new Date(e),t(e,n,r),e}function o(e){return new Date(e.getFullYear(),e.getMonth(),1)}function i(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0),n=o(e),r=Math.abs(t.getTimezoneOffset()-n.getTimezoneOffset());return r&&t.setHours(n.getHours()+r/60),t}function a(r,o){var i,a;return r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e(r,0),i=r.getFullYear(),o!==n?(t(r,o,-1),r.setDate(r.getDate()+4)):r.setDate(r.getDate()+(4-(r.getDay()||7))),e(r,0),a=Math.floor((r.getTime()-new Date(i,0,1,(-6)))/864e5),1+Math.floor(a/7)}function s(t){return t=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0),e(t,0),t}function u(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function l(e){return e.getTime()-s(e)}function c(e,t,n){var r,o=l(t),i=l(n);return!e||o==i||(t>=n&&(n+=b),r=l(e),o>r&&(r+=b),i<o&&(i+=b),r>=o&&r<=i)}function d(e,t,n){var r,o=t.getTime(),i=n.getTime();return o>=i&&(i+=b),r=e.getTime(),r>=o&&r<=i}function f(t,n){var r=t.getHours();return t=new Date(t),p(t,n*b),e(t,r),t}function p(e,t,n){var r,o=e.getTimezoneOffset();e.setTime(e.getTime()+t),n||(r=e.getTimezoneOffset()-o,e.setTime(e.getTime()+r*v))}function m(t,n){return t=new Date(ye.date.getDate(t).getTime()+ye.date.getMilliseconds(n)),e(t,n.getHours()),t}function h(){return s(new Date)}function g(e){return s(e).getTime()==h().getTime()}function y(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 v=6e4,b=864e5;return{adjustDST:e,dayOfWeek:r,setDayOfWeek:t,getDate:s,isInDateRange:d,isInTimeRange:c,isToday:g,nextDay:function(e){return f(e,1)},previousDay:function(e){return f(e,-1)},toUtcTime:u,MS_PER_DAY:b,MS_PER_HOUR:60*v,MS_PER_MINUTE:v,setTime:p,setHours:m,addDays:f,today:h,toInvariantTime:y,firstDayOfMonth:o,lastDayOfMonth:i,weekInYear:a,getMilliseconds:l}}(),ye.stripWhitespace=function(e){var t,n,r;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++)r=e.childNodes[n],3!=r.nodeType||/\S/.test(r.nodeValue)||(e.removeChild(r),n--),1==r.nodeType&&ye.stripWhitespace(r)},he=t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ye.animationFrame=function(e){he.call(t,e)},ge=[],ye.queueAnimation=function(e){ge[ge.length]=e,1===ge.length&&ye.runNextAnimation()},ye.runNextAnimation=function(){ye.animationFrame(function(){ge[0]&&(ge.shift()(),ge[0]&&ye.runNextAnimation())})},ye.parseQueryStringParams=function(e){for(var t=e.split("?")[1]||"",n={},r=t.split(/&|=/),o=r.length,i=0;i<o;i+=2)""!==r[i]&&(n[decodeURIComponent(r[i])]=decodeURIComponent(r[i+1]));return n},ye.elementUnderCursor=function(e){if(n!==e.x.client)return document.elementFromPoint(e.x.client,e.y.client)},ye.wheelDeltaY=function(e){var t,r=e.originalEvent,o=r.wheelDeltaY;return r.wheelDelta?(o===n||o)&&(t=r.wheelDelta):r.detail&&r.axis===r.VERTICAL_AXIS&&(t=10*-r.detail),t},ye.throttle=function(e,t){var r,o,i=0;return!t||t<=0?e:(o=function(){function o(){e.apply(a,u),i=+new Date}var a=this,s=+new Date-i,u=arguments;return i?(r&&clearTimeout(r),s>t?o():r=setTimeout(o,t-s),n):o()},o.cancel=function(){clearTimeout(r)},o)},ye.caret=function(t,r,o){var i,a,s,u,l=r!==n;if(o===n&&(o=r),t[0]&&(t=t[0]),!l||!t.disabled){try{t.selectionStart!==n?l?(t.focus(),t.setSelectionRange(r,o)):r=[t.selectionStart,t.selectionEnd]:document.selection&&(e(t).is(":visible")&&t.focus(),i=t.createTextRange(),l?(i.collapse(!0),i.moveStart("character",r),i.moveEnd("character",o-r),i.select()):(a=i.duplicate(),i.moveToBookmark(document.selection.createRange().getBookmark()),a.setEndPoint("EndToStart",i),s=a.text.length,u=s+i.text.length,r=[s,u]))}catch(c){r=[]}return r}},ye.compileMobileDirective=function(e,n){var r=t.angular;return e.attr("data-"+ye.ns+"role",e[0].tagName.toLowerCase().replace("kendo-mobile-","").replace("-","")),r.element(e).injector().invoke(["$compile",function(t){t(e)(n),/^\$(digest|apply)$/.test(n.$$phase)||n.$digest()}]),ye.widgetInstance(e,ye.mobile.ui)},ye.antiForgeryTokens=function(){var t={},r=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&&r!==n&&(t[o]=r),t},ye.cycleForm=function(e){function t(e){var t=ye.widgetInstance(e);t&&t.focus?t.focus():e.focus()}var n=e.find("input, .k-widget").first(),r=e.find("button, .k-button").last();r.on("keydown",function(e){e.keyCode!=ye.keys.TAB||e.shiftKey||(e.preventDefault(),t(n))}),n.on("keydown",function(e){e.keyCode==ye.keys.TAB&&e.shiftKey&&(e.preventDefault(),t(r))})},function(){function n(t,n,r,o){var i,a,s=e("<form>").attr({action:r,method:"POST",target:o}),u=ye.antiForgeryTokens();u.fileName=n,i=t.split(";base64,"),u.contentType=i[0].replace("data:",""),u.base64=i[1];for(a in u)u.hasOwnProperty(a)&&e("<input>").attr({value:u[a],name:a,type:"hidden"}).appendTo(s);s.appendTo("body").submit().remove()}function r(e,t){var n,r,o,i,a,s=e;if("string"==typeof e){for(n=e.split(";base64,"),r=n[0],o=atob(n[1]),i=new Uint8Array(o.length),a=0;a<o.length;a++)i[a]=o.charCodeAt(a);s=new Blob([i.buffer],{type:r})}navigator.msSaveBlob(s,t)}function o(e,n){t.Blob&&e instanceof Blob&&(e=URL.createObjectURL(e)),i.download=n,i.href=e;var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!1,t,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r),setTimeout(function(){URL.revokeObjectURL(e)})}var i=document.createElement("a"),a="download"in i&&!ye.support.browser.edge;ye.saveAs=function(e){var t=n;e.forceProxy||(a?t=o:navigator.msSaveBlob&&(t=r)),t(e.dataURI,e.fileName,e.proxyURL,e.proxyTarget)}}(),ye.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.data.min",["kendo.core.min","kendo.data.odata.min","kendo.data.xml.min"],e)}(function(){return function(e,t){function r(e,t,r,n){return function(i){var a,s={};for(a in i)s[a]=i[a];s.field=n?r+"."+i.field:r,t==ze&&e._notifyChange&&e._notifyChange(s),e.trigger(t,s)}}function n(t,r){if(t===r)return!0;var i,a=e.type(t),s=e.type(r);if(a!==s)return!1;if("date"===a)return t.getTime()===r.getTime();if("object"!==a&&"array"!==a)return!1;for(i in t)if(!n(t[i],r[i]))return!1;return!0}function i(e,t){var r,n;for(n in e){if(r=e[n],de(r)&&r.field&&r.field===t)return r;if(r===t)return r}return null}function a(e){this.data=e||[]}function s(e,r){if(e){var n=typeof e===we?{field:e,dir:r}:e,i=ce(n)?n:n!==t?[n]:[];return ge(i,function(e){return!!e.dir})}}function o(e){var t,r,n,i,a=e.filters;if(a)for(t=0,r=a.length;t<r;t++)n=a[t],i=n.operator,i&&typeof i===we&&(n.operator=X[i.toLowerCase()]||i),o(n)}function u(e){if(e&&!he(e))return!ce(e)&&e.filters||(e={logic:"and",filters:ce(e)?e:[e]}),o(e),e}function l(e,t){return!e.logic&&!t.logic&&(e.field===t.field&&e.value===t.value&&e.operator===t.operator)}function f(e){return e=e||{},he(e)?{logic:"and",filters:[]}:u(e)}function d(e,t){return t.logic||e.field>t.field?1:e.field<t.field?-1:0}function h(e,t){var r,n,i,a,s;if(e=f(e),t=f(t),e.logic!==t.logic)return!1;if(i=(e.filters||[]).slice(),a=(t.filters||[]).slice(),i.length!==a.length)return!1;for(i=i.sort(d),a=a.sort(d),s=0;s<i.length;s++)if(r=i[s],n=a[s],r.logic&&n.logic){if(!h(r,n))return!1}else if(!l(r,n))return!1;return!0}function c(e){return ce(e)?e:[e]}function g(e,r){var n=typeof e===we?{field:e,dir:r}:e,i=ce(n)?n:n!==t?[n]:[];return L(i,function(e){return{field:e.field,dir:e.dir||"asc",aggregates:e.aggregates}})}function p(e,t){return e&&e.getTime&&t&&t.getTime?e.getTime()===t.getTime():e===t}function _(e,t,r,n,i,a){var s,o,u,l,f;for(t=t||[],l=t.length,s=0;s<l;s++)o=t[s],u=o.aggregate,f=o.field,e[f]=e[f]||{},a[f]=a[f]||{},a[f][u]=a[f][u]||{},e[f][u]=Y[u.toLowerCase()](e[f][u],r,me.accessor(f),n,i,a[f][u])}function v(e){return"number"==typeof e&&!isNaN(e)}function m(e){return e&&e.getTime}function y(e){var t,r=e.length,n=Array(r);for(t=0;t<r;t++)n[t]=e[t].toJSON();return n}function S(e,t,r,n,i){var a,s,o,u,l,f={};for(u=0,l=e.length;u<l;u++){a=e[u];for(s in t)o=i[s],o&&o!==s&&(f[o]||(f[o]=me.setter(o)),f[o](a,t[s](a)),delete a[s])}}function b(e,t,r,n,i){var a,s,o,u,l;for(u=0,l=e.length;u<l;u++){a=e[u];for(s in t)a[s]=r._parse(s,t[s](a)),o=i[s],o&&o!==s&&delete a[o]}}function w(e,t,r,n,i){var a,s,o,u;for(s=0,u=e.length;s<u;s++)a=e[s],o=n[a.field],o&&o!=a.field&&(a.field=o),a.value=r._parse(a.field,a.value),a.hasSubgroups?w(a.items,t,r,n,i):b(a.items,t,r,n,i)}function k(e,t,r,n,i,a){return function(s){return s=e(s),s&&!he(n)&&("[object Array]"===We.call(s)||s instanceof Ke||(s=[s]),r(s,n,new t,i,a)),s||[]}}function x(e,t,r,n){for(var i,a,s,o=0;t.length&&n&&(i=t[o],a=i.items,s=a.length,e&&e.field===i.field&&e.value===i.value?(e.hasSubgroups&&e.items.length?x(e.items[e.items.length-1],i.items,r,n):(a=a.slice(r,r+n),e.items=e.items.concat(a)),t.splice(o--,1)):i.hasSubgroups&&a.length?(x(i,a,r,n),i.items.length||t.splice(o--,1)):(a=a.slice(r,r+n),i.items=a,i.items.length||t.splice(o--,1)),0===a.length?r-=s:(r=0,n-=a.length),!(++o>=t.length)););o<t.length&&t.splice(o,t.length-o)}function q(e){var t,r,n,i,a,s=[];for(t=0,r=e.length;t<r;t++)if(a=e.at(t),a.hasSubgroups)s=s.concat(q(a.items));else for(n=a.items,i=0;i<n.length;i++)s.push(n.at(i));return s}function D(e,t){var r,n,i;if(t)for(r=0,n=e.length;r<n;r++)i=e.at(r),i.hasSubgroups?D(i.items,t):i.items=new U(i.items,t)}function O(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r].hasSubgroups){if(O(e[r].items,t))return!0}else if(t(e[r].items,e[r]))return!0}function z(e,t,r,n){for(var i=0;i<e.length&&e[i].data!==t&&!R(e[i].data,r,n);i++);}function R(e,t,r){for(var n=0,i=e.length;n<i;n++){if(e[n]&&e[n].hasSubgroups)return R(e[n].items,t,r);if(e[n]===t||e[n]===r)return e[n]=r,!0}}function P(e,r,n,i,a){var s,o,u,l;for(s=0,o=e.length;s<o;s++)if(u=e[s],u&&!(u instanceof i))if(u.hasSubgroups===t||a){for(l=0;l<r.length;l++)if(r[l]===u){e[s]=r.at(l),z(n,r,u,e[s]);break}}else P(u.items,r,n,i,a)}function C(e,t){var r,n,i;for(r=0,n=e.length;r<n;r++)if(i=e.at(r),i.uid==t.uid)return e.splice(r,1),i}function T(e,t){return t?A(e,function(e){return e.uid&&e.uid==t.uid||e[t.idField]===t.id&&t.id!==t._defaultId}):-1}function F(e,t){return t?A(e,function(e){return e.uid==t.uid}):-1}function A(e,t){var r,n;for(r=0,n=e.length;r<n;r++)if(t(e[r]))return r;return-1}function I(e,t){var r,n;return e&&!he(e)?(r=e[t],n=de(r)?r.from||r.field||t:e[t]||t,ye(n)?t:n):t}function N(e,t){var r,n,i,a={};for(i in e)"filters"!==i&&(a[i]=e[i]);if(e.filters)for(a.filters=[],r=0,n=e.filters.length;r<n;r++)a.filters[r]=N(e.filters[r],t);else a.field=I(t.fields,a.field);return a}function M(e,t){var r,n,i,a,s,o=[];for(r=0,n=e.length;r<n;r++){i={},a=e[r];for(s in a)i[s]=a[s];i.field=I(t.fields,i.field),i.aggregates&&ce(i.aggregates)&&(i.aggregates=M(i.aggregates,t)),o.push(i)}return o}function j(t,r){var n,i,a,s,o,u,l,f,d,h;for(t=e(t)[0],n=t.options,i=r[0],a=r[1],s=[],o=0,u=n.length;o<u;o++)d={},f=n[o],l=f.parentNode,l===t&&(l=null),f.disabled||l&&l.disabled||(l&&(d.optgroup=l.label),d[i.field]=f.text,h=f.attributes.value,h=h&&h.specified?f.value:f.text,d[a.field]=h,s.push(d));return s}function G(t,r){var n,i,a,s,o,u,l,f=e(t)[0].tBodies[0],d=f?f.rows:[],h=r.length,c=[];for(n=0,i=d.length;n<i;n++){for(o={},l=!0,s=d[n].cells,a=0;a<h;a++)u=s[a],"th"!==u.nodeName.toLowerCase()&&(l=!1,o[r[a].field]=u.innerHTML);l||c.push(o)}return c}function E(e){return function(){var t=this._data,r=ne.fn[e].apply(this,He.call(arguments));return this._data!=t&&this._attachBubbleHandlers(),r}}function B(t,r){function n(e,t){return e.filter(t).add(e.find(t))}var i,a,s,o,u,l,f,d,h=e(t).children(),c=[],g=r[0].field,p=r[1]&&r[1].field,_=r[2]&&r[2].field,v=r[3]&&r[3].field;for(i=0,a=h.length;i<a;i++)s={_loaded:!0},o=h.eq(i),l=o[0].firstChild,d=o.children(),t=d.filter("ul"),d=d.filter(":not(ul)"),u=o.attr("data-id"),u&&(s.id=u),l&&(s[g]=3==l.nodeType?l.nodeValue:d.text()),p&&(s[p]=n(d,"a").attr("href")),v&&(s[v]=n(d,"img").attr("src")),_&&(f=n(d,".k-sprite").prop("className"),s[_]=f&&e.trim(f.replace("k-sprite",""))),t.length&&(s.items=B(t.eq(0),r)),"true"==o.attr("data-hasChildren")&&(s.hasChildren=!0),c.push(s);return c}var L,U,J,H,V,W,$,Q,K,X,Y,Z,ee,te,re,ne,ie,ae,se,oe,ue,le=e.extend,fe=e.proxy,de=e.isPlainObject,he=e.isEmptyObject,ce=e.isArray,ge=e.grep,pe=e.ajax,_e=e.each,ve=e.noop,me=window.kendo,ye=me.isFunction,Se=me.Observable,be=me.Class,we="string",ke="function",xe="create",qe="read",De="update",Oe="destroy",ze="change",Re="sync",Pe="get",Ce="error",Te="requestStart",Fe="progress",Ae="requestEnd",Ie=[xe,qe,De,Oe],Ne=function(e){return e},Me=me.getter,je=me.stringify,Ge=Math,Ee=[].push,Be=[].join,Le=[].pop,Ue=[].splice,Je=[].shift,He=[].slice,Ve=[].unshift,We={}.toString,$e=me.support.stableSort,Qe=/^\/Date\((.*?)\)\/$/,Ke=Se.extend({init:function(e,t){var r=this;r.type=t||J,Se.fn.init.call(r),r.length=e.length,r.wrapAll(e,r)},at:function(e){return this[e]},toJSON:function(){var e,t,r=this.length,n=Array(r);for(e=0;e<r;e++)t=this[e],t instanceof J&&(t=t.toJSON()),n[e]=t;return n},parent:ve,wrapAll:function(e,t){var r,n,i=this,a=function(){return i};for(t=t||[],r=0,n=e.length;r<n;r++)t[r]=i.wrap(e[r],a);return t},wrap:function(e,t){var r,n=this;return null!==e&&"[object Object]"===We.call(e)&&(r=e instanceof n.type||e instanceof W,r||(e=e instanceof J?e.toJSON():e,e=new n.type(e)),e.parent=t,e.bind(ze,function(e){n.trigger(ze,{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,r=this.wrapAll(arguments);return e=Ee.apply(this,r),this.trigger(ze,{action:"add",index:t,items:r}),e},slice:He,sort:[].sort,join:Be,pop:function(){var e=this.length,t=Le.apply(this);return e&&this.trigger(ze,{action:"remove",index:e-1,items:[t]}),t},splice:function(e,t,r){var n,i,a,s=this.wrapAll(He.call(arguments,2));if(n=Ue.apply(this,[e,t].concat(s)),n.length)for(this.trigger(ze,{action:"remove",index:e,items:n}),i=0,a=n.length;i<a;i++)n[i]&&n[i].children&&n[i].unbind(ze);return r&&this.trigger(ze,{action:"add",index:e,items:s}),n},shift:function(){var e=this.length,t=Je.apply(this);return e&&this.trigger(ze,{action:"remove",index:0,items:[t]}),t},unshift:function(){var e,t=this.wrapAll(arguments);return e=Ve.apply(this,t),this.trigger(ze,{action:"add",index:0,items:t}),e},indexOf:function(e){var t,r,n=this;for(t=0,r=n.length;t<r;t++)if(n[t]===e)return t;return-1},forEach:function(e){for(var t=0,r=this.length;t<r;t++)e(this[t],t,this)},map:function(e){for(var t=0,r=[],n=this.length;t<n;t++)r[t]=e(this[t],t,this);return r},reduce:function(e){var t,r=0,n=this.length;for(2==arguments.length?t=arguments[1]:r<n&&(t=this[r++]);r<n;r++)t=e(t,this[r],r,this);return t},reduceRight:function(e){var t,r=this.length-1;for(2==arguments.length?t=arguments[1]:r>0&&(t=this[r--]);r>=0;r--)t=e(t,this[r],r,this);return t},filter:function(e){for(var t,r=0,n=[],i=this.length;r<i;r++)t=this[r],e(t,r,this)&&(n[n.length]=t);return n},find:function(e){for(var t,r=0,n=this.length;r<n;r++)if(t=this[r],e(t,r,this))return t},every:function(e){for(var t,r=0,n=this.length;r<n;r++)if(t=this[r],!e(t,r,this))return!1;return!0},some:function(e){for(var t,r=0,n=this.length;r<n;r++)if(t=this[r],e(t,r,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&&!Ke.prototype[Symbol.iterator]&&(Ke.prototype[Symbol.iterator]=[][Symbol.iterator]),U=Ke.extend({init:function(e,t){Se.fn.init.call(this),this.type=t||J;for(var r=0;r<e.length;r++)this[r]=e[r];this.length=r,this._parent=fe(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}}),J=Se.extend({init:function(e){var t,r,n=this,i=function(){return n};Se.fn.init.call(this),this._handlers={};for(r in e)t=e[r],"object"==typeof t&&t&&!t.getTime&&"_"!=r.charAt(0)&&(t=n.wrap(t,r,i)),n[r]=t;n.uid=me.guid()},shouldSerialize:function(e){return this.hasOwnProperty(e)&&"_handlers"!==e&&"_events"!==e&&typeof this[e]!==ke&&"uid"!==e},forEach:function(e){for(var t in this)this.shouldSerialize(t)&&e(this[t],t)},toJSON:function(){var e,t,r={};for(t in this)this.shouldSerialize(t)&&(e=this[t],(e instanceof J||e instanceof Ke)&&(e=e.toJSON()),r[t]=e);return r},get:function(e){var t,r=this;return r.trigger(Pe,{field:e}),t="this"===e?r:me.getter(e,!0)(r)},_set:function(e,t){var r,n,i,a=this,s=e.indexOf(".")>=0;if(s)for(r=e.split("."),n="";r.length>1;){if(n+=r.shift(),i=me.getter(n,!0)(a),i instanceof J)return i.set(r.join("."),t),s;n+="."}return me.setter(e)(a,t),s},set:function(e,t){var r=this,n=!1,i=e.indexOf(".")>=0,a=me.getter(e,!0)(r);return a!==t&&(a instanceof Se&&this._handlers[e]&&(this._handlers[e].get&&a.unbind(Pe,this._handlers[e].get),a.unbind(ze,this._handlers[e].change)),n=r.trigger("set",{field:e,value:t}),n||(i||(t=r.wrap(t,e,function(){return r})),(!r._set(e,t)||e.indexOf("(")>=0||e.indexOf("[")>=0)&&r.trigger(ze,{field:e}))),n},parent:ve,wrap:function(e,t,n){var i,a,s,o,u=this,l=We.call(e);return null==e||"[object Object]"!==l&&"[object Array]"!==l||(s=e instanceof Ke,o=e instanceof ne,"[object Object]"!==l||o||s?("[object Array]"===l||s||o)&&(s||o||(e=new Ke(e)),a=r(u,ze,t,!1),e.bind(ze,a),u._handlers[t]={change:a}):(e instanceof J||(e=new J(e)),i=r(u,Pe,t,!0),e.bind(Pe,i),a=r(u,ze,t,!0),e.bind(ze,a),u._handlers[t]={get:i,change:a}),e.parent=n),e}}),H={number:function(e){return me.parseFloat(e)},date:function(e){return me.parseDate(e)},"boolean":function(e){return typeof e===we?"true"===e.toLowerCase():null!=e?!!e:e},string:function(e){return null!=e?e+"":e},"default":function(e){return e}},V={string:"",number:0,date:new Date,"boolean":!1,"default":""},W=J.extend({init:function(r){var n,i,a=this;if((!r||e.isEmptyObject(r))&&(r=e.extend({},a.defaults,r),a._initializers))for(n=0;n<a._initializers.length;n++)i=a._initializers[n],r[i]=a.defaults[i]();J.fn.init.call(a,r),a.dirty=!1,a.idField&&(a.id=a.get(a.idField),a.id===t&&(a.id=a._defaultId))},shouldSerialize:function(e){return J.fn.shouldSerialize.call(this,e)&&"uid"!==e&&!("id"!==this.idField&&"id"===e)&&"dirty"!==e&&"_accessors"!==e},_parse:function(e,t){var r,n=this,a=e,s=n.fields||{};return e=s[e],e||(e=i(s,a)),e&&(r=e.parse,!r&&e.type&&(r=H[e.type.toLowerCase()])),r?r(t):t},_notifyChange:function(e){var t=e.action;"add"!=t&&"remove"!=t||(this.dirty=!0)},editable:function(e){return e=(this.fields||{})[e],!e||e.editable!==!1},set:function(e,t,r){var i=this,a=i.dirty;i.editable(e)&&(t=i._parse(e,t),n(t,i.get(e))||(i.dirty=!0,J.fn.set.call(i,e,t,r)&&!a&&(i.dirty=a)))},accept:function(e){var t,r,n=this,i=function(){return n};for(t in e)r=e[t],"_"!=t.charAt(0)&&(r=n.wrap(e[t],t,i)),n._set(t,r);n.idField&&(n.id=n.get(n.idField)),n.dirty=!1},isNew:function(){return this.id===this._defaultId}}),W.define=function(e,r){r===t&&(r=e,e=W);var n,i,a,s,o,u,l,f,d=le({defaults:{}},r),h={},c=d.id,g=[];if(c&&(d.idField=c),d.id&&delete d.id,c&&(d.defaults[c]=d._defaultId=""),"[object Array]"===We.call(d.fields)){for(u=0,l=d.fields.length;u<l;u++)a=d.fields[u],typeof a===we?h[a]={}:a.field&&(h[a.field]=a);d.fields=h}for(i in d.fields)a=d.fields[i],s=a.type||"default",o=null,f=i,i=typeof a.field===we?a.field:i,a.nullable||(o=d.defaults[f!==i?f:i]=a.defaultValue!==t?a.defaultValue:V[s.toLowerCase()],"function"==typeof o&&g.push(i)),r.id===i&&(d._defaultId=o),d.defaults[f!==i?f:i]=o,a.parse=a.parse||H[s];return g.length>0&&(d._initializers=g),n=e.extend(d),n.define=function(e){return W.define(n,e)},d.fields&&(n.fields=d.fields,n.idField=d.idField),n},$={selector:function(e){return ye(e)?e:Me(e)},compare:function(e){var t=this.selector(e);return function(e,r){return e=t(e),r=t(r),null==e&&null==r?0:null==e?-1:null==r?1:e.localeCompare?e.localeCompare(r):e>r?1:e<r?-1:0}},create:function(e){var t=e.compare||this.compare(e.field);return"desc"==e.dir?function(e,r){return t(r,e,!0)}:t},combine:function(e){return function(t,r){var n,i,a=e[0](t,r);for(n=1,i=e.length;n<i;n++)a=a||e[n](t,r);return a}}},Q=le({},$,{asc:function(e){var t=this.selector(e);return function(e,r){var n=t(e),i=t(r);return n&&n.getTime&&i&&i.getTime&&(n=n.getTime(),i=i.getTime()),n===i?e.__position-r.__position:null==n?-1:null==i?1:n.localeCompare?n.localeCompare(i):n>i?1:-1}},desc:function(e){var t=this.selector(e);return function(e,r){var n=t(e),i=t(r);return n&&n.getTime&&i&&i.getTime&&(n=n.getTime(),i=i.getTime()),n===i?e.__position-r.__position:null==n?1:null==i?-1:i.localeCompare?i.localeCompare(n):n<i?1:-1}},create:function(e){return this[e.dir](e.field)}}),L=function(e,t){var r,n=e.length,i=Array(n);for(r=0;r<n;r++)i[r]=t(e[r],r,e);return i},K=function(){function e(e){return"string"==typeof e&&(e=e.replace(/[\r\n]+/g,"")),JSON.stringify(e)}function t(t){return function(r,n,i){return n+="",i&&(r="("+r+" || '').toLowerCase()",n=n.toLowerCase()),t(r,e(n),i)}}function r(t,r,n,i){if(null!=n){if(typeof n===we){var a=Qe.exec(n);a?n=new Date((+a[1])):i?(n=e(n.toLowerCase()),r="(("+r+" || '')+'').toLowerCase()"):n=e(n)}n.getTime&&(r="("+r+"&&"+r+".getTime?"+r+".getTime():"+r+")",n=n.getTime())}return r+" "+t+" "+n}function n(e){var t,r,n,i;for(t="/^",r=!1,n=0;n<e.length;++n){if(i=e.charAt(n),r)t+="\\"+i;else{if("~"==i){r=!0;continue}t+="*"==i?".*":"?"==i?".":".+^$()[]{}|\\/\n\r\u2028\u2029Â ".indexOf(i)>=0?"\\"+i:i}r=!1}return t+"$/"}return{quote:function(t){return t&&t.getTime?"new Date("+t.getTime()+")":e(t)},eq:function(e,t,n){return r("==",e,t,n)},neq:function(e,t,n){return r("!=",e,t,n)},gt:function(e,t,n){return r(">",e,t,n)},gte:function(e,t,n){return r(">=",e,t,n)},lt:function(e,t,n){return r("<",e,t,n)},lte:function(e,t,n){return r("<=",e,t,n)},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 r=t?t.length-2:0;return e+".indexOf("+t+", "+e+".length - "+r+") >= 0"}),doesnotendwith:t(function(e,t){var r=t?t.length-2:0;return e+".indexOf("+t+", "+e+".length - "+r+") < 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),n(t)+".test("+e+")"}),doesnotmatch:t(function(e,t){return t=t.substring(1,t.length-1),"!"+n(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)"}}}(),a.filterExpr=function(e){var r,n,i,s,o,u,l=[],f={and:" && ",or:" || "},d=[],h=[],c=e.filters;for(r=0,n=c.length;r<n;r++)i=c[r],o=i.field,u=i.operator,i.filters?(s=a.filterExpr(i),i=s.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["+(d.length+t)+"]"}),h.push.apply(h,s.operators),d.push.apply(d,s.fields)):(typeof o===ke?(s="__f["+d.length+"](d)",d.push(o)):s=me.expr(o),typeof u===ke?(i="__o["+h.length+"]("+s+", "+K.quote(i.value)+")",h.push(u)):i=K[(u||"eq").toLowerCase()](s,i.value,i.ignoreCase===t||i.ignoreCase)),l.push(i);return{expression:"("+l.join(f[e.logic])+")",fields:d,operators:h}},X={"==":"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"},a.normalizeFilter=u,a.compareFilters=h,a.prototype={toArray:function(){return this.data},range:function(e,t){return new a(this.data.slice(e,e+t))},skip:function(e){return new a(this.data.slice(e))},take:function(e){return new a(this.data.slice(0,e))},select:function(e){return new a(L(this.data,e))},order:function(e,t){var r={dir:t};return e&&(e.compare?r.compare=e.compare:r.field=e),new a(this.data.slice(0).sort($.create(r)))},orderBy:function(e){return this.order(e,"asc")},orderByDescending:function(e){return this.order(e,"desc")},sort:function(e,t,r){var n,i,a=s(e,t),o=[];if(r=r||$,a.length){for(n=0,i=a.length;n<i;n++)o.push(r.create(a[n]));return this.orderBy({compare:r.combine(o)})}return this},filter:function(e){var t,r,n,i,s,o,l,f,d=this.data,h=[];if(e=u(e),!e||0===e.filters.length)return this;for(i=a.filterExpr(e),o=i.fields,l=i.operators,s=f=Function("d, __f, __o","return "+i.expression),(o.length||l.length)&&(f=function(e){return s(e,o,l)}),t=0,n=d.length;t<n;t++)r=d[t],f(r)&&h.push(r);return new a(h)},group:function(e,t){e=g(e||[]),t=t||this.data;var r,n=this,i=new a(n.data);return e.length>0&&(r=e[0],i=i.groupBy(r).select(function(n){var i=new a(t).filter([{field:n.field,operator:"eq",value:n.value,ignoreCase:!1}]);return{field:n.field,value:n.value,items:e.length>1?new a(n.items).group(e.slice(1),i.toArray()).toArray():n.items,hasSubgroups:e.length>1,aggregates:i.aggregate(r.aggregates)}})),i},groupBy:function(e){if(he(e)||!this.data.length)return new a([]);var t,r,n,i,s=e.field,o=this._sortForGrouping(s,e.dir||"asc"),u=me.accessor(s),l=u.get(o[0],s),f={field:s,value:l,items:[]},d=[f];for(n=0,i=o.length;n<i;n++)t=o[n],r=u.get(t,s),p(l,r)||(l=r,f={field:s,value:l,items:[]},d.push(f)),f.items.push(t);return new a(d)},_sortForGrouping:function(e,t){var r,n,i=this.data;if(!$e){for(r=0,n=i.length;r<n;r++)i[r].__position=r;for(i=new a(i).sort(e,t,Q).toArray(),r=0,n=i.length;r<n;r++)delete i[r].__position;return i}return this.sort(e,t).toArray()},aggregate:function(e){var t,r,n={},i={};if(e&&e.length)for(t=0,r=this.data.length;t<r;t++)_(n,e,this.data[t],t,r,i);return n}},Y={sum:function(e,t,r){var n=r.get(t);return v(e)?v(n)&&(e+=n):e=n,e},count:function(e){return(e||0)+1},average:function(e,r,n,i,a,s){var o=n.get(r);return s.count===t&&(s.count=0),v(e)?v(o)&&(e+=o):e=o,v(o)&&s.count++,i==a-1&&v(e)&&(e/=s.count),e},max:function(e,t,r){var n=r.get(t);return v(e)||m(e)||(e=n),e<n&&(v(n)||m(n))&&(e=n),e},min:function(e,t,r){var n=r.get(t);return v(e)||m(e)||(e=n),e>n&&(v(n)||m(n))&&(e=n),e}},a.process=function(e,r){r=r||{};var n,i=new a(e),o=r.group,u=g(o||[]).concat(s(r.sort||[])),l=r.filterCallback,f=r.filter,d=r.skip,h=r.take;return f&&(i=i.filter(f),l&&(i=l(i)),n=i.toArray().length),u&&(i=i.sort(u),o&&(e=i.toArray())),d!==t&&h!==t&&(i=i.range(d,h)),o&&(i=i.group(o,e)),{total:n,data:i.toArray()}},Z=be.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)}}),ee=be.extend({init:function(e){var t,r=this;e=r.options=le({},r.options,e),_e(Ie,function(t,r){typeof e[r]===we&&(e[r]={url:e[r]})}),r.cache=e.cache?te.create(e.cache):{find:ve,add:ve},t=e.parameterMap,ye(e.push)&&(r.push=e.push),r.push||(r.push=Ne),r.parameterMap=ye(t)?t:function(e){var r={};return _e(e,function(e,n){e in t&&(e=t[e],de(e)&&(n=e.value(n),e=e.key)),r[e]=n}),r}},options:{parameterMap:Ne},create:function(e){return pe(this.setup(e,xe))},read:function(r){var n,i,a,s=this,o=s.cache;r=s.setup(r,qe),n=r.success||ve,i=r.error||ve,a=o.find(r.data),a!==t?n(a):(r.success=function(e){o.add(r.data,e),n(e)},e.ajax(r))},update:function(e){return pe(this.setup(e,De))},destroy:function(e){return pe(this.setup(e,Oe))},setup:function(e,t){e=e||{};var r,n=this,i=n.options[t],a=ye(i.data)?i.data(e.data):i.data;return e=le(!0,{},i,e),r=le(!0,{},a,e.data),e.data=n.parameterMap(r,t),ye(e.url)&&(e.url=e.url(r)),e}}),te=be.extend({init:function(){this._store={}},add:function(e,r){e!==t&&(this._store[je(e)]=r)},find:function(e){return this._store[je(e)]},clear:function(){this._store={}},remove:function(e){delete this._store[je(e)]}}),te.create=function(e){var t={inmemory:function(){return new te}};return de(e)&&ye(e.find)?e:e===!0?new te:t[e]()},re=be.extend({init:function(e){var t,r,n,i,a,s,o,u,l,f,d,h,c,g=this;e=e||{};for(t in e)r=e[t],g[t]=typeof r===we?Me(r):r;i=e.modelBase||W,de(g.model)&&(g.model=n=i.define(g.model)),a=fe(g.data,g),g._dataAccessFunction=a,g.model&&(s=fe(g.groups,g),o=fe(g.serialize,g),u={},l={},f={},d={},h=!1,n=g.model,n.fields&&(_e(n.fields,function(e,t){var r;c=e,de(t)&&t.field?c=t.field:typeof t===we&&(c=t),de(t)&&t.from&&(r=t.from),h=h||r&&r!==e||c!==e,l[e]=Me(r||c),f[e]=Me(e),u[r||c]=e,d[e]=r||c}),!e.serialize&&h&&(g.serialize=k(o,n,S,f,u,d))),g._dataAccessFunction=a,g.data=k(a,n,b,l,u,d),g.groups=k(s,n,w,l,u,d))},errors:function(e){return e?e.errors:null},parse:Ne,data:Ne,total:function(e){return e.length},groups:Ne,aggregates:function(){return{}},serialize:function(e){return e}}),ne=Se.extend({init:function(e){var r,n,i,a=this;e&&(n=e.data),e=a.options=le({},a.options,e),a._map={},a._prefetch={},a._data=[],a._pristineData=[],a._ranges=[],a._view=[],a._pristineTotal=0,a._destroyed=[],a._pageSize=e.pageSize,a._page=e.page||(e.pageSize?1:t),a._sort=s(e.sort),a._filter=u(e.filter),a._group=g(e.group),a._aggregate=e.aggregate,a._total=e.total,a._shouldDetachObservableParents=!0,Se.fn.init.call(a),a.transport=ie.create(e,n,a),ye(a.transport.push)&&a.transport.push({pushCreate:fe(a._pushCreate,a),pushUpdate:fe(a._pushUpdate,a),pushDestroy:fe(a._pushDestroy,a)}),null!=e.offlineStorage&&("string"==typeof e.offlineStorage?(i=e.offlineStorage,a._storage={getItem:function(){return JSON.parse(localStorage.getItem(i))},setItem:function(e){localStorage.setItem(i,je(a.reader.serialize(e)))}}):a._storage=e.offlineStorage),a.reader=new me.data.readers[e.schema.type||"json"](e.schema),r=a.reader.model||{},a._detachObservableParents(),a._data=a._observe(a._data),a._online=!0,a.bind(["push",Ce,ze,Te,Re,Ae,Fe],e)},options:{data:null,schema:{modelBase:W},offlineStorage:null,serverSorting:!1,serverPaging:!1,serverFiltering:!1,serverGrouping:!1,serverAggregates:!1,batch:!1},clone:function(){return this},online:function(r){return r!==t?this._online!=r&&(this._online=r,r)?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 r=this._readData(e);r||(r=e),this[t](r)},_flatData:function(e,t){if(e){if(this._isServerGrouped())return q(e);if(!t)for(var r=0;r<e.length;r++)e.at(r)}return e},parent:ve,get:function(e){var t,r,n=this._flatData(this._data);for(t=0,r=n.length;t<r;t++)if(n[t].id==e)return n[t]},getByUid:function(e){var t,r,n=this._flatData(this._data);if(n)for(t=0,r=n.length;t<r;t++)if(n[t].uid==e)return n[t]},indexOf:function(e){return F(this._data,e)},at:function(e){return this._data.at(e)},data:function(e){var r,n=this;if(e===t){if(n._data)for(r=0;r<n._data.length;r++)n._data.at(r);return n._data}n._detachObservableParents(),n._data=this._observe(e),n._pristineData=e.slice(0),n._storeData(),n._ranges=[],n.trigger("reset"),n._addRange(n._data),n._total=n._data.length,n._pristineTotal=n._total,n._process(n._data)},view:function(e){return e===t?this._view:(this._view=this._observeView(e),t)},_observeView:function(e){var t,r=this;return P(e,r._data,r._ranges,r.reader.model||J,r._isServerGrouped()),t=new U(e,r.reader.model),t.parent=function(){return r.parent()},t},flatView:function(){var e=this.group()||[];return e.length?q(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 J?e:new J(e)},insert:function(e,t){return t||(t=e,e=0),t instanceof W||(t=this._createNewModel(t)),this._isServerGrouped()?this._data.splice(e,0,this._wrapInEmptyGroup(t)):this._data.splice(e,0,t),t},pushCreate:function(e){var t,r,n,i,a,s;ce(e)||(e=[e]),t=[],r=this.options.autoSync,this.options.autoSync=!1;try{for(n=0;n<e.length;n++)i=e[n],a=this.add(i),t.push(a),s=a.toJSON(),this._isServerGrouped()&&(s=this._wrapInEmptyGroup(s)),this._pristineData.push(s)}finally{this.options.autoSync=r}t.length&&this.trigger("push",{type:"create",items:t})},pushUpdate:function(e){var t,r,n,i,a;for(ce(e)||(e=[e]),t=[],r=0;r<e.length;r++)n=e[r],i=this._createNewModel(n),a=this.get(i.id),a?(t.push(a),a.accept(n),a.trigger(ze),this._updatePristineForModel(a,n)):this.pushCreate(n);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){var t,r,n,i,a,s;ce(e)||(e=[e]),t=[],r=this.options.autoSync,this.options.autoSync=!1;try{for(n=0;n<e.length;n++)i=e[n],a=this._createNewModel(i),s=!1,this._eachItem(this._data,function(e){var r,n;for(r=0;r<e.length;r++)if(n=e.at(r),n.id===a.id){t.push(n),e.splice(r,1),s=!0;break}}),s&&(this._removePristineForModel(a),this._destroyed.pop())}finally{this.options.autoSync=r}return t},remove:function(e){var t,r=this,n=r._isServerGrouped();return this._eachItem(r._data,function(i){if(t=C(i,e),t&&n)return t.isNew&&t.isNew()||r._destroyed.push(t),!0}),this._removeModelFromRanges(e),this._updateRangesLength(),e},destroyed:function(){return this._destroyed},created:function(){var e,t,r=[],n=this._flatData(this._data);for(e=0,t=n.length;e<t;e++)n[e].isNew&&n[e].isNew()&&r.push(n[e]);return r},updated:function(){var e,t,r=[],n=this._flatData(this._data);for(e=0,t=n.length;e<t;e++)n[e].isNew&&!n[e].isNew()&&n[e].dirty&&r.push(n[e]);return r},sync:function(){var t,r=this,n=[],i=[],a=r._destroyed,s=e.Deferred().resolve().promise();if(r.online()){if(!r.reader.model)return s;n=r.created(),i=r.updated(),t=[],r.options.batch&&r.transport.submit?t=r._sendSubmit(n,i,a):(t.push.apply(t,r._send("create",n)),t.push.apply(t,r._send("update",i)),t.push.apply(t,r._send("destroy",a))),s=e.when.apply(null,t).then(function(){var e,t;for(e=0,t=arguments.length;e<t;e++)arguments[e]&&r._accept(arguments[e]);r._storeData(!0),r._change({action:"sync"}),r.trigger(Re)})}else r._storeData(!0),r._change({action:"sync"});return s},cancelChanges:function(e){var t=this;e instanceof me.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),t._change(),t._markOfflineUpdatesAsDirty())},_markOfflineUpdatesAsDirty:function(){var e=this;null!=e.options.offlineStorage&&e._eachItem(e._data,function(e){var t,r;for(t=0;t<e.length;t++)r=e.at(t),"update"!=r.__state__&&"create"!=r.__state__||(r.dirty=!0)})},hasChanges:function(){var e,t,r=this._flatData(this._data);if(this._destroyed.length)return!0;for(e=0,t=r.length;e<t;e++)if(r[e].isNew&&r[e].isNew()||r[e].dirty)return!0;return!1},_accept:function(t){var r,n=this,i=t.models,a=t.response,s=0,o=n._isServerGrouped(),u=n._pristineData,l=t.type;if(n.trigger(Ae,{response:a,type:l}),a&&!he(a)){if(a=n.reader.parse(a),n._handleCustomErrors(a))return;a=n.reader.data(a),ce(a)||(a=[a])}else a=e.map(i,function(e){return e.toJSON()});for("destroy"===l&&(n._destroyed=[]),s=0,r=i.length;s<r;s++)"destroy"!==l?(i[s].accept(a[s]),"create"===l?u.push(o?n._wrapInEmptyGroup(i[s]):a[s]):"update"===l&&n._updatePristineForModel(i[s],a[s])):n._removePristineForModel(i[s])},_updatePristineForModel:function(e,t){this._executeOnPristineForModel(e,function(e,r){me.deepExtend(r[e],t)})},_executeOnPristineForModel:function(e,t){this._eachPristineItem(function(r){var n=T(r,e);if(n>-1)return t(n,r),!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){this._eachItem(this._pristineData,e)},_eachItem:function(e,t){e&&e.length&&(this._isServerGrouped()?O(e,t):t(e))},_pristineForModel:function(e){var t,r,n=function(n){if(r=T(n,e),r>-1)return t=n[r],!0};return this._eachPristineItem(n),t},_cancelModel:function(e){var t=this._pristineForModel(e);this._eachItem(this._data,function(r){var n=F(r,e);n>=0&&(!t||e.isNew()&&!t.__state__?r.splice(n,1):(r[n].accept(t),"update"==t.__state__&&(r[n].dirty=!0)))})},_submit:function(t,r){var n=this;n.trigger(Te,{type:"submit"}),n.transport.submit(le({success:function(r,n){var i=e.grep(t,function(e){return e.type==n})[0];i&&i.resolve({response:r,models:i.models,type:n})},error:function(e,r,i){for(var a=0;a<t.length;a++)t[a].reject(e);n.error(e,r,i)}},r))},_sendSubmit:function(t,r,n){var i=this,a=[];return i.options.batch&&(t.length&&a.push(e.Deferred(function(e){e.type="create",e.models=t})),r.length&&a.push(e.Deferred(function(e){e.type="update",e.models=r})),n.length&&a.push(e.Deferred(function(e){e.type="destroy",e.models=n})),i._submit(a,{data:{created:i.reader.serialize(y(t)),updated:i.reader.serialize(y(r)),destroyed:i.reader.serialize(y(n))}})),a},_promise:function(t,r,n){var i=this;return e.Deferred(function(e){i.trigger(Te,{type:n}),i.transport[n].call(i.transport,le({success:function(t){e.resolve({response:t,models:r,type:n})},error:function(t,r,n){e.reject(t),i.error(t,r,n)}},t))}).promise()},_send:function(e,t){var r,n,i=this,a=[],s=i.reader.serialize(y(t));if(i.options.batch)t.length&&a.push(i._promise({data:{models:s}},t,e));else for(r=0,n=t.length;r<n;r++)a.push(i._promise({data:s[r]},[t[r]],e));return a},read:function(t){
var r=this,n=r._params(t),i=e.Deferred();return r._queueRequest(n,function(){var e=r.trigger(Te,{type:"read"});e?(r._dequeueRequest(),i.resolve(e)):(r.trigger(Fe),r._ranges=[],r.trigger("reset"),r.online()?r.transport.read({data:n,success:function(e){r._ranges=[],r.success(e,n),i.resolve()},error:function(){var e=He.call(arguments);r.error.apply(r,e),i.reject.apply(i,e)}}):null!=r.options.offlineStorage&&(r.success(r.offlineData(),n),i.resolve()))}),i.promise()},_readAggregates:function(e){return this.reader.aggregates(e)},success:function(e){var r,n,i,a,s,o,u,l,f=this,d=f.options;if(f.trigger(Ae,{response:e,type:"read"}),f.online()){if(e=f.reader.parse(e),f._handleCustomErrors(e))return f._dequeueRequest(),t;f._total=f.reader.total(e),f._aggregate&&d.serverAggregates&&(f._aggregateResult=f._readAggregates(e)),e=f._readData(e),f._destroyed=[]}else{for(e=f._readData(e),r=[],n={},i=f.reader.model,a=i?i.idField:"id",s=0;s<this._destroyed.length;s++)o=this._destroyed[s][a],n[o]=o;for(s=0;s<e.length;s++)u=e[s],l=u.__state__,"destroy"==l?n[u[a]]||this._destroyed.push(this._createNewModel(u)):r.push(u);e=r,f._total=e.length}f._pristineTotal=f._total,f._pristineData=e.slice(0),f._detachObservableParents(),f._data=f._observe(e),f._markOfflineUpdatesAsDirty(),f._storeData(),f._addRange(f._data),f._process(f._data),f._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=ve)},_storeData:function(e){function t(e){var r,n,i,a=[];for(r=0;r<e.length;r++)n=e.at(r),i=n.toJSON(),s&&n.items?i.items=t(n.items):(i.uid=n.uid,o&&(n.isNew()?i.__state__="create":n.dirty&&(i.__state__="update"))),a.push(i);return a}var r,n,i,a,s=this._isServerGrouped(),o=this.reader.model;if(null!=this.options.offlineStorage){for(r=t(this._data),n=[],i=0;i<this._destroyed.length;i++)a=this._destroyed[i].toJSON(),a.__state__="destroy",n.push(a);this.offlineData(r.concat(n)),e&&(this._pristineData=this._readData(r))}},_addRange:function(e){var t=this,r=t._skip||0,n=r+t._flatData(e,!0).length;t._ranges.push({start:r,end:n,data:e,timestamp:(new Date).getTime()}),t._ranges.sort(function(e,t){return e.start-t.start})},error:function(e,t,r){this._dequeueRequest(),this.trigger(Ae,{}),this.trigger(Ce,{xhr:e,status:t,errorThrown:r})},_params:function(e){var t=this,r=le({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 r.take,delete r.skip,delete r.page,delete r.pageSize),t.options.serverGrouping?t.reader.model&&r.group&&(r.group=M(r.group,t.reader.model)):delete r.group,t.options.serverFiltering?t.reader.model&&r.filter&&(r.filter=N(r.filter,t.reader.model)):delete r.filter,t.options.serverSorting?t.reader.model&&r.sort&&(r.sort=M(r.sort,t.reader.model)):delete r.sort,t.options.serverAggregates?t.reader.model&&r.aggregate&&(r.aggregate=M(r.aggregate,t.reader.model)):delete r.aggregate,r},_queueRequest:function(e,r){var n=this;n._requestInProgress?n._pending={callback:fe(r,n),options:e}:(n._requestInProgress=!0,n._pending=t,r())},_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(Ce,{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,r=this,n=r.reader.model;return r._shouldDetachObservableParents=!0,e instanceof Ke?(r._shouldDetachObservableParents=!1,r._shouldWrap(e)&&(e.type=r.reader.model,e.wrapAll(e,e))):(t=r.pageSize()&&!r.options.serverPaging?U:Ke,e=new t(e,r.reader.model),e.parent=function(){return r.parent()}),r._isServerGrouped()&&D(e,n),r._changeHandler&&r._data&&r._data instanceof Ke?r._data.unbind(ze,r._changeHandler):r._changeHandler=fe(r._change,r),e.bind(ze,r._changeHandler)},_updateTotalForAction:function(e,t){var r=this,n=parseInt(r._total,10);v(r._total)||(n=parseInt(r._pristineTotal,10)),"add"===e?n+=t.length:"remove"===e?n-=t.length:"itemchange"===e||"sync"===e||r.options.serverPaging?"sync"===e&&(n=r._pristineTotal=parseInt(r._total,10)):n=r._pristineTotal,r._total=n},_change:function(e){var t,r,n,i=this,a=e?e.action:"";if("remove"===a)for(t=0,r=e.items.length;t<r;t++)e.items[t].isNew&&e.items[t].isNew()||i._destroyed.push(e.items[t]);!i.options.autoSync||"add"!==a&&"remove"!==a&&"itemchange"!==a?(i._updateTotalForAction(a,e?e.items:[]),i._process(i._data,e)):(n=function(t){"sync"===t.action&&(i.unbind("change",n),i._updateTotalForAction(a,e.items))},i.first("change",n),i.sync())},_calculateAggregates:function(e,t){t=t||{};var r=new a(e),n=t.aggregate,i=t.filter;return i&&(r=r.filter(i)),r.aggregate(n)},_process:function(e,r){var n,i=this,a={};i.options.serverPaging!==!0&&(a.skip=i._skip,a.take=i._take||i._pageSize,a.skip===t&&i._page!==t&&i._pageSize!==t&&(a.skip=(i._page-1)*i._pageSize)),i.options.serverSorting!==!0&&(a.sort=i._sort),i.options.serverFiltering!==!0&&(a.filter=i._filter),i.options.serverGrouping!==!0&&(a.group=i._group),i.options.serverAggregates!==!0&&(a.aggregate=i._aggregate,i._aggregateResult=i._calculateAggregates(e,a)),n=i._queryProcess(e,a),i.view(n.data),n.total===t||i.options.serverFiltering||(i._total=n.total),r=r||{},r.items=r.items||i._view,i.trigger(ze,r)},_queryProcess:function(e,t){return a.process(e,t)},_mergeState:function(e){var r=this;return e!==t&&(r._pageSize=e.pageSize,r._page=e.page,r._sort=e.sort,r._filter=e.filter,r._group=e.group,r._aggregate=e.aggregate,r._skip=r._currentRangeStart=e.skip,r._take=e.take,r._skip===t&&(r._skip=r._currentRangeStart=r.skip(),e.skip=r.skip()),r._take===t&&r._pageSize!==t&&(r._take=r._pageSize,e.take=r._take),e.sort&&(r._sort=e.sort=s(e.sort)),e.filter&&(r._filter=e.filter=u(e.filter)),e.group&&(r._group=e.group=g(e.group)),e.aggregate&&(r._aggregate=e.aggregate=c(e.aggregate))),e},query:function(r){var n,i,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.read(this._mergeState(r)):(i=this.trigger(Te,{type:"read"}),i||(this.trigger(Fe),n=this._queryProcess(this._data,this._mergeState(r)),this.options.serverFiltering||(this._total=n.total!==t?n.total:this._data.length),this._aggregateResult=this._calculateAggregates(this._data,r),this.view(n.data),this.trigger(Ae,{type:"read"}),this.trigger(ze,{items:n.data})),e.Deferred().resolve(i).promise())},fetch:function(e){var t=this,r=function(r){r!==!0&&ye(e)&&e.call(t)};return this._query().then(r)},_query:function(e){var t=this;return t.query(le({},{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,r=t.page(),n=t.total();if(e=e||{},r&&!(n&&r+1>t.totalPages()))return t._skip=t._currentRangeStart=r*t.take(),r+=1,e.page=r,t._query(e),r},prev:function(e){var t=this,r=t.page();if(e=e||{},r&&1!==r)return t._skip=t._currentRangeStart=t._skip-t.take(),r-=1,e.page=r,t._query(e),r},page:function(e){var r,n=this;return e!==t?(e=Ge.max(Ge.min(Ge.max(e,1),n.totalPages()),1),n._query({page:e}),t):(r=n.skip(),r!==t?Ge.round((r||0)/(n.take()||1))+1:t)},pageSize:function(e){var r=this;return e!==t?(r._query({pageSize:e,page:1}),t):r.take()},sort:function(e){var r=this;return e!==t?(r._query({sort:e}),t):r._sort},filter:function(e){var r=this;return e===t?r._filter:(r.trigger("reset"),r._query({filter:e,page:1}),t)},group:function(e){var r=this;return e!==t?(r._query({group:e}),t):r._group},total:function(){return parseInt(this._total||0,10)},aggregate:function(e){var r=this;return e!==t?(r._query({aggregate:e}),t):r._aggregate},aggregates:function(){var e=this._aggregateResult;return he(e)&&(e=this._emptyAggregates(this.aggregate())),e},_emptyAggregates:function(e){var t,r,n={};if(!he(e))for(t={},ce(e)||(e=[e]),r=0;r<e.length;r++)t[e[r].aggregate]=0,n[e[r].field]=t;return n},_wrapInEmptyGroup:function(e){var t,r,n,i,a=this.group();for(n=a.length-1,i=0;n>=i;n--)r=a[n],t={value:e.get(r.field),field:r.field,items:t?[t]:[e],hasSubgroups:!!t,aggregates:this._emptyAggregates(r.aggregates)};return t},totalPages:function(){var e=this,t=e.pageSize()||e.total();return Ge.ceil((e.total()||0)/t)},inRange:function(e,t){var r=this,n=Ge.min(e+t,r.total());return!r.options.serverPaging&&r._data.length>0||r._findRange(e,n).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,r){var n,i,a,s,o,u,l,f;if(this._currentRequestTimeStamp=this._timeStamp(),this._skipRequestsInProgress=!0,e=Ge.min(e||0,this.total()),n=this,i=Ge.max(Ge.floor(e/r),0)*r,a=Ge.min(i+r,n.total()),s=n._findRange(e,Ge.min(e+r,n.total())),s.length){n._pending=t,n._skip=e>n.skip()?Ge.min(a,(n.totalPages()-1)*n.take()):i,n._currentRangeStart=e,n._take=r,o=n.options.serverPaging,u=n.options.serverSorting,l=n.options.serverFiltering,f=n.options.serverAggregates;try{n.options.serverPaging=!0,n._isServerGrouped()||n.group()&&n.group().length||(n.options.serverSorting=!0),n.options.serverFiltering=!0,n.options.serverPaging=!0,n.options.serverAggregates=!0,o&&(n._detachObservableParents(),n._data=s=n._observe(s)),n._process(s)}finally{n.options.serverPaging=o,n.options.serverSorting=u,n.options.serverFiltering=l,n.options.serverAggregates=f}}else r!==t&&(n._rangeExists(i,a)?i<e&&n.prefetch(a,r,function(){n.range(e,r)}):n.prefetch(i,r,function(){e>i&&a<n.total()&&!n._rangeExists(a,Ge.min(a+r,n.total()))?n.prefetch(a,r,function(){n.range(e,r)}):n.range(e,r)}))},_findRange:function(e,r){var n,i,a,o,u,l,f,d,h,c,p,_,v=this,m=v._ranges,y=[],S=v.options,b=S.serverSorting||S.serverPaging||S.serverFiltering||S.serverGrouping||S.serverAggregates;for(i=0,p=m.length;i<p;i++)if(n=m[i],e>=n.start&&e<=n.end){for(c=0,a=i;a<p;a++)if(n=m[a],h=v._flatData(n.data,!0),h.length&&e+c>=n.start&&(l=n.data,f=n.end,b||(_=g(v.group()||[]).concat(s(v.sort()||[])),d=v._queryProcess(n.data,{sort:_,filter:v.filter()}),h=l=d.data,d.total!==t&&(f=d.total)),o=0,e+c>n.start&&(o=e+c-n.start),u=h.length,f>r&&(u-=f-r),c+=u-o,y=v._mergeGroups(y,l,o,u),r<=n.end&&c==r-e))return y;break}return[]},_mergeGroups:function(e,t,r,n){if(this._isServerGrouped()){var i,a=t.toJSON();return e.length&&(i=e[e.length-1]),x(i,a,r,n),e.concat(a)}return e.concat(t.slice(r,n))},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,r,n){var i=this,a=i._timeStamp();return function(s){var o,u,l,f=!1,d={start:e,end:t,data:[],timestamp:i._timeStamp()};if(i._dequeueRequest(),i.trigger(Ae,{response:s,type:"read"}),s=i.reader.parse(s),l=i._readData(s),l.length){for(o=0,u=i._ranges.length;o<u;o++)if(i._ranges[o].start===e){f=!0,d=i._ranges[o];break}f||i._ranges.push(d)}d.data=i._observe(l),d.end=d.start+i._flatData(d.data,!0).length,i._ranges.sort(function(e,t){return e.start-t.start}),i._total=i.reader.total(s),(n||a>=i._currentRequestTimeStamp||!i._skipRequestsInProgress)&&(r&&l.length?r():i.trigger(ze,{}))}},prefetch:function(e,t,r){var n=this,i=Ge.min(e+t,n.total()),a={take:t,skip:e,page:e/t+1,pageSize:t,sort:n._sort,filter:n._filter,group:n._group,aggregate:n._aggregate};n._rangeExists(e,i)?r&&r():(clearTimeout(n._timeout),n._timeout=setTimeout(function(){n._queueRequest(a,function(){n.trigger(Te,{type:"read"})?n._dequeueRequest():n.transport.read({data:n._params(a),success:n._prefetchSuccessHandler(e,i,r),error:function(){var e=He.call(arguments);n.error.apply(n,e)}})})},100))},_multiplePrefetch:function(e,t,r){var n=this,i=Ge.min(e+t,n.total()),a={take:t,skip:e,page:e/t+1,pageSize:t,sort:n._sort,filter:n._filter,group:n._group,aggregate:n._aggregate};n._rangeExists(e,i)?r&&r():n.trigger(Te,{type:"read"})||n.transport.read({data:n._params(a),success:n._prefetchSuccessHandler(e,i,r,!0)})},_rangeExists:function(e,t){var r,n,i=this,a=i._ranges;for(r=0,n=a.length;r<n;r++)if(a[r].start<=e&&a[r].end>=t)return!0;return!1},_removeModelFromRanges:function(e){var t,r,n,i,a;for(i=0,a=this._ranges.length;i<a&&(n=this._ranges[i],this._eachItem(n.data,function(n){t=C(n,e),t&&(r=!0)}),!r);i++);},_updateRangesLength:function(){var e,t,r,n,i=0;for(r=0,n=this._ranges.length;r<n;r++)e=this._ranges[r],e.start=e.start-i,t=this._flatData(e.data,!0).length,i=e.end-t,e.end=e.start+t}}),ie={},ie.create=function(t,r,n){var i,a=t.transport?e.extend({},t.transport):null;return a?(a.read=typeof a.read===we?{url:a.read}:a.read,"jsdo"===t.type&&(a.dataSource=n),t.type&&(me.data.transports=me.data.transports||{},me.data.schemas=me.data.schemas||{},me.data.transports[t.type]?de(me.data.transports[t.type])?a=le(!0,{},me.data.transports[t.type],a):i=new me.data.transports[t.type](le(a,{data:r})):me.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=le(!0,{},me.data.schemas[t.type],t.schema)),i||(i=ye(a.read)?a:new ee(a))):i=new Z({data:t.data||[]}),i},ne.create=function(e){(ce(e)||e instanceof Ke)&&(e={data:e});var r,n,i,a=e||{},s=a.data,o=a.fields,u=a.table,l=a.select,f={};if(s||!o||a.transport||(u?s=G(u,o):l&&(s=j(l,o),a.group===t&&s[0]&&s[0].optgroup!==t&&(a.group="optgroup"))),me.data.Model&&o&&(!a.schema||!a.schema.model)){for(r=0,n=o.length;r<n;r++)i=o[r],i.type&&(f[i.field]=i);he(f)||(a.schema=le(!0,a.schema,{model:{fields:f}}))}return a.data=s,l=null,a.select=null,u=null,a.table=null,a instanceof ne?a:new ne(a)},ae=W.define({idField:"id",init:function(e){var t=this,r=t.hasChildren||e&&e.hasChildren,n="items",i={};me.data.Model.fn.init.call(t,e),typeof t.children===we&&(n=t.children),i={schema:{data:n,model:{hasChildren:r,id:t.idField,fields:t.fields}}},typeof t.children!==we&&le(i,t.children),i.data=e,r||(r=i.schema.data),typeof r===we&&(r=me.getter(r)),ye(r)&&(t.hasChildren=!!r.call(t,t)),t._childrenOptions=i,t.hasChildren&&t._initChildren(),t._loaded=!(!e||!e._loaded)},_initChildren:function(){var e,t,r,n=this;n.children instanceof se||(e=n.children=new se(n._childrenOptions),t=e.transport,r=t.parameterMap,t.parameterMap=function(e,t){return e[n.idField||"id"]=n.id,r&&(e=r(e,t)),e},e.parent=function(){return n},e.bind(ze,function(e){e.node=e.node||n,n.trigger(ze,e)}),e.bind(Ce,function(e){var t=n.parent();t&&(e.node=e.node||n,t.trigger(Ce,e))}),n._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 r,n,i={},a="_query";return this.hasChildren?(this._initChildren(),r=this.children,i[this.idField||"id"]=this.id,this._loaded||(r._data=t,a="read"),r.one(ze,fe(this._childrenLoaded,this)),n=r[a](i)):this.loaded(!0),n||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 W.fn.shouldSerialize.call(this,e)&&"children"!==e&&"_loaded"!==e&&"hasChildren"!==e&&"_childrenOptions"!==e}}),se=ne.extend({init:function(e){var t=ae.define({children:e});ne.fn.init.call(this,le(!0,{},{schema:{modelBase:t,model:t}},e)),this._attachBubbleHandlers()},_attachBubbleHandlers:function(){var e=this;e._data.bind(Ce,function(t){e.trigger(Ce,t)})},remove:function(e){var t,r=e.parentNode(),n=this;return r&&r._initChildren&&(n=r.children),t=ne.fn.remove.call(n,e),r&&!n.data().length&&(r.hasChildren=!1),t},success:E("success"),data:E("data"),insert:function(e,t){var r=this.parent();return r&&r._initChildren&&(r.hasChildren=!0,r._initChildren()),ne.fn.insert.call(this,e,t)},_find:function(e,t){var r,n,i,a,s=this._data;if(s){if(i=ne.fn[e].call(this,t))return i;for(s=this._flatData(this._data),r=0,n=s.length;r<n;r++)if(a=s[r].children,a instanceof se&&(i=a[e](t)))return i}},get:function(e){return this._find("get",e)},getByUid:function(e){return this._find("getByUid",e)}}),se.create=function(e){e=e&&e.push?{data:e}:e;var t=e||{},r=t.data,n=t.fields,i=t.list;return r&&r._dataSource?r._dataSource:(r||!n||t.transport||i&&(r=B(i,n)),t.data=r,t instanceof se?t:new se(t))},oe=me.Observable.extend({init:function(e,t,r){me.Observable.fn.init.call(this),this._prefetching=!1,this.dataSource=e,this.prefetch=!r;var n=this;e.bind("change",function(){n._change()}),e.bind("reset",function(){n._reset()}),this._syncWithDataSource(),this.setViewSize(t)},setViewSize:function(e){this.viewSize=e,this._recalculate()},at:function(e){var r=this.pageSize,n=!0;return e>=this.total()?(this.trigger("endreached",{index:e}),null):this.useRanges?this.useRanges?((e<this.dataOffset||e>=this.skip+r)&&(n=this.range(Math.floor(e/r)*r)),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),n?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,r=e.skip-e.viewSize+t,n=Ge.max(Ge.floor(r/t),0)*t;this.offset=r,this.dataSource.prefetch(n,t,function(){e._goToRange(r,!0)})},range:function(e,t){if(this.offset===e)return!0;var r=this,n=this.pageSize,i=Ge.max(Ge.floor(e/n),0)*n,a=this.dataSource;return t&&(i+=n),a.inRange(e,n)?(this.offset=e,this._recalculate(),this._goToRange(e),!0):!this.prefetch||(a.prefetch(i,n,function(){r.offset=e,r._recalculate(),r._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,r=this.skip+t,n=this.dataSource;n.inRange(r,t)||this._prefetching||!this.prefetch||(this._prefetching=!0,this.trigger("prefetching",{skip:r,take:t}),n.prefetch(r,t,function(){e._prefetching=!1,e.trigger("prefetched",{skip:r,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,r=this.viewSize,n=Math.ceil(t/e)*e;this.skip=n,this.midPageThreshold=n+e-1,this.nextPageThreshold=n+r-1,this.prefetchThreshold=n+Math.floor(e/3*2),this.pullBackThreshold=this.offset-1,this.nextMidRange=n+e-r,this.nextFullRange=n,this.previousMidRange=t-r,this.previousFullRange=n-e}}),ue=me.Observable.extend({init:function(e,t){var r=this;me.Observable.fn.init.call(r),this.dataSource=e,this.batchSize=t,this._total=0,this.buffer=new oe(e,3*t),this.buffer.bind({endreached:function(e){r.trigger("endreached",{index:e.index})},prefetching:function(e){r.trigger("prefetching",{skip:e.skip,take:e.take})},prefetched:function(e){r.trigger("prefetched",{skip:e.skip,take:e.take})},reset:function(){r._total=0,r.trigger("reset")},resize:function(){r._total=Math.ceil(this.length/r.batchSize),r.trigger("resize",{total:r.total(),offset:this.offset})}})},syncDataSource:function(){this.buffer.syncDataSource()},at:function(e){var t,r,n=this.buffer,i=e*this.batchSize,a=this.batchSize,s=[];for(n.offset>i&&n.at(n.offset-1),r=0;r<a&&(t=n.at(i+r),null!==t);r++)s.push(t);return s},total:function(){return this._total},destroy:function(){this.buffer.destroy(),this.unbind()}}),le(!0,me.data,{readers:{json:re},Query:a,DataSource:ne,HierarchicalDataSource:se,Node:ae,ObservableObject:J,ObservableArray:Ke,LazyObservableArray:U,LocalTransport:Z,RemoteTransport:ee,Cache:te,DataReader:re,Model:W,Buffer:oe,BatchBuffer:ue})}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,r){(r||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 a(e){return p.template(e,{useWithBlock:!1})}function i(e){return e.find("> div .k-checkbox-wrapper [type=checkbox]")}function r(e){return function(t,n){n=n.closest(P);var a,i=n.parent();return i.parent().is("li")&&(a=i.parent()),this._dataSourceMove(t,i,a,function(t,a){return this._insert(t.data(),a,n.index()+e)})}}function s(t,n){for(var a;t&&"ul"!=t.nodeName.toLowerCase();)a=t,t=t.nextSibling,3==a.nodeType&&(a.nodeValue=e.trim(a.nodeValue)),u.test(a.className)?n.insertBefore(a,n.firstChild):n.appendChild(a)}function o(t){var n=t.children("div"),a=t.children("ul"),i=n.children(".k-icon"),r=t.children(":checkbox"),o=n.children(".k-in");t.hasClass("k-treeview")||(n.length||(n=e("<div />").prependTo(t)),!i.length&&a.length?i=e("<span class='k-icon' />").prependTo(n):a.length&&a.children().length||(i.remove(),a.remove()),r.length&&e("<span class='k-checkbox-wrapper' />").appendTo(n).append(r),o.length||(o=t.children("a").eq(0).addClass("k-in k-link"),o.length||(o=e("<span class='k-in' />")),o.appendTo(n),n.length&&s(n[0].nextSibling,o[0])))}var d,l,c,h,u,p=window.kendo,f=p.ui,g=p.data,m=e.extend,k=p.template,v=e.isArray,_=f.Widget,x=g.HierarchicalDataSource,b=e.proxy,C=p.keys,w=".kendoTreeView",y="select",S="check",I="navigate",N="expand",T="change",D="error",B="checked",A="indeterminate",E="collapse",H="dragstart",U="drag",q="drop",O="dragend",V="dataBound",L="click",F="undefined",R="k-state-hover",M="k-treeview",j=":visible",P=".k-item",G="string",W="aria-selected",Q="aria-disabled",X={text:"dataTextField",url:"dataUrlField",spriteCssClass:"dataSpriteCssClassField",imageUrl:"dataImageUrlField"},Y=function(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&1===e.nodeType&&typeof e.nodeName===G};l=n(".k-group"),c=n(".k-group,.k-content"),h=function(e){return e.children("div").children(".k-icon")},u=/k-sprite/,d=p.ui.DataBoundWidget.extend({init:function(e,t){var n,a=this,i=!1,r=t&&!!t.dataSource;v(t)&&(t={dataSource:t}),t&&typeof t.loadOnDemand==F&&v(t.dataSource)&&(t.loadOnDemand=!1),_.prototype.init.call(a,e,t),e=a.element,t=a.options,n=e.is("ul")&&e||e.hasClass(M)&&e.children("ul"),i=!r&&n.length,i&&(t.dataSource.list=n),a._animation(),a._accessors(),a._templates(),e.hasClass(M)?(a.wrapper=e,a.root=e.children("ul").eq(0)):(a._wrapper(),n&&(a.root=e,a._group(a.wrapper))),a._tabindex(),a.root.attr("role","tree"),a._dataSource(i),a._attachEvents(),a._dragging(),i?a._syncHtmlAndDataSource():t.autoBind&&(a._progress(!0),a.dataSource.fetch()),t.checkboxes&&t.checkboxes.checkChildren&&a.updateIndeterminate(),a.element[0].id&&(a._ariaId=p.format("{0}_tv_active",a.element[0].id)),p.notify(a)},_attachEvents:function(){var t=this,n=".k-in:not(.k-state-selected,.k-state-disabled)",a="mouseenter";t.wrapper.on(a+w,".k-in.k-state-selected",function(e){e.preventDefault()}).on(a+w,n,function(){e(this).addClass(R)}).on("mouseleave"+w,n,function(){e(this).removeClass(R)}).on(L+w,n,b(t._click,t)).on("dblclick"+w,".k-in:not(.k-state-disabled)",b(t._toggleButtonClick,t)).on(L+w,".k-i-expand,.k-i-collapse",b(t._toggleButtonClick,t)).on("keydown"+w,b(t._keydown,t)).on("focus"+w,b(t._focus,t)).on("blur"+w,b(t._blur,t)).on("mousedown"+w,".k-in,.k-checkbox-wrapper :checkbox,.k-i-expand,.k-i-collapse",b(t._mousedown,t)).on("change"+w,".k-checkbox-wrapper :checkbox",b(t._checkboxChange,t)).on("click"+w,".k-checkbox-wrapper :checkbox",b(t._checkboxClick,t)).on("click"+w,".k-request-retry",b(t._retryRequest,t)).on("click"+w,function(n){e(n.target).is(":kendoFocusable")||t.focus()})},_checkboxClick:function(t){var n=e(t.target);n.data(A)&&(n.data(A,!1).prop(A,!1).prop(B,!0),this._checkboxChange(t))},_syncHtmlAndDataSource:function(e,t){e=e||this.root,t=t||this.dataSource;var n,a,r,s,o,d=t.view(),l=p.attr("uid"),c=p.attr("expanded"),h=this.options.checkboxes,u=e.children("li");for(n=0;n<u.length;n++)r=d[n],s=r.uid,a=u.eq(n),a.attr("role","treeitem").attr(l,s),r.expanded="true"===a.attr(c),h&&(o=i(a),r.checked=o.prop(B),o.attr("id","_"+s),o.next(".k-checkbox-label").attr("for","_"+s)),this._syncHtmlAndDataSource(a.children("ul"),r.children)},_animation:function(){var e=this.options,t=e.animation;t===!1?t={expand:{effects:{}},collapse:{hide:!0,effects:{}}}:t.collapse&&"effects"in t.collapse||(t.collapse=m({reverse:!0},t.expand)),m(t.collapse,{hide:!0}),e.animation=t},_dragging:function(){var t,n=this.options.dragAndDrop,a=this.dragging;n&&!a?(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:b(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(H,{sourceNode:e[0]})},drag:function(e){t.trigger(U,{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(e){return t.trigger(q,{originalEvent:e.originalEvent,sourceNode:e.source,destinationNode:e.destination,valid:e.valid,setValid:function(t){this.valid=t,e.setValid(t)},dropTarget:e.dropTarget,dropPosition:e.position})},dragend:function(e){function n(n){t.updateIndeterminate(),t.trigger(O,{originalEvent:e.originalEvent,sourceNode:n&&n[0],destinationNode:i[0],dropPosition:r})}var a=e.source,i=e.destination,r=e.position;"over"==r?t.append(a,i,n):("before"==r?a=t.insertBefore(a,i):"after"==r&&(a=t.insertAfter(a,i)),n(a))}})):!n&&a&&(a.destroy(),this.dragging=null)},_hintText:function(e){return this.templates.dragClue({item:this.dataItem(e),treeview:this.options})},_templates:function(){var e=this,t=e.options,n=b(e._fieldAccessor,e);t.template&&typeof t.template==G?t.template=k(t.template):t.template||(t.template=a("# var text = "+n("text")+"(data.item); ## if (typeof data.item.encoded != 'undefined' && data.item.encoded === false) {##= text ## } else { ##: text ## } #")),e._checkboxes(),e.templates={wrapperCssClass:function(e,t){var n="k-item",a=t.index;return e.firstLevel&&0===a&&(n+=" k-first"),a==e.length-1&&(n+=" k-last"),n},cssClass:function(e,t){var n="",a=t.index,i=e.length-1;return e.firstLevel&&0===a&&(n+="k-top "),n+=0===a&&a!=i?"k-top":a==i?"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:a("#= data.treeview.template(data) #"),group:a("<ul class='#= data.r.groupCssClass(data.group) #'#= data.r.groupAttributes(data.group) #>#= data.renderItems(data) #</ul>"),itemContent:a("# 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:a("# 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:a("# var item = data.item, r = data.r; #<li role='treeitem' class='#= r.wrapperCssClass(data.group, item) #' "+p.attr("uid")+"='#= item.uid #' aria-selected='#= item.selected ? \"true\" : \"false \" #' #=item.enabled === false ? \"aria-disabled='true'\" : ''## if (item.expanded) { #data-expanded='true' aria-expanded='true'# } #>#= r.itemElement(data) #</li>"),loading:a("<div class='k-icon k-i-loading' /> #: data.messages.loading #"),retry:a("#: 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._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=b(this.refresh,this),this._errorHandler=b(this._error,this),this.dataSource.bind(T,this._refreshHandler),this.dataSource.bind(D,this._errorHandler)},_unbindDataSource:function(){var e=this.dataSource;e&&(e.unbind(T,this._refreshHandler),e.unbind(D,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,a=n.options,i=a.dataSource;i=v(i)?{data:i}:i,n._unbindDataSource(),i.fields||(i.fields=[{field:"text"},{field:"url"},{field:"spriteCssClass"},{field:"imageUrl"}]),n.dataSource=i=x.create(i),e&&(i.fetch(),t(i.view())),n._bindDataSource()},events:[H,U,q,O,V,N,E,y,T,I,S],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,a=this,i=a.options,r=a.element;for(e in X)t=i[X[e]],n=r.attr(p.attr(e+"-field")),!t&&n&&(t=n),t||(t=e),v(t)||(t=[t]),i[X[e]]=t},_fieldAccessor:function(t){var n=this.options[X[t]],a=n.length,i="(function(item) {";return 0===a?i+="return item['"+t+"'];":(i+="var levels = ["+e.map(n,function(e){return"function(d){ return "+p.expr(e)+"}"}).join(",")+"];",i+="return levels[Math.min(item.level(), "+a+"-1)](item)"),i+="})"},setOptions:function(e){_.fn.setOptions.call(this,e),this._animation(),this._dragging(),this._templates()},_trigger:function(e,t){return this.trigger(e,{node:t.closest(P)[0]})},_setChecked:function(t,n){if(t&&e.isFunction(t.view))for(var a=0,i=t.view();a<i.length;a++)i[a][B]=n,i[a].children&&this._setChecked(i[a].children,n)},_setIndeterminate:function(e){var t,n,a,r=l(e),s=!0;if(r.length&&(t=i(r.children()),n=t.length)){if(n>1){for(a=1;a<n;a++)if(t[a].checked!=t[a-1].checked||t[a].indeterminate||t[a-1].indeterminate){s=!1;break}}else s=!t[0].indeterminate;return i(e).data(A,!s).prop(A,!s).prop(B,s&&t[0].checked)}},updateIndeterminate:function(e){var t,n,a;if(e=e||this.wrapper,t=l(e).children(),t.length){for(n=0;n<t.length;n++)this.updateIndeterminate(t.eq(n));a=this._setIndeterminate(e),a&&a.prop(B)&&(this.dataItem(e).checked=!0)}},_bubbleIndeterminate:function(e){if(e.length){var t,n=this.parent(e);n.length&&(this._setIndeterminate(n),t=n.children("div").find(".k-checkbox-wrapper :checkbox"),t.prop(A)===!1?this.dataItem(n).set(B,t.prop(B)):delete this.dataItem(n).checked,this._bubbleIndeterminate(n))}},_checkboxChange:function(t){var n=e(t.target),a=n.prop(B),i=n.closest(P),r=this.dataItem(i);r.checked!=a&&(r.set(B,a),this._trigger(S,i))},_toggleButtonClick:function(t){var n=e(t.currentTarget).closest(P);n.is("[aria-disabled='true']")||this.toggle(e(t.target).closest(P))},_mousedown:function(t){var n=e(t.currentTarget).closest(P);n.is("[aria-disabled='true']")||(this._clickTarget=n,this.current(n))},_focusable:function(e){return e&&e.length&&e.is(":visible")&&!e.find(".k-in:first").hasClass("k-state-disabled")},_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],a=[],i=[],r=document.documentElement;do n=n.parentNode,n.scrollHeight>n.clientHeight&&(a.push(n),i.push(n.scrollTop));while(n!=r);for(t.focus(),e=0;e<a.length;e++)a[e].scrollTop=i[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-state-disabled")},parent:function(t){var n,a,i=/\bk-treeview\b/,r=/\bk-item\b/;typeof t==G&&(t=this.element.find(t)),Y(t)||(t=t[0]),a=r.test(t.className);do t=t.parentNode,r.test(t.className)&&(a?n=t:a=!0);while(!i.test(t.className)&&!n);return e(n)},_nextVisible:function(e){function t(e){for(;e.length&&!e.next().length;)e=a.parent(e);return e.next().length?e.next():e}var n,a=this,i=a._expanded(e);return e.length&&e.is(":visible")?i?(n=l(e).children().first(),n.length||(n=t(e))):n=t(e):n=a.root.children().eq(0),a._enabled(n)||(n=a._nextVisible(n)),n},_previousVisible:function(e){var t,n,a=this;if(!e.length||e.prev().length)for(n=e.length?e.prev():a.root.children().last();a._expanded(n)&&(t=l(n).children().last(),t.length);)n=t;else n=a.parent(e)||e;return a._enabled(n)||(n=a._previousVisible(n)),n},_keydown:function(n){var a,i=this,r=n.keyCode,s=i.current(),o=i._expanded(s),d=s.find(".k-checkbox-wrapper:first :checkbox"),l=p.support.isRtl(i.element);n.target==n.currentTarget&&(!l&&r==C.RIGHT||l&&r==C.LEFT?o?a=i._nextVisible(s):i.expand(s):!l&&r==C.LEFT||l&&r==C.RIGHT?o?i.collapse(s):(a=i.parent(s),i._enabled(a)||(a=t)):r==C.DOWN?a=i._nextVisible(s):r==C.UP?a=i._previousVisible(s):r==C.HOME?a=i._nextVisible(e()):r==C.END?a=i._previousVisible(e()):r==C.ENTER?s.find(".k-in:first").hasClass("k-state-selected")||i._trigger(y,s)||i.select(s):r==C.SPACEBAR&&d.length&&(d.prop(B,!d.prop(B)).data(A,!1).prop(A,!1),i._checkboxChange({target:d}),a=s),a&&(n.preventDefault(),s[0]!=a[0]&&(i._trigger(I,a),i.current(a))))},_click:function(t){var n,a=this,i=e(t.currentTarget),r=c(i.closest(P)),s=i.attr("href");n=s?"#"==s||s.indexOf("#"+this.element.id+"-")>=0:r.length&&!r.children().length,n&&t.preventDefault(),i.hasClass(".k-state-selected")||a._trigger(y,i)||a.select(i)},_wrapper:function(){var e,t,n=this,a=n.element,i="k-widget k-treeview";a.is("ul")?(e=a.wrap("<div />").parent(),t=a):(e=a,t=e.children("ul").eq(0)),n.wrapper=e.addClass(i),n.root=t},_group:function(e){var t=this,n=e.hasClass(M),a={firstLevel:n,expanded:n||t._expanded(e)},i=e.children("ul");i.addClass(t.templates.groupCssClass(a)).css("display",a.expanded?"":"none"),t._nodes(i,a)},_nodes:function(t,n){var a,i=this,r=t.children("li");n=m({length:r.length},n),r.each(function(t,r){r=e(r),a={index:t,expanded:i._expanded(r)},o(r),i._updateNodeClasses(r,n,a),i._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' /><label for='_#= item.uid #' class='k-checkbox-label'></label>",n=m({template:e},t.checkboxes),typeof n.template==G&&(n.template=k(n.template)),t.checkboxes=n)},_updateNodeClasses:function(e,t,n){var a,i,r=e.children("div"),s=e.children("ul"),o=this.templates;e.hasClass("k-treeview")||(n=n||{},n.expanded=typeof n.expanded!=F?n.expanded:this._expanded(e),n.index=typeof n.index!=F?n.index:e.index(),n.enabled=typeof n.enabled!=F?n.enabled:!r.children(".k-in").hasClass("k-state-disabled"),t=t||{},t.firstLevel=typeof t.firstLevel!=F?t.firstLevel:e.parent().parent().hasClass(M),t.length=typeof t.length!=F?t.length:e.parent().children().length,e.removeClass("k-first k-last").addClass(o.wrapperCssClass(t,n)),r.removeClass("k-top k-mid k-bot").addClass(o.cssClass(t,n)),a=r.children(".k-in"),i=a[0]&&"a"==a[0].nodeName.toLowerCase(),a.removeClass("k-in k-link k-state-default k-state-disabled").addClass(o.textClass(n,i)),(s.length||"true"==e.attr("data-hasChildren"))&&(r.children(".k-icon").removeClass("k-i-expand k-i-collapse").addClass(o.toggleButtonClass(n)),s.addClass("k-group")))},_processNodes:function(t,n){var a=this;a.element.find(t).each(function(t,i){n.call(a,t,e(i).closest(P))})},dataItem:function(t){var n=e(t).closest(P).attr(p.attr("uid")),a=this.dataSource;return a&&a.getByUid(n)},_insertNode:function(t,n,a,i,r){var s,d,c,h,u=this,p=l(a),f=p.children().length+1,g={firstLevel:a.hasClass(M),expanded:!r,length:f},m="",k=function(e,t){e.appendTo(t)};for(c=0;c<t.length;c++)h=t[c],h.index=n+c,m+=u._renderItem({group:g,item:h});if(d=e(m),d.length){for(u.angular("compile",function(){return{elements:d.get(),data:t.map(function(e){return{dataItem:e}})}}),p.length||(p=e(u._renderGroup({group:g})).appendTo(a)),i(d,p),a.hasClass("k-item")&&(o(a),u._updateNodeClasses(a)),u._updateNodeClasses(d.prev().first()),u._updateNodeClasses(d.next().last()),c=0;c<t.length;c++)h=t[c],h.hasChildren&&(s=h.children.data(),s.length&&u._insertNode(s,h.index,d.eq(c),k,!u._expanded(d.eq(c))));return d}},_updateNodes:function(t,n){function a(e,t){e.find(".k-checkbox-wrapper :checkbox").prop(B,t).data(A,!1).prop(A,!1)}var i,r,s,o,d,l,h,u=this,p={treeview:u.options,item:o},g="expanded"!=n&&"checked"!=n;if("selected"==n)o=t[0],r=u.findByUid(o.uid).find(".k-in:first").removeClass("k-state-hover").toggleClass("k-state-selected",o[n]).end(),o[n]&&u.current(r),r.attr(W,!!o[n]);else{for(h=e.map(t,function(e){return u.findByUid(e.uid).children("div")}),g&&u.angular("cleanup",function(){return{elements:h}}),i=0;i<t.length;i++)p.item=o=t[i],s=h[i],r=s.parent(),g&&s.children(".k-in").html(u.templates.itemContent(p)),n==B?(d=o[n],a(s,d),u.options.checkboxes.checkChildren&&(a(r.children(".k-group"),d),u._setChecked(o.children,d),u._bubbleIndeterminate(r))):"expanded"==n?u._toggle(r,o,o[n]):"enabled"==n&&(r.find(".k-checkbox-wrapper :checkbox").prop("disabled",!o[n]),l=!c(r).is(j),r.removeAttr(Q),o[n]||(o.selected&&o.set("selected",!1),o.expanded&&o.set("expanded",!1),l=!0,r.attr(W,!1).attr(Q,!0)),u._updateNodeClasses(r,{},{enabled:o[n],expanded:!l})),s.length&&this.trigger("itemChange",{item:s,data:o,ns:f});g&&u.angular("compile",function(){return{elements:h,data:e.map(t,function(e){return[{dataItem:e}]})}})}},_appendItems:function(e,t,n){var a=l(n),i=a.children(),r=!this._expanded(n);typeof e==F&&(e=i.length),this._insertNode(t,e,n,function(t,n){e>=i.length?t.appendTo(n):t.insertBefore(i.eq(e))},r),this._expanded(n)&&(this._updateNodeClasses(n),l(n).css("display","block"))},_refreshChildren:function(e,t,n){var a,i,r,s=this.options,d=s.loadOnDemand,c=s.checkboxes&&s.checkboxes.checkChildren;if(l(e).empty(),t.length)for(this._appendItems(n,t,e),i=l(e).children(),d&&c&&this._bubbleIndeterminate(i.last()),a=0;a<i.length;a++)r=i.eq(a),this.trigger("itemChange",{item:r.children("div"),data:this.dataItem(r),ns:f});else o(e)},_refreshRoot:function(t){var n,a,i,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"),this.root.attr("role","tree"),a=this.root.children(".k-item"),i=0;i<t.length;i++)this.trigger("itemChange",{item:a.eq(i),data:t[i],ns:f});this._angularItems("compile")},refresh:function(e){var n,a,i=e.node,r=e.action,s=e.items,o=this.wrapper,d=this.options,l=d.loadOnDemand,c=d.checkboxes&&d.checkboxes.checkChildren;if(e.field){if(!s[0]||!s[0].level)return;return this._updateNodes(s,e.field)}if(i&&(o=this.findByUid(i.uid),this._progress(o,!1)),c&&"remove"!=r){for(a=!1,n=0;n<s.length;n++)if("checked"in s[n]){a=!0;break}if(!a&&i&&i.checked)for(n=0;n<s.length;n++)s[n].checked=!0}if("add"==r?this._appendItems(e.index,s,o):"remove"==r?this._remove(this.findByUid(s[0].uid),!1):"itemchange"==r?this._updateNodes(s):"itemloaded"==r?this._refreshChildren(o,s,e.index):this._refreshRoot(s),"remove"!=r)for(n=0;n<s.length;n++)l&&!s[n].expanded||s[n].load();this.trigger(V,{node:i?o: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),h(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){t=2!=arguments.length||!!t,this._processNodes(e,function(e,n){this.dataItem(n).set("enabled",t)})},current:function(n){var a=this,i=a._current,r=a.element,s=a._ariaId;return arguments.length>0&&n&&n.length?(i&&(i[0].id===s&&i.removeAttr("id"),i.find(".k-in:first").removeClass("k-state-focused")),i=a._current=e(n,r).closest(P),i.find(".k-in:first").addClass("k-state-focused"),s=i[0].id||s,s&&(a.wrapper.removeAttr("aria-activedescendant"),i.attr("id",s),a.wrapper.attr("aria-activedescendant",s)),t):(i||(i=a._nextVisible(e())),i)},select:function(n){var a=this,i=a.element;return arguments.length?(n=e(n,i).closest(P),i.find(".k-state-selected").each(function(){var t=a.dataItem(this);t?(t.set("selected",!1),delete t.selected):e(this).removeClass("k-state-selected")}),n.length&&(a.dataItem(n).set("selected",!0),a._clickTarget=n),a.trigger(T),t):i.find(".k-state-selected").closest(P)},_toggle:function(e,t,n){var a,i=this.options,r=c(e),s=n?"expand":"collapse";r.data("animating")||this._trigger(s,e)||(this._expanded(e,n),a=t&&t.loaded(),n&&!a?(i.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},i.animation[s],{complete:function(){n&&r.css("height","")}}))))},toggle:function(t,n){t=e(t),h(t).is(".k-i-expand, .k-i-collapse")&&(1==arguments.length&&(n=!this._expanded(t)),this._expanded(t,n))},destroy:function(){var e=this;_.fn.destroy.call(e),e.wrapper.off(w),e._unbindDataSource(),e.dragging&&e.dragging.destroy(),p.destroy(e.element),e.root=e.wrapper=e.element=null},_expanded:function(e,n){var a=p.attr("expanded"),i=this.dataItem(e),r=n;return 1==arguments.length?"true"===e.attr(a)||i&&i.expanded:(c(e).data("animating")||(i&&(i.set("expanded",r),r=i.expanded),r?(e.attr(a,"true"),e.attr("aria-expanded","true")):(e.removeAttr(a),e.attr("aria-expanded","false"))),t)},_progress:function(e,t){var n=this.element,a=this.templates.loading({messages:this.options.messages});1==arguments.length?(t=e,t?n.html(a):n.empty()):h(e).toggleClass("k-i-loading",t).removeClass("k-i-reload")},text:function(e,n){var a=this.dataItem(e),i=this.options[X.text],r=a.level(),s=i.length,o=i[Math.min(r,s-1)];return n?(a.set(o,n),t):a[o]},_objectOrSelf:function(t){return e(t).closest("[data-role=treeview]").data("kendoTreeView")||this},_dataSourceMove:function(t,n,a,i){var r,s=this._objectOrSelf(a||n),o=s.dataSource,d=e.Deferred().resolve().promise();return a&&a[0]!=s.element[0]&&(r=s.dataItem(a),r.loaded()||(s._progress(a,!0),d=r.load()),a!=this.root&&(o=r.children,o&&o instanceof x||(r._initChildren(),r.loaded(!0),o=r.children))),t=this._toObservableData(t),i.call(s,o,t,d)},_toObservableData:function(t){var n,a,i=t;return(t instanceof window.jQuery||Y(t))&&(n=this._objectOrSelf(t).dataSource,a=e(t).attr(p.attr("uid")),i=n.getByUid(a),i&&(i=n.remove(i))),i},_insert:function(e,t,n){t instanceof p.data.ObservableArray?t=t.toJSON():v(t)||(t=[t]);var a=e.parent();return a&&a._initChildren&&(a.hasChildren=!0,a._initChildren()),e.splice.apply(e,[n,0].concat(t)),this.findByUid(e[n].uid)},insertAfter:r(1),insertBefore:r(0),append:function(t,n,a){var i=this.root;return n&&(i=l(n)),this._dataSourceMove(t,i,n,function(t,i,r){function s(){n&&d._expanded(n,!0);var e=t.data(),a=Math.max(e.length,0);return d._insert(e,i,a)}var o,d=this;return r.done(function(){o=s(),(a=a||e.noop)(o)}),o||null})},_remove:function(t,n){var a,i,r,s=this;return t=e(t,s.element),this.angular("cleanup",function(){return{elements:t.get()}}),a=t.parent().parent(),i=t.prev(),r=t.next(),t[n?"detach":"remove"](),a.hasClass("k-item")&&(o(a),s._updateNodeClasses(a)),s._updateNodeClasses(i),s._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,a){return e(a).text()==t}).closest(P)},findByUid:function(t){var n,a,i=this.element.find(".k-item"),r=p.attr("uid");for(a=0;a<i.length;a++)if(i[a].getAttribute(r)==t){n=i[a];break}return e(n)},expandPath:function(t,n){function a(){s.shift(),s.length?i(s[0]).then(a):o.call(r)}function i(t){var n=e.Deferred(),a=r.dataSource.get(t);return a?a.loaded()?(a.set("expanded",!0),n.resolve()):(r._progress(r.findByUid(a.uid),!0),a.load().then(function(){a.set("expanded",!0),n.resolve()})):n.resolve(),n.promise()}var r=this,s=t.slice(0),o=n||e.noop;i(s[0]).then(a)},_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="",a=0,i=e.items,r=i?i.length:0,s=e.group;for(s.length=r;a<r;a++)e.group=s,e.item=i[a],e.item.index=a,n+=t._renderItem(e);return n},e.r=t.templates,t.templates.group(e)}}),f.plugin(d)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,n){(n||t)()});;
// this script needs to be placed in the header

function IsThisTagBold(tag){
	let list = $('.router-filter .form-check-input');
	let tagToCompare = "";
	
	// see what filter is selected
	for(let i = 0; i < list.length; i++){
		if(list[i].checked){
			tagToCompare = list[i].value;
		}
	}
	
	try{
		if(tag.id() === tagToCompare) { return true; }
	}
	catch(ex){
		if(tag.id === tagToCompare) { return true; }
	}

	return false;
}

function BindHref(data){
	let id = "";
	try{
		id = data.id();
	}
	catch(ex){
		id = data.id;
	}

	
	let origin = window.location.origin;
	let pathname = window.location.pathname;
	let href = origin + pathname + "?tagid=" + id;
	
	return href;
}
setLeftNavParent('community-development/content-by-subject');/* =========================================================
 * bootstrap-datepicker.js
 * Repo: https://github.com/eternicode/bootstrap-datepicker/
 * Demo: http://eternicode.github.io/bootstrap-datepicker/
 * Docs: http://bootstrap-datepicker.readthedocs.org/
 * Forked from http://www.eyecon.ro/bootstrap-datepicker
 * =========================================================
 * Started by Stefan Petre; improvements by Andrew Rowls + contributors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ========================================================= */

(function($, undefined){

	var $window = $(window);

	function UTCDate(){
		return new Date(Date.UTC.apply(Date, arguments));
	}
	function UTCToday(){
		var today = new Date();
		return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
	}
	function alias(method){
		return function(){
			return this[method].apply(this, arguments);
		};
	}

	var DateArray = (function(){
		var extras = {
			get: function(i){
				return this.slice(i)[0];
			},
			contains: function(d){
				// Array.indexOf is not cross-browser;
				// $.inArray doesn't work with Dates
				var val = d && d.valueOf();
				for (var i=0, l=this.length; i < l; i++)
					if (this[i].valueOf() === val)
						return i;
				return -1;
			},
			remove: function(i){
				this.splice(i,1);
			},
			replace: function(new_array){
				if (!new_array)
					return;
				if (!$.isArray(new_array))
					new_array = [new_array];
				this.clear();
				this.push.apply(this, new_array);
			},
			clear: function(){
				this.length = 0;
			},
			copy: function(){
				var a = new DateArray();
				a.replace(this);
				return a;
			}
		};

		return function(){
			var a = [];
			a.push.apply(a, arguments);
			$.extend(a, extras);
			return a;
		};
	})();


	// Picker object

	var Datepicker = function(element, options){
		this.dates = new DateArray();
		this.viewDate = UTCToday();
		this.focusDate = null;

		this._process_options(options);

		this.element = $(element);
		this.isInline = false;
		this.isInput = this.element.is('input');
		this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
		this.hasInput = this.component && this.element.find('input').length;
		if (this.component && this.component.length === 0)
			this.component = false;

		this.picker = $(DPGlobal.template);
		this._buildEvents();
		this._attachEvents();

		if (this.isInline){
			this.picker.addClass('datepicker-inline').appendTo(this.element);
		}
		else {
			this.picker.addClass('datepicker-dropdown dropdown-menu');
		}

		if (this.o.rtl){
			this.picker.addClass('datepicker-rtl');
		}

		this.viewMode = this.o.startView;

		if (this.o.calendarWeeks)
			this.picker.find('tfoot th.today')
						.attr('colspan', function(i, val){
							return parseInt(val) + 1;
						});

		this._allow_update = false;

		this.setStartDate(this._o.startDate);
		this.setEndDate(this._o.endDate);
		this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);

		this.fillDow();
		this.fillMonths();

		this._allow_update = true;

		this.update();
		this.showMode();

		if (this.isInline){
			this.show();
		}
	};

	Datepicker.prototype = {
		constructor: Datepicker,

		_process_options: function(opts){
			// Store raw options for reference
			this._o = $.extend({}, this._o, opts);
			// Processed options
			var o = this.o = $.extend({}, this._o);

			// Check if "de-DE" style date is available, if not language should
			// fallback to 2 letter code eg "de"
			var lang = o.language;
			if (!dates[lang]){
				lang = lang.split('-')[0];
				if (!dates[lang])
					lang = defaults.language;
			}
			o.language = lang;

			switch (o.startView){
				case 2:
				case 'decade':
					o.startView = 2;
					break;
				case 1:
				case 'year':
					o.startView = 1;
					break;
				default:
					o.startView = 0;
			}

			switch (o.minViewMode){
				case 1:
				case 'months':
					o.minViewMode = 1;
					break;
				case 2:
				case 'years':
					o.minViewMode = 2;
					break;
				default:
					o.minViewMode = 0;
			}

			o.startView = Math.max(o.startView, o.minViewMode);

			// true, false, or Number > 0
			if (o.multidate !== true){
				o.multidate = Number(o.multidate) || false;
				if (o.multidate !== false)
					o.multidate = Math.max(0, o.multidate);
				else
					o.multidate = 1;
			}
			o.multidateSeparator = String(o.multidateSeparator);

			o.weekStart %= 7;
			o.weekEnd = ((o.weekStart + 6) % 7);

			var format = DPGlobal.parseFormat(o.format);
			if (o.startDate !== -Infinity){
				if (!!o.startDate){
					if (o.startDate instanceof Date)
						o.startDate = this._local_to_utc(this._zero_time(o.startDate));
					else
						o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
				}
				else {
					o.startDate = -Infinity;
				}
			}
			if (o.endDate !== Infinity){
				if (!!o.endDate){
					if (o.endDate instanceof Date)
						o.endDate = this._local_to_utc(this._zero_time(o.endDate));
					else
						o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
				}
				else {
					o.endDate = Infinity;
				}
			}

			o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
			if (!$.isArray(o.daysOfWeekDisabled))
				o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
			o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
				return parseInt(d, 10);
			});

			var plc = String(o.orientation).toLowerCase().split(/\s+/g),
				_plc = o.orientation.toLowerCase();
			plc = $.grep(plc, function(word){
				return (/^auto|left|right|top|bottom$/).test(word);
			});
			o.orientation = {x: 'auto', y: 'auto'};
			if (!_plc || _plc === 'auto')
				; // no action
			else if (plc.length === 1){
				switch (plc[0]){
					case 'top':
					case 'bottom':
						o.orientation.y = plc[0];
						break;
					case 'left':
					case 'right':
						o.orientation.x = plc[0];
						break;
				}
			}
			else {
				_plc = $.grep(plc, function(word){
					return (/^left|right$/).test(word);
				});
				o.orientation.x = _plc[0] || 'auto';

				_plc = $.grep(plc, function(word){
					return (/^top|bottom$/).test(word);
				});
				o.orientation.y = _plc[0] || 'auto';
			}
		},
		_events: [],
		_secondaryEvents: [],
		_applyEvents: function(evs){
			for (var i=0, el, ch, ev; i < evs.length; i++){
				el = evs[i][0];
				if (evs[i].length === 2){
					ch = undefined;
					ev = evs[i][1];
				}
				else if (evs[i].length === 3){
					ch = evs[i][1];
					ev = evs[i][2];
				}
				el.on(ev, ch);
			}
		},
		_unapplyEvents: function(evs){
			for (var i=0, el, ev, ch; i < evs.length; i++){
				el = evs[i][0];
				if (evs[i].length === 2){
					ch = undefined;
					ev = evs[i][1];
				}
				else if (evs[i].length === 3){
					ch = evs[i][1];
					ev = evs[i][2];
				}
				el.off(ev, ch);
			}
		},
		_buildEvents: function(){
			if (this.isInput){ // single input
				this._events = [
					[this.element, {
						focus: $.proxy(this.show, this),
						keyup: $.proxy(function(e){
							if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
								this.update();
						}, this),
						keydown: $.proxy(this.keydown, this)
					}]
				];
			}
			else if (this.component && this.hasInput){ // component: input + button
				this._events = [
					// For components that are not readonly, allow keyboard nav
					[this.element.find('input'), {
						focus: $.proxy(this.show, this),
						keyup: $.proxy(function(e){
							if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
								this.update();
						}, this),
						keydown: $.proxy(this.keydown, this)
					}],
					[this.component, {
						click: $.proxy(this.show, this)
					}]
				];
			}
			else if (this.element.is('div')){  // inline datepicker
				this.isInline = true;
			}
			else {
				this._events = [
					[this.element, {
						click: $.proxy(this.show, this)
					}]
				];
			}
			this._events.push(
				// Component: listen for blur on element descendants
				[this.element, '*', {
					blur: $.proxy(function(e){
						this._focused_from = e.target;
					}, this)
				}],
				// Input: listen for blur on element
				[this.element, {
					blur: $.proxy(function(e){
						this._focused_from = e.target;
					}, this)
				}]
			);

			this._secondaryEvents = [
				[this.picker, {
					click: $.proxy(this.click, this)
				}],
				[$(window), {
					resize: $.proxy(this.place, this)
				}],
				[$(document), {
					'mousedown touchstart': $.proxy(function(e){
						// Clicked outside the datepicker, hide it
						if (!(
							this.element.is(e.target) ||
							this.element.find(e.target).length ||
							this.picker.is(e.target) ||
							this.picker.find(e.target).length
						)){
							this.hide();
						}
					}, this)
				}]
			];
		},
		_attachEvents: function(){
			this._detachEvents();
			this._applyEvents(this._events);
		},
		_detachEvents: function(){
			this._unapplyEvents(this._events);
		},
		_attachSecondaryEvents: function(){
			this._detachSecondaryEvents();
			this._applyEvents(this._secondaryEvents);
		},
		_detachSecondaryEvents: function(){
			this._unapplyEvents(this._secondaryEvents);
		},
		_trigger: function(event, altdate){
			var date = altdate || this.dates.get(-1),
				local_date = this._utc_to_local(date);

			this.element.trigger({
				type: event,
				date: local_date,
				dates: $.map(this.dates, this._utc_to_local),
				format: $.proxy(function(ix, format){
					if (arguments.length === 0){
						ix = this.dates.length - 1;
						format = this.o.format;
					}
					else if (typeof ix === 'string'){
						format = ix;
						ix = this.dates.length - 1;
					}
					format = format || this.o.format;
					var date = this.dates.get(ix);
					return DPGlobal.formatDate(date, format, this.o.language);
				}, this)
			});
		},

		show: function(){
			if (!this.isInline)
				this.picker.appendTo('body');
			this.picker.show();
			this.place();
			this._attachSecondaryEvents();
			this._trigger('show');
		},

		hide: function(){
			if (this.isInline)
				return;
			if (!this.picker.is(':visible'))
				return;
			this.focusDate = null;
			this.picker.hide().detach();
			this._detachSecondaryEvents();
			this.viewMode = this.o.startView;
			this.showMode();

			if (
				this.o.forceParse &&
				(
					this.isInput && this.element.val() ||
					this.hasInput && this.element.find('input').val()
				)
			)
				this.setValue();
			this._trigger('hide');
		},

		remove: function(){
			this.hide();
			this._detachEvents();
			this._detachSecondaryEvents();
			this.picker.remove();
			delete this.element.data().datepicker;
			if (!this.isInput){
				delete this.element.data().date;
			}
		},

		_utc_to_local: function(utc){
			return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
		},
		_local_to_utc: function(local){
			return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
		},
		_zero_time: function(local){
			return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
		},
		_zero_utc_time: function(utc){
			return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
		},

		getDates: function(){
			return $.map(this.dates, this._utc_to_local);
		},

		getUTCDates: function(){
			return $.map(this.dates, function(d){
				return new Date(d);
			});
		},

		getDate: function(){
			return this._utc_to_local(this.getUTCDate());
		},

		getUTCDate: function(){
			return new Date(this.dates.get(-1));
		},

		setDates: function(){
			var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
			this.update.apply(this, args);
			this._trigger('changeDate');
			this.setValue();
		},

		setUTCDates: function(){
			var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
			this.update.apply(this, $.map(args, this._utc_to_local));
			this._trigger('changeDate');
			this.setValue();
		},

		setDate: alias('setDates'),
		setUTCDate: alias('setUTCDates'),

		setValue: function(){
			var formatted = this.getFormattedDate();
			if (!this.isInput){
				if (this.component){
					this.element.find('input').val(formatted).change();
				}
			}
			else {
				this.element.val(formatted).change();
			}
		},

		getFormattedDate: function(format){
			if (format === undefined)
				format = this.o.format;

			var lang = this.o.language;
			return $.map(this.dates, function(d){
				return DPGlobal.formatDate(d, format, lang);
			}).join(this.o.multidateSeparator);
		},

		setStartDate: function(startDate){
			this._process_options({startDate: startDate});
			this.update();
			this.updateNavArrows();
		},

		setEndDate: function(endDate){
			this._process_options({endDate: endDate});
			this.update();
			this.updateNavArrows();
		},

		setDaysOfWeekDisabled: function(daysOfWeekDisabled){
			this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
			this.update();
			this.updateNavArrows();
		},

		place: function(){
			if (this.isInline)
				return;
			var calendarWidth = this.picker.outerWidth(),
				calendarHeight = this.picker.outerHeight(),
				visualPadding = 10,
				windowWidth = $window.width(),
				windowHeight = $window.height(),
				scrollTop = $window.scrollTop();

			var zIndex = parseInt(this.element.parents().filter(function(){
					return $(this).css('z-index') !== 'auto';
				}).first().css('z-index'))+10;
			var offset = this.component ? this.component.parent().offset() : this.element.offset();
			var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
			var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
			var left = offset.left,
				top = offset.top;

			this.picker.removeClass(
				'datepicker-orient-top datepicker-orient-bottom '+
				'datepicker-orient-right datepicker-orient-left'
			);

			if (this.o.orientation.x !== 'auto'){
				this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
				if (this.o.orientation.x === 'right')
					left -= calendarWidth - width;
			}
			// auto x orientation is best-placement: if it crosses a window
			// edge, fudge it sideways
			else {
				// Default to left
				this.picker.addClass('datepicker-orient-left');
				if (offset.left < 0)
					left -= offset.left - visualPadding;
				else if (offset.left + calendarWidth > windowWidth)
					left = windowWidth - calendarWidth - visualPadding;
			}

			// auto y orientation is best-situation: top or bottom, no fudging,
			// decision based on which shows more of the calendar
			var yorient = this.o.orientation.y,
				top_overflow, bottom_overflow;
			if (yorient === 'auto'){
				top_overflow = -scrollTop + offset.top - calendarHeight;
				bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);
				if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
					yorient = 'top';
				else
					yorient = 'bottom';
			}
			this.picker.addClass('datepicker-orient-' + yorient);
			if (yorient === 'top')
				top += height;
			else
				top -= calendarHeight + parseInt(this.picker.css('padding-top'));

			this.picker.css({
				top: top,
				left: left,
				zIndex: zIndex
			});
		},

		_allow_update: true,
		update: function(){
			if (!this._allow_update)
				return;

			var oldDates = this.dates.copy(),
				dates = [],
				fromArgs = false;
			if (arguments.length){
				$.each(arguments, $.proxy(function(i, date){
					if (date instanceof Date)
						date = this._local_to_utc(date);
					dates.push(date);
				}, this));
				fromArgs = true;
			}
			else {
				dates = this.isInput
						? this.element.val()
						: this.element.data('date') || this.element.find('input').val();
				if (dates && this.o.multidate)
					dates = dates.split(this.o.multidateSeparator);
				else
					dates = [dates];
				delete this.element.data().date;
			}

			dates = $.map(dates, $.proxy(function(date){
				return DPGlobal.parseDate(date, this.o.format, this.o.language);
			}, this));
			dates = $.grep(dates, $.proxy(function(date){
				return (
					date < this.o.startDate ||
					date > this.o.endDate ||
					!date
				);
			}, this), true);
			this.dates.replace(dates);

			if (this.dates.length)
				this.viewDate = new Date(this.dates.get(-1));
			else if (this.viewDate < this.o.startDate)
				this.viewDate = new Date(this.o.startDate);
			else if (this.viewDate > this.o.endDate)
				this.viewDate = new Date(this.o.endDate);

			if (fromArgs){
				// setting date by clicking
				this.setValue();
			}
			else if (dates.length){
				// setting date by typing
				if (String(oldDates) !== String(this.dates))
					this._trigger('changeDate');
			}
			if (!this.dates.length && oldDates.length)
				this._trigger('clearDate');

			this.fill();
		},

		fillDow: function(){
			var dowCnt = this.o.weekStart,
				html = '<tr>';
			if (this.o.calendarWeeks){
				var cell = '<th class="cw">&nbsp;</th>';
				html += cell;
				this.picker.find('.datepicker-days thead tr:first-child').prepend(cell);
			}
			while (dowCnt < this.o.weekStart + 7){
				html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
			}
			html += '</tr>';
			this.picker.find('.datepicker-days thead').append(html);
		},

		fillMonths: function(){
			var html = '',
			i = 0;
			while (i < 12){
				html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
			}
			this.picker.find('.datepicker-months td').html(html);
		},

		setRange: function(range){
			if (!range || !range.length)
				delete this.range;
			else
				this.range = $.map(range, function(d){
					return d.valueOf();
				});
			this.fill();
		},

		getClassNames: function(date){
			var cls = [],
				year = this.viewDate.getUTCFullYear(),
				month = this.viewDate.getUTCMonth(),
				today = new Date();
			if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
				cls.push('old');
			}
			else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
				cls.push('new');
			}
			if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
				cls.push('focused');
			// Compare internal UTC date with local today, not UTC today
			if (this.o.todayHighlight &&
				date.getUTCFullYear() === today.getFullYear() &&
				date.getUTCMonth() === today.getMonth() &&
				date.getUTCDate() === today.getDate()){
				cls.push('today');
			}
			if (this.dates.contains(date) !== -1)
				cls.push('active');
			if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
				$.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
				cls.push('disabled');
			}
			if (this.range){
				if (date > this.range[0] && date < this.range[this.range.length-1]){
					cls.push('range');
				}
				if ($.inArray(date.valueOf(), this.range) !== -1){
					cls.push('selected');
				}
			}
			return cls;
		},

		fill: function(){
			var d = new Date(this.viewDate),
				year = d.getUTCFullYear(),
				month = d.getUTCMonth(),
				startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
				startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
				endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
				endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
				todaytxt = dates[this.o.language].today || dates['en'].today || '',
				cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
				tooltip;
			this.picker.find('.datepicker-days thead th.datepicker-switch')
						.text(dates[this.o.language].months[month]+' '+year);
			this.picker.find('tfoot th.today')
						.text(todaytxt)
						.toggle(this.o.todayBtn !== false);
			this.picker.find('tfoot th.clear')
						.text(cleartxt)
						.toggle(this.o.clearBtn !== false);
			this.updateNavArrows();
			this.fillMonths();
			var prevMonth = UTCDate(year, month-1, 28),
				day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
			prevMonth.setUTCDate(day);
			prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
			var nextMonth = new Date(prevMonth);
			nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
			nextMonth = nextMonth.valueOf();
			var html = [];
			var clsName;
			while (prevMonth.valueOf() < nextMonth){
				if (prevMonth.getUTCDay() === this.o.weekStart){
					html.push('<tr>');
					if (this.o.calendarWeeks){
						// ISO 8601: First week contains first thursday.
						// ISO also states week starts on Monday, but we can be more abstract here.
						var
							// Start of current week: based on weekstart/current date
							ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
							// Thursday of this week
							th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
							// First Thursday of year, year from thursday
							yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
							// Calendar week: ms between thursdays, div ms per day, div 7 days
							calWeek =  (th - yth) / 864e5 / 7 + 1;
						html.push('<td class="cw">'+ calWeek +'</td>');

					}
				}
				clsName = this.getClassNames(prevMonth);
				clsName.push('day');

				if (this.o.beforeShowDay !== $.noop){
					var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
					if (before === undefined)
						before = {};
					else if (typeof(before) === 'boolean')
						before = {enabled: before};
					else if (typeof(before) === 'string')
						before = {classes: before};
					if (before.enabled === false)
						clsName.push('disabled');
					if (before.classes)
						clsName = clsName.concat(before.classes.split(/\s+/));
					if (before.tooltip)
						tooltip = before.tooltip;
				}

				clsName = $.unique(clsName);
				html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
				if (prevMonth.getUTCDay() === this.o.weekEnd){
					html.push('</tr>');
				}
				prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
			}
			this.picker.find('.datepicker-days tbody').empty().append(html.join(''));

			var months = this.picker.find('.datepicker-months')
						.find('th:eq(1)')
							.text(year)
							.end()
						.find('span').removeClass('active');

			$.each(this.dates, function(i, d){
				if (d.getUTCFullYear() === year)
					months.eq(d.getUTCMonth()).addClass('active');
			});

			if (year < startYear || year > endYear){
				months.addClass('disabled');
			}
			if (year === startYear){
				months.slice(0, startMonth).addClass('disabled');
			}
			if (year === endYear){
				months.slice(endMonth+1).addClass('disabled');
			}

			html = '';
			year = parseInt(year/10, 10) * 10;
			var yearCont = this.picker.find('.datepicker-years')
								.find('th:eq(1)')
									.text(year + '-' + (year + 9))
									.end()
								.find('td');
			year -= 1;
			var years = $.map(this.dates, function(d){
					return d.getUTCFullYear();
				}),
				classes;
			for (var i = -1; i < 11; i++){
				classes = ['year'];
				if (i === -1)
					classes.push('old');
				else if (i === 10)
					classes.push('new');
				if ($.inArray(year, years) !== -1)
					classes.push('active');
				if (year < startYear || year > endYear)
					classes.push('disabled');
				html += '<span class="' + classes.join(' ') + '">'+year+'</span>';
				year += 1;
			}
			yearCont.html(html);
		},

		updateNavArrows: function(){
			if (!this._allow_update)
				return;

			var d = new Date(this.viewDate),
				year = d.getUTCFullYear(),
				month = d.getUTCMonth();
			switch (this.viewMode){
				case 0:
					if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
						this.picker.find('.prev').css({visibility: 'hidden'});
					}
					else {
						this.picker.find('.prev').css({visibility: 'visible'});
					}
					if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
						this.picker.find('.next').css({visibility: 'hidden'});
					}
					else {
						this.picker.find('.next').css({visibility: 'visible'});
					}
					break;
				case 1:
				case 2:
					if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
						this.picker.find('.prev').css({visibility: 'hidden'});
					}
					else {
						this.picker.find('.prev').css({visibility: 'visible'});
					}
					if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
						this.picker.find('.next').css({visibility: 'hidden'});
					}
					else {
						this.picker.find('.next').css({visibility: 'visible'});
					}
					break;
			}
		},

		click: function(e){
			e.preventDefault();
			var target = $(e.target).closest('span, td, th'),
				year, month, day;
			if (target.length === 1){
				switch (target[0].nodeName.toLowerCase()){
					case 'th':
						switch (target[0].className){
							case 'datepicker-switch':
								this.showMode(1);
								break;
							case 'prev':
							case 'next':
								var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
								switch (this.viewMode){
									case 0:
										this.viewDate = this.moveMonth(this.viewDate, dir);
										this._trigger('changeMonth', this.viewDate);
										break;
									case 1:
									case 2:
										this.viewDate = this.moveYear(this.viewDate, dir);
										if (this.viewMode === 1)
											this._trigger('changeYear', this.viewDate);
										break;
								}
								this.fill();
								break;
							case 'today':
								var date = new Date();
								date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);

								this.showMode(-2);
								var which = this.o.todayBtn === 'linked' ? null : 'view';
								this._setDate(date, which);
								break;
							case 'clear':
								var element;
								if (this.isInput)
									element = this.element;
								else if (this.component)
									element = this.element.find('input');
								if (element)
									element.val("").change();
								this.update();
								this._trigger('changeDate');
								if (this.o.autoclose)
									this.hide();
								break;
						}
						break;
					case 'span':
						if (!target.is('.disabled')){
							this.viewDate.setUTCDate(1);
							if (target.is('.month')){
								day = 1;
								month = target.parent().find('span').index(target);
								year = this.viewDate.getUTCFullYear();
								this.viewDate.setUTCMonth(month);
								this._trigger('changeMonth', this.viewDate);
								if (this.o.minViewMode === 1){
									this._setDate(UTCDate(year, month, day));
								}
							}
							else {
								day = 1;
								month = 0;
								year = parseInt(target.text(), 10)||0;
								this.viewDate.setUTCFullYear(year);
								this._trigger('changeYear', this.viewDate);
								if (this.o.minViewMode === 2){
									this._setDate(UTCDate(year, month, day));
								}
							}
							this.showMode(-1);
							this.fill();
						}
						break;
					case 'td':
						if (target.is('.day') && !target.is('.disabled')){
							day = parseInt(target.text(), 10)||1;
							year = this.viewDate.getUTCFullYear();
							month = this.viewDate.getUTCMonth();
							if (target.is('.old')){
								if (month === 0){
									month = 11;
									year -= 1;
								}
								else {
									month -= 1;
								}
							}
							else if (target.is('.new')){
								if (month === 11){
									month = 0;
									year += 1;
								}
								else {
									month += 1;
								}
							}
							this._setDate(UTCDate(year, month, day));
						}
						break;
				}
			}
			if (this.picker.is(':visible') && this._focused_from){
				$(this._focused_from).focus();
			}
			delete this._focused_from;
		},

		_toggle_multidate: function(date){
			var ix = this.dates.contains(date);
			if (!date){
				this.dates.clear();
			}
			else if (ix !== -1){
				this.dates.remove(ix);
			}
			else {
				this.dates.push(date);
			}
			if (typeof this.o.multidate === 'number')
				while (this.dates.length > this.o.multidate)
					this.dates.remove(0);
		},

		_setDate: function(date, which){
			if (!which || which === 'date')
				this._toggle_multidate(date && new Date(date));
			if (!which || which  === 'view')
				this.viewDate = date && new Date(date);

			this.fill();
			this.setValue();
			this._trigger('changeDate');
			var element;
			if (this.isInput){
				element = this.element;
			}
			else if (this.component){
				element = this.element.find('input');
			}
			if (element){
				element.change();
			}
			if (this.o.autoclose && (!which || which === 'date')){
				this.hide();
			}
		},

		moveMonth: function(date, dir){
			if (!date)
				return undefined;
			if (!dir)
				return date;
			var new_date = new Date(date.valueOf()),
				day = new_date.getUTCDate(),
				month = new_date.getUTCMonth(),
				mag = Math.abs(dir),
				new_month, test;
			dir = dir > 0 ? 1 : -1;
			if (mag === 1){
				test = dir === -1
					// If going back one month, make sure month is not current month
					// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
					? function(){
						return new_date.getUTCMonth() === month;
					}
					// If going forward one month, make sure month is as expected
					// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
					: function(){
						return new_date.getUTCMonth() !== new_month;
					};
				new_month = month + dir;
				new_date.setUTCMonth(new_month);
				// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
				if (new_month < 0 || new_month > 11)
					new_month = (new_month + 12) % 12;
			}
			else {
				// For magnitudes >1, move one month at a time...
				for (var i=0; i < mag; i++)
					// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
					new_date = this.moveMonth(new_date, dir);
				// ...then reset the day, keeping it in the new month
				new_month = new_date.getUTCMonth();
				new_date.setUTCDate(day);
				test = function(){
					return new_month !== new_date.getUTCMonth();
				};
			}
			// Common date-resetting loop -- if date is beyond end of month, make it
			// end of month
			while (test()){
				new_date.setUTCDate(--day);
				new_date.setUTCMonth(new_month);
			}
			return new_date;
		},

		moveYear: function(date, dir){
			return this.moveMonth(date, dir*12);
		},

		dateWithinRange: function(date){
			return date >= this.o.startDate && date <= this.o.endDate;
		},

		keydown: function(e){
			if (this.picker.is(':not(:visible)')){
				if (e.keyCode === 27) // allow escape to hide and re-show picker
					this.show();
				return;
			}
			var dateChanged = false,
				dir, newDate, newViewDate,
				focusDate = this.focusDate || this.viewDate;
			switch (e.keyCode){
				case 27: // escape
					if (this.focusDate){
						this.focusDate = null;
						this.viewDate = this.dates.get(-1) || this.viewDate;
						this.fill();
					}
					else
						this.hide();
					e.preventDefault();
					break;
				case 37: // left
				case 39: // right
					if (!this.o.keyboardNavigation)
						break;
					dir = e.keyCode === 37 ? -1 : 1;
					if (e.ctrlKey){
						newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
						newViewDate = this.moveYear(focusDate, dir);
						this._trigger('changeYear', this.viewDate);
					}
					else if (e.shiftKey){
						newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
						newViewDate = this.moveMonth(focusDate, dir);
						this._trigger('changeMonth', this.viewDate);
					}
					else {
						newDate = new Date(this.dates.get(-1) || UTCToday());
						newDate.setUTCDate(newDate.getUTCDate() + dir);
						newViewDate = new Date(focusDate);
						newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
					}
					if (this.dateWithinRange(newDate)){
						this.focusDate = this.viewDate = newViewDate;
						this.setValue();
						this.fill();
						e.preventDefault();
					}
					break;
				case 38: // up
				case 40: // down
					if (!this.o.keyboardNavigation)
						break;
					dir = e.keyCode === 38 ? -1 : 1;
					if (e.ctrlKey){
						newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
						newViewDate = this.moveYear(focusDate, dir);
						this._trigger('changeYear', this.viewDate);
					}
					else if (e.shiftKey){
						newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
						newViewDate = this.moveMonth(focusDate, dir);
						this._trigger('changeMonth', this.viewDate);
					}
					else {
						newDate = new Date(this.dates.get(-1) || UTCToday());
						newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
						newViewDate = new Date(focusDate);
						newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
					}
					if (this.dateWithinRange(newDate)){
						this.focusDate = this.viewDate = newViewDate;
						this.setValue();
						this.fill();
						e.preventDefault();
					}
					break;
				case 32: // spacebar
					// Spacebar is used in manually typing dates in some formats.
					// As such, its behavior should not be hijacked.
					break;
				case 13: // enter
					focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
					this._toggle_multidate(focusDate);
					dateChanged = true;
					this.focusDate = null;
					this.viewDate = this.dates.get(-1) || this.viewDate;
					this.setValue();
					this.fill();
					if (this.picker.is(':visible')){
						e.preventDefault();
						if (this.o.autoclose)
							this.hide();
					}
					break;
				case 9: // tab
					this.focusDate = null;
					this.viewDate = this.dates.get(-1) || this.viewDate;
					this.fill();
					this.hide();
					break;
			}
			if (dateChanged){
				if (this.dates.length)
					this._trigger('changeDate');
				else
					this._trigger('clearDate');
				var element;
				if (this.isInput){
					element = this.element;
				}
				else if (this.component){
					element = this.element.find('input');
				}
				if (element){
					element.change();
				}
			}
		},

		showMode: function(dir){
			if (dir){
				this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
			}
			this.picker
				.find('>div')
				.hide()
				.filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
					.css('display', 'block');
			this.updateNavArrows();
		}
	};

	var DateRangePicker = function(element, options){
		this.element = $(element);
		this.inputs = $.map(options.inputs, function(i){
			return i.jquery ? i[0] : i;
		});
		delete options.inputs;

		$(this.inputs)
			.datepicker(options)
			.bind('changeDate', $.proxy(this.dateUpdated, this));

		this.pickers = $.map(this.inputs, function(i){
			return $(i).data('datepicker');
		});
		this.updateDates();
	};
	DateRangePicker.prototype = {
		updateDates: function(){
			this.dates = $.map(this.pickers, function(i){
				return i.getUTCDate();
			});
			this.updateRanges();
		},
		updateRanges: function(){
			var range = $.map(this.dates, function(d){
				return d.valueOf();
			});
			$.each(this.pickers, function(i, p){
				p.setRange(range);
			});
		},
		dateUpdated: function(e){
			// `this.updating` is a workaround for preventing infinite recursion
			// between `changeDate` triggering and `setUTCDate` calling.  Until
			// there is a better mechanism.
			if (this.updating)
				return;
			this.updating = true;

			var dp = $(e.target).data('datepicker'),
				new_date = dp.getUTCDate(),
				i = $.inArray(e.target, this.inputs),
				l = this.inputs.length;
			if (i === -1)
				return;

			$.each(this.pickers, function(i, p){
				if (!p.getUTCDate())
					p.setUTCDate(new_date);
			});

			if (new_date < this.dates[i]){
				// Date being moved earlier/left
				while (i >= 0 && new_date < this.dates[i]){
					this.pickers[i--].setUTCDate(new_date);
				}
			}
			else if (new_date > this.dates[i]){
				// Date being moved later/right
				while (i < l && new_date > this.dates[i]){
					this.pickers[i++].setUTCDate(new_date);
				}
			}
			this.updateDates();

			delete this.updating;
		},
		remove: function(){
			$.map(this.pickers, function(p){ p.remove(); });
			delete this.element.data().datepicker;
		}
	};

	function opts_from_el(el, prefix){
		// Derive options from element data-attrs
		var data = $(el).data(),
			out = {}, inkey,
			replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
		prefix = new RegExp('^' + prefix.toLowerCase());
		function re_lower(_,a){
			return a.toLowerCase();
		}
		for (var key in data)
			if (prefix.test(key)){
				inkey = key.replace(replace, re_lower);
				out[inkey] = data[key];
			}
		return out;
	}

	function opts_from_locale(lang){
		// Derive options from locale plugins
		var out = {};
		// Check if "de-DE" style date is available, if not language should
		// fallback to 2 letter code eg "de"
		if (!dates[lang]){
			lang = lang.split('-')[0];
			if (!dates[lang])
				return;
		}
		var d = dates[lang];
		$.each(locale_opts, function(i,k){
			if (k in d)
				out[k] = d[k];
		});
		return out;
	}

	var old = $.fn.datepicker;
	$.fn.datepicker = function(option){
		var args = Array.apply(null, arguments);
		args.shift();
		var internal_return;
		this.each(function(){
			var $this = $(this),
				data = $this.data('datepicker'),
				options = typeof option === 'object' && option;
			if (!data){
				var elopts = opts_from_el(this, 'date'),
					// Preliminary otions
					xopts = $.extend({}, defaults, elopts, options),
					locopts = opts_from_locale(xopts.language),
					// Options priority: js args, data-attrs, locales, defaults
					opts = $.extend({}, defaults, locopts, elopts, options);
				if ($this.is('.input-daterange') || opts.inputs){
					var ropts = {
						inputs: opts.inputs || $this.find('input').toArray()
					};
					$this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
				}
				else {
					$this.data('datepicker', (data = new Datepicker(this, opts)));
				}
			}
			if (typeof option === 'string' && typeof data[option] === 'function'){
				internal_return = data[option].apply(data, args);
				if (internal_return !== undefined)
					return false;
			}
		});
		if (internal_return !== undefined)
			return internal_return;
		else
			return this;
	};

	var defaults = $.fn.datepicker.defaults = {
		autoclose: false,
		beforeShowDay: $.noop,
		calendarWeeks: false,
		clearBtn: false,
		daysOfWeekDisabled: [],
		endDate: Infinity,
		forceParse: true,
		format: 'mm/dd/yyyy',
		keyboardNavigation: true,
		language: 'en',
		minViewMode: 0,
		multidate: false,
		multidateSeparator: ',',
		orientation: "auto",
		rtl: false,
		startDate: -Infinity,
		startView: 0,
		todayBtn: false,
		todayHighlight: false,
		weekStart: 0
	};
	var locale_opts = $.fn.datepicker.locale_opts = [
		'format',
		'rtl',
		'weekStart'
	];
	$.fn.datepicker.Constructor = Datepicker;
	var dates = $.fn.datepicker.dates = {
		en: {
			days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
			daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
			daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
			months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
			monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
			today: "Today",
			clear: "Clear"
		}
	};

	var DPGlobal = {
		modes: [
			{
				clsName: 'days',
				navFnc: 'Month',
				navStep: 1
			},
			{
				clsName: 'months',
				navFnc: 'FullYear',
				navStep: 1
			},
			{
				clsName: 'years',
				navFnc: 'FullYear',
				navStep: 10
		}],
		isLeapYear: function(year){
			return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
		},
		getDaysInMonth: function(year, month){
			return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
		},
		validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
		nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
		parseFormat: function(format){
			// IE treats \0 as a string end in inputs (truncating the value),
			// so it's a bad format delimiter, anyway
			var separators = format.replace(this.validParts, '\0').split('\0'),
				parts = format.match(this.validParts);
			if (!separators || !separators.length || !parts || parts.length === 0){
				throw new Error("Invalid date format.");
			}
			return {separators: separators, parts: parts};
		},
		parseDate: function(date, format, language){
			if (!date)
				return undefined;
			if (date instanceof Date)
				return date;
			if (typeof format === 'string')
				format = DPGlobal.parseFormat(format);
			var part_re = /([\-+]\d+)([dmwy])/,
				parts = date.match(/([\-+]\d+)([dmwy])/g),
				part, dir, i;
			if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
				date = new Date();
				for (i=0; i < parts.length; i++){
					part = part_re.exec(parts[i]);
					dir = parseInt(part[1]);
					switch (part[2]){
						case 'd':
							date.setUTCDate(date.getUTCDate() + dir);
							break;
						case 'm':
							date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
							break;
						case 'w':
							date.setUTCDate(date.getUTCDate() + dir * 7);
							break;
						case 'y':
							date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
							break;
					}
				}
				return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
			}
			parts = date && date.match(this.nonpunctuation) || [];
			date = new Date();
			var parsed = {},
				setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
				setters_map = {
					yyyy: function(d,v){
						return d.setUTCFullYear(v);
					},
					yy: function(d,v){
						return d.setUTCFullYear(2000+v);
					},
					m: function(d,v){
						if (isNaN(d))
							return d;
						v -= 1;
						while (v < 0) v += 12;
						v %= 12;
						d.setUTCMonth(v);
						while (d.getUTCMonth() !== v)
							d.setUTCDate(d.getUTCDate()-1);
						return d;
					},
					d: function(d,v){
						return d.setUTCDate(v);
					}
				},
				val, filtered;
			setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
			setters_map['dd'] = setters_map['d'];
			date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
			var fparts = format.parts.slice();
			// Remove noop parts
			if (parts.length !== fparts.length){
				fparts = $(fparts).filter(function(i,p){
					return $.inArray(p, setters_order) !== -1;
				}).toArray();
			}
			// Process remainder
			function match_part(){
				var m = this.slice(0, parts[i].length),
					p = parts[i].slice(0, m.length);
				return m === p;
			}
			if (parts.length === fparts.length){
				var cnt;
				for (i=0, cnt = fparts.length; i < cnt; i++){
					val = parseInt(parts[i], 10);
					part = fparts[i];
					if (isNaN(val)){
						switch (part){
							case 'MM':
								filtered = $(dates[language].months).filter(match_part);
								val = $.inArray(filtered[0], dates[language].months) + 1;
								break;
							case 'M':
								filtered = $(dates[language].monthsShort).filter(match_part);
								val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
								break;
						}
					}
					parsed[part] = val;
				}
				var _date, s;
				for (i=0; i < setters_order.length; i++){
					s = setters_order[i];
					if (s in parsed && !isNaN(parsed[s])){
						_date = new Date(date);
						setters_map[s](_date, parsed[s]);
						if (!isNaN(_date))
							date = _date;
					}
				}
			}
			return date;
		},
		formatDate: function(date, format, language){
			if (!date)
				return '';
			if (typeof format === 'string')
				format = DPGlobal.parseFormat(format);
			var val = {
				d: date.getUTCDate(),
				D: dates[language].daysShort[date.getUTCDay()],
				DD: dates[language].days[date.getUTCDay()],
				m: date.getUTCMonth() + 1,
				M: dates[language].monthsShort[date.getUTCMonth()],
				MM: dates[language].months[date.getUTCMonth()],
				yy: date.getUTCFullYear().toString().substring(2),
				yyyy: date.getUTCFullYear()
			};
			val.dd = (val.d < 10 ? '0' : '') + val.d;
			val.mm = (val.m < 10 ? '0' : '') + val.m;
			date = [];
			var seps = $.extend([], format.separators);
			for (var i=0, cnt = format.parts.length; i <= cnt; i++){
				if (seps.length)
					date.push(seps.shift());
				date.push(val[format.parts[i]]);
			}
			return date.join('');
		},
		headTemplate: '<thead>'+
							'<tr>'+
								'<th class="prev">&laquo;</th>'+
								'<th colspan="5" class="datepicker-switch"></th>'+
								'<th class="next">&raquo;</th>'+
							'</tr>'+
						'</thead>',
		contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
		footTemplate: '<tfoot>'+
							'<tr>'+
								'<th colspan="7" class="today"></th>'+
							'</tr>'+
							'<tr>'+
								'<th colspan="7" class="clear"></th>'+
							'</tr>'+
						'</tfoot>'
	};
	DPGlobal.template = '<div class="datepicker">'+
							'<div class="datepicker-days">'+
								'<table class=" table-condensed">'+
									DPGlobal.headTemplate+
									'<tbody></tbody>'+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-months">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
							'<div class="datepicker-years">'+
								'<table class="table-condensed">'+
									DPGlobal.headTemplate+
									DPGlobal.contTemplate+
									DPGlobal.footTemplate+
								'</table>'+
							'</div>'+
						'</div>';

	$.fn.datepicker.DPGlobal = DPGlobal;


	/* DATEPICKER NO CONFLICT
	* =================== */

	$.fn.datepicker.noConflict = function(){
		$.fn.datepicker = old;
		return this;
	};


	/* DATEPICKER DATA-API
	* ================== */

	$(document).on(
		'focus.datepicker.data-api click.datepicker.data-api',
		'[data-provide="datepicker"]',
		function(e){
			var $this = $(this);
			if ($this.data('datepicker'))
				return;
			e.preventDefault();
			// component click requires us to explicitly show it
			$this.datepicker('show');
		}
	);
	$(function(){
		$('[data-provide="datepicker-inline"]').datepicker();
	});

}(window.jQuery));

$(document).ready(function () {
  const formSelector = ".router-filter form";
  $(formSelector).on("change", "input", function()
  {
    UpdateQueryParams();
  });
  $(formSelector).on("change", "select", function()
  {
    UpdateQueryParams();
  });

  $(formSelector + " input[value='Reset']").on("click", function()
  {
    window.location = window.location.origin + window.location.pathname;
  });

  // Check URL for filter form variables
  let searchParams = new URLSearchParams(window.location.search)
  const targetFields = ["FilterTags","DateFilterFrom","DateFilterTo","YearList"];

  if (searchParams.has("FilterTags"))
  {
    let fieldValue = searchParams.get("FilterTags")
    if (fieldValue != "")
    {
      let filterTagIds = fieldValue.split(",");
      filterTagIds.forEach(function (item, index) {
        $(formSelector + " input[name='FilterTags'][value='" + item + "']").prop("checked", true)
      });
    }
  }

  if (searchParams.has("DateFilterFrom"))
  {
    let fieldValue = searchParams.get("DateFilterFrom")
    if (fieldValue != "")
    {
      $(formSelector + " input[name='DateFilterFrom']").val(fieldValue)
    }
  }

  if (searchParams.has("DateFilterTo"))
  {
    let fieldValue = searchParams.get("DateFilterTo")
    if (fieldValue != "")
    {
      $(formSelector + " input[name='DateFilterTo']").val(fieldValue)
    }
  }

  if (searchParams.has("YearList"))
  {
    let fieldValue = searchParams.get("YearList")
    if (fieldValue != "" & fieldValue != "0")
    {
      $(formSelector + " select[name='YearList'] option[value='" + fieldValue + "']").prop('selected','selected');
    }
  }
});

function UpdateQueryParams()
{
  const targetFields = ["FilterTags","DateFilterFrom","DateFilterTo","YearList"];
  let data = {};
  const formData = new FormData( document.querySelector(".router-filter form") );
  const url = new URL(window.location);
  const params = new URLSearchParams(url.search);
  for (const fieldName of targetFields){
    const fieldValue = formData.getAll(fieldName);
    if (fieldValue != "" & fieldValue != 0 )
    {
      params.set(fieldName, fieldValue);
    }
  };
  history.pushState("", "","?" + params.toString());
};

$(function() {
	const isNumericInput = (event) => {
		const key = event.keyCode;
		return ((key >= 48 && key <= 57) || // Allow number line
			(key >= 96 && key <= 105) // Allow number pad
		);
	};

	const isModifierKey = (event) => {
		const key = event.keyCode;
		return (event.shiftKey === true || key === 35 || key === 36) || // Allow Shift, Home, End
			(key === 8 || key === 9 || key === 13 || key === 46) || // Allow Backspace, Tab, Enter, Delete
			(key > 36 && key < 41) || // Allow left, up, right, down
			(
				// Allow Ctrl/Command + A,C,V,X,Z
				(event.ctrlKey === true || event.metaKey === true) &&
				(key === 65 || key === 67 || key === 86 || key === 88 || key === 90)
			)
	};

	const enforceFormat = (event) => {
		// Input must be of a valid number format or a modifier key, and not longer than ten digits
		if(!isNumericInput(event) && !isModifierKey(event)){
			event.preventDefault();
		}
	};

	const formatToPhone = (event) => {
		if(isModifierKey(event)) {return;}

		const target = event.target;
		const input = event.target.value.replace(/\D/g,'').substring(0,10); // First ten digits of input only
		const areaCode = input.substring(0,3);
		const middle = input.substring(3,6);
		const last = input.substring(6,10);

		if(input.length > 6){target.value = `${areaCode}-${middle}-${last}`;}
		else if(input.length > 3){target.value = `${areaCode}-${middle}`;}
		else if(input.length > 0){target.value = `${areaCode}`;}
	};

	let inputElements = document.querySelectorAll('.phone-number-formatting');

	inputElements.forEach((item) => {
		item.addEventListener('keydown',enforceFormat);
		item.addEventListener('keyup',formatToPhone);
	});
});
 