{"version":3,"sources":["kendo.ui.core.js"],"names":["f","define","$","window","undefined","Class","compilePart","part","stringPart","split","join","replace","first","charAt","rest","substring","pad","number","digits","end","length","zeros","getShadows","element","shadow","css","kendo","support","transitions","radius","match","boxShadowRegExp","blur","math","max","left","right","bottom","wrap","autosize","percentage","shadows","width","height","percentWidth","percentHeight","wrapper","wrapperStyle","browser","isRtl","parent","hasClass","style","is","show","percentRegExp","test","outerWidth","outerHeight","boxSizing","mozBoxSizing","webkitBoxSizing","opera","addClass","marginLeft","paddingLeft","paddingRight","paddingBottom","msie","floor","version","zoom","children","deepExtend","destination","i","arguments","deepExtendOne","source","property","propValue","propType","propInit","destProp","ObservableArray","data","LazyObservableArray","DataSource","HierarchicalDataSource","OBJECT","constructor","Array","Date","getTime","isFunction","clone","UNDEFINED","testRx","agent","rxs","dflt","rx","hasOwnProperty","toHyphens","str","g","toLowerCase","toCamelCase","strMatch","g1","toUpperCase","getComputedStyles","properties","computedStyle","styles","document","defaultView","getComputedStyle","each","idx","value","getPropertyValue","currentStyle","size","isScrollable","className","indexOf","overflow","scrollLeft","webkit","mozila","mozilla","el","scrollWidth","clientWidth","Math","abs","obj","key","result","getOffset","type","positioned","pointers","msPointers","top","pageYOffset","documentElement","scrollTop","pageXOffset","parseEffects","input","effects","this","fx","Element","prepareAnimationOptions","options","duration","reverse","complete","STRING","BOOLEAN","extend","init","noop","teardown","hide","completeCallback","animate","instance","queue","promise","toggleClass","classes","add","htmlEncode","ampRegExp","ltRegExp","gtRegExp","quoteRegExp","aposRegExp","parseOption","option","dashRegExp","getAttribute","ns","numberRegExp","parseFloat","jsonRegExp","jsonFormatRegExp","Function","parseOptions","templateRegExp","template","html","containmentComparer","a","b","contains","resizableWidget","widget","inArray","attr","focusable","isTabIndexNotNaN","nodeName","disabled","href","visible","expr","filters","parents","addBack","filter","kendoJQuery","selector","context","fn","Template","preventDefault","isDefaultPrevented","Observable","argumentNameRegExp","encodeRegExp","escapedCurlyRegExp","curlyRegExp","escapedSharpRegExp","sharpRegExp","directions","eventTarget","wrapExpression","localUrlRe","Widget","DataBoundWidget","ContainerNullObject","MobileWidget","MOUSE_EVENTS","EXCLUDE_BUST_CLICK_SELECTOR","MouseEventNormalizer","eventMap","getEventMap","eventRegEx","on","rootjQuery","animationFrame","animationQueue","cultures","isArray","proxy","JSON","formatRegExp","FUNCTION","NUMBER","NULL","getterCache","setterCache","slice","proto","member","base","that","subclass","apply","prototype","Object","_initOptions","_defaultPrevented","_events","bind","eventName","handlers","one","original","handler","events","eventNames","handlersIsFunction","unbind","push","unshift","trigger","e","sender","call","splice","paramName","useWithBlock","render","compile","parts","settings","argumentName","functionBody","_slotCount","Error","format","quote","string","escapable","lastIndex","c","meta","charCodeAt","toString","holder","k","v","partial","mind","gap","toJSON","rep","isFinite","String","indent","\b","\t","\n","\f","\r","\"","\\","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Number","Boolean","stringify","replacer","space","","findCulture","culture","numberFormat","getCulture","current","formatDate","date","calendar","calendars","standard","days","months","patterns","dateFormatRegExp","minutes","sign","getDate","namesAbbr","getDay","names","getMonth","getFullYear","getHours","getMinutes","getSeconds","getMilliseconds","AM","PM","getTimezoneOffset","formatNumber","symbol","isCurrency","isPercent","customPrecision","formatAndPrecision","integer","fraction","integerLength","fractionLength","ch","hasGroup","hasNegativeFormat","decimalIndex","sharpIndex","zeroIndex","hasZero","hasSharp","percentIndex","currencyIndex","startZeroIndex","decimal","POINT","precision","decimals","pattern","literals","negative","replacement","EMPTY","start","name","toLocaleString","standardFormatRegExp","exec","currency","percent","toExponential","round","groupInteger","literalRegExp","quoteChar","literal","PLACEHOLDER","SHARP","ZERO","COMMA","commaRegExp","lastIndexOf","EN","objectToString",",",".","groupSize","abbr","namesShort","d","D","F","G","m","M","s","t","T","u","y","Y","/",":","firstDay","twoDigitYearMax","cultureName","newGroupSize","groupSizes","shift","toFixed","fmt","values","index","placeholderFormat","parseInt","_extractFormat","_activeElement","activeElement","_round","outOfRange","designatorPredicate","designator","mapDesignators","designators","map","adjustDST","hours","setHours","lowerArray","array","lowerLocalInfo","localInfo","newLocalInfo","parseExact","count","pmHour","UTC","matches","amDesignators","pmDesignators","hoursOffset","minutesOffset","hasTime","lookAhead","getNumber","rg","RegExp","substr","valueIdx","getIndexByName","lower","nameLength","subValue","matchLength","matchIdx","checkLiteral","year","month","day","seconds","milliseconds","defaultYear","_lowerDays","_lowerMonths","longTimeZoneRegExp","shortTimeZoneRegExp","isNaN","setFullYear","parseMicrosoftFormatOffset","offset","nonBreakingSpaceRegExp","exponentRegExp","dateRegExp","offsetRegExp","formatsSequence",2,3,4,"parseDate","formats","tzoffset","timezone","convert","concat","percentSymbol","table","transforms","elementProto","mobileOS","documentMode","_scrollbar","scrollbar","refresh","div","createElement","cssText","innerHTML","body","appendChild","offsetWidth","removeChild","closest","tbodyInnerHtml","touch","MSPointerEvent","PointerEvent","HTMLElement","hasHW3D","WebKitCSSMatrix","lowPrefix","prefix","hasTransitions","event","devicePixelRatio","screenWidth","screen","availWidth","innerWidth","screenHeight","availHeight","innerHeight","detectOS","ua","minorVersion","os","notAndroidPhone","agentRxs","wp","fire","android","iphone","ipad","meego","webos","blackberry","playbook","windows","tizen","sailfish","ffos","osRxs","ios","flat","formFactorRxs","tablet","browserRxs","omini","omobile","firefox","mobilesafari","ie","chrome","navigator","device","majorVersion","flatVersion","cordova","PhoneGap","appMode","standalone","location","protocol","userAgent","wpDevicePixelRatio","kineticScrollNeeded","hasNativeScrolling","delayedClick","mouseAndTouchPresent","detectBrowser","edge","safari","detectClipboardAccess","commands","copy","queryCommandSupported","cut","paste","clipboard","zoomLevel","ie11WidthCorrection","docEl","scrollHeight","clientHeight","cssBorderSpacing","borderSpacing","cssClass","docElement","eventCapture","addEventListener","placeholder","propertyChangeEvent","types","setAttribute","cssFloat","stableSort","threshold","sorted","field","sort","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","nodeList","querySelectorAll","parentNode","pushState","history","hashChange","customElements","down","up","in","out","enabled","display","dequeue","disable","promiseShim","enable","animatedPromise","kendoStop","clearQueue","gotoEnd","stop","kendoAnimate","kendoAddClass","kendoRemoveClass","kendoToggleClass","toggle","target","touches","originalEvent","changedTouches","elementFromPoint","clientX","clientY","callback","mousedown","mouseup","mousemove","mousecancel","click","resize","members","widgets","_widgetRegisteredCallbacks","ui","mobile","dataviz","drawing","spreadsheet","messages","keys","INSERT","DELETE","BACKSPACE","TAB","ENTER","ESC","LEFT","UP","RIGHT","DOWN","END","HOME","SPACEBAR","PAGEUP","PAGEDOWN","F2","F10","F12","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_DOT","webComponents","isLocalUrl","url","expression","safe","getter","setter","accessor","get","set","guid","random","id","roleSelector","role","directiveSelector","directives","selectors","triggeredByInput","tagName","onWidgetRegistered","len","logToConsole","message","console","suppressLog","log","dataSource","jQuery","angular","_hasBindingTarget","kendoBindingTarget","_tabindex","TABINDEX","tabindex","removeAttr","setOptions","_setEvents","force","getSize","currentSize","_size","_resize","dimensions","setSize","destroy","removeData","_destroy","_muteAngularRebind","_muteRebind","dataItems","flatView","_angularItems","cmd","elements","items","dataItem","domElement","offsetHeight","notify","initWidget","roles","fullPath","widgetKeyRegExp","widgetKey","nodeType","isEmptyObject","rolesFromNamespaces","namespaces","find","widgetsArray","makeArray","widgetInstance","progress","container","leftRight","webkitCorrection","containerScrollLeft","mask","prependTo","remove","plugin","register","widgetEntry","args","method","nullObject","autoApplyNS","kendoDestroy","view","viewElement","viewHasNativeScrolling","useNativeScrolling","eq","appLevelNativeScrolling","application","themes","views","touchScroller","useNative","Scroller","kendoMobileScroller","suites","onResize","setTimeout","unbindResize","off","attrValue","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","kendoFocusable","setupMouseMute","mouseTrap","bustClick","captureMouse","stopPropagation","muteMouse","clearTimeout","mouseTrapTimeoutID","unMuteMouse","move","cancel","MSPointerEnter","MSPointerLeave","orig","fix","special","delegateType","bindType","handle","ret","related","relatedTarget","handleObj","origType","applyEventMap","pop","search","touchstart","touchend","ruleToDate","rule","targetDay","ourDay","time","cache","getUTCDay","setUTCDate","findRule","utcTime","rules","zone","grep","from","to","findZone","zones","until","zoneRules","zoneAndRule","info","fromOffset","toOffset","fromLocalOffset","toLocalOffset","toLocalDate","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","Sun","Mon","Tue","Wed","Thu","Fri","Sat","setDayOfWeek","dir","setDate","dayOfWeek","firstDayOfMonth","lastDayOfMonth","last","timeOffset","toUtcTime","isInTimeRange","min","msValue","msMin","msMax","MS_PER_DAY","isInDateRange","addDays","setTime","ignoreDST","difference","MS_PER_MINUTE","today","isToday","toInvariantTime","staticDate","nextDay","previousDay","MS_PER_HOUR","stripWhitespace","iterator","child","createNodeIterator","NodeFilter","SHOW_TEXT","node","FILTER_ACCEPT","FILTER_REJECT","nextNode","referenceNode","textContent","trim","childNodes","nodeValue","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","queueAnimation","runNextAnimation","parseQueryStringParams","queryString","params","paramParts","decodeURIComponent","elementUnderCursor","x","client","wheelDeltaY","jQueryEvent","delta","deltaY","wheelDelta","detail","axis","VERTICAL_AXIS","throttle","delay","timeout","throttled","lastExecTime","elapsed","caret","rangeElement","rangeDuplicated","selectionStart","selectionEnd","isPosition","focus","setSelectionRange","selection","createTextRange","collapse","moveStart","moveEnd","select","duplicate","moveToBookmark","createRange","getBookmark","setEndPoint","text","compileMobileDirective","scope","injector","invoke","$compile","$$phase","$digest","antiForgeryTokens","tokens","csrf_token","csrf_param","cycleForm","form","firstElement","lastElement","keyCode","shiftKey","postToProxy","dataURI","fileName","proxyURL","proxyTarget","action","contentType","base64","appendTo","submit","saveAsBlob","blob","atob","Uint8Array","Blob","buffer","msSaveBlob","saveAsDataURI","URL","createObjectURL","fileSaver","download","createEvent","initMouseEvent","dispatchEvent","revokeObjectURL","downloadAttribute","saveAs","save","forceProxy","proxyModelSetters","observable","forEach","defineProperty","dirty","amd","a1","a2","a3","absoluteURL","path","pathPrefix","regEx","host","hashDelimiter","bang","locationHash","stripRoot","root","fixHash","fixBang","CHANGE","BACK","SAME","CHECK_URL_INTERVAL","BROKEN_BACK_NAV","hashStrip","HistoryAdapter","back","forward","replaceLocation","PushStateAdapter","navigate","title","replaceState","normalize","pathname","change","normalizeCurrent","fixedUrl","hash","hashBang","HashAdapter","_id","_interval","setInterval","clearInterval","History","_started","adapter","createAdapter","historyLength","locations","silent","_navigate","backCalled","_checkUrl","newLength","navigatingInExisting","prev","backButtonPressed","namedParamReplace","optional","routeToRegExp","route","ignoreCase","escapeRegExp","optionalParam","namedParam","splatParam","stripUrl","INIT","ROUTE_MISSING","Route","_callback","queryStringParams","_back","worksWith","Router","routes","_urlChangedProxy","_sameProxy","_backProxy","initEventObject","sameProxy","_same","backProxy","urlChangedProxy","_urlChanged","same","touchDelta","touch1","touch2","x1","y1","x2","y2","dx","dy","center","distance","sqrt","getTouches","currentTarget","api","identifier","pointerId","withEachUpEvent","downEvents","now","OS","invalidZeroEvents","DEFAULT_MIN_HOLD","DEFAULT_THRESHOLD","PRESS","HOLD","SELECT","START","MOVE","CANCEL","TAP","RELEASE","GESTURESTART","GESTURECHANGE","GESTUREEND","GESTURETAP","THRESHOLD","mouse","pointer","ENABLE_GLOBAL_SURFACE","TouchAxis","_updateLocationData","startLocation","velocity","timeStamp","timeDelta","initialDelta","Touch","userEvents","touchInfo","useClickAsTap","initialTouch","pressEvent","_moved","_finished","press","_holdTimeout","minHold","_trigger","_hold","_withinIgnoreThreshold","UserEvents","dispose","_start","endTime","activeTouches","skip","isMoved","startTime","xDelta","yDelta","surfaceElement","preventIfMovingProxy","_maxTouches","multiTouch","allowSelection","captureUpIfMoved","fastTap","eventNS","surface","global","pressed","preventDragEvent","preventIfMoving","_isMoved","_destroyed","removeEventListener","_disposeAll","capture","_isMultiTouch","_apiCall","_maxTouchesReached","_select","which","_move","_eachTouch","_end","_click","pageX","pageY","methodName","matchingTouch","dict","defaultThreshold","MAX_DOUBLE_TAP_DISTANCE","eventProxy","_triggerTouch","gestureEventProxy","hold","tap","gesturestart","gesturechange","gestureend","enableSwipe","minXDelta","maxYDelta","maxDuration","doubleTapTimeout","_tap","lastTap","_dragstart","_swipestart","_swipemove","direction","toOdataFilter","useOdataFour","operator","logic","odataFilters","odataFiltersVersionFour","stripMetadata","neq","gt","gte","lt","lte","doesnotcontain","endswith","startswith","isnull","isnotnull","isempty","isnotempty","mappers","pageSize","page","useVersionFour","$filter","orderby","order","$orderby","$skip","take","$top","defaultDataType","read","dataType","schemas","odata","results","total","transports","jsonp","update","create","parameterMap","$inlinecount","$format","odata-v4","$count","isPlainObject","XmlDataReader","idField","xmlParse","model","parse","errors","serialize","modelBase","Model","fields","xpathToMember","modelInstance","evaluate","record","_parse","xml","parseDOM","parsedNode","attribute","attributes","attributeCount","firstChild","nextSibling","intermediateResult","tree","parseXML","raw","readers","eventHandler","_notifyChange","equal","xtype","ytype","getFieldByName","fieldName","Query","normalizeSort","descriptor","descriptors","normalizeOperator","operatorMap","normalizeFilter","compareDescriptor","f1","f2","normalizeDescriptor","fieldComparer","compareFilters","expr1","expr2","filters1","filters2","normalizeAggregate","expressions","normalizeGroup","aggregates","groupValueComparer","calculateAggregate","accumulator","item","state","aggr","functionName","aggregate","functions","isNumber","val","isDate","serializeRecords","getters","originalFieldNames","fieldNames","originalName","setters","convertRecords","convertGroup","hasSubgroups","wrapDataAccess","originalFunction","converter","mergeGroups","dest","group","flattenGroups","itemIndex","at","wrapGroupItems","eachGroupItems","func","replaceInRanges","ranges","replaceInRange","replaceWithObservable","serverGrouping","viewIndex","removeModel","uid","indexOfPristineModel","_defaultId","indexOfModel","comparer","fieldNameFromModel","convertFilterDescriptorsField","convertDescriptorsField","inferSelect","firstField","secondField","optgroup","label","specified","inferTable","fieldIndex","cells","cell","empty","tbody","tBodies","rows","fieldCount","dataMethod","_data","_attachBubbleHandlers","inferList","list","collection","textChild","textField","urlField","spriteCssClassField","imageUrlField","_loaded","prop","hasChildren","Comparer","StableComparer","operators","LocalTransport","RemoteTransport","Cache","DataReader","Transport","Node","Buffer","BatchBuffer","ajax","CREATE","READ","UPDATE","DESTROY","SYNC","GET","ERROR","REQUESTSTART","PROGRESS","REQUESTEND","crud","identity","o","newLineRegExp","ObservableObject","wrapAll","json","object","howMany","reduce","reduceRight","every","some","_parent","_handlers","shouldSerialize","_set","paths","composite","isSetPrevented","isObservableArray","isDataSource","parsers","boolean","default","defaultValues","defaults","_initializers","editable","initiator","accept","isNew","functionFields","nullable","defaultValue","compare","localeCompare","combine","comparers","asc","valueA","valueB","__position","desc","op","ignore","doesnotstartwith","doesnotendwith","filterExpr","and","or","fieldFunctions","operatorFunctions","==","equals","isequalto","equalto","!=","ne","notequals","isnotequalto","notequalto","notequal","<","islessthan","lessthan","less","<=","le","islessthanorequalto","lessthanequal",">","isgreaterthan","greaterthan","greater",">=","isgreaterthanorequalto","greaterthanequal","ge","notsubstringof","toArray","range","orderBy","orderByDescending","compiled","predicate","allData","groupBy","currentValue","_sortForGrouping","groupValue","sum","average","process","query","filterCallback","success","setup","error","parameters","operation","_store","clear","store","inmemory","schema","dataFunction","groupsFunction","serializeFunction","serializeGetters","_dataAccessFunction","groups","fromName","_map","_prefetch","_pristineData","_ranges","_view","_pristineTotal","_pageSize","_page","_sort","_filter","_group","_aggregate","_total","_shouldDetachObservableParents","transport","pushCreate","_pushCreate","pushUpdate","_pushUpdate","pushDestroy","_pushDestroy","offlineStorage","_storage","getItem","localStorage","setItem","reader","_detachObservableParents","_observe","_online","serverSorting","serverPaging","serverFiltering","serverAggregates","batch","online","sync","Deferred","resolve","offlineData","_isServerGrouped","_push","_readData","_flatData","getByUid","_storeData","_addRange","_process","_observeView","insert","_createNewModel","_wrapInEmptyGroup","pushed","autoSync","pristine","_updatePristineForModel","_removeItems","destroyed","found","_eachItem","_removePristineForModel","hasGroups","_removeModelFromRanges","_updateRangesLength","created","updated","promises","_sendSubmit","_send","when","then","_accept","_change","cancelChanges","_cancelModel","_markOfflineUpdatesAsDirty","__state__","hasChanges","models","response","serverGroup","_handleCustomErrors","_executeOnPristineForModel","_eachPristineItem","_pristineForModel","_submit","status","reject","deferred","_promise","converted","_params","_queueRequest","isPrevented","_dequeueRequest","_readAggregates","itemIds","_aggregateResult","updatePristine","_skip","timestamp","xhr","errorThrown","_requestInProgress","_pending","_shouldWrap","arrayType","_changeHandler","_updateTotalForAction","_calculateAggregates","_take","_queryProcess","_mergeState","_currentRangeStart","remote","fetch","_query","next","totalPages","_emptyAggregates","ceil","inRange","_findRange","lastRange","firstItemUid","enableRequestsInProgress","_skipRequestsInProgress","_timeStamp","pageSkip","paging","sorting","filtering","_currentRequestTimeStamp","_rangeExists","prefetch","skipIdx","takeIdx","startIndex","endIndex","rangeData","rangeEnd","processed","flatData","_mergeGroups","prevGroup","temp","currentRangeStart","_prefetchSuccessHandler","_timeout","_multiplePrefetch","rangeLength","startOffset","transportOptions","childrenField","childrenOptions","_childrenOptions","_initChildren","_updateChildrenField","append","loaded","level","_childrenLoaded","load","_find","_dataSource","viewSize","disablePrefetch","_prefetching","_reset","_syncWithDataSource","setViewSize","_recalculate","itemPresent","useRanges","dataOffset","prefetchThreshold","midPageThreshold","nextMidRange","nextPageThreshold","nextFullRange","pullBackThreshold","previousMidRange","previousFullRange","_goToRange","nextRange","syncDataSource","prefetchOffset","expanding","_expanding","_syncPending","_firstItemUid","batchSize","batchBuffer","endreached","prefetching","prefetched","reset","dataSourceBinding","bindingName","Binder","bindings","_dataBinding","dataBinding","_dataBound","dataBound","_itemChange","itemChange","bindElement","_ns","_parents","removedItems","unbindElementTree","all","addedItems","hds","addedDataItems","multiselect","Select","MultiSelect","retrievePrimitiveValues","dataValueField","bindingTargetForRole","WidgetBindingTarget","parseBindings","token","colonIndex","keyValueRegExp","createBindings","binding","childrenCopy","deep","unbindElement","whiteSpaceRegExp","valueField","valueUpdate","valuePrimitive","autoBind","BindingTarget","Binding","TemplateBinding","EventBinding","dom","destroyWidget","bindingTarget","deleteExpando","removeAttribute","destroyWidgets","unbindElementChildren","namespace","TypedBinder","arraySplice","binders","VALUE","SOURCE","EVENTS","CHECKED","CSS","dependencies","_access","dependency","currentSource","parsedValue","_parseValue","removeClass","readonly","dataFormat","invisible","_initChange","cloneNode","reference","insertBefore","checked","selectedIndex","selected","valueIndex","sourceValue","optionIndex","optionValue","check","_valueIsObservableObject","_valueIsObservableArray","_source","valueLength","sourceItem","dataTextField","isObservableObject","cascadeFrom","listView","bound","_preselect","gantt","j","old","removeIndex","newValue","oldValues","newValues","selectedValue","_isBound","scheduler","arr","addLength","oldLength","shifted","shiftedLength","toDestroy","hasValue","hasSource","hasEvents","hasChecked","hasCss","widgetBinding","specificBinders","applyBinding","binder","observableHierarchy","recursiveRead","parseInteger","parseCSS","propertyName","acc","strip3DTransforms","transformProps","transform2d","normalizeCSS","lowerKey","isTransformed","transformation","cssValues","TRANSFORM","animationProperty","transform","computed","NONE","matrix3dRegExp","translateXRegExp","atan2","capitalize","word","createEffect","definition","effectClass","Effect","opt1","opt2","opt3","theDirection","createToggleEffect","defaultStart","defaultEnd","IN_OUT","startValue","_startValue","endValue","_endValue","shouldHide","_shouldHide","prepare","_direction","startDataValue","startDataValueIsSet","_reverse","clipInHalf","vertical","HEIGHT","WIDTH","CLIPS","curProxy","EffectSet","FOUR_DIRECTIONS","TRANSFER_START_STATE","ROTATIONS","RESTORE_OVERFLOW","IGNORE_TRANSITION_EVENT_SELECTOR","Animation","Transition","scaleProperties","scale","scalex","scaley","scale3d","translateProperties","translate","translatex","translatey","translate3d","hasZoom","cssParamsRegExp","oldEffectsRegExp","singleEffectRegExp","unitRegExp","transform2units","rotate","skew","cssPrefix","BLANK","PX","AUTO","HIDDEN","ORIGIN","ABORT_ID","OVERFLOW","TRANSLATE","POSITION","COMPLETE_CALLBACK","TRANSITION","BACKFACE","PERSPECTIVE","DEFAULT_PERSPECTIVE","TRANSFORM_PERSPECTIVE","transition","modifier","horizontal","stopQueue","transformValue","step","elem","cur","exclusive","ease","mirror","redirectedEffect","resolved","$1","$2","effect","effectBody","timeoutID","stopTransitionCalled","stopTransition","oldKeys","speeds","merge","unique","taskKeys","retainPosition","restore","run","jdx","childrenLength","effectName","setReverse","addRestoreProperties","restoreCallback","effectSet","parsedEffects","useTransition","multiple","single","position","isFixed","originalPosition","dX","dY","marginTop","_additionalEffects","play","additional","_duration","compositeRun","_complete","divisor","tmp","previous","previousDivisor","slideIn","margin","origin","setLength","realLength","outerBox","box","innerBox","currentScale","fillScale","transformOrigin","_container","rotation","zIndex","_clipInHalf","clip","face","_face","temporary","opacity","reverseDirection","faceClone","backClone","staticPage","turningPage","transformStyle","_before","_after","transitionClass","_previous","_transitionClass","beforeTransition","afterTransition","_both","_element","_containerClass","containerClass","completeProxy","isAbsolute","originalOverflow","both","_tickProxy","_tick","tick","done","onEnd","onCancel","timePassed","startDate","moveTo","movable","initial","_easeProxy","moveAxis","easeOutExpo","pow","easeOutBack","inner","outer","fitScale","parseTransition","transitionRegExp","SCRIPT","SHOW","HIDE","TRANSITION_START","TRANSITION_END","ATTACH","DETACH","sizzleErrorRegExp","View","content","_wrap","_evalTemplate","evalTemplate","_fragments","notInitialized","_createElement","_eachFragment","ViewClone","triggerBeforeShow","triggerBeforeHide","showStart","showEnd","hideEnd","detach","fragments","getElementById","contents","replaceWith","Layout","containers","_createContainer","showIn","ViewContainer","Fragment","attach","running","after","locationID","previousEntry","theTransition","transitionData","hub","signalr","fail","callbacks","_crud","server","resolveRules","resolvers","validator","ruleResolvers","decode","numberOfDecimalDigits","parseHtml","parseHTML","searchForMessageContainer","invalidMsgRegExp","Validator","NS","INVALIDMSG","INVALIDINPUT","VALIDINPUT","emailRegExp","urlRegExp","INPUTSELECTOR","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","BLUR","NAME","FORM","NOVALIDATE","patternMatcher","matcher","hasAttribute","validateAttributeSelector","_errorTemplate","errorTemplate","_inputSelector","_checkboxSelector","_errors","_attachEvents","_isValidated","required","email","dateCompare","checkbox","raise","validateOnBlur","validate","stopImmediatePropagation","_checkElement","validateInput","inputs","invalid","isValid","valid","lbl","messageText","messageLabel","lblId","_checkValidity","_findMessageContainer","_extractMessage","_decorateMessageContainer","insertAfter","hideMessages","locators","messageLocators","getElementsByTagName","locate","decorate","ruleKey","customMessage","numericCssPropery","within","containerBoundaries","minX","minY","maxX","maxY","checkTarget","targets","areas","theTarget","theFilter","targetLen","areaLen","targetElement","destroyDroppable","groupName","droppables","scrollableViewPort","scrollableRoot","$window","findScrollableParent","autoScrollVelocity","mouseX","mouseY","rect","AUTO_SCROLL_AREA","lastDropTarget","Movable","DropTarget","DropTargetArea","Draggable","draggables","dropTargets","dropAreas","KEYUP","DRAGSTART","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","TapCapture","_press","_release","attachEvent","captureNext","cancelCapture","PaneDimension","forcedEnabled","measure","scrollSize","makeVirtual","virtual","_virtualMin","_virtualMax","virtualSize","outOfBounds","forceEnabled","getTotal","rescale","scaledTotal","minScale","centerOffset","PaneDimensions","forcedMinScale","maxScale","newScale","centerCoordinates","PaneAxis","dimension","dragMove","resistance","translateAxis","Pane","elastic","gesture","coordinates","offsetX","offsetY","previousGesture","previousCenter","scaleDelta","scaleWith","TRANSFORM_STYLE","webkitTransformOrigin","_saveCoordinates","by","scaleTo","newCoordinates","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","_activated","_drag","_cancel","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","holdToDrag","autoScroll","cancelHold","_updateHint","boundaries","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","currentTargetOffset","scopeTarget","scopeFrom","cursorElement","_elementUnderCursor","_lastEvent","_processMovement","_cursorElement","_scrollableParent","_scrollCompenstation","_scrollVelocity","_scrollInterval","_withDropTarget","_autoScroll","yIsScrollable","xIsScrollable","isRootNode","yInBounds","xInBounds","compensation","initialTarget","utils","SNAPBACK_DURATION","SCROLLBAR_OPACITY","FRICTION","VELOCITY_MULTIPLIER","MAX_VELOCITY","OUT_OF_BOUNDS_FRICTION","ANIMATED_SCROLLER_PRECISION","RELEASECLASS","REFRESHCLASS","PULL","RESIZE","SCROLL","MOUSE_WHEEL_ID","ZoomSnapBack","tapCapture","DragInertia","freeze","_moveTo","paneAxis","_snapBack","velocityMultiplier","friction","snapBack","AnimatedScroller","_updateCoordinates","setCoordinates","setCallback","ScrollBar","elementSize","scrollMovable","alwaysVisible","paneSize","sizeRatio","visibility","avoidScrolling","pane","zoomSnapBack","animatedScroller","_native","prepend","scrollElement","fixedContainer","wrapInner","velocityX","velocityY","horizontalSwipe","originatedFromFixedContainer","verticalSwipe","scrollTo","mousewheelScrolling","pulled","_initAxis","_wheelEnd","_wheel","_wheelY","pullToRefresh","_initPullToRefresh","_wheelScroll","_wheelTimeout","pullOffset","visibleScrollHints","pullTemplate","releaseTemplate","refreshTemplate","contentResized","_scale","zoomOut","animatedScrollTo","pullHandled","refreshHint","hintContainer","yinertia","xinertia","_paneChange","_dragEnd","scrollBar","HORIZONTAL","VERTICAL","RESIZEEND","Resizable","orientation","_positionMouse","_position","_sizingDom","drag","dragcancel","dragstart","dragend","_stop","_max","hintSize","_initialElementPosition","_min","_initialMousePosition","_maxPosition","_minPosition","maxPosition","minPosition","currentPosition","invalidClass","resizing","targetPosition","containsOrEqualTo","defaultHint","defaultPlaceholder","BEFORE_MOVE","ACTION_SORT","ACTION_REMOVE","ACTION_RECEIVE","DEFAULT_FILTER","MISSING_INDEX","Sortable","_createDraggable","connectWith","cursor","moveOnDragEnter","_dragcancel","_dragend","draggedElement","_placeholder","draggableEvent","before","_setCursor","_resetCursor","targetCenter","offsetDelta","sibling","getSibling","_findTarget","axisDelta","eventData","_movementByAxis","_getElementCenter","appendToBottom","_movePlaceholder","appendAfterHidden","_isFloating","connectedList","connectedListEventData","draggedIndex","placeholderIndex","oldIndex","newIndex","getKendoSortable","_findElementUnderCursor","has","sortable","_isEmpty","_isLastHidden","_searchConnectedTargets","sortableInstance","connected","_isCursorAfterLast","lastItemOffset","lastItem","cursorPosition","_originalCursorType","_cursorStylesheet","_items","not","collision","elementPosition","Selectable","ARIASELECTED","SELECTED","ACTIVE","SELECTABLE","UNSELECTING","supportEventDelegation","_marquee","_lastActive","aria","_isElement","ctrlKey","metaKey","whichCode","buttonCode","button","_allowSelection","selectRange","_firstSelectee","_unselect","_notify","_downTarget","currentElement","useAllItems","_selectElement","_invalidateSelectables","toSelect","selectElement","preventNotify","resetTouchEvents","continuousItems","selectable","asLowerString","CLICK","KBUTTON","KBUTTONICON","KBUTTONICONTEXT","DISABLED","DISABLEDSTATE","FOCUSEDSTATE","SELECTEDSTATE","Button","_graphics","_focus","_blur","_keydown","_keyup","icon","spriteCssClass","imageUrl","_isNativeButton","span","img","isEmpty","err","numeric","wrapClassName","iconTemplate","FIRST","PREV","NEXT","LAST","KEYDOWN","Pager","pageSizes","pageItems","linkTemplate","selectTemplate","currentPageTemplate","_refreshHandler","previousNext","of","allPages","itemsPerPage","DropDownList","kendoDropDownList","_refreshClick","_toggleActive","buttonCount","morePages","setDataSource","reminder","hasAll","selectAll","OPEN","CLOSE","DEACTIVATE","ACTIVATE","CENTER","TOP","BOTTOM","ABSOLUTE","BODY","LOCATION","VISIBLE","EFFECTS","ACTIVEBORDER","ACTIVEBORDERREGEXP","ACTIVECHILDREN","MOUSEDOWN","DOCUMENT_ELEMENT","WINDOW","Popup","parentPopup","collisions","downEvent","anchor","_hovered","animation","open","close","_animationClose","_mousedownProxy","_mousedown","_resizeProxy","toggleTarget","toggleEvent","viewport","copyAnchorStyles","modal","adjustSize","_hideDirClass","_closing","_toggleResize","fixed","flipped","_openAnimation","_showDirClass","dirClass","skipEffects","openEffects","closeEffects","popup","ev","_resizeTimeout","_scrollableParents","_fit","viewPortSize","output","_flip","anchorSize","boxSize","parentsUntil","siblingContainer","parentZIndex","pos","anchorParent","offsets","flipPos","elementHeight","wrapperHeight","viewportOffset","origins","positions","isWindow","viewportWidth","viewportHeight","siblings","_align","offsetParent","appendToOffset","verticalOrigin","horizontalOrigin","verticalPosition","horizontalPosition","anchorOffset","anchorWidth","anchorHeight","KNOTIFICATION","KICLOSE","INFO","SUCCESS","WARNING","WRAPPER","TEMPLATE","SAFE_TEMPLATE","Notification","_compileTemplates","templates","_guid","_isRtl","_compileStacking","stacking","pinned","hideOnClick","allowHideAfter","autoHideAfter","kendoTemplate","_compiled","templateId","_defaultCompiled","_safeCompiled","_getCompiled","defaultCompiled","paddings","paddingTop","horizontalAlignment","_popupOrigin","_popupPosition","_popupPaddings","_attachPopupEvents","attachClick","_hidePopup","closeIcon","attachDelay","_showPopup","openPopup","_triggerHide","deactivate","_togglePin","pin","win","_attachStaticEvents","_hideStatic","_showStatic","insertionMethod","defaultArgs","typeIcon","showText","warning","openedNotifications","getNotifications","guidElements","newOptions","restoreTitle","restoreTitleAttributeForElement","saveTitleAttributeForElement","saveTitleAttributes","DOCUMENT","ARIAIDSUFFIX","DESCRIBEDBY","CONTENTLOAD","KCONTENTFRAME","IFRAMETEMPLATE","POSITIONS","REVERSE","DIRCLASSES","DIMENSIONS","DEFAULTCONTENT","Tooltip","_documentKeyDownHandler","_documentKeyDown","showOn","_showOn","_mouseenter","autoHide","_mouseleave","showAfter","callout","_show","_appendContent","iframe","contentOptions","showIframe","src","_ajaxRequest","_initPopup","activate","ariaId","_positionCallout","arrow","_closeButtonClick","arrowBorder","elementOffset","offsetAmount","adjustPopupWidth","computedWidth","fontFamily","min-width","toggleActive","STATE_ACTIVE","actionSheetWrap","preventClick","findFocusableSibling","candidate","components","Item","ToolBarButton","OverflowButton","ButtonGroup","ToolBarButtonGroup","OverflowButtonGroup","ToolBarSplitButton","OverflowSplitButton","ToolBarSeparator","OverflowSeparator","TemplateItem","OverflowTemplateItem","Group","ToolBar","TOOLBAR","BUTTON","OVERFLOW_BUTTON","TOGGLE_BUTTON","BUTTON_GROUP","SPLIT_BUTTON","SEPARATOR","POPUP","RESIZABLE_TOOLBAR","STATE_DISABLED","STATE_HIDDEN","GROUP_START","GROUP_END","PRIMARY","ICON","ICON_PREFIX","BUTTON_ICON","BUTTON_ICON_TEXT","LIST_CONTAINER","SPLIT_BUTTON_ARROW","OVERFLOW_ANCHOR","OVERFLOW_CONTAINER","FIRST_TOOLBAR_VISIBLE","LAST_TOOLBAR_VISIBLE","TOGGLE","OVERFLOW_OPEN","OVERFLOW_CLOSE","OVERFLOW_NEVER","OVERFLOW_AUTO","OVERFLOW_ALWAYS","OVERFLOW_HIDDEN","KENDO_UID_ATTR","toolbar","overflowAnchor","overflowContainer","registerComponent","addOverflowAttr","addUidAttr","addIdAttr","addOverflowIdAttr","hidden","isEnabled","twin","resizable","useButtonTag","primary","togglable","addToGroup","clickHandler","toggleHandler","propagate","getParentGroup","isChild","_addGraphics","align","hasIcon","showIcon","overflowHidden","createButtons","buttonConstructor","buttons","buttonGroup","mainButton","arrowButton","popupElement","createMenuButtons","createPopup","_navigatable","main","splitButton","kendoPopup","li","altKey","menuButtons","rootUid","separator","_groups","isMobile","_renderOverflow","overflowUserEvents","_toggleOverflow","_resizeHandler","_buttonClick","release","_toggleOverflowAnchor","tool","overflowTool","component","itemClasses","overflowTemplate","_shrink","_getItem","toolbarItem","overflowItem","isResizable","getSelectedFromGroup","horizontalDirection","isComplexTool","hasVisibleChildren","splitContainer","urlTarget","isSplitButtonArrow","_toggle","lastHasFocus","firstHasFocus","isOverflowAnchor","containerWidth","_stretch","_markVisibles","_childrenWidth","childrenWidth","commandElement","visibleCommands","_hideItem","hiddenCommands","_showItem","overflowItems","toolbarItems","visibleOverflowItems","visibleToolbarItems","unifyType","mapChangedItems","itemsToMatch","itemsLength","selectedLength","changed","unchanged","removeFiltersForField","STATIC_LIST_NS","StaticList","ID","FOCUSED","HOVER","LOADING","CASCADE","isIE8","quotRegExp","alternativeNames","ComboBox","List","_isSelect","ul","tabIndex","aria-hidden","_listMousedown","_header","_accessors","_initValue","headerTemplate","_focused","_editable","_listOptions","currentOptions","listBoundHandler","_listBound","_listChange","_activateItem","_deactivateItem","listBound","groupTemplate","fixedGroupTemplate","_initList","listOptions","selectedItemChange","VirtualList","_setListValue","_updateSelectionState","filterInput","_isFilterEnabled","_clearFilter","_filterSource","removed","_cascading","setDSFilter","header","_accessor","_old","_ignoreCase","_unbindDataSource","_form","_resetHandler","selectedDataItems","_text","_value","_aria","suggest","_oldIndex","_typing","typing","_enable","_dataValue","_offsetHeight","prevAll","_height","offsetTop","popups","_adjustListWidth","borderLeftWidth","borderRightWidth","_openHandler","_closeHandler","_focusItem","focusedItem","highlightFirst","scrollToIndex","_calculateGroupPadding","groupHeader","padding","_calculatePopupHeight","_resizePopup","_popup","_makeUnselectable","_toggleHover","preventFocus","touchEnabled","MSPointers","_prevent","_triggerCascade","_cascadeTriggered","userTriggered","_userTriggered","_triggerChange","_valueBeforeCascade","_requestStartHandler","_requestEndHandler","_errorHandler","_initial","_initialIndex","_parentWidget","_cascadeSelect","_typingTimeout","minLength","_state","_open","_accessorInput","_accessorSelect","_custom","custom","_customOption","_hideBusy","_busy","_arrow","_showBusy","_request","_requestEnd","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","activeFilter","_fetch","_focusElement","focusout","_fetchData","hasItems","_options","optionLabel","dataText","dataValue","formId","parentElement","_cascade","cascade","_cascadeHandlerProxy","_cascadeHandler","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromField","_optionID","_selectedIndices","_dataItems","_values","_getter","_templates","_onScroll","_scrollId","_renderHeader","_fixedHeader","_render","scroll","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","_getValues","_valueGetter","hasCandidate","_current","_get","focusIndex","skipUpdate","_skipUpdate","indices","filtered","singleSelection","selectedIndices","added","isFiltered","_deselectFiltered","_deselect","_valueComparer","removeAt","setValue","_valueDeferred","_valueIndices","_valueExpr","normalized","_valueType","_dataItemPosition","valueExpr","removedIndices","_template","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","lastChild","previousSibling","isGrouped","visibleItem","_renderItem","notFirstItem","newGroup","dataContext","_selected","_lastDSFilter","skipUpdateOnBind","isItemChange","_bound","modular","minYear","maxYear","build","cellsPerRow","perRow","cellTemplate","emptyCellTemplate","DATE","disableDates","isInRange","date1","date2","year1","getToday","restrictValue","shiftArray","multiplier","mousetoggle","MOUSEENTER","FOCUS","prevent","getCalendarInfo","depth","extractFormat","MONTH","dates","makeUnselectable","isEqualDatePart","value1","value2","isEqualMonth","getDisabledExpr","createDisabledExpr","convertDatesArray","disabledDates","searchExpression","isEqualDate","oldValue","transitionOrigin","KEYDOWN_NS","MIN","SLIDE","CENTURY","NAVIGATE","OTHERMONTH","OTHERMONTHCLASS","TODAY","CELLSELECTOR","FOCUS_WITH_NS","MOUSEENTER_WITH_NS","MOUSELEAVE","PREVARROW","NEXTARROW","ARIA_DISABLED","ARIA_SELECTED","decade","century","Calendar","unescape","_footer","footer","link","_toDateObject","_focusView","focusOnNav","_cellID","_index","_addClassProxy","_active","_cell","todayString","toDateString","_cellByDate","_removeClassProxy","_today","_title","_table","_bindTable","_option","navigateToPast","navigateToFuture","navigateUp","navigateDown","future","currentView","_oldTable","_changeView","_animate","_class","isDisabled","_nextNavigatable","navigatableDate","active","_horizontal","viewWidth","float","margin-left","unwrap","_vertical","disabledDate","links","isBigger","isTodayDisabled","_todayClick","firstVisibleDay","calendarInfo","tzOffsetBefore","resultDATE","tzOffsetDiff","navigateUrl","hasUrl","currentCalendar","firstDayIdx","shortNames","linkClass","dateString","month1","month2","year2","setMonth","viewsEnum","parseFormats","DatePicker","DIV","SPAN","READONLY","DEFAULT","STATEDISABLED","HOVEREVENTS","MAX","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_READONLY","DateView","_dateViewID","_calendar","_setOptions","selectIsClicked","handled","_initialOptions","_wrapper","dateView","_oldText","_updateARIA","_icon","aria-expanded","aria-owns","_update","ARIATemplate","_dateIcon","_inputWrapper","dateChanged","valueUpdated","textFormatted","aria-controls","formattedValue","isSameType","_ariaTemplate","indexOfWordAtCaret","caretIdx","wordAtCaret","replaceWordAtCaret","words","placeholderSupported","AutoComplete","_loader","_keypress","_search","_prev","autocomplete","aria-haspopup","_resetFocusItemHandler","_resetFocusItem","_progressHandler","_mute","_last","wordIndex","isActive","_touchScroller","_muted","_selectValue","itemSelected","_loading","DOMelement","assign","normalizeIndex","sameCharsOnly","character","STATE_FILTER","STATE_ACCEPT","MSG_INVALID_OPTION_LABEL","_focusHandler","_focusInputHandler","_focusInput","_optionLabel","_inputTemplate","_word","_span","_mobile","_filterHeader","_textAccessor","valueTemplate","optionLabelTemplate","hasOptionLabel","_allowOpening","_optionLabelDataItem","loweredText","_valueSetter","_optionLabelText","_assignInstance","_buildOptions","initialIndex","_presetValue","_focusinHandler","_focusoutHandler","isIFrame","self","_wrapperMousedown","_wrapperClick","dropDownWrapper","isInputActive","isPopupVisible","_matchText","_shuffleData","splitIndex","optionDataItem","_selectNext","oldFocusedItem","dataLength","isInLoop","fromCharCode","charCode","_popupOpen","compareElement","jQueryCandidate","_resetOptionLabel","additionalClass","keepState","SELECTOR","accesskey","unselectable","getElements","STATE_REBIND","_input","_setText","_arrowClick","_inputFocus","_inputFocusout","_updateSelection","hasInitialIndex","_updateItemFocus","isFirstPage","accessKey","maxLength","LI","ACCEPT","FILTER","REBIND","FOCUSEDCLASS","HIDDENCLASS","HOVERCLASS","_optionsMap","_customOptions","_tagList","_textContainer","_tagID","tagList","_tagTemplate","tagMode","autoClose","maxSelectedItems","itemTemplate","tagTemplate","currentTag","_currentTag","_selectedItemChange","_initialValues","tagTextTemplate","notInput","closeButton","_removeTag","tag","customIndex","_close","_tagListClick","_retrieveData","inputValue","clearFilters","_normalizeValues","_setOption","isEmptyArray","_showBusyHandler","skipCaret","textWidth","wrapperWidth","optionsMap","selectedItems","_buildSelectedItems","_selectedItemIndex","valueGetter","_angularTagItems","removedItem","addedItem","_maxTotal","maxTotal","currentTotal","_innerWrapper","defaultTemplate","hasDataSource","isMultiple","computedStyles","parseColor","color","nothrow","_Color","namedColorRegexp","_RGB","Color","namedColors","_Bytes","hex","n","hue2rgb","p","q","_HSV","_HSL","re","processor","channels","resolveColor","r","normalizeByte","toHex","padDigit","brightness","percBrightness","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","toHSV","toRGB","toBytes","toCss","toCssRgba","rgb","toDisplay","diff","c2","NaN","c1","h","toHSL","l","fromBytes","fromRGB","fromHSV","fromHSL","createWrapper","isHorizontal","orientationCssClass","cssClasses","tickPlacementCssClass","tickPlacement","showButtons","createButton","buttonCssClass","createSliderItems","smallStep","createTrack","dragHandleCount","firstDragHandleTitle","leftDragHandleTitle","dragHandleTitle","rightDragHandleTitle","stepValue","formatValue","calculatePrecision","power","parseAttr","defined","removeFraction","RangeSlider","MOUSE_DOWN","TRACK_MOUSE_DOWN","MOUSE_UP","TRACK_MOUSE_UP","MOVE_SELECTION","KEY_DOWN","MOUSE_OVER","DRAG_HANDLE","TRACK_SELECTOR","TICK_SELECTOR","STATE_SELECTED","STATE_FOCUSED","STATE_DEFAULT","SliderBase","rtlDirectionSign","_distance","_isHorizontal","_sizeFn","_outerSize","tooltip","_createHtml","_trackDiv","_setTrackDivWidth","_maxSelection","_sliderItemsInit","_keyMap",37,40,39,38,35,36,33,"largeStep",34,"_refresh","sizeBetweenTicks","pixelWidths","_calculateItemsWidth","_setItemsWidth","_setItemsTitle","_calculateSteps","_setItemsLargeTick","trackDivPosition","bordersWidth","titleNumber","limit","increment","valueWithoutFraction","itemsCount","itemWidth","trackDivSize","pixelStep","_roundWidths","pixelWidthsArray","balance","_addAdditionalSize","additionalSize","_pixelSteps","_getValueFromPosition","mousePosition","dragableArea","halfStep","startPoint","_getFormattedValue","tooltipTemplate","_getDraggableArea","endPoint","_firstHandleDrag","_activeHandle","_lastHandleDrag","_activeHandleDrag","_updateTooltip","_focusWithMouse","_setTooltipTimeout","_removeTooltip","_tooltipTimeout","_clearTooltipTimeout","tooltipDiv","_formResetHandler","Slider","dragHandle","_selection","Selection","Drag","increaseButtonTitle","decreaseButtonTitle","mouseDownHandler","newVal","_nextValueByIndex","_valueIndex","_setValueInRange","timer","_clearTimer","_refreshAriaAttr","_tooltipDiv","moveSelection","selectionValue","selectionDiv","halfDragHanndle","rtlCorrection","owner","_activeDragHandle","_setZIndex","oldVal","_createTooltip","colloutCssClass","wnd","tooltipInnerDiv","_scrollOffset","moveTooltip","slideParams","constrainValue","noAnimation","fadeOut","dragHandles","sdhOffset","viewPortEnd","maxOverflow","firstInput","secondInput","warn","dragSelectionStart","dragSelectionEnd","activeHandleDrag","selectionStartValue","selectionEndValue","selectionStartIndex","selectionEndIndex","halfHandle","makeSelection","selectionPosition","triggerEvent","relative","KEYS","BACKGROUNDCOLOR","ITEMSELECTEDCLASS","SIMPLEPALETTE","WEBPALETTE","APPLY_CANCEL","CLICK_NS","ColorSelector","_tabIndex","_ariaId","_standalone","_triggerSelect","_updateUI","_onEnable","nohooks","_selectOnHide","ColorPalette","colors","tileSize","palette","columns","_selectedID","ex","FlatColorPicker","_hueElements","_selectedColor","_colorAsText","_sliders","_hsvArea","autoupdate","_getHSV","_applyIEFilter","_hueSlider","_opacitySlider","_hsvRect","_hsvHandle","preview","track","backgroundImage","hueChange","opacityChange","kendoSlider","slide","rw","rh","_svChange","hsvRect","hsvHandle","_hsvEvents","hue","handlePosition","dontChangeInput","ColorPicker","_selector","innerWrapper","toolIcon","_getPopup","_isInputTypeColor","selectorType","buttonHtml","INPUT","SPIN","TOUCHEND","INTEGER_REGEXP","NumericTextBox","isStep","_focusout","_arrows","_toggleText","spinners","upArrowText","downArrowText","_upArrowEventHandler","_downArrowEventHandler","_spin","_upArrow","_downArrow","_paste","adjusted","_adjust","_focusin","arrows","_spinning","_focusing","groupRegExp","extractRegExp","_format","caretPosition","_culture","CLASSNAME","_key","_step","isNumPadDecimal","_numericRegex","_separator","_floatRegExp","isNotNull","DOMElement","fieldType","convertToValueBinding","bindAttr","createAttributes","ruleName","validation","DATATYPE","BINDING","specialRules","convertItems","addValidationRules","modelField","oldIE","nameSpecialCharRegExp","ERRORTEMPLATE","editors","kendoNumericTextBox","kendoDatePicker","Editable","$angular","_validateProxy","_validate","clearContainer","editor","isObject","isValuesEditor","isCustomEditor","preventChangeTrigger","_validationEventInProgress","bindAttribute","bindingRegex","validatable","modelFields","DATABOUND","DATABINDING","FOCUSSELECTOR","KEDITITEM","EDIT","REMOVE","SAVE","ListView","_itemId","_selectable","_pageable","_crudHandlers","navigatable","altTemplate","editTemplate","_item","_progress","_error","_destroyEditable","pagerId","pageable","pager","multi","_scrollTo","scrollDirectionFunc","UseJQueryoffset","elementDimension","containerScrollAmount","containerDimension","clickCallback","focusAgain","canHandle","isTextBox","editItem","edit","clearSelection","_modelFromElement","_closeEditable","kendoEditable","clickNS","INPUT_EVENT_NAME","MaskedTextBox","_rules","_tokenize","_togglePrompt","_emptyMask","_oldValue","_timeoutId","_maskLength","clearPromptChar","unmaskOnPost","promptChar","0","9","#","L","?","&","C","A","_unbindInput","_bindInput","_formElement","_submitHandler","unmasked","_unmask","emptyMask","_mask","_propertyChange","_pasting","pasted","backward","chr","chrIdx","tokenIdx","tokensLength","maskChars","getEffectDirection","parseDirection","updateItemClasses","IMG","IMAGE","LINK","DEFAULTSTATE","excludedNodesRegExp","updateArrow","updateFirstLast","MENU","ContextMenu","TIMER","ZINDEX","POINTERDOWN","allPointers","KENDOPOPUP","HOVERSTATE","menuSelector","groupSelector","popupSelector","allItemsSelector","disabledSelector","itemSelector","linkSelector","exclusionSelector","nextSelector","lastSelector","templateSelector","touchPointerTypes","itemWrapper","image","sprite","rendering","wrapperCssClass","firstLevel","itemCssAttributes","imageCssAttributes","imageAttr","contentCssAttributes","contentAttr","defaultClasses","textClass","textAttributes","arrowClass","encoded","groupAttributes","expanded","groupCssClass","Menu","_initData","_updateClasses","_animations","nextItemZIndex","_focusProxy","_preventClose","_removeHoverItem","_checkActiveElement","openOnClick","clicked","_documentClickHandler","_documentClick","closeOnClick","hoverDelay","popupCollision","_toggleDisabled","referenceItem","inserted","_insert","plain","groupData","renderGroup","renderItem","windowHeight","setScrolling","parentHorizontal","_triggerEvent","maxHeight","dontClearClose","_isRootItem","isEnter","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","nonContentGroupsSelector","delegateTarget","pointerType","_","openHandle","childGroup","childGroupVisible","formNode","targetHref","sampleHref","isLink","isLocalLink","isTargetLink","shouldCloseTheRootItem","enterKey","_moveHover","belongsToVertical","_itemBelongsToVertival","_itemHasChildren","_itemDown","_itemUp","_itemEsc","menuIsVertical","nextItem","_itemRight","parentItem","nextAll","_itemLeft","menu","renderContent","subGroup","renderItems","_wire","alignToAnchor","_showProxy","_closeProxy","_closeTimeoutProxy","_showHandler","_eventOrigin","_targetChild","normalClick","sameTarget","containment","_triggerProxy","LINKSELECTOR","ACTIVECLASS","HREF","ITEM","GROUP","VISIBLEGROUP","EXPAND","CONTENT","COLLAPSE","GROUPS","CONTENTS","DISABLEDCLASS","SELECTEDCLASS","SELECTEDSELECTOR","HIGHLIGHTCLASS","ACTIVEITEMSELECTOR","clickableItems","disabledItems","selectableItems","defaultState","SINGLE","contentUrl","contentAttributes","PanelBar","_first","expand","_angularCompile","expandMode","_angularCleanup","useAnimation","animBackup","_animating","_collapseAllExpanded","_toggleItem","_updateSelected","reload","focused","isReferenceItem","_updateItemsClasses","panels","_updateItemClasses","wrapElement","contentUrls","isAnchor","isVisible","_toggleGroup","animationSettings","hasCollapseAnimation","_animationCallback","stopExpand","contentElement","statusIcon","loadingIconTimeout","panelBar","DEFAULTMIN","DEFAULTMAX","DEFAULTVALUE","DEFAULTCHUNKCOUNT","KPROGRESSBAR","KPROGRESSBARREVERSE","KPROGRESSBARINDETERMINATE","KPROGRESSBARCOMPLETE","KPROGRESSWRAPPER","KPROGRESSSTATUS","KCOMPLETEDCHUNK","KUPCOMINGCHUNK","KSTATEDISABLED","PROGRESSTYPE","PERCENT","CHUNK","COMPLETE","HUNDREDPERCENT","DEFAULTANIMATIONDURATION","PRECISION","progressStatus","ProgressBar","_progressProperty","_fields","_validateValue","_validateType","_progressAnimation","_updateProgress","chunkCount","showStatus","_isStarted","progressWrapper","currentType","initialStatusValue","_addChunkProgressWrapper","_calculatePercentage","validated","_roundValue","_updateChunks","_onProgressUpdateAlways","_updateProgressWrapper","completedChunks","percentagesPerChunk","percentageParsed","completedChunksCount","animationDuration","_animation","animationCssOptions","_addRegularProgressWrapper","_onProgressAnimateStart","_onProgressAnimate","_onProgressAnimateComplete","always","progressStatusWrapSize","progressInPercent","progressValue","progressWrapperSize","chunkSize","_normalizeChunkSize","lastChunk","_calculateChunkSize","chunkContainer","_onePercent","ACTIVATE_EVENTS","ResponsivePanel","_toggleHandler","_toggleButtonClick","toggleButton","_registerBreakpoint","_mediaQuery","_registerStyle","breakpoint","head","styleSheet","createTextNode","prevented","updateTabClasses","tabs","ACTIVESTATE","TABONTOP","tabGroup","scrollButtonHtml","buttonClass","iconClass","CONTENTURL","NAVIGATABLEITEMS","HOVERABLEITEMS","TabStrip","_tabPosition","_scrollable","_keyDownProxy","wr","setActive","contentHolder","activateTab","_endItem","endItem","rtl","tab","dataContentField","dataContentUrlField","dataImageUrlField","dataUrlField","dataSpriteCssClass","tabPosition","collapsible","scrollable","scrollWrap","_scrollableModeActive","_scrollPrevButton","_scrollNextButton","ajaxRequest","_create","_updateContentElements","referenceTab","referenceContent","activeItem","activeTab","contentElements","tabStripID","currentIndex","currentContent","contentAnimators","tabsHeight","_setContentElementsDimensions","contentDivs","activeDiv","marginStyleProperty","minHeight","_sizeScrollWrap","deactivateTab","wrapperOffsetWidth","tabGroupScrollWidth","scrollPrevButton","scrollNextButton","_scrollableAllowed","_nowScrollingTabs","marginRight","_scrollTabsByDelta","_toggleScrollButtons","_scrollTabsToItem","itemPosition","currentScrollOffset","itemOffset","tabGroupWidth","tabGroupPadding","finish","scrLeft","hasCloseAnimation","neighbours","oldTab","visibleContents","isAjaxContent","showContentElement","showContent","inRequest","abort","idTest","scrollContainer","halfWidth","fakeProgress","endState","oldProgressAnimation","ajaxSettings","request","progressUpload","upload","evt","noProgress","XMLHttpRequest","lengthComputable","stopProgress","statusText","tabStrip","offsetDiff","dst","midnight","noon","TimeView","TimePicker","ARIA_ACTIVEDESCENDANT","_dates","_timeViewID","_heightHandler","dataBind","_html","msStart","lastIdx","msInterval","interval","startDay","innerText","_distinctSelection","selectionIndex","timeView","lastTimeOption","setMinutes","timeFormat","ARIA_OWNS","dateViewParams","timeViewParams","DateTimePicker","_views","_icons","_midnight","_calculateMidnight","dateIcon","timeIcon","_timeIcon","secondView","minDateEqual","maxDateEqual","timeViewOptions","rebind","isDateViewVisible","adjustedDate","_timeSelected","icons","isPercentageSize","percentageUnitsRegex","isPixelSize","pxUnitsRegex","isFluid","calculateSize","panePropertyAccessor","triggersResize","splitter","paneConfig","PANE","PaneResizing","horizontalDefaults","verticalDefaults","_resizable","_marker","_createHint","resizeend","LAYOUTCHANGE","KPANE","PANECLASS","Splitter","_dimension","_keys","decrease","increase","_resizeStep","_initPanes","triggerHandler","_addOverlays","_panes","_removeOverlays","_togglePane","_detachEvents","panes","navigationKeys","isResizing","_triggerAction","panesConfig","_initPane","config","arrowType","_updateSplitBar","splitbar","previousPane","nextPane","catIconIf","iconType","condition","prevCollapsible","prevCollapsed","collapsed","nextCollapsible","nextCollapsed","_updateSplitBars","_removeSplitBars","sizedPanesWidth","sizedPanesCount","freeSizedPanes","freeSizePanesCount","freeSizePaneWidth","alternateSizingProperty","positioningProperty","sizingDomProperty","lastNonCollapsedPane","splitBars","splitBarsCount","sizingProperty","totalSize","collapsedSize","_addPane","paneElement","referencePane","mousePositioningProperty","previousPaneConfig","nextPaneConfig","prevBoundary","nextBoundary","toPx","prevMinSize","prevMaxSize","nextMinSize","nextMaxSize","ghostPosition","previousPaneNewSize","nextPaneNewSize","fluidPanesCount","constrain","low","high","Infinity","executableScript","WindowResizing","_draggable","KWINDOWRESIZEHANDLES","addOverlay","removeOverlay","WindowDragging","KWINDOW","KWINDOWTITLE","KWINDOWTITLEBAR","KWINDOWCONTENT","KOVERLAY","KHOVERSTATE","KFOCUSEDSTATE","MAXIMIZEDSTATE","CURSOR","REFRESH","MINIMIZE","MAXIMIZE","MINIMIZE_MAXIMIZE","KPIN","KUNPIN","PIN_UNPIN","TITLEBAR_BUTTONS","REFRESHICON","Window","windowContent","suppressActions","actions","_createWindow","_dimensions","toFront","_overlay","_buttonEnter","_buttonLeave","_windowActionHandler","aria-labelledby","_onDocumentResize","minWidth","maxWidth","_animationOptions","basicAnimation","toggleMaximization","resizeHandle","dragging","_actions","titlebar","fade","autoFocus","_closable","newWidth","newHeight","w","isMaximized","overlay","_actionForIcon","k-i-close","k-i-maximize","k-i-minimize","k-i-restore","k-i-refresh","k-i-pin","k-i-unpin","_modals","zStack","_object","newTop","newLeft","documentWindow","titleBarHeight","titleBar","overlayFx","showOptions","doc","Fade","fadeIn","_activate","_documentScrollTop","_documentScrollLeft","_removeOverlay","suppressAnimation","modals","hideOverlay","hideOptions","systemTriggered","_deactivate","lastModal","_actionable","_shouldFocus","windowTop","currentWindow","originalZIndex","windowObject","zIndexNew","restoreOptions","isMinimized","_sizingAction","actionId","maximize","minimize","unpin","initOptions","contentFrame","_triggerRefresh","_ajaxComplete","_loadingIconTimeout","_ajaxError","_ajaxSuccess","contentTemplate","_showLoading","iframeSrcAttributes","contentHtml","elementPadding","initialPosition","resizeDirection","initialSize","containerOffset","windowBottom","windowRight","initialWindowPosition","initialPointerPosition","startPosition","minLeftPosition","minTopPosition","_finishDrag","lastFrom","isPrimitive","getItemCount","listScreens","getDefaultItemHeight","lineHeight","mockList","bufferSizes","opposite","listValidator","downThreshold","upThreshold","lastScrollTop","scrollCallback","syncList","reorder","webkitTransform","map2","arr1","arr2","ITEMCHANGE","reshift","placeholderTemplate","GROUPITEM","VIRTUALLIST","LIST","HEADER","VIRTUALITEM","HEIGHTCONTAINER","LISTBOUND","VIRTUAL_LIST_NS","_fetching","_selectedDataItems","_selectedIndexes","_rangesList","_activeDeferred","_promisesList","_renderItems","_triggerListBound","oppositeBuffer","valueMapper","_selectProxy","_clean","_deferValueSet","mute","_selectingValue","_createList","_forcePrefetch","_prefetchByValue","dataView","_dataView","forSelection","indexes","deferredRange","itemCount","defs","pages","existingRange","isEmptyList","rangeStart","_findDataItem","_getElementByIndex","_focusedIndex","_getElementLocation","heightContainer","isAlreadySelected","prefetchStarted","_getIndecies","_deselectCurrentValues","_listCreated","_lastScrollTop","hasData","_screenHeight","yPosition","yDownPostion","screenEnd","_generateItems","_saveInitialRanges","_buildValueGetter","_setHeight","getList","_listItems","_whenChanged","_reorderList","currentHeight","padHeight","lastRequestedRange","lastRangeStart","flatGroups","flatGroup","groupLength","_getterDeferred","firstItemIndex","_indexConstraint","firstVisibleGroup","currentVisibleGroup","firstVisibleDataItemIndex","firstVisibleDataItem","_itemMapper","listType","_currentGroup","_range","_getDataItemsCollection","_listIndex","theValidator","theNew","currentOffset","list2","range2","_bufferSizes","buffers","selectedIndexes","removedindexesCounter","oldSkip","_clickHandler","firstItem","initPopOvers","popovers","preventScrollIfNotInput","initWidgets","UI_OVERLAY","BEFORE_SHOW","AFTER_SHOW","BEFORE_HIDE","defaultTransition","_layout","_scroller","_model","layout","getLayout","stretch","modelScope","scroller","$destroy","purge","inited","_invokeNgController","_padIfNativeScrolling","isAndroid","skin","isAndroidForced","hasPlatformIndependentSkin","topContainer","bottomContainer","scrollerContent","idAttrValue","contentSelector","controller","$apply","_callController","$scope","_locate","platform","previousView","bodyRegExp","LOAD_START","LOAD_COMPLETE","SHOW_START","SAME_VIEW_REQUESTED","VIEW_SHOW","VIEW_TYPE_DETERMINED","AFTER","ViewEngine","errorMessage","sandbox","_hideViews","rootView","rootNeeded","layouts","viewContainer","getLayoutProxy","_setupLayouts","viewOptions","loader","showView","remoteViewURLPrefix","showClosure","_findViewElement","_createView","serverNavigation","_loadView","modalViews","urlPath","_getLayout","_xhr","_xhrComplete","responseText","CAPTURE_EVENTS","Loader","captureEvents","_attachCapture","loading","changeMessage","transitionDone","EXTERNAL","DUMMY_HREF","SKIP_TRANSITION_ON_BACK_BUTTON","WIDGET_RELS","historyCallback","viewEngine","_historyNavigate","_historyReplace","closeActiveDialogs","viewShow","loadStart","loadComplete","sameViewRequested","viewTypeDetermined","_setPortraitWidth","_setupAppLinks","dialogs","navigateToInitial","portraitWidth","bindToRouter","router","attrUrl","hideLoading","showLoading","changeLoadingMessage","linkRoles","pressedButtonSelector","buttonSelectors","_mouseup","_appLinkClick","rel","delayedTouchEnd","openFor","paneContainer","ARROW","OVERLAY","DIRECTION_CLASSES","DIRECTIONS","ANIMATION","popupOptions","containerPopup","PopOver","initialOpen","SHIM","Shim","app","osname","ioswp","bb","shim","_hide","BEFORE_OPEN","WRAP","ModalView","_shim","AXIS","SWIPE_TO_OPEN","AFTER_HIDE","NULL_VIEW","Drawer","drawer","_viewShow","_attachTransition","swipeToOpen","leftPositioned","swipeToOpenViews","_moveViewTo","visibleOnCurrentView","_currentViewIncludedIn","_setAsCurrent","canMoveLeft","canMoveRight","leftSwipe","limitedPosition","newPosition","shouldShow","pastHalf","velocityThreshold","EXPANED_PANE_SHIM","SplitView","_style","_paramsHistory","expandedPaneShim","_shimUserEvents","collapsePanes","expandPanes","osCssClass","variant","setDefaultPlatform","statusBarStyle","wp8Background","noVariantSet","isOrientationHorizontal","getOrientationClass","setMinimumHeight","applyViewportHeight","HEAD","viewportTemplate","DEFAULT_OS","BERRYPHONEGAP","FONT_SIZE_COEF","CHROME","BROKEN_WEBVIEW_RESIZE","INITIALLY_HORIZONTAL","MOBILE_PLATFORMS","ios7","usedWithBlock","systemMeta","clipTemplate","ENABLE_CLIP","iconMeta","HIDEBAR","SUPPORT_SWIPE_TO_GO_BACK","HISTORY_TRANSITION","BARCOMPENSATION","STATUS_BAR_HEIGHT","SCREEN","Application","bootstrap","paneOptions","startHistory","_setupPlatform","_attachMeta","_setupElementClass","_attachHideBarHandlers","updateDocumentTitle","_setupDocumentTitle","_startHistory","hideAddressBar","browserHistory","historyTransition","retina","refreshBackgroundColorProxy","_resizeToScreenHeight","includeStatusBar","_clearExistingMeta","hideBar","_initialHeight","defaultTitle","_hideBar","COMMAND","BUTTONS","CONTEXT_DATA","cancelTemplate","ActionSheet","ShimClass","_shimHideProxy","actionData","_shimHide","highlightButton","highlight","ANDROID3UP","deactivateTimeoutID","createBadge","useTap","clickOn","_userEvents","_timeoutDeactivate","badge","badgeElement","iconSpan","iconElement","BackButton","DetailButton","DISABLE","_button","selectOn","buttongroup","COLLAPSIBLE","INSET","HEADER_WRAPPER","CONTENT_WRAPPER","COLLAPSED","EXPANDED","ANIMATED","EXAPND","Collapsible","_buildHeader","inset","collapseIcon","expandIcon","iconPosition","instant","_getContentHeight","isCollapsed","whitespace","TEXT_NODE","whitespaceRegExp","addIcon","querySelector","enhanceItem","ICON_SELECTOR","enhanceLinkItem","itemAndDetailButtons","otherNodes","enhanceCheckBoxItem","putAt","VirtualListViewItem","LOAD_ICON","VirtualListViewLoadingIndicator","VirtualListViewPressToLoadMore","VirtualListViewItemBinder","ListViewItemBinder","ListViewFilter","ITEM_SELECTOR","HIGHLIGHT_SELECTOR","GROUP_CLASS","ACTIVE_CLASS","GROUP_WRAPPER","GROUP_TEMPLATE","SEARCH_TEMPLATE","STYLED","ITEM_CHANGE","buttonRegExp","HeaderFixer","headerFixer","cacheHeaders","_shouldFixHeaders","_cacheHeaders","_fixHeader","fixedHeaders","headerPair","headers","currentHeader","DEFAULT_PULL_PARAMETERS","RefreshHandler","pullParameters","pull","_pulled","itemConstructor","prevItem","endReached","below","totalHeight","averageItemHeight","remainingItemsCount","batchUpdate","nextIndex","initialOffset","lastDirection","above","lastTop","topBorder","bottomBorder","setDataItem","_loadIcon","_loadButton","loadMoreText","loadMore","kendoMobileButton","_hideShowButton","_showLoadButton","chromeHeight","pressToLoadMore","virtualViewSize","updateScrollerSize","updateSize","itemBinder","adding","removing","prependOnRefresh","appendOnRefresh","groupedMode","findByDataItem","_shouldShowLoading","replaceGrouped","insertAt","endlessScroll","filterable","autoFilter","searchInput","_oldFilter","_filterChange","clearButton","_dataSourceChange","_refreshInput","appliedFilters","_applyFilter","scrollTreshold","scrollThreshold","_headerFixer","_itemsCache","_itemBinder","_pullToRefreshHandler","_enhanceItems","emptyDataSource","_scrollerInstance","triggerChange","replaceItem","newItem","_dim","_highlight","plainItem","dataIDAttribute","templateProxy","groupTemplateProxy","_headerTemplate","buttonElement","_styleGroups","rootItems","grouped","enhanced","createContainer","toggleTitle","centerElement","noTitle","showTitle","NavBar","leftElement","rightElement","DRAG_START","DRAG_END","ElasticPane","ScrollViewContent","VirtualScrollViewContent","Page","ScrollView","CHANGING","CURRENT_PAGE_CLASS","VIRTUAL_PAGE_CLASS","CLEANUP","VIRTUAL_PAGE_COUNT","LEFT_PAGE","CETER_PAGE","RIGHT_PAGE","LEFT_SWIPE","NUDGE","RIGHT_SWIPE","scrollView","_changeProxy","_refreshProxy","pageHTML","pageCount","ScrollViewPager","updateDimension","transitionTo","ScrollViewElasticPane","_getPages","contentHeight","enablePager","pagerOverlay","paneMoved","swipeType","bounce","snap","nextPage","approx","minSnap","maxSnap","currentPage","updatePage","forcePageUpdate","resizeTo","containerHeight","pageElements","_paged","_initPages","_buffer","_pendingPageRefresh","_pendingWidgetRefresh","_resetPages","_resetProxy","_endReachedProxy","emptyTemplate","emptyTemplateProxy","setWidth","_repositionPages","_updatePagesContent","thresholdPassed","isEndReached","_cancelMove","_moveBackward","_moveForward","setPageContent","_resetMovable","_onResize","_onReset","_onEndReached","theContent","VirtualPage","mobileContainer","transitionEnd","dragStart","dragEnd","_syncWithContent","_content","viewInit","bounceVelocityThreshold","prevPage","_dragStart","_transitionEnd","limitValue","minLimit","maxLimit","SWITCHON","SWITCHOFF","MARGINLEFT","ACTIVE_STATE","DISABLED_STATE","TRANSFORMSTYLE","SWITCH_MARKUP","Switch","onLabel","offLabel","background","snapPoint","_animateBackground","handleWidth","ACTIVE_STATE_CLASS","_buildButton","switchTo","_setActiveItem","switchByFullUrl","currentItem","tabstrip","withoutTimeout","$timeout","createWidget","attrs","origAttr","controllers","createIt","originalElement","destroyRegister","kNgDisabled","kNgReadonly","isReadonly","kRebind","ctor","OPTIONS_NOW","exposeWidget","$emit","destroyWidgetOnScopeDestroy","setupRebind","$eval","bindToKNgDisabled","bindToKNgReadonly","kNgModel","bindToKNgModel","ngModel","bindToNgModel","ngForm","propagateClassToWidgetWrapper","kNgDelay","delayValue","parsed","unresolved","unwatch","$watch","$root","unregister","$attr","addOption","scopeValue","widgetOptions","widgetEvents","optionsPath","kOptions","optionsValue","defaultOptions","dataName","eventKey","optionName","ignoredOwnProperties","ignoredAttributes","kDataSource","createDataSource","$log","kendoWidget","$parse","formValue","isForm","formRegExp","haveChangeOnElement","onChange","currentVal","$render","$viewValue","$modelValue","formPristine","$pristine","$setViewValue","$setPristine","digest","$isEmpty","updating","valueIsCollection","currentValueLength","watchHandler","$angular_setLogicValue","$watchCollection","$setDirty","$angular_getLogicValue","deregister","$on","suspend","mo","disconnect","resume","observe","prevClassList","MutationObserver","classList","changes","chg","currClassList","attributeName","cls","rebindAttr","templateOptions","isUpload","_cleanUp","WIDGET_TEMPLATE_OPTIONS","templateContents","replaceChild","setTemplate","createDirectives","klass","make","directiveName","widgetName","module","directive","directiveFactory","shortcut","dashed","SKIP_SHORTCUTS","restrict","TAGNAMES","scopeField","kScopeField","MANUAL_DIRECTIVES","kendoWidgetInstance","isDigesting","destroyScope","defadvice","origMethod","pendingPatches","$injector","$defaultCompile","TreeList","TreeView","Scheduler","toDataSource","ds","mew","factory","kendoRenderedTimeout","RENDERED","require","$attrs","$element","roleattr","Editor","Upload","MobileButton","MobileBackButton","MobileDetailButton","MobileListView","entry","arg","$angular_scope","$angular_init","itemScope","$$kendoScope","vars","$new","$angular_makeEventHandler","kendoEvent","elems","colIdx","locals","isString","angularDataItem","templateSettings","col","terminal","pre","_instance","post","kAttr","priority","TreeMap","MobileScrollView","Grid","PivotGrid","templateDirectives","templateName","attrName","outerHTML","cloneEvent","initCustomEvent","defaultPrevented","expose","props","registerElement","newElement","bindEvents","EVENT_PREFIX","attachedCallback","getPrototypeOf","detachedCallback","registered","major","numerictextbox","datepicker","datetimepicker","timepicker","colorpicker","maskedtextbox","dropdownlist","mobilebutton","mobilebackbutton","mobiledetailbutton","listview","mobilelistview","treeview","contextmenu","actionsheet","elementName","System","__decorate","__metadata","decorators","Reflect","metadata","exports_1","angular2_1","KendoValueAccessor","_angular2_1","execute","cd","elementRef","_this","onTouched","nativeElement","valueAccessor","writeValue","registerOnChange","registerOnTouched","Directive","NgControl","ElementRef"],"mappings":"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","file":"kendo.ui.core.min.js","sourcesContent":["/*!\n * Copyright 2016 Telerik AD\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n(function (f, define) {\n define('kendo.core', ['jquery'], f);\n}(function () {\n var __meta__ = {\n id: 'core',\n name: 'Core',\n category: 'framework',\n description: 'The core of the Kendo framework.'\n };\n (function ($, window, undefined) {\n var kendo = window.kendo = window.kendo || { cultures: {} }, extend = $.extend, each = $.each, isArray = $.isArray, proxy = $.proxy, noop = $.noop, math = Math, Template, JSON = window.JSON || {}, support = {}, percentRegExp = /%/, formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g, boxShadowRegExp = /(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+(?:\\.?)\\d*)px\\s*(\\d+)?/i, numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/, FUNCTION = 'function', STRING = 'string', NUMBER = 'number', OBJECT = 'object', NULL = 'null', BOOLEAN = 'boolean', UNDEFINED = 'undefined', getterCache = {}, setterCache = {}, slice = [].slice;\n kendo.version = '2016.2.419'.replace(/^\\s+|\\s+$/g, '');\n function Class() {\n }\n Class.extend = function (proto) {\n var base = function () {\n }, member, that = this, subclass = proto && proto.init ? proto.init : function () {\n that.apply(this, arguments);\n }, fn;\n base.prototype = that.prototype;\n fn = subclass.fn = subclass.prototype = new base();\n for (member in proto) {\n if (proto[member] != null && proto[member].constructor === Object) {\n fn[member] = extend(true, {}, base.prototype[member], proto[member]);\n } else {\n fn[member] = proto[member];\n }\n }\n fn.constructor = subclass;\n subclass.extend = that.extend;\n return subclass;\n };\n Class.prototype._initOptions = function (options) {\n this.options = deepExtend({}, this.options, options);\n };\n var isFunction = kendo.isFunction = function (fn) {\n return typeof fn === 'function';\n };\n var preventDefault = function () {\n this._defaultPrevented = true;\n };\n var isDefaultPrevented = function () {\n return this._defaultPrevented === true;\n };\n var Observable = Class.extend({\n init: function () {\n this._events = {};\n },\n bind: function (eventName, handlers, one) {\n var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, original, handler, handlersIsFunction = typeof handlers === FUNCTION, events;\n if (handlers === undefined) {\n for (idx in eventName) {\n that.bind(idx, eventName[idx]);\n }\n return that;\n }\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n handler = handlersIsFunction ? handlers : handlers[eventName];\n if (handler) {\n if (one) {\n original = handler;\n handler = function () {\n that.unbind(eventName, handler);\n original.apply(that, arguments);\n };\n handler.original = original;\n }\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n }\n return that;\n },\n one: function (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n },\n first: function (eventName, handlers) {\n var that = this, idx, eventNames = typeof eventName === STRING ? [eventName] : eventName, length, handler, handlersIsFunction = typeof handlers === FUNCTION, events;\n for (idx = 0, length = eventNames.length; idx < length; idx++) {\n eventName = eventNames[idx];\n handler = handlersIsFunction ? handlers : handlers[eventName];\n if (handler) {\n events = that._events[eventName] = that._events[eventName] || [];\n events.unshift(handler);\n }\n }\n return that;\n },\n trigger: function (eventName, e) {\n var that = this, events = that._events[eventName], idx, length;\n if (events) {\n e = e || {};\n e.sender = that;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n events = events.slice();\n for (idx = 0, length = events.length; idx < length; idx++) {\n events[idx].call(that, e);\n }\n return e._defaultPrevented === true;\n }\n return false;\n },\n unbind: function (eventName, handler) {\n var that = this, events = that._events[eventName], idx;\n if (eventName === undefined) {\n that._events = {};\n } else if (events) {\n if (handler) {\n for (idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n that._events[eventName] = [];\n }\n }\n return that;\n }\n });\n function compilePart(part, stringPart) {\n if (stringPart) {\n return '\\'' + part.split('\\'').join('\\\\\\'').split('\\\\\"').join('\\\\\\\\\\\\\"').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t') + '\\'';\n } else {\n var first = part.charAt(0), rest = part.substring(1);\n if (first === '=') {\n return '+(' + rest + ')+';\n } else if (first === ':') {\n return '+$kendoHtmlEncode(' + rest + ')+';\n } else {\n return ';' + part + ';$kendoOutput+=';\n }\n }\n }\n var argumentNameRegExp = /^\\w+/, encodeRegExp = /\\$\\{([^}]*)\\}/g, escapedCurlyRegExp = /\\\\\\}/g, curlyRegExp = /__CURLY__/g, escapedSharpRegExp = /\\\\#/g, sharpRegExp = /__SHARP__/g, zeros = [\n '',\n '0',\n '00',\n '000',\n '0000'\n ];\n Template = {\n paramName: 'data',\n useWithBlock: true,\n render: function (template, data) {\n var idx, length, html = '';\n for (idx = 0, length = data.length; idx < length; idx++) {\n html += template(data[idx]);\n }\n return html;\n },\n compile: function (template, options) {\n var settings = extend({}, this, options), paramName = settings.paramName, argumentName = paramName.match(argumentNameRegExp)[0], useWithBlock = settings.useWithBlock, functionBody = 'var $kendoOutput, $kendoHtmlEncode = kendo.htmlEncode;', fn, parts, idx;\n if (isFunction(template)) {\n return template;\n }\n functionBody += useWithBlock ? 'with(' + paramName + '){' : '';\n functionBody += '$kendoOutput=';\n parts = template.replace(escapedCurlyRegExp, '__CURLY__').replace(encodeRegExp, '#=$kendoHtmlEncode($1)#').replace(curlyRegExp, '}').replace(escapedSharpRegExp, '__SHARP__').split('#');\n for (idx = 0; idx < parts.length; idx++) {\n functionBody += compilePart(parts[idx], idx % 2 === 0);\n }\n functionBody += useWithBlock ? ';}' : ';';\n functionBody += 'return $kendoOutput;';\n functionBody = functionBody.replace(sharpRegExp, '#');\n try {\n fn = new Function(argumentName, functionBody);\n fn._slotCount = Math.floor(parts.length / 2);\n return fn;\n } catch (e) {\n throw new Error(kendo.format('Invalid template:\\'{0}\\' Generated code:\\'{1}\\'', template, functionBody));\n }\n }\n };\n function pad(number, digits, end) {\n number = number + '';\n digits = digits || 2;\n end = digits - number.length;\n if (end) {\n return zeros[digits].substring(0, end) + number;\n }\n return number;\n }\n (function () {\n var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g, gap, indent, meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n }, rep, toString = {}.toString;\n if (typeof Date.prototype.toJSON !== FUNCTION) {\n Date.prototype.toJSON = function () {\n var that = this;\n return isFinite(that.valueOf()) ? pad(that.getUTCFullYear(), 4) + '-' + pad(that.getUTCMonth() + 1) + '-' + pad(that.getUTCDate()) + 'T' + pad(that.getUTCHours()) + ':' + pad(that.getUTCMinutes()) + ':' + pad(that.getUTCSeconds()) + 'Z' : null;\n };\n String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {\n return this.valueOf();\n };\n }\n function quote(string) {\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === STRING ? c : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n }\n function str(key, holder) {\n var i, k, v, length, mind = gap, partial, value = holder[key], type;\n if (value && typeof value === OBJECT && typeof value.toJSON === FUNCTION) {\n value = value.toJSON(key);\n }\n if (typeof rep === FUNCTION) {\n value = rep.call(holder, key, value);\n }\n type = typeof value;\n if (type === STRING) {\n return quote(value);\n } else if (type === NUMBER) {\n return isFinite(value) ? String(value) : NULL;\n } else if (type === BOOLEAN || type === NULL) {\n return String(value);\n } else if (type === OBJECT) {\n if (!value) {\n return NULL;\n }\n gap += indent;\n partial = [];\n if (toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i++) {\n partial[i] = str(i, value) || NULL;\n }\n v = partial.length === 0 ? '[]' : gap ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n if (rep && typeof rep === OBJECT) {\n length = rep.length;\n for (i = 0; i < length; i++) {\n if (typeof rep[i] === STRING) {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n for (k in value) {\n if (Object.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n v = partial.length === 0 ? '{}' : gap ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n }\n if (typeof JSON.stringify !== FUNCTION) {\n JSON.stringify = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n if (typeof space === NUMBER) {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n } else if (typeof space === STRING) {\n indent = space;\n }\n rep = replacer;\n if (replacer && typeof replacer !== FUNCTION && (typeof replacer !== OBJECT || typeof replacer.length !== NUMBER)) {\n throw new Error('JSON.stringify');\n }\n return str('', { '': value });\n };\n }\n }());\n (function () {\n var dateFormatRegExp = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|zzz|zz|z|\"[^\"]*\"|'[^']*'/g, standardFormatRegExp = /^(n|c|p|e)(\\d*)$/i, literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g, commaRegExp = /\\,/g, EMPTY = '', POINT = '.', COMMA = ',', SHARP = '#', ZERO = '0', PLACEHOLDER = '??', EN = 'en-US', objectToString = {}.toString;\n kendo.cultures['en-US'] = {\n name: EN,\n numberFormat: {\n pattern: ['-n'],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n percent: {\n pattern: [\n '-n %',\n 'n %'\n ],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n symbol: '%'\n },\n currency: {\n name: 'US Dollar',\n abbr: 'USD',\n pattern: [\n '($n)',\n '$n'\n ],\n decimals: 2,\n ',': ',',\n '.': '.',\n groupSize: [3],\n symbol: '$'\n }\n },\n calendars: {\n standard: {\n days: {\n names: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n namesAbbr: [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat'\n ],\n namesShort: [\n 'Su',\n 'Mo',\n 'Tu',\n 'We',\n 'Th',\n 'Fr',\n 'Sa'\n ]\n },\n months: {\n names: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n namesAbbr: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n },\n AM: [\n 'AM',\n 'am',\n 'AM'\n ],\n PM: [\n 'PM',\n 'pm',\n 'PM'\n ],\n patterns: {\n d: 'M/d/yyyy',\n D: 'dddd, MMMM dd, yyyy',\n F: 'dddd, MMMM dd, yyyy h:mm:ss tt',\n g: 'M/d/yyyy h:mm tt',\n G: 'M/d/yyyy h:mm:ss tt',\n m: 'MMMM dd',\n M: 'MMMM dd',\n s: 'yyyy\\'-\\'MM\\'-\\'ddTHH\\':\\'mm\\':\\'ss',\n t: 'h:mm tt',\n T: 'h:mm:ss tt',\n u: 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n y: 'MMMM, yyyy',\n Y: 'MMMM, yyyy'\n },\n '/': '/',\n ':': ':',\n firstDay: 0,\n twoDigitYearMax: 2029\n }\n }\n };\n function findCulture(culture) {\n if (culture) {\n if (culture.numberFormat) {\n return culture;\n }\n if (typeof culture === STRING) {\n var cultures = kendo.cultures;\n return cultures[culture] || cultures[culture.split('-')[0]] || null;\n }\n return null;\n }\n return null;\n }\n function getCulture(culture) {\n if (culture) {\n culture = findCulture(culture);\n }\n return culture || kendo.cultures.current;\n }\n kendo.culture = function (cultureName) {\n var cultures = kendo.cultures, culture;\n if (cultureName !== undefined) {\n culture = findCulture(cultureName) || cultures[EN];\n culture.calendar = culture.calendars.standard;\n cultures.current = culture;\n } else {\n return cultures.current;\n }\n };\n kendo.findCulture = findCulture;\n kendo.getCulture = getCulture;\n kendo.culture(EN);\n function formatDate(date, format, culture) {\n culture = getCulture(culture);\n var calendar = culture.calendars.standard, days = calendar.days, months = calendar.months;\n format = calendar.patterns[format] || format;\n return format.replace(dateFormatRegExp, function (match) {\n var minutes;\n var result;\n var sign;\n if (match === 'd') {\n result = date.getDate();\n } else if (match === 'dd') {\n result = pad(date.getDate());\n } else if (match === 'ddd') {\n result = days.namesAbbr[date.getDay()];\n } else if (match === 'dddd') {\n result = days.names[date.getDay()];\n } else if (match === 'M') {\n result = date.getMonth() + 1;\n } else if (match === 'MM') {\n result = pad(date.getMonth() + 1);\n } else if (match === 'MMM') {\n result = months.namesAbbr[date.getMonth()];\n } else if (match === 'MMMM') {\n result = months.names[date.getMonth()];\n } else if (match === 'yy') {\n result = pad(date.getFullYear() % 100);\n } else if (match === 'yyyy') {\n result = pad(date.getFullYear(), 4);\n } else if (match === 'h') {\n result = date.getHours() % 12 || 12;\n } else if (match === 'hh') {\n result = pad(date.getHours() % 12 || 12);\n } else if (match === 'H') {\n result = date.getHours();\n } else if (match === 'HH') {\n result = pad(date.getHours());\n } else if (match === 'm') {\n result = date.getMinutes();\n } else if (match === 'mm') {\n result = pad(date.getMinutes());\n } else if (match === 's') {\n result = date.getSeconds();\n } else if (match === 'ss') {\n result = pad(date.getSeconds());\n } else if (match === 'f') {\n result = math.floor(date.getMilliseconds() / 100);\n } else if (match === 'ff') {\n result = date.getMilliseconds();\n if (result > 99) {\n result = math.floor(result / 10);\n }\n result = pad(result);\n } else if (match === 'fff') {\n result = pad(date.getMilliseconds(), 3);\n } else if (match === 'tt') {\n result = date.getHours() < 12 ? calendar.AM[0] : calendar.PM[0];\n } else if (match === 'zzz') {\n minutes = date.getTimezoneOffset();\n sign = minutes < 0;\n result = math.abs(minutes / 60).toString().split('.')[0];\n minutes = math.abs(minutes) - result * 60;\n result = (sign ? '+' : '-') + pad(result);\n result += ':' + pad(minutes);\n } else if (match === 'zz' || match === 'z') {\n result = date.getTimezoneOffset() / 60;\n sign = result < 0;\n result = math.abs(result).toString().split('.')[0];\n result = (sign ? '+' : '-') + (match === 'zz' ? pad(result) : result);\n }\n return result !== undefined ? result : match.slice(1, match.length - 1);\n });\n }\n function formatNumber(number, format, culture) {\n culture = getCulture(culture);\n var numberFormat = culture.numberFormat, decimal = numberFormat[POINT], precision = numberFormat.decimals, pattern = numberFormat.pattern[0], literals = [], symbol, isCurrency, isPercent, customPrecision, formatAndPrecision, negative = number < 0, integer, fraction, integerLength, fractionLength, replacement = EMPTY, value = EMPTY, idx, length, ch, hasGroup, hasNegativeFormat, decimalIndex, sharpIndex, zeroIndex, hasZero, hasSharp, percentIndex, currencyIndex, startZeroIndex, start = -1, end;\n if (number === undefined) {\n return EMPTY;\n }\n if (!isFinite(number)) {\n return number;\n }\n if (!format) {\n return culture.name.length ? number.toLocaleString() : number.toString();\n }\n formatAndPrecision = standardFormatRegExp.exec(format);\n if (formatAndPrecision) {\n format = formatAndPrecision[1].toLowerCase();\n isCurrency = format === 'c';\n isPercent = format === 'p';\n if (isCurrency || isPercent) {\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n pattern = numberFormat.pattern[negative ? 0 : 1];\n }\n customPrecision = formatAndPrecision[2];\n if (customPrecision) {\n precision = +customPrecision;\n }\n if (format === 'e') {\n return customPrecision ? number.toExponential(precision) : number.toExponential();\n }\n if (isPercent) {\n number *= 100;\n }\n number = round(number, precision);\n negative = number < 0;\n number = number.split(POINT);\n integer = number[0];\n fraction = number[1];\n if (negative) {\n integer = integer.substring(1);\n }\n value = groupInteger(integer, 0, integer.length, numberFormat);\n if (fraction) {\n value += decimal + fraction;\n }\n if (format === 'n' && !negative) {\n return value;\n }\n number = EMPTY;\n for (idx = 0, length = pattern.length; idx < length; idx++) {\n ch = pattern.charAt(idx);\n if (ch === 'n') {\n number += value;\n } else if (ch === '$' || ch === '%') {\n number += symbol;\n } else {\n number += ch;\n }\n }\n return number;\n }\n if (negative) {\n number = -number;\n }\n if (format.indexOf('\\'') > -1 || format.indexOf('\"') > -1 || format.indexOf('\\\\') > -1) {\n format = format.replace(literalRegExp, function (match) {\n var quoteChar = match.charAt(0).replace('\\\\', ''), literal = match.slice(1).replace(quoteChar, '');\n literals.push(literal);\n return PLACEHOLDER;\n });\n }\n format = format.split(';');\n if (negative && format[1]) {\n format = format[1];\n hasNegativeFormat = true;\n } else if (number === 0) {\n format = format[2] || format[0];\n if (format.indexOf(SHARP) == -1 && format.indexOf(ZERO) == -1) {\n return format;\n }\n } else {\n format = format[0];\n }\n percentIndex = format.indexOf('%');\n currencyIndex = format.indexOf('$');\n isPercent = percentIndex != -1;\n isCurrency = currencyIndex != -1;\n if (isPercent) {\n number *= 100;\n }\n if (isCurrency && format[currencyIndex - 1] === '\\\\') {\n format = format.split('\\\\').join('');\n isCurrency = false;\n }\n if (isCurrency || isPercent) {\n numberFormat = isCurrency ? numberFormat.currency : numberFormat.percent;\n decimal = numberFormat[POINT];\n precision = numberFormat.decimals;\n symbol = numberFormat.symbol;\n }\n hasGroup = format.indexOf(COMMA) > -1;\n if (hasGroup) {\n format = format.replace(commaRegExp, EMPTY);\n }\n decimalIndex = format.indexOf(POINT);\n length = format.length;\n if (decimalIndex != -1) {\n fraction = number.toString().split('e');\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n hasZero = zeroIndex > -1;\n hasSharp = sharpIndex > -1;\n idx = fraction.length;\n if (!hasZero && !hasSharp) {\n format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n length = format.length;\n decimalIndex = -1;\n idx = 0;\n }\n if (hasZero && zeroIndex > sharpIndex) {\n idx = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && idx > sharpIndex) {\n idx = sharpIndex;\n } else if (hasZero && idx < zeroIndex) {\n idx = zeroIndex;\n }\n }\n if (idx > -1) {\n number = round(number, idx);\n }\n } else {\n number = round(number);\n }\n sharpIndex = format.indexOf(SHARP);\n startZeroIndex = zeroIndex = format.indexOf(ZERO);\n if (sharpIndex == -1 && zeroIndex != -1) {\n start = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n start = sharpIndex;\n } else {\n start = sharpIndex > zeroIndex ? zeroIndex : sharpIndex;\n }\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n if (sharpIndex == -1 && zeroIndex != -1) {\n end = zeroIndex;\n } else if (sharpIndex != -1 && zeroIndex == -1) {\n end = sharpIndex;\n } else {\n end = sharpIndex > zeroIndex ? sharpIndex : zeroIndex;\n }\n if (start == length) {\n end = start;\n }\n if (start != -1) {\n value = number.toString().split(POINT);\n integer = value[0];\n fraction = value[1] || EMPTY;\n integerLength = integer.length;\n fractionLength = fraction.length;\n if (negative && number * -1 >= 0) {\n negative = false;\n }\n number = format.substring(0, start);\n if (negative && !hasNegativeFormat) {\n number += '-';\n }\n for (idx = start; idx < length; idx++) {\n ch = format.charAt(idx);\n if (decimalIndex == -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (zeroIndex != -1 && zeroIndex < idx) {\n replacement = EMPTY;\n }\n if (decimalIndex - idx <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n if (decimalIndex === idx) {\n number += (fraction ? decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n if (hasGroup) {\n number = groupInteger(number, start, Math.max(end, integerLength + start - 1), numberFormat);\n }\n if (end >= start) {\n number += format.substring(end + 1);\n }\n if (isCurrency || isPercent) {\n value = EMPTY;\n for (idx = 0, length = number.length; idx < length; idx++) {\n ch = number.charAt(idx);\n value += ch === '$' || ch === '%' ? symbol : ch;\n }\n number = value;\n }\n length = literals.length;\n if (length) {\n for (idx = 0; idx < length; idx++) {\n number = number.replace(PLACEHOLDER, literals[idx]);\n }\n }\n }\n return number;\n }\n var groupInteger = function (number, start, end, numberFormat) {\n var decimalIndex = number.indexOf(numberFormat[POINT]);\n var groupSizes = numberFormat.groupSize.slice();\n var groupSize = groupSizes.shift();\n var integer, integerLength;\n var idx, parts, value;\n var newGroupSize;\n end = decimalIndex !== -1 ? decimalIndex : end + 1;\n integer = number.substring(start, end);\n integerLength = integer.length;\n if (integerLength >= groupSize) {\n idx = integerLength;\n parts = [];\n while (idx > -1) {\n value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n if (groupSize === 0) {\n parts.push(integer.substring(0, idx));\n break;\n }\n }\n integer = parts.reverse().join(numberFormat[COMMA]);\n number = number.substring(0, start) + integer + number.substring(end);\n }\n return number;\n };\n var round = function (value, precision) {\n precision = precision || 0;\n value = value.toString().split('e');\n value = Math.round(+(value[0] + 'e' + (value[1] ? +value[1] + precision : precision)));\n value = value.toString().split('e');\n value = +(value[0] + 'e' + (value[1] ? +value[1] - precision : -precision));\n return value.toFixed(precision);\n };\n var toString = function (value, fmt, culture) {\n if (fmt) {\n if (objectToString.call(value) === '[object Date]') {\n return formatDate(value, fmt, culture);\n } else if (typeof value === NUMBER) {\n return formatNumber(value, fmt, culture);\n }\n }\n return value !== undefined ? value : '';\n };\n kendo.format = function (fmt) {\n var values = arguments;\n return fmt.replace(formatRegExp, function (match, index, placeholderFormat) {\n var value = values[parseInt(index, 10) + 1];\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : '');\n });\n };\n kendo._extractFormat = function (format) {\n if (format.slice(0, 3) === '{0:') {\n format = format.slice(3, format.length - 1);\n }\n return format;\n };\n kendo._activeElement = function () {\n try {\n return document.activeElement;\n } catch (e) {\n return document.documentElement.activeElement;\n }\n };\n kendo._round = round;\n kendo.toString = toString;\n }());\n (function () {\n var nonBreakingSpaceRegExp = /\\u00A0/g, exponentRegExp = /[eE][\\-+]?[0-9]+/, shortTimeZoneRegExp = /[+|\\-]\\d{1,2}/, longTimeZoneRegExp = /[+|\\-]\\d{1,2}:?\\d{2}/, dateRegExp = /^\\/Date\\((.*?)\\)\\/$/, offsetRegExp = /[+-]\\d*/, formatsSequence = [\n 'G',\n 'g',\n 'd',\n 'F',\n 'D',\n 'y',\n 'm',\n 'T',\n 't'\n ], numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n }, objectToString = {}.toString;\n function outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n }\n function designatorPredicate(designator) {\n return designator.charAt(0);\n }\n function mapDesignators(designators) {\n return $.map(designators, designatorPredicate);\n }\n function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n }\n function lowerArray(data) {\n var idx = 0, length = data.length, array = [];\n for (; idx < length; idx++) {\n array[idx] = (data[idx] + '').toLowerCase();\n }\n return array;\n }\n function lowerLocalInfo(localInfo) {\n var newLocalInfo = {}, property;\n for (property in localInfo) {\n newLocalInfo[property] = lowerArray(localInfo[property]);\n }\n return newLocalInfo;\n }\n function parseExact(value, format, culture) {\n if (!value) {\n return null;\n }\n var lookAhead = function (match) {\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n return i;\n }, getNumber = function (size) {\n var rg = numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}'), match = value.substr(valueIdx, size).match(rg);\n if (match) {\n match = match[0];\n valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n }, getIndexByName = function (names, lower) {\n var i = 0, length = names.length, name, nameLength, matchLength = 0, matchIdx = 0, subValue;\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = value.substr(valueIdx, nameLength);\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n if (subValue == name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n if (matchLength) {\n valueIdx += matchLength;\n return matchIdx + 1;\n }\n return null;\n }, checkLiteral = function () {\n var result = false;\n if (value.charAt(valueIdx) === format[idx]) {\n valueIdx++;\n result = true;\n }\n return result;\n }, calendar = culture.calendars.standard, year = null, month = null, day = null, hours = null, minutes = null, seconds = null, milliseconds = null, idx = 0, valueIdx = 0, literal = false, date = new Date(), twoDigitYearMax = calendar.twoDigitYearMax || 2029, defaultYear = date.getFullYear(), ch, count, length, pattern, pmHour, UTC, matches, amDesignators, pmDesignators, hoursOffset, minutesOffset, hasTime, match;\n if (!format) {\n format = 'd';\n }\n pattern = calendar.patterns[format];\n if (pattern) {\n format = pattern;\n }\n format = format.split('');\n length = format.length;\n for (; idx < length; idx++) {\n ch = format[idx];\n if (literal) {\n if (ch === '\\'') {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n if (ch === 'd') {\n count = lookAhead('d');\n if (!calendar._lowerDays) {\n calendar._lowerDays = lowerLocalInfo(calendar.days);\n }\n if (day !== null && count > 2) {\n continue;\n }\n day = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerDays[count == 3 ? 'namesAbbr' : 'names'], true);\n if (day === null || outOfRange(day, 1, 31)) {\n return null;\n }\n } else if (ch === 'M') {\n count = lookAhead('M');\n if (!calendar._lowerMonths) {\n calendar._lowerMonths = lowerLocalInfo(calendar.months);\n }\n month = count < 3 ? getNumber(2) : getIndexByName(calendar._lowerMonths[count == 3 ? 'namesAbbr' : 'names'], true);\n if (month === null || outOfRange(month, 1, 12)) {\n return null;\n }\n month -= 1;\n } else if (ch === 'y') {\n count = lookAhead('y');\n year = getNumber(count);\n if (year === null) {\n return null;\n }\n if (count == 2) {\n if (typeof twoDigitYearMax === 'string') {\n twoDigitYearMax = defaultYear + parseInt(twoDigitYearMax, 10);\n }\n year = defaultYear - defaultYear % 100 + year;\n if (year > twoDigitYearMax) {\n year -= 100;\n }\n }\n } else if (ch === 'h') {\n lookAhead('h');\n hours = getNumber(2);\n if (hours == 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return null;\n }\n } else if (ch === 'H') {\n lookAhead('H');\n hours = getNumber(2);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return null;\n }\n } else if (ch === 'm') {\n lookAhead('m');\n minutes = getNumber(2);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return null;\n }\n } else if (ch === 's') {\n lookAhead('s');\n seconds = getNumber(2);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return null;\n }\n } else if (ch === 'f') {\n count = lookAhead('f');\n match = value.substr(valueIdx, count).match(numberRegExp[3]);\n milliseconds = getNumber(count);\n if (milliseconds !== null) {\n milliseconds = parseFloat('0.' + match[0], 10);\n milliseconds = kendo._round(milliseconds, 3);\n milliseconds *= 1000;\n }\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return null;\n }\n } else if (ch === 't') {\n count = lookAhead('t');\n amDesignators = calendar.AM;\n pmDesignators = calendar.PM;\n if (count === 1) {\n amDesignators = mapDesignators(amDesignators);\n pmDesignators = mapDesignators(pmDesignators);\n }\n pmHour = getIndexByName(pmDesignators);\n if (!pmHour && !getIndexByName(amDesignators)) {\n return null;\n }\n } else if (ch === 'z') {\n UTC = true;\n count = lookAhead('z');\n if (value.substr(valueIdx, 1) === 'Z') {\n checkLiteral();\n continue;\n }\n matches = value.substr(valueIdx, 6).match(count > 2 ? longTimeZoneRegExp : shortTimeZoneRegExp);\n if (!matches) {\n return null;\n }\n matches = matches[0].split(':');\n hoursOffset = matches[0];\n minutesOffset = matches[1];\n if (!minutesOffset && hoursOffset.length > 3) {\n valueIdx = hoursOffset.length - 2;\n minutesOffset = hoursOffset.substring(valueIdx);\n hoursOffset = hoursOffset.substring(0, valueIdx);\n }\n hoursOffset = parseInt(hoursOffset, 10);\n if (outOfRange(hoursOffset, -12, 13)) {\n return null;\n }\n if (count > 2) {\n minutesOffset = parseInt(minutesOffset, 10);\n if (isNaN(minutesOffset) || outOfRange(minutesOffset, 0, 59)) {\n return null;\n }\n }\n } else if (ch === '\\'') {\n literal = true;\n checkLiteral();\n } else if (!checkLiteral()) {\n return null;\n }\n }\n }\n hasTime = hours !== null || minutes !== null || seconds || null;\n if (year === null && month === null && day === null && hasTime) {\n year = defaultYear;\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = defaultYear;\n }\n if (day === null) {\n day = 1;\n }\n }\n if (pmHour && hours < 12) {\n hours += 12;\n }\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n if (minutesOffset) {\n minutes += -minutesOffset;\n }\n value = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n value = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(value, hours);\n }\n if (year < 100) {\n value.setFullYear(year);\n }\n if (value.getDate() !== day && UTC === undefined) {\n return null;\n }\n return value;\n }\n function parseMicrosoftFormatOffset(offset) {\n var sign = offset.substr(0, 1) === '-' ? -1 : 1;\n offset = offset.substring(1);\n offset = parseInt(offset.substr(0, 2), 10) * 60 + parseInt(offset.substring(2), 10);\n return sign * offset;\n }\n kendo.parseDate = function (value, formats, culture) {\n if (objectToString.call(value) === '[object Date]') {\n return value;\n }\n var idx = 0;\n var date = null;\n var length, patterns;\n var tzoffset;\n if (value && value.indexOf('/D') === 0) {\n date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n tzoffset = offsetRegExp.exec(date.substring(1));\n date = new Date(parseInt(date, 10));\n if (tzoffset) {\n tzoffset = parseMicrosoftFormatOffset(tzoffset[0]);\n date = kendo.timezone.apply(date, 0);\n date = kendo.timezone.convert(date, 0, -1 * tzoffset);\n }\n return date;\n }\n }\n culture = kendo.getCulture(culture);\n if (!formats) {\n formats = [];\n patterns = culture.calendar.patterns;\n length = formatsSequence.length;\n for (; idx < length; idx++) {\n formats[idx] = patterns[formatsSequence[idx]];\n }\n idx = 0;\n formats = [\n 'yyyy/MM/dd HH:mm:ss',\n 'yyyy/MM/dd HH:mm',\n 'yyyy/MM/dd',\n 'ddd MMM dd yyyy HH:mm:ss',\n 'yyyy-MM-ddTHH:mm:ss.fffffffzzz',\n 'yyyy-MM-ddTHH:mm:ss.fffzzz',\n 'yyyy-MM-ddTHH:mm:sszzz',\n 'yyyy-MM-ddTHH:mm:ss.fffffff',\n 'yyyy-MM-ddTHH:mm:ss.fff',\n 'yyyy-MM-ddTHH:mmzzz',\n 'yyyy-MM-ddTHH:mmzz',\n 'yyyy-MM-ddTHH:mm:ss',\n 'yyyy-MM-ddTHH:mm',\n 'yyyy-MM-dd HH:mm:ss',\n 'yyyy-MM-dd HH:mm',\n 'yyyy-MM-dd',\n 'HH:mm:ss',\n 'HH:mm'\n ].concat(formats);\n }\n formats = isArray(formats) ? formats : [formats];\n length = formats.length;\n for (; idx < length; idx++) {\n date = parseExact(value, formats[idx], culture);\n if (date) {\n return date;\n }\n }\n return date;\n };\n kendo.parseInt = function (value, culture) {\n var result = kendo.parseFloat(value, culture);\n if (result) {\n result = result | 0;\n }\n return result;\n };\n kendo.parseFloat = function (value, culture, format) {\n if (!value && value !== 0) {\n return null;\n }\n if (typeof value === NUMBER) {\n return value;\n }\n value = value.toString();\n culture = kendo.getCulture(culture);\n var number = culture.numberFormat, percent = number.percent, currency = number.currency, symbol = currency.symbol, percentSymbol = percent.symbol, negative = value.indexOf('-'), parts, isPercent;\n if (exponentRegExp.test(value)) {\n value = parseFloat(value.replace(number['.'], '.'));\n if (isNaN(value)) {\n value = null;\n }\n return value;\n }\n if (negative > 0) {\n return null;\n } else {\n negative = negative > -1;\n }\n if (value.indexOf(symbol) > -1 || format && format.toLowerCase().indexOf('c') > -1) {\n number = currency;\n parts = number.pattern[0].replace('$', symbol).split('n');\n if (value.indexOf(parts[0]) > -1 && value.indexOf(parts[1]) > -1) {\n value = value.replace(parts[0], '').replace(parts[1], '');\n negative = true;\n }\n } else if (value.indexOf(percentSymbol) > -1) {\n isPercent = true;\n number = percent;\n symbol = percentSymbol;\n }\n value = value.replace('-', '').replace(symbol, '').replace(nonBreakingSpaceRegExp, ' ').split(number[','].replace(nonBreakingSpaceRegExp, ' ')).join('').replace(number['.'], '.');\n value = parseFloat(value);\n if (isNaN(value)) {\n value = null;\n } else if (negative) {\n value *= -1;\n }\n if (value && isPercent) {\n value /= 100;\n }\n return value;\n };\n }());\n function getShadows(element) {\n var shadow = element.css(kendo.support.transitions.css + 'box-shadow') || element.css('box-shadow'), radius = shadow ? shadow.match(boxShadowRegExp) || [\n 0,\n 0,\n 0,\n 0,\n 0\n ] : [\n 0,\n 0,\n 0,\n 0,\n 0\n ], blur = math.max(+radius[3], +(radius[4] || 0));\n return {\n left: -radius[1] + blur,\n right: +radius[1] + blur,\n bottom: +radius[2] + blur\n };\n }\n function wrap(element, autosize) {\n var browser = support.browser, percentage, isRtl = element.css('direction') == 'rtl';\n if (!element.parent().hasClass('k-animation-container')) {\n var shadows = getShadows(element), width = element[0].style.width, height = element[0].style.height, percentWidth = percentRegExp.test(width), percentHeight = percentRegExp.test(height);\n if (browser.opera) {\n shadows.left = shadows.right = shadows.bottom = 5;\n }\n percentage = percentWidth || percentHeight;\n if (!percentWidth && (!autosize || autosize && width)) {\n width = element.outerWidth();\n }\n if (!percentHeight && (!autosize || autosize && height)) {\n height = element.outerHeight();\n }\n element.wrap($('
').addClass('k-animation-container').css({\n width: width,\n height: height,\n marginLeft: shadows.left * (isRtl ? 1 : -1),\n paddingLeft: shadows.left,\n paddingRight: shadows.right,\n paddingBottom: shadows.bottom\n }));\n if (percentage) {\n element.css({\n width: '100%',\n height: '100%',\n boxSizing: 'border-box',\n mozBoxSizing: 'border-box',\n webkitBoxSizing: 'border-box'\n });\n }\n } else {\n var wrapper = element.parent('.k-animation-container'), wrapperStyle = wrapper[0].style;\n if (wrapper.is(':hidden')) {\n wrapper.show();\n }\n percentage = percentRegExp.test(wrapperStyle.width) || percentRegExp.test(wrapperStyle.height);\n if (!percentage) {\n wrapper.css({\n width: element.outerWidth(),\n height: element.outerHeight(),\n boxSizing: 'content-box',\n mozBoxSizing: 'content-box',\n webkitBoxSizing: 'content-box'\n });\n }\n }\n if (browser.msie && math.floor(browser.version) <= 7) {\n element.css({ zoom: 1 });\n element.children('.k-menu').width(element.width());\n }\n return element.parent();\n }\n function deepExtend(destination) {\n var i = 1, length = arguments.length;\n for (i = 1; i < length; i++) {\n deepExtendOne(destination, arguments[i]);\n }\n return destination;\n }\n function deepExtendOne(destination, source) {\n var ObservableArray = kendo.data.ObservableArray, LazyObservableArray = kendo.data.LazyObservableArray, DataSource = kendo.data.DataSource, HierarchicalDataSource = kendo.data.HierarchicalDataSource, property, propValue, propType, propInit, destProp;\n for (property in source) {\n propValue = source[property];\n propType = typeof propValue;\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n if (propInit && propInit !== Array && propInit !== ObservableArray && propInit !== LazyObservableArray && propInit !== DataSource && propInit !== HierarchicalDataSource) {\n if (propValue instanceof Date) {\n destination[property] = new Date(propValue.getTime());\n } else if (isFunction(propValue.clone)) {\n destination[property] = propValue.clone();\n } else {\n destProp = destination[property];\n if (typeof destProp === OBJECT) {\n destination[property] = destProp || {};\n } else {\n destination[property] = {};\n }\n deepExtendOne(destination[property], propValue);\n }\n } else if (propType !== UNDEFINED) {\n destination[property] = propValue;\n }\n }\n return destination;\n }\n function testRx(agent, rxs, dflt) {\n for (var rx in rxs) {\n if (rxs.hasOwnProperty(rx) && rxs[rx].test(agent)) {\n return rx;\n }\n }\n return dflt !== undefined ? dflt : agent;\n }\n function toHyphens(str) {\n return str.replace(/([a-z][A-Z])/g, function (g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n }\n function toCamelCase(str) {\n return str.replace(/\\-(\\w)/g, function (strMatch, g1) {\n return g1.toUpperCase();\n });\n }\n function getComputedStyles(element, properties) {\n var styles = {}, computedStyle;\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(element, '');\n if (properties) {\n $.each(properties, function (idx, value) {\n styles[value] = computedStyle.getPropertyValue(value);\n });\n }\n } else {\n computedStyle = element.currentStyle;\n if (properties) {\n $.each(properties, function (idx, value) {\n styles[value] = computedStyle[toCamelCase(value)];\n });\n }\n }\n if (!kendo.size(styles)) {\n styles = computedStyle;\n }\n return styles;\n }\n function isScrollable(element) {\n if (element && element.className && typeof element.className === 'string' && element.className.indexOf('k-auto-scrollable') > -1) {\n return true;\n }\n var overflow = getComputedStyles(element, ['overflow']).overflow;\n return overflow == 'auto' || overflow == 'scroll';\n }\n function scrollLeft(element, value) {\n var webkit = support.browser.webkit;\n var mozila = support.browser.mozilla;\n var el = element instanceof $ ? element[0] : element;\n var isRtl;\n if (!element) {\n return;\n }\n isRtl = support.isRtl(element);\n if (value !== undefined) {\n if (isRtl && webkit) {\n el.scrollLeft = el.scrollWidth - el.clientWidth - value;\n } else if (isRtl && mozila) {\n el.scrollLeft = -value;\n } else {\n el.scrollLeft = value;\n }\n } else {\n if (isRtl && webkit) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n } else {\n return Math.abs(el.scrollLeft);\n }\n }\n }\n (function () {\n support._scrollbar = undefined;\n support.scrollbar = function (refresh) {\n if (!isNaN(support._scrollbar) && !refresh) {\n return support._scrollbar;\n } else {\n var div = document.createElement('div'), result;\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n support._scrollbar = result = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n return result;\n }\n };\n support.isRtl = function (element) {\n return $(element).closest('.k-rtl').length > 0;\n };\n var table = document.createElement('table');\n try {\n table.innerHTML = '';\n support.tbodyInnerHtml = true;\n } catch (e) {\n support.tbodyInnerHtml = false;\n }\n support.touch = 'ontouchstart' in window;\n support.msPointers = window.MSPointerEvent;\n support.pointers = window.PointerEvent;\n var transitions = support.transitions = false, transforms = support.transforms = false, elementProto = 'HTMLElement' in window ? HTMLElement.prototype : [];\n support.hasHW3D = 'WebKitCSSMatrix' in window && 'm11' in new window.WebKitCSSMatrix() || 'MozPerspective' in document.documentElement.style || 'msPerspective' in document.documentElement.style;\n each([\n 'Moz',\n 'webkit',\n 'O',\n 'ms'\n ], function () {\n var prefix = this.toString(), hasTransitions = typeof table.style[prefix + 'Transition'] === STRING;\n if (hasTransitions || typeof table.style[prefix + 'Transform'] === STRING) {\n var lowPrefix = prefix.toLowerCase();\n transforms = {\n css: lowPrefix != 'ms' ? '-' + lowPrefix + '-' : '',\n prefix: prefix,\n event: lowPrefix === 'o' || lowPrefix === 'webkit' ? lowPrefix : ''\n };\n if (hasTransitions) {\n transitions = transforms;\n transitions.event = transitions.event ? transitions.event + 'TransitionEnd' : 'transitionend';\n }\n return false;\n }\n });\n table = null;\n support.transforms = transforms;\n support.transitions = transitions;\n support.devicePixelRatio = window.devicePixelRatio === undefined ? 1 : window.devicePixelRatio;\n try {\n support.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;\n support.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight;\n } catch (e) {\n support.screenWidth = window.screen.availWidth;\n support.screenHeight = window.screen.availHeight;\n }\n support.detectOS = function (ua) {\n var os = false, minorVersion, match = [], notAndroidPhone = !/mobile safari/i.test(ua), agentRxs = {\n wp: /(Windows Phone(?: OS)?)\\s(\\d+)\\.(\\d+(\\.\\d+)?)/,\n fire: /(Silk)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n android: /(Android|Android.*(?:Opera|Firefox).*?\\/)\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n iphone: /(iPhone|iPod).*OS\\s+(\\d+)[\\._]([\\d\\._]+)/,\n ipad: /(iPad).*OS\\s+(\\d+)[\\._]([\\d_]+)/,\n meego: /(MeeGo).+NokiaBrowser\\/(\\d+)\\.([\\d\\._]+)/,\n webos: /(webOS)\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n blackberry: /(BlackBerry|BB10).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/,\n playbook: /(PlayBook).*?Tablet\\s*OS\\s*(\\d+)\\.(\\d+(\\.\\d+)?)/,\n windows: /(MSIE)\\s+(\\d+)\\.(\\d+(\\.\\d+)?)/,\n tizen: /(tizen).*?Version\\/(\\d+)\\.(\\d+(\\.\\d+)?)/i,\n sailfish: /(sailfish).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*firefox/i,\n ffos: /(Mobile).*rv:(\\d+)\\.(\\d+(\\.\\d+)?).*Firefox/\n }, osRxs = {\n ios: /^i(phone|pad|pod)$/i,\n android: /^android|fire$/i,\n blackberry: /^blackberry|playbook/i,\n windows: /windows/,\n wp: /wp/,\n flat: /sailfish|ffos|tizen/i,\n meego: /meego/\n }, formFactorRxs = { tablet: /playbook|ipad|fire/i }, browserRxs = {\n omini: /Opera\\sMini/i,\n omobile: /Opera\\sMobi/i,\n firefox: /Firefox|Fennec/i,\n mobilesafari: /version\\/.*safari/i,\n ie: /MSIE|Windows\\sPhone/i,\n chrome: /chrome|crios/i,\n webkit: /webkit/i\n };\n for (var agent in agentRxs) {\n if (agentRxs.hasOwnProperty(agent)) {\n match = ua.match(agentRxs[agent]);\n if (match) {\n if (agent == 'windows' && 'plugins' in navigator) {\n return false;\n }\n os = {};\n os.device = agent;\n os.tablet = testRx(agent, formFactorRxs, false);\n os.browser = testRx(ua, browserRxs, 'default');\n os.name = testRx(agent, osRxs);\n os[os.name] = true;\n os.majorVersion = match[2];\n os.minorVersion = match[3].replace('_', '.');\n minorVersion = os.minorVersion.replace('.', '').substr(0, 2);\n os.flatVersion = os.majorVersion + minorVersion + new Array(3 - (minorVersion.length < 3 ? minorVersion.length : 2)).join('0');\n os.cordova = typeof window.PhoneGap !== UNDEFINED || typeof window.cordova !== UNDEFINED;\n os.appMode = window.navigator.standalone || /file|local|wmapp/.test(window.location.protocol) || os.cordova;\n if (os.android && (support.devicePixelRatio < 1.5 && os.flatVersion < 400 || notAndroidPhone) && (support.screenWidth > 800 || support.screenHeight > 800)) {\n os.tablet = agent;\n }\n break;\n }\n }\n }\n return os;\n };\n var mobileOS = support.mobileOS = support.detectOS(navigator.userAgent);\n support.wpDevicePixelRatio = mobileOS.wp ? screen.width / 320 : 0;\n support.kineticScrollNeeded = mobileOS && (support.touch || support.msPointers || support.pointers);\n support.hasNativeScrolling = false;\n if (mobileOS.ios || mobileOS.android && mobileOS.majorVersion > 2 || mobileOS.wp) {\n support.hasNativeScrolling = mobileOS;\n }\n support.delayedClick = function () {\n if (support.touch) {\n if (mobileOS.ios) {\n return true;\n }\n if (mobileOS.android) {\n if (!support.browser.chrome) {\n return true;\n }\n if (support.browser.version < 32) {\n return false;\n }\n return !($('meta[name=viewport]').attr('content') || '').match(/user-scalable=no/i);\n }\n }\n return false;\n };\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.detectBrowser = function (ua) {\n var browser = false, match = [], browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(' ')[0].split('/')[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n break;\n }\n }\n }\n return browser;\n };\n support.browser = support.detectBrowser(navigator.userAgent);\n support.detectClipboardAccess = function () {\n var commands = {\n copy: document.queryCommandSupported ? document.queryCommandSupported('copy') : false,\n cut: document.queryCommandSupported ? document.queryCommandSupported('cut') : false,\n paste: document.queryCommandSupported ? document.queryCommandSupported('paste') : false\n };\n if (support.browser.chrome) {\n commands.paste = false;\n if (support.browser.version >= 43) {\n commands.copy = true;\n commands.cut = true;\n }\n }\n return commands;\n };\n support.clipboard = support.detectClipboardAccess();\n support.zoomLevel = function () {\n try {\n var browser = support.browser;\n var ie11WidthCorrection = 0;\n var docEl = document.documentElement;\n if (browser.msie && browser.version == 11 && docEl.scrollHeight > docEl.clientHeight && !support.touch) {\n ie11WidthCorrection = support.scrollbar();\n }\n return support.touch ? docEl.clientWidth / window.innerWidth : browser.msie && browser.version >= 10 ? ((top || window).document.documentElement.offsetWidth + ie11WidthCorrection) / (top || window).innerWidth : 1;\n } catch (e) {\n return 1;\n }\n };\n support.cssBorderSpacing = typeof document.documentElement.style.borderSpacing != 'undefined' && !(support.browser.msie && support.browser.version < 8);\n (function (browser) {\n var cssClass = '', docElement = $(document.documentElement), majorVersion = parseInt(browser.version, 10);\n if (browser.msie) {\n cssClass = 'ie';\n } else if (browser.mozilla) {\n cssClass = 'ff';\n } else if (browser.safari) {\n cssClass = 'safari';\n } else if (browser.webkit) {\n cssClass = 'webkit';\n } else if (browser.opera) {\n cssClass = 'opera';\n } else if (browser.edge) {\n cssClass = 'edge';\n }\n if (cssClass) {\n cssClass = 'k-' + cssClass + ' k-' + cssClass + majorVersion;\n }\n if (support.mobileOS) {\n cssClass += ' k-mobile';\n }\n docElement.addClass(cssClass);\n }(support.browser));\n support.eventCapture = document.documentElement.addEventListener;\n var input = document.createElement('input');\n support.placeholder = 'placeholder' in input;\n support.propertyChangeEvent = 'onpropertychange' in input;\n support.input = function () {\n var types = [\n 'number',\n 'date',\n 'time',\n 'month',\n 'week',\n 'datetime',\n 'datetime-local'\n ];\n var length = types.length;\n var value = 'test';\n var result = {};\n var idx = 0;\n var type;\n for (; idx < length; idx++) {\n type = types[idx];\n input.setAttribute('type', type);\n input.value = value;\n result[type.replace('-', '')] = input.type !== 'text' && input.value !== value;\n }\n return result;\n }();\n input.style.cssText = 'float:left;';\n support.cssFloat = !!input.style.cssFloat;\n input = null;\n support.stableSort = function () {\n var threshold = 513;\n var sorted = [{\n index: 0,\n field: 'b'\n }];\n for (var i = 1; i < threshold; i++) {\n sorted.push({\n index: i,\n field: 'a'\n });\n }\n sorted.sort(function (a, b) {\n return a.field > b.field ? 1 : a.field < b.field ? -1 : 0;\n });\n return sorted[0].index === 1;\n }();\n support.matchesSelector = elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector || elementProto.oMatchesSelector || elementProto.matchesSelector || elementProto.matches || function (selector) {\n var nodeList = document.querySelectorAll ? (this.parentNode || document).querySelectorAll(selector) || [] : $(selector), i = nodeList.length;\n while (i--) {\n if (nodeList[i] == this) {\n return true;\n }\n }\n return false;\n };\n support.pushState = window.history && window.history.pushState;\n var documentMode = document.documentMode;\n support.hashChange = 'onhashchange' in window && !(support.browser.msie && (!documentMode || documentMode <= 8));\n support.customElements = 'registerElement' in window.document;\n }());\n function size(obj) {\n var result = 0, key;\n for (key in obj) {\n if (obj.hasOwnProperty(key) && key != 'toJSON') {\n result++;\n }\n }\n return result;\n }\n function getOffset(element, type, positioned) {\n if (!type) {\n type = 'offset';\n }\n var result = element[type]();\n if (support.browser.msie && (support.pointers || support.msPointers) && !positioned) {\n result.top -= window.pageYOffset - document.documentElement.scrollTop;\n result.left -= window.pageXOffset - document.documentElement.scrollLeft;\n }\n return result;\n }\n var directions = {\n left: { reverse: 'right' },\n right: { reverse: 'left' },\n down: { reverse: 'up' },\n up: { reverse: 'down' },\n top: { reverse: 'bottom' },\n bottom: { reverse: 'top' },\n 'in': { reverse: 'out' },\n out: { reverse: 'in' }\n };\n function parseEffects(input) {\n var effects = {};\n each(typeof input === 'string' ? input.split(' ') : input, function (idx) {\n effects[idx] = this;\n });\n return effects;\n }\n function fx(element) {\n return new kendo.effects.Element(element);\n }\n var effects = {};\n $.extend(effects, {\n enabled: true,\n Element: function (element) {\n this.element = $(element);\n },\n promise: function (element, options) {\n if (!element.is(':visible')) {\n element.css({ display: element.data('olddisplay') || 'block' }).css('display');\n }\n if (options.hide) {\n element.data('olddisplay', element.css('display')).hide();\n }\n if (options.init) {\n options.init();\n }\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n element.dequeue();\n },\n disable: function () {\n this.enabled = false;\n this.promise = this.promiseShim;\n },\n enable: function () {\n this.enabled = true;\n this.promise = this.animatedPromise;\n }\n });\n effects.promiseShim = effects.promise;\n function prepareAnimationOptions(options, duration, reverse, complete) {\n if (typeof options === STRING) {\n if (isFunction(duration)) {\n complete = duration;\n duration = 400;\n reverse = false;\n }\n if (isFunction(reverse)) {\n complete = reverse;\n reverse = false;\n }\n if (typeof duration === BOOLEAN) {\n reverse = duration;\n duration = 400;\n }\n options = {\n effects: options,\n duration: duration,\n reverse: reverse,\n complete: complete\n };\n }\n return extend({\n effects: {},\n duration: 400,\n reverse: false,\n init: noop,\n teardown: noop,\n hide: false\n }, options, {\n completeCallback: options.complete,\n complete: noop\n });\n }\n function animate(element, options, duration, reverse, complete) {\n var idx = 0, length = element.length, instance;\n for (; idx < length; idx++) {\n instance = $(element[idx]);\n instance.queue(function () {\n effects.promise(instance, prepareAnimationOptions(options, duration, reverse, complete));\n });\n }\n return element;\n }\n function toggleClass(element, classes, options, add) {\n if (classes) {\n classes = classes.split(' ');\n each(classes, function (idx, value) {\n element.toggleClass(value, add);\n });\n }\n return element;\n }\n if (!('kendoAnimate' in $.fn)) {\n extend($.fn, {\n kendoStop: function (clearQueue, gotoEnd) {\n return this.stop(clearQueue, gotoEnd);\n },\n kendoAnimate: function (options, duration, reverse, complete) {\n return animate(this, options, duration, reverse, complete);\n },\n kendoAddClass: function (classes, options) {\n return kendo.toggleClass(this, classes, options, true);\n },\n kendoRemoveClass: function (classes, options) {\n return kendo.toggleClass(this, classes, options, false);\n },\n kendoToggleClass: function (classes, options, toggle) {\n return kendo.toggleClass(this, classes, options, toggle);\n }\n });\n }\n var ampRegExp = /&/g, ltRegExp = //g;\n function htmlEncode(value) {\n return ('' + value).replace(ampRegExp, '&').replace(ltRegExp, '<').replace(gtRegExp, '>').replace(quoteRegExp, '"').replace(aposRegExp, ''');\n }\n var eventTarget = function (e) {\n return e.target;\n };\n if (support.touch) {\n eventTarget = function (e) {\n var touches = 'originalEvent' in e ? e.originalEvent.changedTouches : 'changedTouches' in e ? e.changedTouches : null;\n return touches ? document.elementFromPoint(touches[0].clientX, touches[0].clientY) : e.target;\n };\n each([\n 'swipe',\n 'swipeLeft',\n 'swipeRight',\n 'swipeUp',\n 'swipeDown',\n 'doubleTap',\n 'tap'\n ], function (m, value) {\n $.fn[value] = function (callback) {\n return this.bind(value, callback);\n };\n });\n }\n if (support.touch) {\n if (!support.mobileOS) {\n support.mousedown = 'mousedown touchstart';\n support.mouseup = 'mouseup touchend';\n support.mousemove = 'mousemove touchmove';\n support.mousecancel = 'mouseleave touchcancel';\n support.click = 'click';\n support.resize = 'resize';\n } else {\n support.mousedown = 'touchstart';\n support.mouseup = 'touchend';\n support.mousemove = 'touchmove';\n support.mousecancel = 'touchcancel';\n support.click = 'touchend';\n support.resize = 'orientationchange';\n }\n } else if (support.pointers) {\n support.mousemove = 'pointermove';\n support.mousedown = 'pointerdown';\n support.mouseup = 'pointerup';\n support.mousecancel = 'pointercancel';\n support.click = 'pointerup';\n support.resize = 'orientationchange resize';\n } else if (support.msPointers) {\n support.mousemove = 'MSPointerMove';\n support.mousedown = 'MSPointerDown';\n support.mouseup = 'MSPointerUp';\n support.mousecancel = 'MSPointerCancel';\n support.click = 'MSPointerUp';\n support.resize = 'orientationchange resize';\n } else {\n support.mousemove = 'mousemove';\n support.mousedown = 'mousedown';\n support.mouseup = 'mouseup';\n support.mousecancel = 'mouseleave';\n support.click = 'click';\n support.resize = 'resize';\n }\n var wrapExpression = function (members, paramName) {\n var result = paramName || 'd', index, idx, length, member, count = 1;\n for (idx = 0, length = members.length; idx < length; idx++) {\n member = members[idx];\n if (member !== '') {\n index = member.indexOf('[');\n if (index !== 0) {\n if (index == -1) {\n member = '.' + member;\n } else {\n count++;\n member = '.' + member.substring(0, index) + ' || {})' + member.substring(index);\n }\n }\n count++;\n result += member + (idx < length - 1 ? ' || {})' : ')');\n }\n }\n return new Array(count).join('(') + result;\n }, localUrlRe = /^([a-z]+:)?\\/\\//i;\n extend(kendo, {\n widgets: [],\n _widgetRegisteredCallbacks: [],\n ui: kendo.ui || {},\n fx: kendo.fx || fx,\n effects: kendo.effects || effects,\n mobile: kendo.mobile || {},\n data: kendo.data || {},\n dataviz: kendo.dataviz || {},\n drawing: kendo.drawing || {},\n spreadsheet: { messages: {} },\n keys: {\n INSERT: 45,\n DELETE: 46,\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n END: 35,\n HOME: 36,\n SPACEBAR: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n F2: 113,\n F10: 121,\n F12: 123,\n NUMPAD_PLUS: 107,\n NUMPAD_MINUS: 109,\n NUMPAD_DOT: 110\n },\n support: kendo.support || support,\n animate: kendo.animate || animate,\n ns: '',\n attr: function (value) {\n return 'data-' + kendo.ns + value;\n },\n getShadows: getShadows,\n wrap: wrap,\n deepExtend: deepExtend,\n getComputedStyles: getComputedStyles,\n webComponents: kendo.webComponents || [],\n isScrollable: isScrollable,\n scrollLeft: scrollLeft,\n size: size,\n toCamelCase: toCamelCase,\n toHyphens: toHyphens,\n getOffset: kendo.getOffset || getOffset,\n parseEffects: kendo.parseEffects || parseEffects,\n toggleClass: kendo.toggleClass || toggleClass,\n directions: kendo.directions || directions,\n Observable: Observable,\n Class: Class,\n Template: Template,\n template: proxy(Template.compile, Template),\n render: proxy(Template.render, Template),\n stringify: proxy(JSON.stringify, JSON),\n eventTarget: eventTarget,\n htmlEncode: htmlEncode,\n isLocalUrl: function (url) {\n return url && !localUrlRe.test(url);\n },\n expr: function (expression, safe, paramName) {\n expression = expression || '';\n if (typeof safe == STRING) {\n paramName = safe;\n safe = false;\n }\n paramName = paramName || 'd';\n if (expression && expression.charAt(0) !== '[') {\n expression = '.' + expression;\n }\n if (safe) {\n expression = expression.replace(/\"([^.]*)\\.([^\"]*)\"/g, '\"$1_$DOT$_$2\"');\n expression = expression.replace(/'([^.]*)\\.([^']*)'/g, '\\'$1_$DOT$_$2\\'');\n expression = wrapExpression(expression.split('.'), paramName);\n expression = expression.replace(/_\\$DOT\\$_/g, '.');\n } else {\n expression = paramName + expression;\n }\n return expression;\n },\n getter: function (expression, safe) {\n var key = expression + safe;\n return getterCache[key] = getterCache[key] || new Function('d', 'return ' + kendo.expr(expression, safe));\n },\n setter: function (expression) {\n return setterCache[expression] = setterCache[expression] || new Function('d,value', kendo.expr(expression) + '=value');\n },\n accessor: function (expression) {\n return {\n get: kendo.getter(expression),\n set: kendo.setter(expression)\n };\n },\n guid: function () {\n var id = '', i, random;\n for (i = 0; i < 32; i++) {\n random = math.random() * 16 | 0;\n if (i == 8 || i == 12 || i == 16 || i == 20) {\n id += '-';\n }\n id += (i == 12 ? 4 : i == 16 ? random & 3 | 8 : random).toString(16);\n }\n return id;\n },\n roleSelector: function (role) {\n return role.replace(/(\\S+)/g, '[' + kendo.attr('role') + '=$1],').slice(0, -1);\n },\n directiveSelector: function (directives) {\n var selectors = directives.split(' ');\n if (selectors) {\n for (var i = 0; i < selectors.length; i++) {\n if (selectors[i] != 'view') {\n selectors[i] = selectors[i].replace(/(\\w*)(view|bar|strip|over)$/, '$1-$2');\n }\n }\n }\n return selectors.join(' ').replace(/(\\S+)/g, 'kendo-mobile-$1,').slice(0, -1);\n },\n triggeredByInput: function (e) {\n return /^(label|input|textarea|select)$/i.test(e.target.tagName);\n },\n onWidgetRegistered: function (callback) {\n for (var i = 0, len = kendo.widgets.length; i < len; i++) {\n callback(kendo.widgets[i]);\n }\n kendo._widgetRegisteredCallbacks.push(callback);\n },\n logToConsole: function (message, type) {\n var console = window.console;\n if (!kendo.suppressLog && typeof console != 'undefined' && console.log) {\n console[type || 'log'](message);\n }\n }\n });\n var Widget = Observable.extend({\n init: function (element, options) {\n var that = this;\n that.element = kendo.jQuery(element).handler(that);\n that.angular('init', options);\n Observable.fn.init.call(that);\n var dataSource = options ? options.dataSource : null;\n if (dataSource) {\n options = extend({}, options, { dataSource: {} });\n }\n options = that.options = extend(true, {}, that.options, options);\n if (dataSource) {\n options.dataSource = dataSource;\n }\n if (!that.element.attr(kendo.attr('role'))) {\n that.element.attr(kendo.attr('role'), (options.name || '').toLowerCase());\n }\n that.element.data('kendo' + options.prefix + options.name, that);\n that.bind(that.events, options);\n },\n events: [],\n options: { prefix: '' },\n _hasBindingTarget: function () {\n return !!this.element[0].kendoBindingTarget;\n },\n _tabindex: function (target) {\n target = target || this.wrapper;\n var element = this.element, TABINDEX = 'tabindex', tabindex = target.attr(TABINDEX) || element.attr(TABINDEX);\n element.removeAttr(TABINDEX);\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n setOptions: function (options) {\n this._setEvents(options);\n $.extend(this.options, options);\n },\n _setEvents: function (options) {\n var that = this, idx = 0, length = that.events.length, e;\n for (; idx < length; idx++) {\n e = that.events[idx];\n if (that.options[e] && options[e]) {\n that.unbind(e, that.options[e]);\n }\n }\n that.bind(that.events, options);\n },\n resize: function (force) {\n var size = this.getSize(), currentSize = this._size;\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger('resize', size);\n }\n },\n getSize: function () {\n return kendo.dimensions(this.element);\n },\n size: function (size) {\n if (!size) {\n return this.getSize();\n } else {\n this.setSize(size);\n }\n },\n setSize: $.noop,\n _resize: $.noop,\n destroy: function () {\n var that = this;\n that.element.removeData('kendo' + that.options.prefix + that.options.name);\n that.element.removeData('handler');\n that.unbind();\n },\n _destroy: function () {\n this.destroy();\n },\n angular: function () {\n },\n _muteAngularRebind: function (callback) {\n this._muteRebind = true;\n callback.call(this);\n this._muteRebind = false;\n }\n });\n var DataBoundWidget = Widget.extend({\n dataItems: function () {\n return this.dataSource.flatView();\n },\n _angularItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.items(),\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n }\n });\n kendo.dimensions = function (element, dimensions) {\n var domElement = element[0];\n if (dimensions) {\n element.css(dimensions);\n }\n return {\n width: domElement.offsetWidth,\n height: domElement.offsetHeight\n };\n };\n kendo.notify = noop;\n var templateRegExp = /template$/i, jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/, jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]*\\]$/, dashRegExp = /([A-Z])/g;\n function parseOption(element, option) {\n var value;\n if (option.indexOf('data') === 0) {\n option = option.substring(4);\n option = option.charAt(0).toLowerCase() + option.substring(1);\n }\n option = option.replace(dashRegExp, '-$1');\n value = element.getAttribute('data-' + kendo.ns + option);\n if (value === null) {\n value = undefined;\n } else if (value === 'null') {\n value = null;\n } else if (value === 'true') {\n value = true;\n } else if (value === 'false') {\n value = false;\n } else if (numberRegExp.test(value)) {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n value = new Function('return (' + value + ')')();\n }\n return value;\n }\n function parseOptions(element, options) {\n var result = {}, option, value;\n for (option in options) {\n value = parseOption(element, option);\n if (value !== undefined) {\n if (templateRegExp.test(option)) {\n value = kendo.template($('#' + value).html());\n }\n result[option] = value;\n }\n }\n return result;\n }\n kendo.initWidget = function (element, options, roles) {\n var result, option, widget, idx, length, role, value, dataSource, fullPath, widgetKeyRegExp;\n if (!roles) {\n roles = kendo.ui.roles;\n } else if (roles.roles) {\n roles = roles.roles;\n }\n element = element.nodeType ? element : element[0];\n role = element.getAttribute('data-' + kendo.ns + 'role');\n if (!role) {\n return;\n }\n fullPath = role.indexOf('.') === -1;\n if (fullPath) {\n widget = roles[role];\n } else {\n widget = kendo.getter(role)(window);\n }\n var data = $(element).data(), widgetKey = widget ? 'kendo' + widget.fn.options.prefix + widget.fn.options.name : '';\n if (fullPath) {\n widgetKeyRegExp = new RegExp('^kendo.*' + role + '$', 'i');\n } else {\n widgetKeyRegExp = new RegExp('^' + widgetKey + '$', 'i');\n }\n for (var key in data) {\n if (key.match(widgetKeyRegExp)) {\n if (key === widgetKey) {\n result = data[key];\n } else {\n return data[key];\n }\n }\n }\n if (!widget) {\n return;\n }\n dataSource = parseOption(element, 'dataSource');\n options = $.extend({}, parseOptions(element, widget.fn.options), options);\n if (dataSource) {\n if (typeof dataSource === STRING) {\n options.dataSource = kendo.getter(dataSource)(window);\n } else {\n options.dataSource = dataSource;\n }\n }\n for (idx = 0, length = widget.fn.events.length; idx < length; idx++) {\n option = widget.fn.events[idx];\n value = parseOption(element, option);\n if (value !== undefined) {\n options[option] = kendo.getter(value)(window);\n }\n }\n if (!result) {\n result = new widget(element, options);\n } else if (!$.isEmptyObject(options)) {\n result.setOptions(options);\n }\n return result;\n };\n kendo.rolesFromNamespaces = function (namespaces) {\n var roles = [], idx, length;\n if (!namespaces[0]) {\n namespaces = [\n kendo.ui,\n kendo.dataviz.ui\n ];\n }\n for (idx = 0, length = namespaces.length; idx < length; idx++) {\n roles[idx] = namespaces[idx].roles;\n }\n return extend.apply(null, [{}].concat(roles.reverse()));\n };\n kendo.init = function (element) {\n var roles = kendo.rolesFromNamespaces(slice.call(arguments, 1));\n $(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () {\n kendo.initWidget(this, {}, roles);\n });\n };\n kendo.destroy = function (element) {\n $(element).find('[data-' + kendo.ns + 'role]').addBack().each(function () {\n var data = $(this).data();\n for (var key in data) {\n if (key.indexOf('kendo') === 0 && typeof data[key].destroy === FUNCTION) {\n data[key].destroy();\n }\n }\n });\n };\n function containmentComparer(a, b) {\n return $.contains(a, b) ? -1 : 1;\n }\n function resizableWidget() {\n var widget = $(this);\n return $.inArray(widget.attr('data-' + kendo.ns + 'role'), [\n 'slider',\n 'rangeslider'\n ]) > -1 || widget.is(':visible');\n }\n kendo.resize = function (element, force) {\n var widgets = $(element).find('[data-' + kendo.ns + 'role]').addBack().filter(resizableWidget);\n if (!widgets.length) {\n return;\n }\n var widgetsArray = $.makeArray(widgets);\n widgetsArray.sort(containmentComparer);\n $.each(widgetsArray, function () {\n var widget = kendo.widgetInstance($(this));\n if (widget) {\n widget.resize(force);\n }\n });\n };\n kendo.parseOptions = parseOptions;\n extend(kendo.ui, {\n Widget: Widget,\n DataBoundWidget: DataBoundWidget,\n roles: {},\n progress: function (container, toggle) {\n var mask = container.find('.k-loading-mask'), support = kendo.support, browser = support.browser, isRtl, leftRight, webkitCorrection, containerScrollLeft;\n if (toggle) {\n if (!mask.length) {\n isRtl = support.isRtl(container);\n leftRight = isRtl ? 'right' : 'left';\n containerScrollLeft = container.scrollLeft();\n webkitCorrection = browser.webkit ? !isRtl ? 0 : container[0].scrollWidth - container.width() - 2 * containerScrollLeft : 0;\n mask = $('
Loading...
').width('100%').height('100%').css('top', container.scrollTop()).css(leftRight, Math.abs(containerScrollLeft) + webkitCorrection).prependTo(container);\n }\n } else if (mask) {\n mask.remove();\n }\n },\n plugin: function (widget, register, prefix) {\n var name = widget.fn.options.name, getter;\n register = register || kendo.ui;\n prefix = prefix || '';\n register[name] = widget;\n register.roles[name.toLowerCase()] = widget;\n getter = 'getKendo' + prefix + name;\n name = 'kendo' + prefix + name;\n var widgetEntry = {\n name: name,\n widget: widget,\n prefix: prefix || ''\n };\n kendo.widgets.push(widgetEntry);\n for (var i = 0, len = kendo._widgetRegisteredCallbacks.length; i < len; i++) {\n kendo._widgetRegisteredCallbacks[i](widgetEntry);\n }\n $.fn[name] = function (options) {\n var value = this, args;\n if (typeof options === STRING) {\n args = slice.call(arguments, 1);\n this.each(function () {\n var widget = $.data(this, name), method, result;\n if (!widget) {\n throw new Error(kendo.format('Cannot call method \\'{0}\\' of {1} before it is initialized', options, name));\n }\n method = widget[options];\n if (typeof method !== FUNCTION) {\n throw new Error(kendo.format('Cannot find method \\'{0}\\' of {1}', options, name));\n }\n result = method.apply(widget, args);\n if (result !== undefined) {\n value = result;\n return false;\n }\n });\n } else {\n this.each(function () {\n return new widget(this, options);\n });\n }\n return value;\n };\n $.fn[name].widget = widget;\n $.fn[getter] = function () {\n return this.data(name);\n };\n }\n });\n var ContainerNullObject = {\n bind: function () {\n return this;\n },\n nullObject: true,\n options: {}\n };\n var MobileWidget = Widget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.autoApplyNS();\n this.wrapper = this.element;\n this.element.addClass('km-widget');\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.kendoDestroy();\n },\n options: { prefix: 'Mobile' },\n events: [],\n view: function () {\n var viewElement = this.element.closest(kendo.roleSelector('view splitview modalview drawer'));\n return kendo.widgetInstance(viewElement, kendo.mobile.ui) || ContainerNullObject;\n },\n viewHasNativeScrolling: function () {\n var view = this.view();\n return view && view.options.useNativeScrolling;\n },\n container: function () {\n var element = this.element.closest(kendo.roleSelector('view layout modalview drawer splitview'));\n return kendo.widgetInstance(element.eq(0), kendo.mobile.ui) || ContainerNullObject;\n }\n });\n extend(kendo.mobile, {\n init: function (element) {\n kendo.init(element, kendo.mobile.ui, kendo.ui, kendo.dataviz.ui);\n },\n appLevelNativeScrolling: function () {\n return kendo.mobile.application && kendo.mobile.application.options && kendo.mobile.application.options.useNativeScrolling;\n },\n roles: {},\n ui: {\n Widget: MobileWidget,\n DataBoundWidget: DataBoundWidget.extend(MobileWidget.prototype),\n roles: {},\n plugin: function (widget) {\n kendo.ui.plugin(widget, kendo.mobile.ui, 'Mobile');\n }\n }\n });\n deepExtend(kendo.dataviz, {\n init: function (element) {\n kendo.init(element, kendo.dataviz.ui);\n },\n ui: {\n roles: {},\n themes: {},\n views: [],\n plugin: function (widget) {\n kendo.ui.plugin(widget, kendo.dataviz.ui);\n }\n },\n roles: {}\n });\n kendo.touchScroller = function (elements, options) {\n if (!options) {\n options = {};\n }\n options.useNative = true;\n return $(elements).map(function (idx, element) {\n element = $(element);\n if (support.kineticScrollNeeded && kendo.mobile.ui.Scroller && !element.data('kendoMobileScroller')) {\n element.kendoMobileScroller(options);\n return element.data('kendoMobileScroller');\n } else {\n return false;\n }\n })[0];\n };\n kendo.preventDefault = function (e) {\n e.preventDefault();\n };\n kendo.widgetInstance = function (element, suites) {\n var role = element.data(kendo.ns + 'role'), widgets = [], i, length;\n if (role) {\n if (role === 'content') {\n role = 'scroller';\n }\n if (suites) {\n if (suites[0]) {\n for (i = 0, length = suites.length; i < length; i++) {\n widgets.push(suites[i].roles[role]);\n }\n } else {\n widgets.push(suites.roles[role]);\n }\n } else {\n widgets = [\n kendo.ui.roles[role],\n kendo.dataviz.ui.roles[role],\n kendo.mobile.ui.roles[role]\n ];\n }\n if (role.indexOf('.') >= 0) {\n widgets = [kendo.getter(role)(window)];\n }\n for (i = 0, length = widgets.length; i < length; i++) {\n var widget = widgets[i];\n if (widget) {\n var instance = element.data('kendo' + widget.fn.options.prefix + widget.fn.options.name);\n if (instance) {\n return instance;\n }\n }\n }\n }\n };\n kendo.onResize = function (callback) {\n var handler = callback;\n if (support.mobileOS.android) {\n handler = function () {\n setTimeout(callback, 600);\n };\n }\n $(window).on(support.resize, handler);\n return handler;\n };\n kendo.unbindResize = function (callback) {\n $(window).off(support.resize, callback);\n };\n kendo.attrValue = function (element, key) {\n return element.data(kendo.ns + key);\n };\n kendo.days = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6\n };\n function focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : 'a' === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element);\n }\n function visible(element) {\n return $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function () {\n return $.css(this, 'visibility') === 'hidden';\n }).length;\n }\n $.extend($.expr[':'], {\n kendoFocusable: function (element) {\n var idx = $.attr(element, 'tabindex');\n return focusable(element, !isNaN(idx) && idx > -1);\n }\n });\n var MOUSE_EVENTS = [\n 'mousedown',\n 'mousemove',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mouseup',\n 'click'\n ];\n var EXCLUDE_BUST_CLICK_SELECTOR = 'label, input, [data-rel=external]';\n var MouseEventNormalizer = {\n setupMouseMute: function () {\n var idx = 0, length = MOUSE_EVENTS.length, element = document.documentElement;\n if (MouseEventNormalizer.mouseTrap || !support.eventCapture) {\n return;\n }\n MouseEventNormalizer.mouseTrap = true;\n MouseEventNormalizer.bustClick = false;\n MouseEventNormalizer.captureMouse = false;\n var handler = function (e) {\n if (MouseEventNormalizer.captureMouse) {\n if (e.type === 'click') {\n if (MouseEventNormalizer.bustClick && !$(e.target).is(EXCLUDE_BUST_CLICK_SELECTOR)) {\n e.preventDefault();\n e.stopPropagation();\n }\n } else {\n e.stopPropagation();\n }\n }\n };\n for (; idx < length; idx++) {\n element.addEventListener(MOUSE_EVENTS[idx], handler, true);\n }\n },\n muteMouse: function (e) {\n MouseEventNormalizer.captureMouse = true;\n if (e.data.bustClick) {\n MouseEventNormalizer.bustClick = true;\n }\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n },\n unMuteMouse: function () {\n clearTimeout(MouseEventNormalizer.mouseTrapTimeoutID);\n MouseEventNormalizer.mouseTrapTimeoutID = setTimeout(function () {\n MouseEventNormalizer.captureMouse = false;\n MouseEventNormalizer.bustClick = false;\n }, 400);\n }\n };\n var eventMap = {\n down: 'touchstart mousedown',\n move: 'mousemove touchmove',\n up: 'mouseup touchend touchcancel',\n cancel: 'mouseleave touchcancel'\n };\n if (support.touch && (support.mobileOS.ios || support.mobileOS.android)) {\n eventMap = {\n down: 'touchstart',\n move: 'touchmove',\n up: 'touchend touchcancel',\n cancel: 'touchcancel'\n };\n } else if (support.pointers) {\n eventMap = {\n down: 'pointerdown',\n move: 'pointermove',\n up: 'pointerup',\n cancel: 'pointercancel pointerleave'\n };\n } else if (support.msPointers) {\n eventMap = {\n down: 'MSPointerDown',\n move: 'MSPointerMove',\n up: 'MSPointerUp',\n cancel: 'MSPointerCancel MSPointerLeave'\n };\n }\n if (support.msPointers && !('onmspointerenter' in window)) {\n $.each({\n MSPointerEnter: 'MSPointerOver',\n MSPointerLeave: 'MSPointerOut'\n }, function (orig, fix) {\n $.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;\n if (!related || related !== target && !$.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n }\n var getEventMap = function (e) {\n return eventMap[e] || e;\n }, eventRegEx = /([^ ]+)/g;\n kendo.applyEventMap = function (events, ns) {\n events = events.replace(eventRegEx, getEventMap);\n if (ns) {\n events = events.replace(eventRegEx, '$1.' + ns);\n }\n return events;\n };\n var on = $.fn.on;\n function kendoJQuery(selector, context) {\n return new kendoJQuery.fn.init(selector, context);\n }\n extend(true, kendoJQuery, $);\n kendoJQuery.fn = kendoJQuery.prototype = new $();\n kendoJQuery.fn.constructor = kendoJQuery;\n kendoJQuery.fn.init = function (selector, context) {\n if (context && context instanceof $ && !(context instanceof kendoJQuery)) {\n context = kendoJQuery(context);\n }\n return $.fn.init.call(this, selector, context, rootjQuery);\n };\n kendoJQuery.fn.init.prototype = kendoJQuery.fn;\n var rootjQuery = kendoJQuery(document);\n extend(kendoJQuery.fn, {\n handler: function (handler) {\n this.data('handler', handler);\n return this;\n },\n autoApplyNS: function (ns) {\n this.data('kendoNS', ns || kendo.guid());\n return this;\n },\n on: function () {\n var that = this, ns = that.data('kendoNS');\n if (arguments.length === 1) {\n return on.call(that, arguments[0]);\n }\n var context = that, args = slice.call(arguments);\n if (typeof args[args.length - 1] === UNDEFINED) {\n args.pop();\n }\n var callback = args[args.length - 1], events = kendo.applyEventMap(args[0], ns);\n if (support.mouseAndTouchPresent && events.search(/mouse|click/) > -1 && this[0] !== document.documentElement) {\n MouseEventNormalizer.setupMouseMute();\n var selector = args.length === 2 ? null : args[1], bustClick = events.indexOf('click') > -1 && events.indexOf('touchend') > -1;\n on.call(this, {\n touchstart: MouseEventNormalizer.muteMouse,\n touchend: MouseEventNormalizer.unMuteMouse\n }, selector, { bustClick: bustClick });\n }\n if (typeof callback === STRING) {\n context = that.data('handler');\n callback = context[callback];\n args[args.length - 1] = function (e) {\n callback.call(context, e);\n };\n }\n args[0] = events;\n on.apply(that, args);\n return that;\n },\n kendoDestroy: function (ns) {\n ns = ns || this.data('kendoNS');\n if (ns) {\n this.off('.' + ns);\n }\n return this;\n }\n });\n kendo.jQuery = kendoJQuery;\n kendo.eventMap = eventMap;\n kendo.timezone = function () {\n var months = {\n Jan: 0,\n Feb: 1,\n Mar: 2,\n Apr: 3,\n May: 4,\n Jun: 5,\n Jul: 6,\n Aug: 7,\n Sep: 8,\n Oct: 9,\n Nov: 10,\n Dec: 11\n };\n var days = {\n Sun: 0,\n Mon: 1,\n Tue: 2,\n Wed: 3,\n Thu: 4,\n Fri: 5,\n Sat: 6\n };\n function ruleToDate(year, rule) {\n var date;\n var targetDay;\n var ourDay;\n var month = rule[3];\n var on = rule[4];\n var time = rule[5];\n var cache = rule[8];\n if (!cache) {\n rule[8] = cache = {};\n }\n if (cache[year]) {\n return cache[year];\n }\n if (!isNaN(on)) {\n date = new Date(Date.UTC(year, months[month], on, time[0], time[1], time[2], 0));\n } else if (on.indexOf('last') === 0) {\n date = new Date(Date.UTC(year, months[month] + 1, 1, time[0] - 24, time[1], time[2], 0));\n targetDay = days[on.substr(4, 3)];\n ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay - (targetDay > ourDay ? 7 : 0));\n } else if (on.indexOf('>=') >= 0) {\n date = new Date(Date.UTC(year, months[month], on.substr(5), time[0], time[1], time[2], 0));\n targetDay = days[on.substr(0, 3)];\n ourDay = date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + targetDay - ourDay + (targetDay < ourDay ? 7 : 0));\n }\n return cache[year] = date;\n }\n function findRule(utcTime, rules, zone) {\n rules = rules[zone];\n if (!rules) {\n var time = zone.split(':');\n var offset = 0;\n if (time.length > 1) {\n offset = time[0] * 60 + Number(time[1]);\n }\n return [\n -1000000,\n 'max',\n '-',\n 'Jan',\n 1,\n [\n 0,\n 0,\n 0\n ],\n offset,\n '-'\n ];\n }\n var year = new Date(utcTime).getUTCFullYear();\n rules = jQuery.grep(rules, function (rule) {\n var from = rule[0];\n var to = rule[1];\n return from <= year && (to >= year || from == year && to == 'only' || to == 'max');\n });\n rules.push(utcTime);\n rules.sort(function (a, b) {\n if (typeof a != 'number') {\n a = Number(ruleToDate(year, a));\n }\n if (typeof b != 'number') {\n b = Number(ruleToDate(year, b));\n }\n return a - b;\n });\n var rule = rules[jQuery.inArray(utcTime, rules) - 1] || rules[rules.length - 1];\n return isNaN(rule) ? rule : null;\n }\n function findZone(utcTime, zones, timezone) {\n var zoneRules = zones[timezone];\n if (typeof zoneRules === 'string') {\n zoneRules = zones[zoneRules];\n }\n if (!zoneRules) {\n throw new Error('Timezone \"' + timezone + '\" is either incorrect, or kendo.timezones.min.js is not included.');\n }\n for (var idx = zoneRules.length - 1; idx >= 0; idx--) {\n var until = zoneRules[idx][3];\n if (until && utcTime > until) {\n break;\n }\n }\n var zone = zoneRules[idx + 1];\n if (!zone) {\n throw new Error('Timezone \"' + timezone + '\" not found on ' + utcTime + '.');\n }\n return zone;\n }\n function zoneAndRule(utcTime, zones, rules, timezone) {\n if (typeof utcTime != NUMBER) {\n utcTime = Date.UTC(utcTime.getFullYear(), utcTime.getMonth(), utcTime.getDate(), utcTime.getHours(), utcTime.getMinutes(), utcTime.getSeconds(), utcTime.getMilliseconds());\n }\n var zone = findZone(utcTime, zones, timezone);\n return {\n zone: zone,\n rule: findRule(utcTime, rules, zone[1])\n };\n }\n function offset(utcTime, timezone) {\n if (timezone == 'Etc/UTC' || timezone == 'Etc/GMT') {\n return 0;\n }\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n return kendo.parseFloat(rule ? zone[0] - rule[6] : zone[0]);\n }\n function abbr(utcTime, timezone) {\n var info = zoneAndRule(utcTime, this.zones, this.rules, timezone);\n var zone = info.zone;\n var rule = info.rule;\n var base = zone[2];\n if (base.indexOf('/') >= 0) {\n return base.split('/')[rule && +rule[6] ? 1 : 0];\n } else if (base.indexOf('%s') >= 0) {\n return base.replace('%s', !rule || rule[7] == '-' ? '' : rule[7]);\n }\n return base;\n }\n function convert(date, fromOffset, toOffset) {\n if (typeof fromOffset == STRING) {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset == STRING) {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n }\n function apply(date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n }\n function remove(date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n }\n function toLocalDate(time) {\n return this.apply(new Date(time), 'Etc/UTC');\n }\n return {\n zones: {},\n rules: {},\n offset: offset,\n convert: convert,\n apply: apply,\n remove: remove,\n abbr: abbr,\n toLocalDate: toLocalDate\n };\n }();\n kendo.date = function () {\n var MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000;\n function adjustDST(date, hours) {\n if (hours === 0 && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n return true;\n }\n return false;\n }\n function setDayOfWeek(date, day, dir) {\n var hours = date.getHours();\n dir = dir || 1;\n day = (day - date.getDay() + 7 * dir) % 7;\n date.setDate(date.getDate() + day);\n adjustDST(date, hours);\n }\n function dayOfWeek(date, day, dir) {\n date = new Date(date);\n setDayOfWeek(date, day, dir);\n return date;\n }\n function firstDayOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n function lastDayOfMonth(date) {\n var last = new Date(date.getFullYear(), date.getMonth() + 1, 0), first = firstDayOfMonth(date), timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n if (timeOffset) {\n last.setHours(first.getHours() + timeOffset / 60);\n }\n return last;\n }\n function getDate(date) {\n date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n adjustDST(date, 0);\n return date;\n }\n function toUtcTime(date) {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n function getMilliseconds(date) {\n return date.getTime() - getDate(date);\n }\n function isInTimeRange(value, min, max) {\n var msMin = getMilliseconds(min), msMax = getMilliseconds(max), msValue;\n if (!value || msMin == msMax) {\n return true;\n }\n if (min >= max) {\n max += MS_PER_DAY;\n }\n msValue = getMilliseconds(value);\n if (msMin > msValue) {\n msValue += MS_PER_DAY;\n }\n if (msMax < msMin) {\n msMax += MS_PER_DAY;\n }\n return msValue >= msMin && msValue <= msMax;\n }\n function isInDateRange(value, min, max) {\n var msMin = min.getTime(), msMax = max.getTime(), msValue;\n if (msMin >= msMax) {\n msMax += MS_PER_DAY;\n }\n msValue = value.getTime();\n return msValue >= msMin && msValue <= msMax;\n }\n function addDays(date, offset) {\n var hours = date.getHours();\n date = new Date(date);\n setTime(date, offset * MS_PER_DAY);\n adjustDST(date, hours);\n return date;\n }\n function setTime(date, milliseconds, ignoreDST) {\n var offset = date.getTimezoneOffset();\n var difference;\n date.setTime(date.getTime() + milliseconds);\n if (!ignoreDST) {\n difference = date.getTimezoneOffset() - offset;\n date.setTime(date.getTime() + difference * MS_PER_MINUTE);\n }\n }\n function setHours(date, time) {\n date = new Date(kendo.date.getDate(date).getTime() + kendo.date.getMilliseconds(time));\n adjustDST(date, time.getHours());\n return date;\n }\n function today() {\n return getDate(new Date());\n }\n function isToday(date) {\n return getDate(date).getTime() == today().getTime();\n }\n function toInvariantTime(date) {\n var staticDate = new Date(1980, 1, 1, 0, 0, 0);\n if (date) {\n staticDate.setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n }\n return staticDate;\n }\n return {\n adjustDST: adjustDST,\n dayOfWeek: dayOfWeek,\n setDayOfWeek: setDayOfWeek,\n getDate: getDate,\n isInDateRange: isInDateRange,\n isInTimeRange: isInTimeRange,\n isToday: isToday,\n nextDay: function (date) {\n return addDays(date, 1);\n },\n previousDay: function (date) {\n return addDays(date, -1);\n },\n toUtcTime: toUtcTime,\n MS_PER_DAY: MS_PER_DAY,\n MS_PER_HOUR: 60 * MS_PER_MINUTE,\n MS_PER_MINUTE: MS_PER_MINUTE,\n setTime: setTime,\n setHours: setHours,\n addDays: addDays,\n today: today,\n toInvariantTime: toInvariantTime,\n firstDayOfMonth: firstDayOfMonth,\n lastDayOfMonth: lastDayOfMonth,\n getMilliseconds: getMilliseconds\n };\n }();\n kendo.stripWhitespace = function (element) {\n if (document.createNodeIterator) {\n var iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT, function (node) {\n return node.parentNode == element ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }, false);\n while (iterator.nextNode()) {\n if (iterator.referenceNode && !iterator.referenceNode.textContent.trim()) {\n iterator.referenceNode.parentNode.removeChild(iterator.referenceNode);\n }\n }\n } else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (child.nodeType == 3 && !/\\S/.test(child.nodeValue)) {\n element.removeChild(child);\n i--;\n }\n if (child.nodeType == 1) {\n kendo.stripWhitespace(child);\n }\n }\n }\n };\n var animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {\n setTimeout(callback, 1000 / 60);\n };\n kendo.animationFrame = function (callback) {\n animationFrame.call(window, callback);\n };\n var animationQueue = [];\n kendo.queueAnimation = function (callback) {\n animationQueue[animationQueue.length] = callback;\n if (animationQueue.length === 1) {\n kendo.runNextAnimation();\n }\n };\n kendo.runNextAnimation = function () {\n kendo.animationFrame(function () {\n if (animationQueue[0]) {\n animationQueue.shift()();\n if (animationQueue[0]) {\n kendo.runNextAnimation();\n }\n }\n });\n };\n kendo.parseQueryStringParams = function (url) {\n var queryString = url.split('?')[1] || '', params = {}, paramParts = queryString.split(/&|=/), length = paramParts.length, idx = 0;\n for (; idx < length; idx += 2) {\n if (paramParts[idx] !== '') {\n params[decodeURIComponent(paramParts[idx])] = decodeURIComponent(paramParts[idx + 1]);\n }\n }\n return params;\n };\n kendo.elementUnderCursor = function (e) {\n if (typeof e.x.client != 'undefined') {\n return document.elementFromPoint(e.x.client, e.y.client);\n }\n };\n kendo.wheelDeltaY = function (jQueryEvent) {\n var e = jQueryEvent.originalEvent, deltaY = e.wheelDeltaY, delta;\n if (e.wheelDelta) {\n if (deltaY === undefined || deltaY) {\n delta = e.wheelDelta;\n }\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n delta = -e.detail * 10;\n }\n return delta;\n };\n kendo.throttle = function (fn, delay) {\n var timeout;\n var lastExecTime = 0;\n if (!delay || delay <= 0) {\n return fn;\n }\n var throttled = function () {\n var that = this;\n var elapsed = +new Date() - lastExecTime;\n var args = arguments;\n function exec() {\n fn.apply(that, args);\n lastExecTime = +new Date();\n }\n if (!lastExecTime) {\n return exec();\n }\n if (timeout) {\n clearTimeout(timeout);\n }\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n throttled.cancel = function () {\n clearTimeout(timeout);\n };\n return throttled;\n };\n kendo.caret = function (element, start, end) {\n var rangeElement;\n var isPosition = start !== undefined;\n if (end === undefined) {\n end = start;\n }\n if (element[0]) {\n element = element[0];\n }\n if (isPosition && element.disabled) {\n return;\n }\n try {\n if (element.selectionStart !== undefined) {\n if (isPosition) {\n element.focus();\n element.setSelectionRange(start, end);\n } else {\n start = [\n element.selectionStart,\n element.selectionEnd\n ];\n }\n } else if (document.selection) {\n if ($(element).is(':visible')) {\n element.focus();\n }\n rangeElement = element.createTextRange();\n if (isPosition) {\n rangeElement.collapse(true);\n rangeElement.moveStart('character', start);\n rangeElement.moveEnd('character', end - start);\n rangeElement.select();\n } else {\n var rangeDuplicated = rangeElement.duplicate(), selectionStart, selectionEnd;\n rangeElement.moveToBookmark(document.selection.createRange().getBookmark());\n rangeDuplicated.setEndPoint('EndToStart', rangeElement);\n selectionStart = rangeDuplicated.text.length;\n selectionEnd = selectionStart + rangeElement.text.length;\n start = [\n selectionStart,\n selectionEnd\n ];\n }\n }\n } catch (e) {\n start = [];\n }\n return start;\n };\n kendo.compileMobileDirective = function (element, scope) {\n var angular = window.angular;\n element.attr('data-' + kendo.ns + 'role', element[0].tagName.toLowerCase().replace('kendo-mobile-', '').replace('-', ''));\n angular.element(element).injector().invoke([\n '$compile',\n function ($compile) {\n $compile(element)(scope);\n if (!/^\\$(digest|apply)$/.test(scope.$$phase)) {\n scope.$digest();\n }\n }\n ]);\n return kendo.widgetInstance(element, kendo.mobile.ui);\n };\n kendo.antiForgeryTokens = function () {\n var tokens = {}, csrf_token = $('meta[name=csrf-token],meta[name=_csrf]').attr('content'), csrf_param = $('meta[name=csrf-param],meta[name=_csrf_header]').attr('content');\n $('input[name^=\\'__RequestVerificationToken\\']').each(function () {\n tokens[this.name] = this.value;\n });\n if (csrf_param !== undefined && csrf_token !== undefined) {\n tokens[csrf_param] = csrf_token;\n }\n return tokens;\n };\n kendo.cycleForm = function (form) {\n var firstElement = form.find('input, .k-widget').first();\n var lastElement = form.find('button, .k-button').last();\n function focus(el) {\n var widget = kendo.widgetInstance(el);\n if (widget && widget.focus) {\n widget.focus();\n } else {\n el.focus();\n }\n }\n lastElement.on('keydown', function (e) {\n if (e.keyCode == kendo.keys.TAB && !e.shiftKey) {\n e.preventDefault();\n focus(firstElement);\n }\n });\n firstElement.on('keydown', function (e) {\n if (e.keyCode == kendo.keys.TAB && e.shiftKey) {\n e.preventDefault();\n focus(lastElement);\n }\n });\n };\n (function () {\n function postToProxy(dataURI, fileName, proxyURL, proxyTarget) {\n var form = $('
').attr({\n action: proxyURL,\n method: 'POST',\n target: proxyTarget\n });\n var data = kendo.antiForgeryTokens();\n data.fileName = fileName;\n var parts = dataURI.split(';base64,');\n data.contentType = parts[0].replace('data:', '');\n data.base64 = parts[1];\n for (var name in data) {\n if (data.hasOwnProperty(name)) {\n $('').attr({\n value: data[name],\n name: name,\n type: 'hidden'\n }).appendTo(form);\n }\n }\n form.appendTo('body').submit().remove();\n }\n var fileSaver = document.createElement('a');\n var downloadAttribute = 'download' in fileSaver && !kendo.support.browser.edge;\n function saveAsBlob(dataURI, fileName) {\n var blob = dataURI;\n if (typeof dataURI == 'string') {\n var parts = dataURI.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], { type: contentType });\n }\n navigator.msSaveBlob(blob, fileName);\n }\n function saveAsDataURI(dataURI, fileName) {\n if (window.Blob && dataURI instanceof Blob) {\n dataURI = URL.createObjectURL(dataURI);\n }\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n fileSaver.dispatchEvent(e);\n URL.revokeObjectURL(dataURI);\n }\n kendo.saveAs = function (options) {\n var save = postToProxy;\n if (!options.forceProxy) {\n if (downloadAttribute) {\n save = saveAsDataURI;\n } else if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n save(options.dataURI, options.fileName, options.proxyURL, options.proxyTarget);\n };\n }());\n kendo.proxyModelSetters = function proxyModelSetters(data) {\n var observable = {};\n Object.keys(data || {}).forEach(function (property) {\n Object.defineProperty(observable, property, {\n get: function () {\n return data[property];\n },\n set: function (value) {\n data[property] = value;\n data.dirty = true;\n }\n });\n });\n return observable;\n };\n }(jQuery, window));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.router', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'router',\n name: 'Router',\n category: 'framework',\n description: 'The Router class is responsible for tracking the application state and navigating between the application states.',\n depends: ['core'],\n hidden: false\n };\n (function ($, undefined) {\n var kendo = window.kendo, CHANGE = 'change', BACK = 'back', SAME = 'same', support = kendo.support, location = window.location, history = window.history, CHECK_URL_INTERVAL = 50, BROKEN_BACK_NAV = kendo.support.browser.msie, hashStrip = /^#*/, document = window.document;\n function absoluteURL(path, pathPrefix) {\n if (!pathPrefix) {\n return path;\n }\n if (path + '/' === pathPrefix) {\n path = pathPrefix;\n }\n var regEx = new RegExp('^' + pathPrefix, 'i');\n if (!regEx.test(path)) {\n path = pathPrefix + '/' + path;\n }\n return location.protocol + '//' + (location.host + '/' + path).replace(/\\/\\/+/g, '/');\n }\n function hashDelimiter(bang) {\n return bang ? '#!' : '#';\n }\n function locationHash(hashDelimiter) {\n var href = location.href;\n if (hashDelimiter === '#!' && href.indexOf('#') > -1 && href.indexOf('#!') < 0) {\n return null;\n }\n return href.split(hashDelimiter)[1] || '';\n }\n function stripRoot(root, url) {\n if (url.indexOf(root) === 0) {\n return url.substr(root.length).replace(/\\/\\//g, '/');\n } else {\n return url;\n }\n }\n var HistoryAdapter = kendo.Class.extend({\n back: function () {\n if (BROKEN_BACK_NAV) {\n setTimeout(function () {\n history.back();\n });\n } else {\n history.back();\n }\n },\n forward: function () {\n if (BROKEN_BACK_NAV) {\n setTimeout(function () {\n history.forward();\n });\n } else {\n history.forward();\n }\n },\n length: function () {\n return history.length;\n },\n replaceLocation: function (url) {\n location.replace(url);\n }\n });\n var PushStateAdapter = HistoryAdapter.extend({\n init: function (root) {\n this.root = root;\n },\n navigate: function (to) {\n history.pushState({}, document.title, absoluteURL(to, this.root));\n },\n replace: function (to) {\n history.replaceState({}, document.title, absoluteURL(to, this.root));\n },\n normalize: function (url) {\n return stripRoot(this.root, url);\n },\n current: function () {\n var current = location.pathname;\n if (location.search) {\n current += location.search;\n }\n return stripRoot(this.root, current);\n },\n change: function (callback) {\n $(window).bind('popstate.kendo', callback);\n },\n stop: function () {\n $(window).unbind('popstate.kendo');\n },\n normalizeCurrent: function (options) {\n var fixedUrl, root = options.root, pathname = location.pathname, hash = locationHash(hashDelimiter(options.hashBang));\n if (root === pathname + '/') {\n fixedUrl = root;\n }\n if (root === pathname && hash) {\n fixedUrl = absoluteURL(hash.replace(hashStrip, ''), root);\n }\n if (fixedUrl) {\n history.pushState({}, document.title, fixedUrl);\n }\n }\n });\n function fixHash(url) {\n return url.replace(/^(#)?/, '#');\n }\n function fixBang(url) {\n return url.replace(/^(#(!)?)?/, '#!');\n }\n var HashAdapter = HistoryAdapter.extend({\n init: function (bang) {\n this._id = kendo.guid();\n this.prefix = hashDelimiter(bang);\n this.fix = bang ? fixBang : fixHash;\n },\n navigate: function (to) {\n location.hash = this.fix(to);\n },\n replace: function (to) {\n this.replaceLocation(this.fix(to));\n },\n normalize: function (url) {\n if (url.indexOf(this.prefix) < 0) {\n return url;\n } else {\n return url.split(this.prefix)[1];\n }\n },\n change: function (callback) {\n if (support.hashChange) {\n $(window).on('hashchange.' + this._id, callback);\n } else {\n this._interval = setInterval(callback, CHECK_URL_INTERVAL);\n }\n },\n stop: function () {\n $(window).off('hashchange.' + this._id);\n clearInterval(this._interval);\n },\n current: function () {\n return locationHash(this.prefix);\n },\n normalizeCurrent: function (options) {\n var pathname = location.pathname, root = options.root;\n if (options.pushState && root !== pathname) {\n this.replaceLocation(root + this.prefix + stripRoot(root, pathname));\n return true;\n }\n return false;\n }\n });\n var History = kendo.Observable.extend({\n start: function (options) {\n options = options || {};\n this.bind([\n CHANGE,\n BACK,\n SAME\n ], options);\n if (this._started) {\n return;\n }\n this._started = true;\n options.root = options.root || '/';\n var adapter = this.createAdapter(options), current;\n if (adapter.normalizeCurrent(options)) {\n return;\n }\n current = adapter.current();\n $.extend(this, {\n adapter: adapter,\n root: options.root,\n historyLength: adapter.length(),\n current: current,\n locations: [current]\n });\n adapter.change($.proxy(this, '_checkUrl'));\n },\n createAdapter: function (options) {\n return support.pushState && options.pushState ? new PushStateAdapter(options.root) : new HashAdapter(options.hashBang);\n },\n stop: function () {\n if (!this._started) {\n return;\n }\n this.adapter.stop();\n this.unbind(CHANGE);\n this._started = false;\n },\n change: function (callback) {\n this.bind(CHANGE, callback);\n },\n replace: function (to, silent) {\n this._navigate(to, silent, function (adapter) {\n adapter.replace(to);\n this.locations[this.locations.length - 1] = this.current;\n });\n },\n navigate: function (to, silent) {\n if (to === '#:back') {\n this.backCalled = true;\n this.adapter.back();\n return;\n }\n this._navigate(to, silent, function (adapter) {\n adapter.navigate(to);\n this.locations.push(this.current);\n });\n },\n _navigate: function (to, silent, callback) {\n var adapter = this.adapter;\n to = adapter.normalize(to);\n if (this.current === to || this.current === decodeURIComponent(to)) {\n this.trigger(SAME);\n return;\n }\n if (!silent) {\n if (this.trigger(CHANGE, { url: to })) {\n return;\n }\n }\n this.current = to;\n callback.call(this, adapter);\n this.historyLength = adapter.length();\n },\n _checkUrl: function () {\n var adapter = this.adapter, current = adapter.current(), newLength = adapter.length(), navigatingInExisting = this.historyLength === newLength, back = current === this.locations[this.locations.length - 2] && navigatingInExisting, backCalled = this.backCalled, prev = this.current;\n if (current === null || this.current === current || this.current === decodeURIComponent(current)) {\n return true;\n }\n this.historyLength = newLength;\n this.backCalled = false;\n this.current = current;\n if (back && this.trigger('back', {\n url: prev,\n to: current\n })) {\n adapter.forward();\n this.current = prev;\n return;\n }\n if (this.trigger(CHANGE, {\n url: current,\n backButtonPressed: !backCalled\n })) {\n if (back) {\n adapter.forward();\n } else {\n adapter.back();\n this.historyLength--;\n }\n this.current = prev;\n return;\n }\n if (back) {\n this.locations.pop();\n } else {\n this.locations.push(current);\n }\n }\n });\n kendo.History = History;\n kendo.History.HistoryAdapter = HistoryAdapter;\n kendo.History.HashAdapter = HashAdapter;\n kendo.History.PushStateAdapter = PushStateAdapter;\n kendo.absoluteURL = absoluteURL;\n kendo.history = new History();\n }(window.kendo.jQuery));\n (function () {\n var kendo = window.kendo, history = kendo.history, Observable = kendo.Observable, INIT = 'init', ROUTE_MISSING = 'routeMissing', CHANGE = 'change', BACK = 'back', SAME = 'same', optionalParam = /\\((.*?)\\)/g, namedParam = /(\\(\\?)?:\\w+/g, splatParam = /\\*\\w+/g, escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n function namedParamReplace(match, optional) {\n return optional ? match : '([^/]+)';\n }\n function routeToRegExp(route, ignoreCase) {\n return new RegExp('^' + route.replace(escapeRegExp, '\\\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, namedParamReplace).replace(splatParam, '(.*?)') + '$', ignoreCase ? 'i' : '');\n }\n function stripUrl(url) {\n return url.replace(/(\\?.*)|(#.*)/g, '');\n }\n var Route = kendo.Class.extend({\n init: function (route, callback, ignoreCase) {\n if (!(route instanceof RegExp)) {\n route = routeToRegExp(route, ignoreCase);\n }\n this.route = route;\n this._callback = callback;\n },\n callback: function (url, back) {\n var params, idx = 0, length, queryStringParams = kendo.parseQueryStringParams(url);\n queryStringParams._back = back;\n url = stripUrl(url);\n params = this.route.exec(url).slice(1);\n length = params.length;\n for (; idx < length; idx++) {\n if (typeof params[idx] !== 'undefined') {\n params[idx] = decodeURIComponent(params[idx]);\n }\n }\n params.push(queryStringParams);\n this._callback.apply(null, params);\n },\n worksWith: function (url, back) {\n if (this.route.test(stripUrl(url))) {\n this.callback(url, back);\n return true;\n } else {\n return false;\n }\n }\n });\n var Router = Observable.extend({\n init: function (options) {\n if (!options) {\n options = {};\n }\n Observable.fn.init.call(this);\n this.routes = [];\n this.pushState = options.pushState;\n this.hashBang = options.hashBang;\n this.root = options.root;\n this.ignoreCase = options.ignoreCase !== false;\n this.bind([\n INIT,\n ROUTE_MISSING,\n CHANGE,\n SAME\n ], options);\n },\n destroy: function () {\n history.unbind(CHANGE, this._urlChangedProxy);\n history.unbind(SAME, this._sameProxy);\n history.unbind(BACK, this._backProxy);\n this.unbind();\n },\n start: function () {\n var that = this, sameProxy = function () {\n that._same();\n }, backProxy = function (e) {\n that._back(e);\n }, urlChangedProxy = function (e) {\n that._urlChanged(e);\n };\n history.start({\n same: sameProxy,\n change: urlChangedProxy,\n back: backProxy,\n pushState: that.pushState,\n hashBang: that.hashBang,\n root: that.root\n });\n var initEventObject = {\n url: history.current || '/',\n preventDefault: $.noop\n };\n if (!that.trigger(INIT, initEventObject)) {\n that._urlChanged(initEventObject);\n }\n this._urlChangedProxy = urlChangedProxy;\n this._backProxy = backProxy;\n },\n route: function (route, callback) {\n this.routes.push(new Route(route, callback, this.ignoreCase));\n },\n navigate: function (url, silent) {\n kendo.history.navigate(url, silent);\n },\n replace: function (url, silent) {\n kendo.history.replace(url, silent);\n },\n _back: function (e) {\n if (this.trigger(BACK, {\n url: e.url,\n to: e.to\n })) {\n e.preventDefault();\n }\n },\n _same: function () {\n this.trigger(SAME);\n },\n _urlChanged: function (e) {\n var url = e.url;\n var back = e.backButtonPressed;\n if (!url) {\n url = '/';\n }\n if (this.trigger(CHANGE, {\n url: e.url,\n params: kendo.parseQueryStringParams(e.url),\n backButtonPressed: back\n })) {\n e.preventDefault();\n return;\n }\n var idx = 0, routes = this.routes, route, length = routes.length;\n for (; idx < length; idx++) {\n route = routes[idx];\n if (route.worksWith(url, back)) {\n return;\n }\n }\n if (this.trigger(ROUTE_MISSING, {\n url: url,\n params: kendo.parseQueryStringParams(url),\n backButtonPressed: back\n })) {\n e.preventDefault();\n }\n }\n });\n kendo.Router = Router;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.userevents', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'userevents',\n name: 'User Events',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, document = window.document, Class = kendo.Class, Observable = kendo.Observable, now = $.now, extend = $.extend, OS = support.mobileOS, invalidZeroEvents = OS && OS.android, DEFAULT_MIN_HOLD = 800, DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0, PRESS = 'press', HOLD = 'hold', SELECT = 'select', START = 'start', MOVE = 'move', END = 'end', CANCEL = 'cancel', TAP = 'tap', RELEASE = 'release', GESTURESTART = 'gesturestart', GESTURECHANGE = 'gesturechange', GESTUREEND = 'gestureend', GESTURETAP = 'gesturetap';\n var THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n };\n var ENABLE_GLOBAL_SURFACE = !support.touch || support.mouseAndTouchPresent;\n function touchDelta(touch1, touch2) {\n var x1 = touch1.x.location, y1 = touch1.y.location, x2 = touch2.x.location, y2 = touch2.y.location, dx = x1 - x2, dy = y1 - y2;\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n }\n function getTouches(e) {\n var touches = [], originalEvent = e.originalEvent, currentTarget = e.currentTarget, idx = 0, length, changedTouches, touch;\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n return touches;\n }\n var TouchAxis = Class.extend({\n init: function (axis, location) {\n var that = this;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n },\n move: function (location) {\n var that = this, offset = location['page' + that.axis], timeStamp = now(), timeDelta = timeStamp - that.timeStamp || 1;\n if (!offset && invalidZeroEvents) {\n return;\n }\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n },\n _updateLocationData: function (location) {\n var that = this, axis = that.axis;\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n }\n });\n var Touch = Class.extend({\n init: function (userEvents, target, touchInfo) {\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _moved: false,\n _finished: false\n });\n },\n press: function () {\n this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n },\n _hold: function () {\n this._trigger(HOLD, this.pressEvent);\n },\n move: function (touchInfo) {\n var that = this;\n if (that._finished) {\n return;\n }\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n },\n end: function (touchInfo) {\n this.endTime = now();\n if (this._finished) {\n return;\n }\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n this._trigger(TAP, touchInfo);\n }\n }\n clearTimeout(this._holdTimeout);\n this.dispose();\n },\n dispose: function () {\n var userEvents = this.userEvents, activeTouches = userEvents.touches;\n this._finished = true;\n this.pressEvent = null;\n clearTimeout(this._holdTimeout);\n activeTouches.splice($.inArray(this, activeTouches), 1);\n },\n skip: function () {\n this.dispose();\n },\n cancel: function () {\n this.dispose();\n },\n isMoved: function () {\n return this._moved;\n },\n _start: function (touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n },\n _trigger: function (name, touchInfo) {\n var that = this, jQueryEvent = touchInfo.event, data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n },\n _withinIgnoreThreshold: function () {\n var xDelta = this.x.initialDelta, yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n }\n });\n function withEachUpEvent(callback) {\n var downEvents = kendo.eventMap.up.split(' '), idx = 0, length = downEvents.length;\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n }\n var UserEvents = Observable.extend({\n init: function (element, options) {\n var that = this, filter, ns = kendo.guid();\n options = options || {};\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that.eventNS = ns;\n element = $(element).handler(that);\n Observable.fn.init.call(that);\n extend(that, {\n element: element,\n surface: options.global && ENABLE_GLOBAL_SURFACE ? $(document.documentElement) : $(options.surface || element),\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n that.surface.handler(that).on(kendo.applyEventMap('move', ns), '_move').on(kendo.applyEventMap('up cancel', ns), '_end');\n element.on(kendo.applyEventMap('down', ns), filter, '_start');\n if (that.useClickAsTap) {\n element.on(kendo.applyEventMap('click', ns), filter, '_click');\n }\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n element.css('-ms-touch-action', 'pinch-zoom double-tap-zoom');\n } else {\n element.css('touch-action', 'pan-y');\n }\n }\n if (options.preventDragEvent) {\n element.on(kendo.applyEventMap('dragstart', ns), kendo.preventDefault);\n }\n element.on(kendo.applyEventMap('mousedown', ns), filter, { root: element }, '_select');\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0], preventIfMovingProxy = $.proxy(that.preventIfMoving, that);\n withEachUpEvent(function (eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n that.bind([\n PRESS,\n HOLD,\n TAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n },\n preventIfMoving: function (e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n },\n destroy: function () {\n var that = this;\n if (that._destroyed) {\n return;\n }\n that._destroyed = true;\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface[0];\n withEachUpEvent(function (eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n that.element.kendoDestroy(that.eventNS);\n that.surface.kendoDestroy(that.eventNS);\n that.element.removeData('handler');\n that.surface.removeData('handler');\n that._disposeAll();\n that.unbind();\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n },\n capture: function () {\n UserEvents.current = this;\n },\n cancel: function () {\n this._disposeAll();\n this.trigger(CANCEL);\n },\n notify: function (eventName, data) {\n var that = this, touches = that.touches;\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n }\n extend(data, { touches: touches }, touchDelta(touches[0], touches[1]));\n }\n return this.trigger(eventName, extend(data, { type: eventName }));\n },\n press: function (x, y, target) {\n this._apiCall('_start', x, y, target);\n },\n move: function (x, y) {\n this._apiCall('_move', x, y);\n },\n end: function (x, y) {\n this._apiCall('_end', x, y);\n },\n _isMultiTouch: function () {\n return this.touches.length > 1;\n },\n _maxTouchesReached: function () {\n return this.touches.length >= this._maxTouches;\n },\n _disposeAll: function () {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n },\n _isMoved: function () {\n return $.grep(this.touches, function (touch) {\n return touch.isMoved();\n }).length;\n },\n _select: function (e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n },\n _start: function (e) {\n var that = this, idx = 0, filter = that.filter, target, touches = getTouches(e), length = touches.length, touch, which = e.which;\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n touch = touches[idx];\n if (filter) {\n target = $(touch.currentTarget);\n } else {\n target = that.element;\n }\n if (!target.length) {\n continue;\n }\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n },\n _move: function (e) {\n this._eachTouch('move', e);\n },\n _end: function (e) {\n this._eachTouch('end', e);\n },\n _click: function (e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: $(e.currentTarget),\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: $(e.currentTarget),\n event: e,\n type: 'tap'\n };\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n },\n _eachTouch: function (methodName, e) {\n var that = this, dict = {}, touches = getTouches(e), activeTouches = that.touches, idx, touch, touchInfo, matchingTouch;\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n },\n _apiCall: function (type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: $(target || this.element)[0],\n stopPropagation: $.noop,\n preventDefault: $.noop\n });\n }\n });\n UserEvents.defaultThreshold = function (value) {\n DEFAULT_THRESHOLD = value;\n };\n UserEvents.minHold = function (value) {\n DEFAULT_MIN_HOLD = value;\n };\n kendo.getTouches = getTouches;\n kendo.touchDelta = touchDelta;\n kendo.UserEvents = UserEvents;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.touch', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'touch',\n name: 'Touch',\n category: 'mobile',\n description: 'The kendo Touch widget provides a cross-platform compatible API for handling user-initiated touch events, multi-touch gestures and event sequences (drag, swipe, etc.). ',\n depends: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, abs = Math.abs, MAX_DOUBLE_TAP_DISTANCE = 20;\n var Touch = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n that.wrapper = element;\n function eventProxy(name) {\n return function (e) {\n that._triggerTouch(name, e);\n };\n }\n function gestureEventProxy(name) {\n return function (e) {\n that.trigger(name, {\n touches: e.touches,\n distance: e.distance,\n center: e.center,\n event: e.event\n });\n };\n }\n that.events = new kendo.UserEvents(element, {\n filter: options.filter,\n surface: options.surface,\n minHold: options.minHold,\n multiTouch: options.multiTouch,\n allowSelection: true,\n fastTap: options.fastTap,\n press: eventProxy('touchstart'),\n hold: eventProxy('hold'),\n tap: proxy(that, '_tap'),\n gesturestart: gestureEventProxy('gesturestart'),\n gesturechange: gestureEventProxy('gesturechange'),\n gestureend: gestureEventProxy('gestureend')\n });\n if (options.enableSwipe) {\n that.events.bind('start', proxy(that, '_swipestart'));\n that.events.bind('move', proxy(that, '_swipemove'));\n } else {\n that.events.bind('start', proxy(that, '_dragstart'));\n that.events.bind('move', eventProxy('drag'));\n that.events.bind('end', eventProxy('dragend'));\n }\n kendo.notify(that);\n },\n events: [\n 'touchstart',\n 'dragstart',\n 'drag',\n 'dragend',\n 'tap',\n 'doubletap',\n 'hold',\n 'swipe',\n 'gesturestart',\n 'gesturechange',\n 'gestureend'\n ],\n options: {\n name: 'Touch',\n surface: null,\n global: false,\n fastTap: false,\n filter: null,\n multiTouch: false,\n enableSwipe: false,\n minXDelta: 30,\n maxYDelta: 20,\n maxDuration: 1000,\n minHold: 800,\n doubleTapTimeout: 800\n },\n cancel: function () {\n this.events.cancel();\n },\n _triggerTouch: function (type, e) {\n if (this.trigger(type, {\n touch: e.touch,\n event: e.event\n })) {\n e.preventDefault();\n }\n },\n _tap: function (e) {\n var that = this, lastTap = that.lastTap, touch = e.touch;\n if (lastTap && touch.endTime - lastTap.endTime < that.options.doubleTapTimeout && kendo.touchDelta(touch, lastTap).distance < MAX_DOUBLE_TAP_DISTANCE) {\n that._triggerTouch('doubletap', e);\n that.lastTap = null;\n } else {\n that._triggerTouch('tap', e);\n that.lastTap = touch;\n }\n },\n _dragstart: function (e) {\n this._triggerTouch('dragstart', e);\n },\n _swipestart: function (e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n e.sender.capture();\n }\n },\n _swipemove: function (e) {\n var that = this, options = that.options, touch = e.touch, duration = e.event.timeStamp - touch.startTime, direction = touch.x.initialDelta > 0 ? 'right' : 'left';\n if (abs(touch.x.initialDelta) >= options.minXDelta && abs(touch.y.initialDelta) < options.maxYDelta && duration < options.maxDuration) {\n that.trigger('swipe', {\n direction: direction,\n touch: e.touch\n });\n touch.cancel();\n }\n }\n });\n kendo.ui.plugin(Touch);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.odata', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'data.odata',\n name: 'OData',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, extend = $.extend, odataFilters = {\n eq: 'eq',\n neq: 'ne',\n gt: 'gt',\n gte: 'ge',\n lt: 'lt',\n lte: 'le',\n contains: 'substringof',\n doesnotcontain: 'substringof',\n endswith: 'endswith',\n startswith: 'startswith',\n isnull: 'eq',\n isnotnull: 'ne',\n isempty: 'eq',\n isnotempty: 'ne'\n }, odataFiltersVersionFour = extend({}, odataFilters, { contains: 'contains' }), mappers = {\n pageSize: $.noop,\n page: $.noop,\n filter: function (params, filter, useVersionFour) {\n if (filter) {\n filter = toOdataFilter(filter, useVersionFour);\n if (filter) {\n params.$filter = filter;\n }\n }\n },\n sort: function (params, orderby) {\n var expr = $.map(orderby, function (value) {\n var order = value.field.replace(/\\./g, '/');\n if (value.dir === 'desc') {\n order += ' desc';\n }\n return order;\n }).join(',');\n if (expr) {\n params.$orderby = expr;\n }\n },\n skip: function (params, skip) {\n if (skip) {\n params.$skip = skip;\n }\n },\n take: function (params, take) {\n if (take) {\n params.$top = take;\n }\n }\n }, defaultDataType = { read: { dataType: 'jsonp' } };\n function toOdataFilter(filter, useOdataFour) {\n var result = [], logic = filter.logic || 'and', idx, length, field, type, format, operator, value, ignoreCase, filters = filter.filters;\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n value = filter.value;\n operator = filter.operator;\n if (filter.filters) {\n filter = toOdataFilter(filter, useOdataFour);\n } else {\n ignoreCase = filter.ignoreCase;\n field = field.replace(/\\./g, '/');\n filter = odataFilters[operator];\n if (useOdataFour) {\n filter = odataFiltersVersionFour[operator];\n }\n if (operator === 'isnull' || operator === 'isnotnull') {\n filter = kendo.format('{0} {1} null', field, filter);\n } else if (operator === 'isempty' || operator === 'isnotempty') {\n filter = kendo.format('{0} {1} \\'\\'', field, filter);\n } else if (filter && value !== undefined) {\n type = $.type(value);\n if (type === 'string') {\n format = '\\'{1}\\'';\n value = value.replace(/'/g, '\\'\\'');\n if (ignoreCase === true) {\n field = 'tolower(' + field + ')';\n }\n } else if (type === 'date') {\n if (useOdataFour) {\n format = '{1:yyyy-MM-ddTHH:mm:ss+00:00}';\n } else {\n format = 'datetime\\'{1:yyyy-MM-ddTHH:mm:ss}\\'';\n }\n } else {\n format = '{1}';\n }\n if (filter.length > 3) {\n if (filter !== 'substringof') {\n format = '{0}({2},' + format + ')';\n } else {\n format = '{0}(' + format + ',{2})';\n if (operator === 'doesnotcontain') {\n if (useOdataFour) {\n format = '{0}({2},\\'{1}\\') eq -1';\n filter = 'indexof';\n } else {\n format += ' eq false';\n }\n }\n }\n } else {\n format = '{2} {0} ' + format;\n }\n filter = kendo.format(format, filter, value, field);\n }\n }\n result.push(filter);\n }\n filter = result.join(' ' + logic + ' ');\n if (result.length > 1) {\n filter = '(' + filter + ')';\n }\n return filter;\n }\n function stripMetadata(obj) {\n for (var name in obj) {\n if (name.indexOf('@odata') === 0) {\n delete obj[name];\n }\n }\n }\n extend(true, kendo.data, {\n schemas: {\n odata: {\n type: 'json',\n data: function (data) {\n return data.d.results || [data.d];\n },\n total: 'd.__count'\n }\n },\n transports: {\n odata: {\n read: {\n cache: true,\n dataType: 'jsonp',\n jsonp: '$callback'\n },\n update: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json',\n type: 'PUT'\n },\n create: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json',\n type: 'POST'\n },\n destroy: {\n cache: true,\n dataType: 'json',\n type: 'DELETE'\n },\n parameterMap: function (options, type, useVersionFour) {\n var params, value, option, dataType;\n options = options || {};\n type = type || 'read';\n dataType = (this.options || defaultDataType)[type];\n dataType = dataType ? dataType.dataType : 'json';\n if (type === 'read') {\n params = { $inlinecount: 'allpages' };\n if (dataType != 'json') {\n params.$format = 'json';\n }\n for (option in options) {\n if (mappers[option]) {\n mappers[option](params, options[option], useVersionFour);\n } else {\n params[option] = options[option];\n }\n }\n } else {\n if (dataType !== 'json') {\n throw new Error('Only json dataType can be used for ' + type + ' operation.');\n }\n if (type !== 'destroy') {\n for (option in options) {\n value = options[option];\n if (typeof value === 'number') {\n options[option] = value + '';\n }\n }\n params = kendo.stringify(options);\n }\n }\n return params;\n }\n }\n }\n });\n extend(true, kendo.data, {\n schemas: {\n 'odata-v4': {\n type: 'json',\n data: function (data) {\n data = $.extend({}, data);\n stripMetadata(data);\n if (data.value) {\n return data.value;\n }\n return [data];\n },\n total: function (data) {\n return data['@odata.count'];\n }\n }\n },\n transports: {\n 'odata-v4': {\n read: {\n cache: true,\n dataType: 'json'\n },\n update: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json;IEEE754Compatible=true',\n type: 'PUT'\n },\n create: {\n cache: true,\n dataType: 'json',\n contentType: 'application/json;IEEE754Compatible=true',\n type: 'POST'\n },\n destroy: {\n cache: true,\n dataType: 'json',\n type: 'DELETE'\n },\n parameterMap: function (options, type) {\n var result = kendo.data.transports.odata.parameterMap(options, type, true);\n if (type == 'read') {\n result.$count = true;\n delete result.$inlinecount;\n }\n return result;\n }\n }\n }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.xml', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'data.xml',\n name: 'XML',\n category: 'framework',\n depends: ['core'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, isArray = $.isArray, isPlainObject = $.isPlainObject, map = $.map, each = $.each, extend = $.extend, getter = kendo.getter, Class = kendo.Class;\n var XmlDataReader = Class.extend({\n init: function (options) {\n var that = this, total = options.total, model = options.model, parse = options.parse, errors = options.errors, serialize = options.serialize, data = options.data;\n if (model) {\n if (isPlainObject(model)) {\n var base = options.modelBase || kendo.data.Model;\n if (model.fields) {\n each(model.fields, function (field, value) {\n if (isPlainObject(value) && value.field) {\n if (!$.isFunction(value.field)) {\n value = extend(value, { field: that.getter(value.field) });\n }\n } else {\n value = { field: that.getter(value) };\n }\n model.fields[field] = value;\n });\n }\n var id = model.id;\n if (id) {\n var idField = {};\n idField[that.xpathToMember(id, true)] = { field: that.getter(id) };\n model.fields = extend(idField, model.fields);\n model.id = that.xpathToMember(id);\n }\n model = base.define(model);\n }\n that.model = model;\n }\n if (total) {\n if (typeof total == 'string') {\n total = that.getter(total);\n that.total = function (data) {\n return parseInt(total(data), 10);\n };\n } else if (typeof total == 'function') {\n that.total = total;\n }\n }\n if (errors) {\n if (typeof errors == 'string') {\n errors = that.getter(errors);\n that.errors = function (data) {\n return errors(data) || null;\n };\n } else if (typeof errors == 'function') {\n that.errors = errors;\n }\n }\n if (data) {\n if (typeof data == 'string') {\n data = that.xpathToMember(data);\n that.data = function (value) {\n var result = that.evaluate(value, data), modelInstance;\n result = isArray(result) ? result : [result];\n if (that.model && model.fields) {\n modelInstance = new that.model();\n return map(result, function (value) {\n if (value) {\n var record = {}, field;\n for (field in model.fields) {\n record[field] = modelInstance._parse(field, model.fields[field].field(value));\n }\n return record;\n }\n });\n }\n return result;\n };\n } else if (typeof data == 'function') {\n that.data = data;\n }\n }\n if (typeof parse == 'function') {\n var xmlParse = that.parse;\n that.parse = function (data) {\n var xml = parse.call(that, data);\n return xmlParse.call(that, xml);\n };\n }\n if (typeof serialize == 'function') {\n that.serialize = serialize;\n }\n },\n total: function (result) {\n return this.data(result).length;\n },\n errors: function (data) {\n return data ? data.errors : null;\n },\n serialize: function (data) {\n return data;\n },\n parseDOM: function (element) {\n var result = {}, parsedNode, node, nodeType, nodeName, member, attribute, attributes = element.attributes, attributeCount = attributes.length, idx;\n for (idx = 0; idx < attributeCount; idx++) {\n attribute = attributes[idx];\n result['@' + attribute.nodeName] = attribute.nodeValue;\n }\n for (node = element.firstChild; node; node = node.nextSibling) {\n nodeType = node.nodeType;\n if (nodeType === 3 || nodeType === 4) {\n result['#text'] = node.nodeValue;\n } else if (nodeType === 1) {\n parsedNode = this.parseDOM(node);\n nodeName = node.nodeName;\n member = result[nodeName];\n if (isArray(member)) {\n member.push(parsedNode);\n } else if (member !== undefined) {\n member = [\n member,\n parsedNode\n ];\n } else {\n member = parsedNode;\n }\n result[nodeName] = member;\n }\n }\n return result;\n },\n evaluate: function (value, expression) {\n var members = expression.split('.'), member, result, length, intermediateResult, idx;\n while (member = members.shift()) {\n value = value[member];\n if (isArray(value)) {\n result = [];\n expression = members.join('.');\n for (idx = 0, length = value.length; idx < length; idx++) {\n intermediateResult = this.evaluate(value[idx], expression);\n intermediateResult = isArray(intermediateResult) ? intermediateResult : [intermediateResult];\n result.push.apply(result, intermediateResult);\n }\n return result;\n }\n }\n return value;\n },\n parse: function (xml) {\n var documentElement, tree, result = {};\n documentElement = xml.documentElement || $.parseXML(xml).documentElement;\n tree = this.parseDOM(documentElement);\n result[documentElement.nodeName] = tree;\n return result;\n },\n xpathToMember: function (member, raw) {\n if (!member) {\n return '';\n }\n member = member.replace(/^\\//, '').replace(/\\//g, '.');\n if (member.indexOf('@') >= 0) {\n return member.replace(/\\.?(@.*)/, raw ? '$1' : '[\"$1\"]');\n }\n if (member.indexOf('text()') >= 0) {\n return member.replace(/(\\.?text\\(\\))/, raw ? '#text' : '[\"#text\"]');\n }\n return member;\n },\n getter: function (member) {\n return getter(this.xpathToMember(member), true);\n }\n });\n $.extend(true, kendo.data, {\n XmlDataReader: XmlDataReader,\n readers: { xml: XmlDataReader }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data', [\n 'kendo.core',\n 'kendo.data.odata',\n 'kendo.data.xml'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'data',\n name: 'Data source',\n category: 'framework',\n description: 'Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.',\n depends: ['core'],\n features: [\n {\n id: 'data-odata',\n name: 'OData',\n description: 'Support for accessing Open Data Protocol (OData) services.',\n depends: ['data.odata']\n },\n {\n id: 'data-signalr',\n name: 'SignalR',\n description: 'Support for binding to SignalR hubs.',\n depends: ['data.signalr']\n },\n {\n id: 'data-XML',\n name: 'XML',\n description: 'Support for binding to XML.',\n depends: ['data.xml']\n }\n ]\n };\n (function ($, undefined) {\n var extend = $.extend, proxy = $.proxy, isPlainObject = $.isPlainObject, isEmptyObject = $.isEmptyObject, isArray = $.isArray, grep = $.grep, ajax = $.ajax, map, each = $.each, noop = $.noop, kendo = window.kendo, isFunction = kendo.isFunction, Observable = kendo.Observable, Class = kendo.Class, STRING = 'string', FUNCTION = 'function', CREATE = 'create', READ = 'read', UPDATE = 'update', DESTROY = 'destroy', CHANGE = 'change', SYNC = 'sync', GET = 'get', ERROR = 'error', REQUESTSTART = 'requestStart', PROGRESS = 'progress', REQUESTEND = 'requestEnd', crud = [\n CREATE,\n READ,\n UPDATE,\n DESTROY\n ], identity = function (o) {\n return o;\n }, getter = kendo.getter, stringify = kendo.stringify, math = Math, push = [].push, join = [].join, pop = [].pop, splice = [].splice, shift = [].shift, slice = [].slice, unshift = [].unshift, toString = {}.toString, stableSort = kendo.support.stableSort, dateRegExp = /^\\/Date\\((.*?)\\)\\/$/, newLineRegExp = /(\\r+|\\n+)/g, quoteRegExp = /(?=['\\\\])/g;\n var ObservableArray = Observable.extend({\n init: function (array, type) {\n var that = this;\n that.type = type || ObservableObject;\n Observable.fn.init.call(that);\n that.length = array.length;\n that.wrapAll(array, that);\n },\n at: function (index) {\n return this[index];\n },\n toJSON: function () {\n var idx, length = this.length, value, json = new Array(length);\n for (idx = 0; idx < length; idx++) {\n value = this[idx];\n if (value instanceof ObservableObject) {\n value = value.toJSON();\n }\n json[idx] = value;\n }\n return json;\n },\n parent: noop,\n wrapAll: function (source, target) {\n var that = this, idx, length, parent = function () {\n return that;\n };\n target = target || [];\n for (idx = 0, length = source.length; idx < length; idx++) {\n target[idx] = that.wrap(source[idx], parent);\n }\n return target;\n },\n wrap: function (object, parent) {\n var that = this, observable;\n if (object !== null && toString.call(object) === '[object Object]') {\n observable = object instanceof that.type || object instanceof Model;\n if (!observable) {\n object = object instanceof ObservableObject ? object.toJSON() : object;\n object = new that.type(object);\n }\n object.parent = parent;\n object.bind(CHANGE, function (e) {\n that.trigger(CHANGE, {\n field: e.field,\n node: e.node,\n index: e.index,\n items: e.items || [this],\n action: e.node ? e.action || 'itemloaded' : 'itemchange'\n });\n });\n }\n return object;\n },\n push: function () {\n var index = this.length, items = this.wrapAll(arguments), result;\n result = push.apply(this, items);\n this.trigger(CHANGE, {\n action: 'add',\n index: index,\n items: items\n });\n return result;\n },\n slice: slice,\n sort: [].sort,\n join: join,\n pop: function () {\n var length = this.length, result = pop.apply(this);\n if (length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: length - 1,\n items: [result]\n });\n }\n return result;\n },\n splice: function (index, howMany, item) {\n var items = this.wrapAll(slice.call(arguments, 2)), result, i, len;\n result = splice.apply(this, [\n index,\n howMany\n ].concat(items));\n if (result.length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: index,\n items: result\n });\n for (i = 0, len = result.length; i < len; i++) {\n if (result[i] && result[i].children) {\n result[i].unbind(CHANGE);\n }\n }\n }\n if (item) {\n this.trigger(CHANGE, {\n action: 'add',\n index: index,\n items: items\n });\n }\n return result;\n },\n shift: function () {\n var length = this.length, result = shift.apply(this);\n if (length) {\n this.trigger(CHANGE, {\n action: 'remove',\n index: 0,\n items: [result]\n });\n }\n return result;\n },\n unshift: function () {\n var items = this.wrapAll(arguments), result;\n result = unshift.apply(this, items);\n this.trigger(CHANGE, {\n action: 'add',\n index: 0,\n items: items\n });\n return result;\n },\n indexOf: function (item) {\n var that = this, idx, length;\n for (idx = 0, length = that.length; idx < length; idx++) {\n if (that[idx] === item) {\n return idx;\n }\n }\n return -1;\n },\n forEach: function (callback) {\n var idx = 0, length = this.length;\n for (; idx < length; idx++) {\n callback(this[idx], idx, this);\n }\n },\n map: function (callback) {\n var idx = 0, result = [], length = this.length;\n for (; idx < length; idx++) {\n result[idx] = callback(this[idx], idx, this);\n }\n return result;\n },\n reduce: function (callback) {\n var idx = 0, result, length = this.length;\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx < length) {\n result = this[idx++];\n }\n for (; idx < length; idx++) {\n result = callback(result, this[idx], idx, this);\n }\n return result;\n },\n reduceRight: function (callback) {\n var idx = this.length - 1, result;\n if (arguments.length == 2) {\n result = arguments[1];\n } else if (idx > 0) {\n result = this[idx--];\n }\n for (; idx >= 0; idx--) {\n result = callback(result, this[idx], idx, this);\n }\n return result;\n },\n filter: function (callback) {\n var idx = 0, result = [], item, length = this.length;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback(item, idx, this)) {\n result[result.length] = item;\n }\n }\n return result;\n },\n find: function (callback) {\n var idx = 0, item, length = this.length;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback(item, idx, this)) {\n return item;\n }\n }\n },\n every: function (callback) {\n var idx = 0, item, length = this.length;\n for (; idx < length; idx++) {\n item = this[idx];\n if (!callback(item, idx, this)) {\n return false;\n }\n }\n return true;\n },\n some: function (callback) {\n var idx = 0, item, length = this.length;\n for (; idx < length; idx++) {\n item = this[idx];\n if (callback(item, idx, this)) {\n return true;\n }\n }\n return false;\n },\n remove: function (item) {\n var idx = this.indexOf(item);\n if (idx !== -1) {\n this.splice(idx, 1);\n }\n },\n empty: function () {\n this.splice(0, this.length);\n }\n });\n var LazyObservableArray = ObservableArray.extend({\n init: function (data, type) {\n Observable.fn.init.call(this);\n this.type = type || ObservableObject;\n for (var idx = 0; idx < data.length; idx++) {\n this[idx] = data[idx];\n }\n this.length = idx;\n this._parent = proxy(function () {\n return this;\n }, this);\n },\n at: function (index) {\n var item = this[index];\n if (!(item instanceof this.type)) {\n item = this[index] = this.wrap(item, this._parent);\n } else {\n item.parent = this._parent;\n }\n return item;\n }\n });\n function eventHandler(context, type, field, prefix) {\n return function (e) {\n var event = {}, key;\n for (key in e) {\n event[key] = e[key];\n }\n if (prefix) {\n event.field = field + '.' + e.field;\n } else {\n event.field = field;\n }\n if (type == CHANGE && context._notifyChange) {\n context._notifyChange(event);\n }\n context.trigger(type, event);\n };\n }\n var ObservableObject = Observable.extend({\n init: function (value) {\n var that = this, member, field, parent = function () {\n return that;\n };\n Observable.fn.init.call(this);\n this._handlers = {};\n for (field in value) {\n member = value[field];\n if (typeof member === 'object' && member && !member.getTime && field.charAt(0) != '_') {\n member = that.wrap(member, field, parent);\n }\n that[field] = member;\n }\n that.uid = kendo.guid();\n },\n shouldSerialize: function (field) {\n return this.hasOwnProperty(field) && field !== '_handlers' && field !== '_events' && typeof this[field] !== FUNCTION && field !== 'uid';\n },\n forEach: function (f) {\n for (var i in this) {\n if (this.shouldSerialize(i)) {\n f(this[i], i);\n }\n }\n },\n toJSON: function () {\n var result = {}, value, field;\n for (field in this) {\n if (this.shouldSerialize(field)) {\n value = this[field];\n if (value instanceof ObservableObject || value instanceof ObservableArray) {\n value = value.toJSON();\n }\n result[field] = value;\n }\n }\n return result;\n },\n get: function (field) {\n var that = this, result;\n that.trigger(GET, { field: field });\n if (field === 'this') {\n result = that;\n } else {\n result = kendo.getter(field, true)(that);\n }\n return result;\n },\n _set: function (field, value) {\n var that = this;\n var composite = field.indexOf('.') >= 0;\n if (composite) {\n var paths = field.split('.'), path = '';\n while (paths.length > 1) {\n path += paths.shift();\n var obj = kendo.getter(path, true)(that);\n if (obj instanceof ObservableObject) {\n obj.set(paths.join('.'), value);\n return composite;\n }\n path += '.';\n }\n }\n kendo.setter(field)(that, value);\n return composite;\n },\n set: function (field, value) {\n var that = this, isSetPrevented = false, composite = field.indexOf('.') >= 0, current = kendo.getter(field, true)(that);\n if (current !== value) {\n if (current instanceof Observable && this._handlers[field]) {\n if (this._handlers[field].get) {\n current.unbind(GET, this._handlers[field].get);\n }\n current.unbind(CHANGE, this._handlers[field].change);\n }\n isSetPrevented = that.trigger('set', {\n field: field,\n value: value\n });\n if (!isSetPrevented) {\n if (!composite) {\n value = that.wrap(value, field, function () {\n return that;\n });\n }\n if (!that._set(field, value) || field.indexOf('(') >= 0 || field.indexOf('[') >= 0) {\n that.trigger(CHANGE, { field: field });\n }\n }\n }\n return isSetPrevented;\n },\n parent: noop,\n wrap: function (object, field, parent) {\n var that = this;\n var get;\n var change;\n var type = toString.call(object);\n if (object != null && (type === '[object Object]' || type === '[object Array]')) {\n var isObservableArray = object instanceof ObservableArray;\n var isDataSource = object instanceof DataSource;\n if (type === '[object Object]' && !isDataSource && !isObservableArray) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n get = eventHandler(that, GET, field, true);\n object.bind(GET, get);\n change = eventHandler(that, CHANGE, field, true);\n object.bind(CHANGE, change);\n that._handlers[field] = {\n get: get,\n change: change\n };\n } else if (type === '[object Array]' || isObservableArray || isDataSource) {\n if (!isObservableArray && !isDataSource) {\n object = new ObservableArray(object);\n }\n change = eventHandler(that, CHANGE, field, false);\n object.bind(CHANGE, change);\n that._handlers[field] = { change: change };\n }\n object.parent = parent;\n }\n return object;\n }\n });\n function equal(x, y) {\n if (x === y) {\n return true;\n }\n var xtype = $.type(x), ytype = $.type(y), field;\n if (xtype !== ytype) {\n return false;\n }\n if (xtype === 'date') {\n return x.getTime() === y.getTime();\n }\n if (xtype !== 'object' && xtype !== 'array') {\n return false;\n }\n for (field in x) {\n if (!equal(x[field], y[field])) {\n return false;\n }\n }\n return true;\n }\n var parsers = {\n 'number': function (value) {\n return kendo.parseFloat(value);\n },\n 'date': function (value) {\n return kendo.parseDate(value);\n },\n 'boolean': function (value) {\n if (typeof value === STRING) {\n return value.toLowerCase() === 'true';\n }\n return value != null ? !!value : value;\n },\n 'string': function (value) {\n return value != null ? value + '' : value;\n },\n 'default': function (value) {\n return value;\n }\n };\n var defaultValues = {\n 'string': '',\n 'number': 0,\n 'date': new Date(),\n 'boolean': false,\n 'default': ''\n };\n function getFieldByName(obj, name) {\n var field, fieldName;\n for (fieldName in obj) {\n field = obj[fieldName];\n if (isPlainObject(field) && field.field && field.field === name) {\n return field;\n } else if (field === name) {\n return field;\n }\n }\n return null;\n }\n var Model = ObservableObject.extend({\n init: function (data) {\n var that = this;\n if (!data || $.isEmptyObject(data)) {\n data = $.extend({}, that.defaults, data);\n if (that._initializers) {\n for (var idx = 0; idx < that._initializers.length; idx++) {\n var name = that._initializers[idx];\n data[name] = that.defaults[name]();\n }\n }\n }\n ObservableObject.fn.init.call(that, data);\n that.dirty = false;\n if (that.idField) {\n that.id = that.get(that.idField);\n if (that.id === undefined) {\n that.id = that._defaultId;\n }\n }\n },\n shouldSerialize: function (field) {\n return ObservableObject.fn.shouldSerialize.call(this, field) && field !== 'uid' && !(this.idField !== 'id' && field === 'id') && field !== 'dirty' && field !== '_accessors';\n },\n _parse: function (field, value) {\n var that = this, fieldName = field, fields = that.fields || {}, parse;\n field = fields[field];\n if (!field) {\n field = getFieldByName(fields, fieldName);\n }\n if (field) {\n parse = field.parse;\n if (!parse && field.type) {\n parse = parsers[field.type.toLowerCase()];\n }\n }\n return parse ? parse(value) : value;\n },\n _notifyChange: function (e) {\n var action = e.action;\n if (action == 'add' || action == 'remove') {\n this.dirty = true;\n }\n },\n editable: function (field) {\n field = (this.fields || {})[field];\n return field ? field.editable !== false : true;\n },\n set: function (field, value, initiator) {\n var that = this;\n var dirty = that.dirty;\n if (that.editable(field)) {\n value = that._parse(field, value);\n if (!equal(value, that.get(field))) {\n that.dirty = true;\n if (ObservableObject.fn.set.call(that, field, value, initiator) && !dirty) {\n that.dirty = dirty;\n }\n }\n }\n },\n accept: function (data) {\n var that = this, parent = function () {\n return that;\n }, field;\n for (field in data) {\n var value = data[field];\n if (field.charAt(0) != '_') {\n value = that.wrap(data[field], field, parent);\n }\n that._set(field, value);\n }\n if (that.idField) {\n that.id = that.get(that.idField);\n }\n that.dirty = false;\n },\n isNew: function () {\n return this.id === this._defaultId;\n }\n });\n Model.define = function (base, options) {\n if (options === undefined) {\n options = base;\n base = Model;\n }\n var model, proto = extend({ defaults: {} }, options), name, field, type, value, idx, length, fields = {}, originalName, id = proto.id, functionFields = [];\n if (id) {\n proto.idField = id;\n }\n if (proto.id) {\n delete proto.id;\n }\n if (id) {\n proto.defaults[id] = proto._defaultId = '';\n }\n if (toString.call(proto.fields) === '[object Array]') {\n for (idx = 0, length = proto.fields.length; idx < length; idx++) {\n field = proto.fields[idx];\n if (typeof field === STRING) {\n fields[field] = {};\n } else if (field.field) {\n fields[field.field] = field;\n }\n }\n proto.fields = fields;\n }\n for (name in proto.fields) {\n field = proto.fields[name];\n type = field.type || 'default';\n value = null;\n originalName = name;\n name = typeof field.field === STRING ? field.field : name;\n if (!field.nullable) {\n value = proto.defaults[originalName !== name ? originalName : name] = field.defaultValue !== undefined ? field.defaultValue : defaultValues[type.toLowerCase()];\n if (typeof value === 'function') {\n functionFields.push(name);\n }\n }\n if (options.id === name) {\n proto._defaultId = value;\n }\n proto.defaults[originalName !== name ? originalName : name] = value;\n field.parse = field.parse || parsers[type];\n }\n if (functionFields.length > 0) {\n proto._initializers = functionFields;\n }\n model = base.extend(proto);\n model.define = function (options) {\n return Model.define(model, options);\n };\n if (proto.fields) {\n model.fields = proto.fields;\n model.idField = proto.idField;\n }\n return model;\n };\n var Comparer = {\n selector: function (field) {\n return isFunction(field) ? field : getter(field);\n },\n compare: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n a = selector(a);\n b = selector(b);\n if (a == null && b == null) {\n return 0;\n }\n if (a == null) {\n return -1;\n }\n if (b == null) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : a < b ? -1 : 0;\n };\n },\n create: function (sort) {\n var compare = sort.compare || this.compare(sort.field);\n if (sort.dir == 'desc') {\n return function (a, b) {\n return compare(b, a, true);\n };\n }\n return compare;\n },\n combine: function (comparers) {\n return function (a, b) {\n var result = comparers[0](a, b), idx, length;\n for (idx = 1, length = comparers.length; idx < length; idx++) {\n result = result || comparers[idx](a, b);\n }\n return result;\n };\n }\n };\n var StableComparer = extend({}, Comparer, {\n asc: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n if (valueA == null) {\n return -1;\n }\n if (valueB == null) {\n return 1;\n }\n if (valueA.localeCompare) {\n return valueA.localeCompare(valueB);\n }\n return valueA > valueB ? 1 : -1;\n };\n },\n desc: function (field) {\n var selector = this.selector(field);\n return function (a, b) {\n var valueA = selector(a);\n var valueB = selector(b);\n if (valueA && valueA.getTime && valueB && valueB.getTime) {\n valueA = valueA.getTime();\n valueB = valueB.getTime();\n }\n if (valueA === valueB) {\n return a.__position - b.__position;\n }\n if (valueA == null) {\n return 1;\n }\n if (valueB == null) {\n return -1;\n }\n if (valueB.localeCompare) {\n return valueB.localeCompare(valueA);\n }\n return valueA < valueB ? 1 : -1;\n };\n },\n create: function (sort) {\n return this[sort.dir](sort.field);\n }\n });\n map = function (array, callback) {\n var idx, length = array.length, result = new Array(length);\n for (idx = 0; idx < length; idx++) {\n result[idx] = callback(array[idx], idx, array);\n }\n return result;\n };\n var operators = function () {\n function quote(value) {\n return value.replace(quoteRegExp, '\\\\').replace(newLineRegExp, '');\n }\n function operator(op, a, b, ignore) {\n var date;\n if (b != null) {\n if (typeof b === STRING) {\n b = quote(b);\n date = dateRegExp.exec(b);\n if (date) {\n b = new Date(+date[1]);\n } else if (ignore) {\n b = '\\'' + b.toLowerCase() + '\\'';\n a = '((' + a + ' || \\'\\')+\\'\\').toLowerCase()';\n } else {\n b = '\\'' + b + '\\'';\n }\n }\n if (b.getTime) {\n a = '(' + a + '&&' + a + '.getTime?' + a + '.getTime():' + a + ')';\n b = b.getTime();\n }\n }\n return a + ' ' + op + ' ' + b;\n }\n return {\n quote: function (value) {\n if (value && value.getTime) {\n return 'new Date(' + value.getTime() + ')';\n }\n if (typeof value == 'string') {\n return '\\'' + quote(value) + '\\'';\n }\n return '' + value;\n },\n eq: function (a, b, ignore) {\n return operator('==', a, b, ignore);\n },\n neq: function (a, b, ignore) {\n return operator('!=', a, b, ignore);\n },\n gt: function (a, b, ignore) {\n return operator('>', a, b, ignore);\n },\n gte: function (a, b, ignore) {\n return operator('>=', a, b, ignore);\n },\n lt: function (a, b, ignore) {\n return operator('<', a, b, ignore);\n },\n lte: function (a, b, ignore) {\n return operator('<=', a, b, ignore);\n },\n startswith: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.lastIndexOf(\\'' + b + '\\', 0) == 0';\n },\n doesnotstartwith: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.lastIndexOf(\\'' + b + '\\', 0) == -1';\n },\n endswith: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.indexOf(\\'' + b + '\\', ' + a + '.length - ' + (b || '').length + ') >= 0';\n },\n doesnotendwith: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.indexOf(\\'' + b + '\\', ' + a + '.length - ' + (b || '').length + ') < 0';\n },\n contains: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.indexOf(\\'' + b + '\\') >= 0';\n },\n doesnotcontain: function (a, b, ignore) {\n if (ignore) {\n a = '(' + a + ' || \\'\\').toLowerCase()';\n if (b) {\n b = b.toLowerCase();\n }\n }\n if (b) {\n b = quote(b);\n }\n return a + '.indexOf(\\'' + b + '\\') == -1';\n },\n isempty: function (a) {\n return a + ' === \\'\\'';\n },\n isnotempty: function (a) {\n return a + ' !== \\'\\'';\n },\n isnull: function (a) {\n return '(' + a + ' === null || ' + a + ' === undefined)';\n },\n isnotnull: function (a) {\n return '(' + a + ' !== null && ' + a + ' !== undefined)';\n }\n };\n }();\n function Query(data) {\n this.data = data || [];\n }\n Query.filterExpr = function (expression) {\n var expressions = [], logic = {\n and: ' && ',\n or: ' || '\n }, idx, length, filter, expr, fieldFunctions = [], operatorFunctions = [], field, operator, filters = expression.filters;\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n field = filter.field;\n operator = filter.operator;\n if (filter.filters) {\n expr = Query.filterExpr(filter);\n filter = expr.expression.replace(/__o\\[(\\d+)\\]/g, function (match, index) {\n index = +index;\n return '__o[' + (operatorFunctions.length + index) + ']';\n }).replace(/__f\\[(\\d+)\\]/g, function (match, index) {\n index = +index;\n return '__f[' + (fieldFunctions.length + index) + ']';\n });\n operatorFunctions.push.apply(operatorFunctions, expr.operators);\n fieldFunctions.push.apply(fieldFunctions, expr.fields);\n } else {\n if (typeof field === FUNCTION) {\n expr = '__f[' + fieldFunctions.length + '](d)';\n fieldFunctions.push(field);\n } else {\n expr = kendo.expr(field);\n }\n if (typeof operator === FUNCTION) {\n filter = '__o[' + operatorFunctions.length + '](' + expr + ', ' + operators.quote(filter.value) + ')';\n operatorFunctions.push(operator);\n } else {\n filter = operators[(operator || 'eq').toLowerCase()](expr, filter.value, filter.ignoreCase !== undefined ? filter.ignoreCase : true);\n }\n }\n expressions.push(filter);\n }\n return {\n expression: '(' + expressions.join(logic[expression.logic]) + ')',\n fields: fieldFunctions,\n operators: operatorFunctions\n };\n };\n function normalizeSort(field, dir) {\n if (field) {\n var descriptor = typeof field === STRING ? {\n field: field,\n dir: dir\n } : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return grep(descriptors, function (d) {\n return !!d.dir;\n });\n }\n }\n var operatorMap = {\n '==': 'eq',\n equals: 'eq',\n isequalto: 'eq',\n equalto: 'eq',\n equal: 'eq',\n '!=': 'neq',\n ne: 'neq',\n notequals: 'neq',\n isnotequalto: 'neq',\n notequalto: 'neq',\n notequal: 'neq',\n '<': 'lt',\n islessthan: 'lt',\n lessthan: 'lt',\n less: 'lt',\n '<=': 'lte',\n le: 'lte',\n islessthanorequalto: 'lte',\n lessthanequal: 'lte',\n '>': 'gt',\n isgreaterthan: 'gt',\n greaterthan: 'gt',\n greater: 'gt',\n '>=': 'gte',\n isgreaterthanorequalto: 'gte',\n greaterthanequal: 'gte',\n ge: 'gte',\n notsubstringof: 'doesnotcontain',\n isnull: 'isnull',\n isempty: 'isempty',\n isnotempty: 'isnotempty'\n };\n function normalizeOperator(expression) {\n var idx, length, filter, operator, filters = expression.filters;\n if (filters) {\n for (idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n operator = filter.operator;\n if (operator && typeof operator === STRING) {\n filter.operator = operatorMap[operator.toLowerCase()] || operator;\n }\n normalizeOperator(filter);\n }\n }\n }\n function normalizeFilter(expression) {\n if (expression && !isEmptyObject(expression)) {\n if (isArray(expression) || !expression.filters) {\n expression = {\n logic: 'and',\n filters: isArray(expression) ? expression : [expression]\n };\n }\n normalizeOperator(expression);\n return expression;\n }\n }\n Query.normalizeFilter = normalizeFilter;\n function compareDescriptor(f1, f2) {\n if (f1.logic || f2.logic) {\n return false;\n }\n return f1.field === f2.field && f1.value === f2.value && f1.operator === f2.operator;\n }\n function normalizeDescriptor(filter) {\n filter = filter || {};\n if (isEmptyObject(filter)) {\n return {\n logic: 'and',\n filters: []\n };\n }\n return normalizeFilter(filter);\n }\n function fieldComparer(a, b) {\n if (b.logic || a.field > b.field) {\n return 1;\n } else if (a.field < b.field) {\n return -1;\n } else {\n return 0;\n }\n }\n function compareFilters(expr1, expr2) {\n expr1 = normalizeDescriptor(expr1);\n expr2 = normalizeDescriptor(expr2);\n if (expr1.logic !== expr2.logic) {\n return false;\n }\n var f1, f2;\n var filters1 = (expr1.filters || []).slice();\n var filters2 = (expr2.filters || []).slice();\n if (filters1.length !== filters2.length) {\n return false;\n }\n filters1 = filters1.sort(fieldComparer);\n filters2 = filters2.sort(fieldComparer);\n for (var idx = 0; idx < filters1.length; idx++) {\n f1 = filters1[idx];\n f2 = filters2[idx];\n if (f1.logic && f2.logic) {\n if (!compareFilters(f1, f2)) {\n return false;\n }\n } else if (!compareDescriptor(f1, f2)) {\n return false;\n }\n }\n return true;\n }\n Query.compareFilters = compareFilters;\n function normalizeAggregate(expressions) {\n return isArray(expressions) ? expressions : [expressions];\n }\n function normalizeGroup(field, dir) {\n var descriptor = typeof field === STRING ? {\n field: field,\n dir: dir\n } : field, descriptors = isArray(descriptor) ? descriptor : descriptor !== undefined ? [descriptor] : [];\n return map(descriptors, function (d) {\n return {\n field: d.field,\n dir: d.dir || 'asc',\n aggregates: d.aggregates\n };\n });\n }\n Query.prototype = {\n toArray: function () {\n return this.data;\n },\n range: function (index, count) {\n return new Query(this.data.slice(index, index + count));\n },\n skip: function (count) {\n return new Query(this.data.slice(count));\n },\n take: function (count) {\n return new Query(this.data.slice(0, count));\n },\n select: function (selector) {\n return new Query(map(this.data, selector));\n },\n order: function (selector, dir) {\n var sort = { dir: dir };\n if (selector) {\n if (selector.compare) {\n sort.compare = selector.compare;\n } else {\n sort.field = selector;\n }\n }\n return new Query(this.data.slice(0).sort(Comparer.create(sort)));\n },\n orderBy: function (selector) {\n return this.order(selector, 'asc');\n },\n orderByDescending: function (selector) {\n return this.order(selector, 'desc');\n },\n sort: function (field, dir, comparer) {\n var idx, length, descriptors = normalizeSort(field, dir), comparers = [];\n comparer = comparer || Comparer;\n if (descriptors.length) {\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n comparers.push(comparer.create(descriptors[idx]));\n }\n return this.orderBy({ compare: comparer.combine(comparers) });\n }\n return this;\n },\n filter: function (expressions) {\n var idx, current, length, compiled, predicate, data = this.data, fields, operators, result = [], filter;\n expressions = normalizeFilter(expressions);\n if (!expressions || expressions.filters.length === 0) {\n return this;\n }\n compiled = Query.filterExpr(expressions);\n fields = compiled.fields;\n operators = compiled.operators;\n predicate = filter = new Function('d, __f, __o', 'return ' + compiled.expression);\n if (fields.length || operators.length) {\n filter = function (d) {\n return predicate(d, fields, operators);\n };\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n current = data[idx];\n if (filter(current)) {\n result.push(current);\n }\n }\n return new Query(result);\n },\n group: function (descriptors, allData) {\n descriptors = normalizeGroup(descriptors || []);\n allData = allData || this.data;\n var that = this, result = new Query(that.data), descriptor;\n if (descriptors.length > 0) {\n descriptor = descriptors[0];\n result = result.groupBy(descriptor).select(function (group) {\n var data = new Query(allData).filter([{\n field: group.field,\n operator: 'eq',\n value: group.value,\n ignoreCase: false\n }]);\n return {\n field: group.field,\n value: group.value,\n items: descriptors.length > 1 ? new Query(group.items).group(descriptors.slice(1), data.toArray()).toArray() : group.items,\n hasSubgroups: descriptors.length > 1,\n aggregates: data.aggregate(descriptor.aggregates)\n };\n });\n }\n return result;\n },\n groupBy: function (descriptor) {\n if (isEmptyObject(descriptor) || !this.data.length) {\n return new Query([]);\n }\n var field = descriptor.field, sorted = this._sortForGrouping(field, descriptor.dir || 'asc'), accessor = kendo.accessor(field), item, groupValue = accessor.get(sorted[0], field), group = {\n field: field,\n value: groupValue,\n items: []\n }, currentValue, idx, len, result = [group];\n for (idx = 0, len = sorted.length; idx < len; idx++) {\n item = sorted[idx];\n currentValue = accessor.get(item, field);\n if (!groupValueComparer(groupValue, currentValue)) {\n groupValue = currentValue;\n group = {\n field: field,\n value: groupValue,\n items: []\n };\n result.push(group);\n }\n group.items.push(item);\n }\n return new Query(result);\n },\n _sortForGrouping: function (field, dir) {\n var idx, length, data = this.data;\n if (!stableSort) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n data[idx].__position = idx;\n }\n data = new Query(data).sort(field, dir, StableComparer).toArray();\n for (idx = 0, length = data.length; idx < length; idx++) {\n delete data[idx].__position;\n }\n return data;\n }\n return this.sort(field, dir).toArray();\n },\n aggregate: function (aggregates) {\n var idx, len, result = {}, state = {};\n if (aggregates && aggregates.length) {\n for (idx = 0, len = this.data.length; idx < len; idx++) {\n calculateAggregate(result, aggregates, this.data[idx], idx, len, state);\n }\n }\n return result;\n }\n };\n function groupValueComparer(a, b) {\n if (a && a.getTime && b && b.getTime) {\n return a.getTime() === b.getTime();\n }\n return a === b;\n }\n function calculateAggregate(accumulator, aggregates, item, index, length, state) {\n aggregates = aggregates || [];\n var idx, aggr, functionName, len = aggregates.length;\n for (idx = 0; idx < len; idx++) {\n aggr = aggregates[idx];\n functionName = aggr.aggregate;\n var field = aggr.field;\n accumulator[field] = accumulator[field] || {};\n state[field] = state[field] || {};\n state[field][functionName] = state[field][functionName] || {};\n accumulator[field][functionName] = functions[functionName.toLowerCase()](accumulator[field][functionName], item, kendo.accessor(field), index, length, state[field][functionName]);\n }\n }\n var functions = {\n sum: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n return accumulator;\n },\n count: function (accumulator) {\n return (accumulator || 0) + 1;\n },\n average: function (accumulator, item, accessor, index, length, state) {\n var value = accessor.get(item);\n if (state.count === undefined) {\n state.count = 0;\n }\n if (!isNumber(accumulator)) {\n accumulator = value;\n } else if (isNumber(value)) {\n accumulator += value;\n }\n if (isNumber(value)) {\n state.count++;\n }\n if (index == length - 1 && isNumber(accumulator)) {\n accumulator = accumulator / state.count;\n }\n return accumulator;\n },\n max: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator < value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n },\n min: function (accumulator, item, accessor) {\n var value = accessor.get(item);\n if (!isNumber(accumulator) && !isDate(accumulator)) {\n accumulator = value;\n }\n if (accumulator > value && (isNumber(value) || isDate(value))) {\n accumulator = value;\n }\n return accumulator;\n }\n };\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function isDate(val) {\n return val && val.getTime;\n }\n function toJSON(array) {\n var idx, length = array.length, result = new Array(length);\n for (idx = 0; idx < length; idx++) {\n result[idx] = array[idx].toJSON();\n }\n return result;\n }\n Query.process = function (data, options) {\n options = options || {};\n var query = new Query(data), group = options.group, sort = normalizeGroup(group || []).concat(normalizeSort(options.sort || [])), total, filterCallback = options.filterCallback, filter = options.filter, skip = options.skip, take = options.take;\n if (filter) {\n query = query.filter(filter);\n if (filterCallback) {\n query = filterCallback(query);\n }\n total = query.toArray().length;\n }\n if (sort) {\n query = query.sort(sort);\n if (group) {\n data = query.toArray();\n }\n }\n if (skip !== undefined && take !== undefined) {\n query = query.range(skip, take);\n }\n if (group) {\n query = query.group(group, data);\n }\n return {\n total: total,\n data: query.toArray()\n };\n };\n var LocalTransport = Class.extend({\n init: function (options) {\n this.data = options.data;\n },\n read: function (options) {\n options.success(this.data);\n },\n update: function (options) {\n options.success(options.data);\n },\n create: function (options) {\n options.success(options.data);\n },\n destroy: function (options) {\n options.success(options.data);\n }\n });\n var RemoteTransport = Class.extend({\n init: function (options) {\n var that = this, parameterMap;\n options = that.options = extend({}, that.options, options);\n each(crud, function (index, type) {\n if (typeof options[type] === STRING) {\n options[type] = { url: options[type] };\n }\n });\n that.cache = options.cache ? Cache.create(options.cache) : {\n find: noop,\n add: noop\n };\n parameterMap = options.parameterMap;\n if (isFunction(options.push)) {\n that.push = options.push;\n }\n if (!that.push) {\n that.push = identity;\n }\n that.parameterMap = isFunction(parameterMap) ? parameterMap : function (options) {\n var result = {};\n each(options, function (option, value) {\n if (option in parameterMap) {\n option = parameterMap[option];\n if (isPlainObject(option)) {\n value = option.value(value);\n option = option.key;\n }\n }\n result[option] = value;\n });\n return result;\n };\n },\n options: { parameterMap: identity },\n create: function (options) {\n return ajax(this.setup(options, CREATE));\n },\n read: function (options) {\n var that = this, success, error, result, cache = that.cache;\n options = that.setup(options, READ);\n success = options.success || noop;\n error = options.error || noop;\n result = cache.find(options.data);\n if (result !== undefined) {\n success(result);\n } else {\n options.success = function (result) {\n cache.add(options.data, result);\n success(result);\n };\n $.ajax(options);\n }\n },\n update: function (options) {\n return ajax(this.setup(options, UPDATE));\n },\n destroy: function (options) {\n return ajax(this.setup(options, DESTROY));\n },\n setup: function (options, type) {\n options = options || {};\n var that = this, parameters, operation = that.options[type], data = isFunction(operation.data) ? operation.data(options.data) : operation.data;\n options = extend(true, {}, operation, options);\n parameters = extend(true, {}, data, options.data);\n options.data = that.parameterMap(parameters, type);\n if (isFunction(options.url)) {\n options.url = options.url(parameters);\n }\n return options;\n }\n });\n var Cache = Class.extend({\n init: function () {\n this._store = {};\n },\n add: function (key, data) {\n if (key !== undefined) {\n this._store[stringify(key)] = data;\n }\n },\n find: function (key) {\n return this._store[stringify(key)];\n },\n clear: function () {\n this._store = {};\n },\n remove: function (key) {\n delete this._store[stringify(key)];\n }\n });\n Cache.create = function (options) {\n var store = {\n 'inmemory': function () {\n return new Cache();\n }\n };\n if (isPlainObject(options) && isFunction(options.find)) {\n return options;\n }\n if (options === true) {\n return new Cache();\n }\n return store[options]();\n };\n function serializeRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, getter, originalName, idx, setters = {}, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n if (!setters[originalName]) {\n setters[originalName] = kendo.setter(originalName);\n }\n setters[originalName](record, getters[getter](record));\n delete record[getter];\n }\n }\n }\n }\n function convertRecords(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, getter, originalName, idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n for (getter in getters) {\n record[getter] = modelInstance._parse(getter, getters[getter](record));\n originalName = fieldNames[getter];\n if (originalName && originalName !== getter) {\n delete record[originalName];\n }\n }\n }\n }\n function convertGroup(data, getters, modelInstance, originalFieldNames, fieldNames) {\n var record, idx, fieldName, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n record = data[idx];\n fieldName = originalFieldNames[record.field];\n if (fieldName && fieldName != record.field) {\n record.field = fieldName;\n }\n record.value = modelInstance._parse(record.field, record.value);\n if (record.hasSubgroups) {\n convertGroup(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n } else {\n convertRecords(record.items, getters, modelInstance, originalFieldNames, fieldNames);\n }\n }\n }\n function wrapDataAccess(originalFunction, model, converter, getters, originalFieldNames, fieldNames) {\n return function (data) {\n data = originalFunction(data);\n if (data && !isEmptyObject(getters)) {\n if (toString.call(data) !== '[object Array]' && !(data instanceof ObservableArray)) {\n data = [data];\n }\n converter(data, getters, new model(), originalFieldNames, fieldNames);\n }\n return data || [];\n };\n }\n var DataReader = Class.extend({\n init: function (schema) {\n var that = this, member, get, model, base;\n schema = schema || {};\n for (member in schema) {\n get = schema[member];\n that[member] = typeof get === STRING ? getter(get) : get;\n }\n base = schema.modelBase || Model;\n if (isPlainObject(that.model)) {\n that.model = model = base.define(that.model);\n }\n var dataFunction = proxy(that.data, that);\n that._dataAccessFunction = dataFunction;\n if (that.model) {\n var groupsFunction = proxy(that.groups, that), serializeFunction = proxy(that.serialize, that), originalFieldNames = {}, getters = {}, serializeGetters = {}, fieldNames = {}, shouldSerialize = false, fieldName;\n model = that.model;\n if (model.fields) {\n each(model.fields, function (field, value) {\n var fromName;\n fieldName = field;\n if (isPlainObject(value) && value.field) {\n fieldName = value.field;\n } else if (typeof value === STRING) {\n fieldName = value;\n }\n if (isPlainObject(value) && value.from) {\n fromName = value.from;\n }\n shouldSerialize = shouldSerialize || fromName && fromName !== field || fieldName !== field;\n getters[field] = getter(fromName || fieldName);\n serializeGetters[field] = getter(field);\n originalFieldNames[fromName || fieldName] = field;\n fieldNames[field] = fromName || fieldName;\n });\n if (!schema.serialize && shouldSerialize) {\n that.serialize = wrapDataAccess(serializeFunction, model, serializeRecords, serializeGetters, originalFieldNames, fieldNames);\n }\n }\n that._dataAccessFunction = dataFunction;\n that.data = wrapDataAccess(dataFunction, model, convertRecords, getters, originalFieldNames, fieldNames);\n that.groups = wrapDataAccess(groupsFunction, model, convertGroup, getters, originalFieldNames, fieldNames);\n }\n },\n errors: function (data) {\n return data ? data.errors : null;\n },\n parse: identity,\n data: identity,\n total: function (data) {\n return data.length;\n },\n groups: identity,\n aggregates: function () {\n return {};\n },\n serialize: function (data) {\n return data;\n }\n });\n function mergeGroups(target, dest, skip, take) {\n var group, idx = 0, items;\n while (dest.length && take) {\n group = dest[idx];\n items = group.items;\n var length = items.length;\n if (target && target.field === group.field && target.value === group.value) {\n if (target.hasSubgroups && target.items.length) {\n mergeGroups(target.items[target.items.length - 1], group.items, skip, take);\n } else {\n items = items.slice(skip, skip + take);\n target.items = target.items.concat(items);\n }\n dest.splice(idx--, 1);\n } else if (group.hasSubgroups && items.length) {\n mergeGroups(group, items, skip, take);\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n } else {\n items = items.slice(skip, skip + take);\n group.items = items;\n if (!group.items.length) {\n dest.splice(idx--, 1);\n }\n }\n if (items.length === 0) {\n skip -= length;\n } else {\n skip = 0;\n take -= items.length;\n }\n if (++idx >= dest.length) {\n break;\n }\n }\n if (idx < dest.length) {\n dest.splice(idx, dest.length - idx);\n }\n }\n function flattenGroups(data) {\n var idx, result = [], length, items, itemIndex;\n for (idx = 0, length = data.length; idx < length; idx++) {\n var group = data.at(idx);\n if (group.hasSubgroups) {\n result = result.concat(flattenGroups(group.items));\n } else {\n items = group.items;\n for (itemIndex = 0; itemIndex < items.length; itemIndex++) {\n result.push(items.at(itemIndex));\n }\n }\n }\n return result;\n }\n function wrapGroupItems(data, model) {\n var idx, length, group;\n if (model) {\n for (idx = 0, length = data.length; idx < length; idx++) {\n group = data.at(idx);\n if (group.hasSubgroups) {\n wrapGroupItems(group.items, model);\n } else {\n group.items = new LazyObservableArray(group.items, model);\n }\n }\n }\n }\n function eachGroupItems(data, func) {\n for (var idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].hasSubgroups) {\n if (eachGroupItems(data[idx].items, func)) {\n return true;\n }\n } else if (func(data[idx].items, data[idx])) {\n return true;\n }\n }\n }\n function replaceInRanges(ranges, data, item, observable) {\n for (var idx = 0; idx < ranges.length; idx++) {\n if (ranges[idx].data === data) {\n break;\n }\n if (replaceInRange(ranges[idx].data, item, observable)) {\n break;\n }\n }\n }\n function replaceInRange(items, item, observable) {\n for (var idx = 0, length = items.length; idx < length; idx++) {\n if (items[idx] && items[idx].hasSubgroups) {\n return replaceInRange(items[idx].items, item, observable);\n } else if (items[idx] === item || items[idx] === observable) {\n items[idx] = observable;\n return true;\n }\n }\n }\n function replaceWithObservable(view, data, ranges, type, serverGrouping) {\n for (var viewIndex = 0, length = view.length; viewIndex < length; viewIndex++) {\n var item = view[viewIndex];\n if (!item || item instanceof type) {\n continue;\n }\n if (item.hasSubgroups !== undefined && !serverGrouping) {\n replaceWithObservable(item.items, data, ranges, type, serverGrouping);\n } else {\n for (var idx = 0; idx < data.length; idx++) {\n if (data[idx] === item) {\n view[viewIndex] = data.at(idx);\n replaceInRanges(ranges, data, item, view[viewIndex]);\n break;\n }\n }\n }\n }\n }\n function removeModel(data, model) {\n var idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n var dataItem = data.at(idx);\n if (dataItem.uid == model.uid) {\n data.splice(idx, 1);\n return dataItem;\n }\n }\n }\n function indexOfPristineModel(data, model) {\n if (model) {\n return indexOf(data, function (item) {\n return item.uid && item.uid == model.uid || item[model.idField] === model.id && model.id !== model._defaultId;\n });\n }\n return -1;\n }\n function indexOfModel(data, model) {\n if (model) {\n return indexOf(data, function (item) {\n return item.uid == model.uid;\n });\n }\n return -1;\n }\n function indexOf(data, comparer) {\n var idx, length;\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (comparer(data[idx])) {\n return idx;\n }\n }\n return -1;\n }\n function fieldNameFromModel(fields, name) {\n if (fields && !isEmptyObject(fields)) {\n var descriptor = fields[name];\n var fieldName;\n if (isPlainObject(descriptor)) {\n fieldName = descriptor.from || descriptor.field || name;\n } else {\n fieldName = fields[name] || name;\n }\n if (isFunction(fieldName)) {\n return name;\n }\n return fieldName;\n }\n return name;\n }\n function convertFilterDescriptorsField(descriptor, model) {\n var idx, length, target = {};\n for (var field in descriptor) {\n if (field !== 'filters') {\n target[field] = descriptor[field];\n }\n }\n if (descriptor.filters) {\n target.filters = [];\n for (idx = 0, length = descriptor.filters.length; idx < length; idx++) {\n target.filters[idx] = convertFilterDescriptorsField(descriptor.filters[idx], model);\n }\n } else {\n target.field = fieldNameFromModel(model.fields, target.field);\n }\n return target;\n }\n function convertDescriptorsField(descriptors, model) {\n var idx, length, result = [], target, descriptor;\n for (idx = 0, length = descriptors.length; idx < length; idx++) {\n target = {};\n descriptor = descriptors[idx];\n for (var field in descriptor) {\n target[field] = descriptor[field];\n }\n target.field = fieldNameFromModel(model.fields, target.field);\n if (target.aggregates && isArray(target.aggregates)) {\n target.aggregates = convertDescriptorsField(target.aggregates, model);\n }\n result.push(target);\n }\n return result;\n }\n var DataSource = Observable.extend({\n init: function (options) {\n var that = this, model, data;\n if (options) {\n data = options.data;\n }\n options = that.options = extend({}, that.options, options);\n that._map = {};\n that._prefetch = {};\n that._data = [];\n that._pristineData = [];\n that._ranges = [];\n that._view = [];\n that._pristineTotal = 0;\n that._destroyed = [];\n that._pageSize = options.pageSize;\n that._page = options.page || (options.pageSize ? 1 : undefined);\n that._sort = normalizeSort(options.sort);\n that._filter = normalizeFilter(options.filter);\n that._group = normalizeGroup(options.group);\n that._aggregate = options.aggregate;\n that._total = options.total;\n that._shouldDetachObservableParents = true;\n Observable.fn.init.call(that);\n that.transport = Transport.create(options, data, that);\n if (isFunction(that.transport.push)) {\n that.transport.push({\n pushCreate: proxy(that._pushCreate, that),\n pushUpdate: proxy(that._pushUpdate, that),\n pushDestroy: proxy(that._pushDestroy, that)\n });\n }\n if (options.offlineStorage != null) {\n if (typeof options.offlineStorage == 'string') {\n var key = options.offlineStorage;\n that._storage = {\n getItem: function () {\n return JSON.parse(localStorage.getItem(key));\n },\n setItem: function (item) {\n localStorage.setItem(key, stringify(that.reader.serialize(item)));\n }\n };\n } else {\n that._storage = options.offlineStorage;\n }\n }\n that.reader = new kendo.data.readers[options.schema.type || 'json'](options.schema);\n model = that.reader.model || {};\n that._detachObservableParents();\n that._data = that._observe(that._data);\n that._online = true;\n that.bind([\n 'push',\n ERROR,\n CHANGE,\n REQUESTSTART,\n SYNC,\n REQUESTEND,\n PROGRESS\n ], options);\n },\n options: {\n data: null,\n schema: { modelBase: Model },\n offlineStorage: null,\n serverSorting: false,\n serverPaging: false,\n serverFiltering: false,\n serverGrouping: false,\n serverAggregates: false,\n batch: false\n },\n clone: function () {\n return this;\n },\n online: function (value) {\n if (value !== undefined) {\n if (this._online != value) {\n this._online = value;\n if (value) {\n return this.sync();\n }\n }\n return $.Deferred().resolve().promise();\n } else {\n return this._online;\n }\n },\n offlineData: function (state) {\n if (this.options.offlineStorage == null) {\n return null;\n }\n if (state !== undefined) {\n return this._storage.setItem(state);\n }\n return this._storage.getItem() || [];\n },\n _isServerGrouped: function () {\n var group = this.group() || [];\n return this.options.serverGrouping && group.length;\n },\n _pushCreate: function (result) {\n this._push(result, 'pushCreate');\n },\n _pushUpdate: function (result) {\n this._push(result, 'pushUpdate');\n },\n _pushDestroy: function (result) {\n this._push(result, 'pushDestroy');\n },\n _push: function (result, operation) {\n var data = this._readData(result);\n if (!data) {\n data = result;\n }\n this[operation](data);\n },\n _flatData: function (data, skip) {\n if (data) {\n if (this._isServerGrouped()) {\n return flattenGroups(data);\n }\n if (!skip) {\n for (var idx = 0; idx < data.length; idx++) {\n data.at(idx);\n }\n }\n }\n return data;\n },\n parent: noop,\n get: function (id) {\n var idx, length, data = this._flatData(this._data);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].id == id) {\n return data[idx];\n }\n }\n },\n getByUid: function (id) {\n var idx, length, data = this._flatData(this._data);\n if (!data) {\n return;\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].uid == id) {\n return data[idx];\n }\n }\n },\n indexOf: function (model) {\n return indexOfModel(this._data, model);\n },\n at: function (index) {\n return this._data.at(index);\n },\n data: function (value) {\n var that = this;\n if (value !== undefined) {\n that._detachObservableParents();\n that._data = this._observe(value);\n that._pristineData = value.slice(0);\n that._storeData();\n that._ranges = [];\n that.trigger('reset');\n that._addRange(that._data);\n that._total = that._data.length;\n that._pristineTotal = that._total;\n that._process(that._data);\n } else {\n if (that._data) {\n for (var idx = 0; idx < that._data.length; idx++) {\n that._data.at(idx);\n }\n }\n return that._data;\n }\n },\n view: function (value) {\n if (value === undefined) {\n return this._view;\n } else {\n this._view = this._observeView(value);\n }\n },\n _observeView: function (data) {\n var that = this;\n replaceWithObservable(data, that._data, that._ranges, that.reader.model || ObservableObject, that._isServerGrouped());\n var view = new LazyObservableArray(data, that.reader.model);\n view.parent = function () {\n return that.parent();\n };\n return view;\n },\n flatView: function () {\n var groups = this.group() || [];\n if (groups.length) {\n return flattenGroups(this._view);\n } else {\n return this._view;\n }\n },\n add: function (model) {\n return this.insert(this._data.length, model);\n },\n _createNewModel: function (model) {\n if (this.reader.model) {\n return new this.reader.model(model);\n }\n if (model instanceof ObservableObject) {\n return model;\n }\n return new ObservableObject(model);\n },\n insert: function (index, model) {\n if (!model) {\n model = index;\n index = 0;\n }\n if (!(model instanceof Model)) {\n model = this._createNewModel(model);\n }\n if (this._isServerGrouped()) {\n this._data.splice(index, 0, this._wrapInEmptyGroup(model));\n } else {\n this._data.splice(index, 0, model);\n }\n return model;\n },\n pushCreate: function (items) {\n if (!isArray(items)) {\n items = [items];\n }\n var pushed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var result = this.add(item);\n pushed.push(result);\n var pristine = result.toJSON();\n if (this._isServerGrouped()) {\n pristine = this._wrapInEmptyGroup(pristine);\n }\n this._pristineData.push(pristine);\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n if (pushed.length) {\n this.trigger('push', {\n type: 'create',\n items: pushed\n });\n }\n },\n pushUpdate: function (items) {\n if (!isArray(items)) {\n items = [items];\n }\n var pushed = [];\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n var target = this.get(model.id);\n if (target) {\n pushed.push(target);\n target.accept(item);\n target.trigger(CHANGE);\n this._updatePristineForModel(target, item);\n } else {\n this.pushCreate(item);\n }\n }\n if (pushed.length) {\n this.trigger('push', {\n type: 'update',\n items: pushed\n });\n }\n },\n pushDestroy: function (items) {\n var pushed = this._removeItems(items);\n if (pushed.length) {\n this.trigger('push', {\n type: 'destroy',\n items: pushed\n });\n }\n },\n _removeItems: function (items) {\n if (!isArray(items)) {\n items = [items];\n }\n var destroyed = [];\n var autoSync = this.options.autoSync;\n this.options.autoSync = false;\n try {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items[idx];\n var model = this._createNewModel(item);\n var found = false;\n this._eachItem(this._data, function (items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.id === model.id) {\n destroyed.push(item);\n items.splice(idx, 1);\n found = true;\n break;\n }\n }\n });\n if (found) {\n this._removePristineForModel(model);\n this._destroyed.pop();\n }\n }\n } finally {\n this.options.autoSync = autoSync;\n }\n return destroyed;\n },\n remove: function (model) {\n var result, that = this, hasGroups = that._isServerGrouped();\n this._eachItem(that._data, function (items) {\n result = removeModel(items, model);\n if (result && hasGroups) {\n if (!result.isNew || !result.isNew()) {\n that._destroyed.push(result);\n }\n return true;\n }\n });\n this._removeModelFromRanges(model);\n this._updateRangesLength();\n return model;\n },\n destroyed: function () {\n return this._destroyed;\n },\n created: function () {\n var idx, length, result = [], data = this._flatData(this._data);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew()) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n updated: function () {\n var idx, length, result = [], data = this._flatData(this._data);\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && !data[idx].isNew() && data[idx].dirty) {\n result.push(data[idx]);\n }\n }\n return result;\n },\n sync: function () {\n var that = this, created = [], updated = [], destroyed = that._destroyed;\n var promise = $.Deferred().resolve().promise();\n if (that.online()) {\n if (!that.reader.model) {\n return promise;\n }\n created = that.created();\n updated = that.updated();\n var promises = [];\n if (that.options.batch && that.transport.submit) {\n promises = that._sendSubmit(created, updated, destroyed);\n } else {\n promises.push.apply(promises, that._send('create', created));\n promises.push.apply(promises, that._send('update', updated));\n promises.push.apply(promises, that._send('destroy', destroyed));\n }\n promise = $.when.apply(null, promises).then(function () {\n var idx, length;\n for (idx = 0, length = arguments.length; idx < length; idx++) {\n that._accept(arguments[idx]);\n }\n that._storeData(true);\n that._change({ action: 'sync' });\n that.trigger(SYNC);\n });\n } else {\n that._storeData(true);\n that._change({ action: 'sync' });\n }\n return promise;\n },\n cancelChanges: function (model) {\n var that = this;\n if (model instanceof kendo.data.Model) {\n that._cancelModel(model);\n } else {\n that._destroyed = [];\n that._detachObservableParents();\n that._data = that._observe(that._pristineData);\n if (that.options.serverPaging) {\n that._total = that._pristineTotal;\n }\n that._ranges = [];\n that._addRange(that._data);\n that._change();\n that._markOfflineUpdatesAsDirty();\n }\n },\n _markOfflineUpdatesAsDirty: function () {\n var that = this;\n if (that.options.offlineStorage != null) {\n that._eachItem(that._data, function (items) {\n for (var idx = 0; idx < items.length; idx++) {\n var item = items.at(idx);\n if (item.__state__ == 'update') {\n item.dirty = true;\n }\n }\n });\n }\n },\n hasChanges: function () {\n var idx, length, data = this._flatData(this._data);\n if (this._destroyed.length) {\n return true;\n }\n for (idx = 0, length = data.length; idx < length; idx++) {\n if (data[idx].isNew && data[idx].isNew() || data[idx].dirty) {\n return true;\n }\n }\n return false;\n },\n _accept: function (result) {\n var that = this, models = result.models, response = result.response, idx = 0, serverGroup = that._isServerGrouped(), pristine = that._pristineData, type = result.type, length;\n that.trigger(REQUESTEND, {\n response: response,\n type: type\n });\n if (response && !isEmptyObject(response)) {\n response = that.reader.parse(response);\n if (that._handleCustomErrors(response)) {\n return;\n }\n response = that.reader.data(response);\n if (!isArray(response)) {\n response = [response];\n }\n } else {\n response = $.map(models, function (model) {\n return model.toJSON();\n });\n }\n if (type === 'destroy') {\n that._destroyed = [];\n }\n for (idx = 0, length = models.length; idx < length; idx++) {\n if (type !== 'destroy') {\n models[idx].accept(response[idx]);\n if (type === 'create') {\n pristine.push(serverGroup ? that._wrapInEmptyGroup(models[idx]) : response[idx]);\n } else if (type === 'update') {\n that._updatePristineForModel(models[idx], response[idx]);\n }\n } else {\n that._removePristineForModel(models[idx]);\n }\n }\n },\n _updatePristineForModel: function (model, values) {\n this._executeOnPristineForModel(model, function (index, items) {\n kendo.deepExtend(items[index], values);\n });\n },\n _executeOnPristineForModel: function (model, callback) {\n this._eachPristineItem(function (items) {\n var index = indexOfPristineModel(items, model);\n if (index > -1) {\n callback(index, items);\n return true;\n }\n });\n },\n _removePristineForModel: function (model) {\n this._executeOnPristineForModel(model, function (index, items) {\n items.splice(index, 1);\n });\n },\n _readData: function (data) {\n var read = !this._isServerGrouped() ? this.reader.data : this.reader.groups;\n return read.call(this.reader, data);\n },\n _eachPristineItem: function (callback) {\n this._eachItem(this._pristineData, callback);\n },\n _eachItem: function (data, callback) {\n if (data && data.length) {\n if (this._isServerGrouped()) {\n eachGroupItems(data, callback);\n } else {\n callback(data);\n }\n }\n },\n _pristineForModel: function (model) {\n var pristine, idx, callback = function (items) {\n idx = indexOfPristineModel(items, model);\n if (idx > -1) {\n pristine = items[idx];\n return true;\n }\n };\n this._eachPristineItem(callback);\n return pristine;\n },\n _cancelModel: function (model) {\n var pristine = this._pristineForModel(model);\n this._eachItem(this._data, function (items) {\n var idx = indexOfModel(items, model);\n if (idx >= 0) {\n if (pristine && (!model.isNew() || pristine.__state__)) {\n items[idx].accept(pristine);\n if (pristine.__state__ == 'update') {\n items[idx].dirty = true;\n }\n } else {\n items.splice(idx, 1);\n }\n }\n });\n },\n _submit: function (promises, data) {\n var that = this;\n that.trigger(REQUESTSTART, { type: 'submit' });\n that.transport.submit(extend({\n success: function (response, type) {\n var promise = $.grep(promises, function (x) {\n return x.type == type;\n })[0];\n if (promise) {\n promise.resolve({\n response: response,\n models: promise.models,\n type: type\n });\n }\n },\n error: function (response, status, error) {\n for (var idx = 0; idx < promises.length; idx++) {\n promises[idx].reject(response);\n }\n that.error(response, status, error);\n }\n }, data));\n },\n _sendSubmit: function (created, updated, destroyed) {\n var that = this, promises = [];\n if (that.options.batch) {\n if (created.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'create';\n deferred.models = created;\n }));\n }\n if (updated.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'update';\n deferred.models = updated;\n }));\n }\n if (destroyed.length) {\n promises.push($.Deferred(function (deferred) {\n deferred.type = 'destroy';\n deferred.models = destroyed;\n }));\n }\n that._submit(promises, {\n data: {\n created: that.reader.serialize(toJSON(created)),\n updated: that.reader.serialize(toJSON(updated)),\n destroyed: that.reader.serialize(toJSON(destroyed))\n }\n });\n }\n return promises;\n },\n _promise: function (data, models, type) {\n var that = this;\n return $.Deferred(function (deferred) {\n that.trigger(REQUESTSTART, { type: type });\n that.transport[type].call(that.transport, extend({\n success: function (response) {\n deferred.resolve({\n response: response,\n models: models,\n type: type\n });\n },\n error: function (response, status, error) {\n deferred.reject(response);\n that.error(response, status, error);\n }\n }, data));\n }).promise();\n },\n _send: function (method, data) {\n var that = this, idx, length, promises = [], converted = that.reader.serialize(toJSON(data));\n if (that.options.batch) {\n if (data.length) {\n promises.push(that._promise({ data: { models: converted } }, data, method));\n }\n } else {\n for (idx = 0, length = data.length; idx < length; idx++) {\n promises.push(that._promise({ data: converted[idx] }, [data[idx]], method));\n }\n }\n return promises;\n },\n read: function (data) {\n var that = this, params = that._params(data);\n var deferred = $.Deferred();\n that._queueRequest(params, function () {\n var isPrevented = that.trigger(REQUESTSTART, { type: 'read' });\n if (!isPrevented) {\n that.trigger(PROGRESS);\n that._ranges = [];\n that.trigger('reset');\n if (that.online()) {\n that.transport.read({\n data: params,\n success: function (data) {\n that.success(data, params);\n deferred.resolve();\n },\n error: function () {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n deferred.reject.apply(deferred, args);\n }\n });\n } else if (that.options.offlineStorage != null) {\n that.success(that.offlineData(), params);\n deferred.resolve();\n }\n } else {\n that._dequeueRequest();\n deferred.resolve(isPrevented);\n }\n });\n return deferred.promise();\n },\n _readAggregates: function (data) {\n return this.reader.aggregates(data);\n },\n success: function (data) {\n var that = this, options = that.options;\n that.trigger(REQUESTEND, {\n response: data,\n type: 'read'\n });\n if (that.online()) {\n data = that.reader.parse(data);\n if (that._handleCustomErrors(data)) {\n that._dequeueRequest();\n return;\n }\n that._total = that.reader.total(data);\n if (that._aggregate && options.serverAggregates) {\n that._aggregateResult = that._readAggregates(data);\n }\n data = that._readData(data);\n } else {\n data = that._readData(data);\n var items = [];\n var itemIds = {};\n var model = that.reader.model;\n var idField = model ? model.idField : 'id';\n var idx;\n for (idx = 0; idx < this._destroyed.length; idx++) {\n var id = this._destroyed[idx][idField];\n itemIds[id] = id;\n }\n for (idx = 0; idx < data.length; idx++) {\n var item = data[idx];\n var state = item.__state__;\n if (state == 'destroy') {\n if (!itemIds[item[idField]]) {\n this._destroyed.push(this._createNewModel(item));\n }\n } else {\n items.push(item);\n }\n }\n data = items;\n that._total = data.length;\n }\n that._pristineTotal = that._total;\n that._pristineData = data.slice(0);\n that._detachObservableParents();\n that._data = that._observe(data);\n that._markOfflineUpdatesAsDirty();\n that._storeData();\n that._addRange(that._data);\n that._process(that._data);\n that._dequeueRequest();\n },\n _detachObservableParents: function () {\n if (this._data && this._shouldDetachObservableParents) {\n for (var idx = 0; idx < this._data.length; idx++) {\n if (this._data[idx].parent) {\n this._data[idx].parent = noop;\n }\n }\n }\n },\n _storeData: function (updatePristine) {\n var serverGrouping = this._isServerGrouped();\n var model = this.reader.model;\n function items(data) {\n var state = [];\n for (var idx = 0; idx < data.length; idx++) {\n var dataItem = data.at(idx);\n var item = dataItem.toJSON();\n if (serverGrouping && dataItem.items) {\n item.items = items(dataItem.items);\n } else {\n item.uid = dataItem.uid;\n if (model) {\n if (dataItem.isNew()) {\n item.__state__ = 'create';\n } else if (dataItem.dirty) {\n item.__state__ = 'update';\n }\n }\n }\n state.push(item);\n }\n return state;\n }\n if (this.options.offlineStorage != null) {\n var state = items(this._data);\n var destroyed = [];\n for (var idx = 0; idx < this._destroyed.length; idx++) {\n var item = this._destroyed[idx].toJSON();\n item.__state__ = 'destroy';\n destroyed.push(item);\n }\n this.offlineData(state.concat(destroyed));\n if (updatePristine) {\n this._pristineData = this._readData(state);\n }\n }\n },\n _addRange: function (data) {\n var that = this, start = that._skip || 0, end = start + that._flatData(data, true).length;\n that._ranges.push({\n start: start,\n end: end,\n data: data,\n timestamp: new Date().getTime()\n });\n that._ranges.sort(function (x, y) {\n return x.start - y.start;\n });\n },\n error: function (xhr, status, errorThrown) {\n this._dequeueRequest();\n this.trigger(REQUESTEND, {});\n this.trigger(ERROR, {\n xhr: xhr,\n status: status,\n errorThrown: errorThrown\n });\n },\n _params: function (data) {\n var that = this, options = extend({\n take: that.take(),\n skip: that.skip(),\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n }, data);\n if (!that.options.serverPaging) {\n delete options.take;\n delete options.skip;\n delete options.page;\n delete options.pageSize;\n }\n if (!that.options.serverGrouping) {\n delete options.group;\n } else if (that.reader.model && options.group) {\n options.group = convertDescriptorsField(options.group, that.reader.model);\n }\n if (!that.options.serverFiltering) {\n delete options.filter;\n } else if (that.reader.model && options.filter) {\n options.filter = convertFilterDescriptorsField(options.filter, that.reader.model);\n }\n if (!that.options.serverSorting) {\n delete options.sort;\n } else if (that.reader.model && options.sort) {\n options.sort = convertDescriptorsField(options.sort, that.reader.model);\n }\n if (!that.options.serverAggregates) {\n delete options.aggregate;\n } else if (that.reader.model && options.aggregate) {\n options.aggregate = convertDescriptorsField(options.aggregate, that.reader.model);\n }\n return options;\n },\n _queueRequest: function (options, callback) {\n var that = this;\n if (!that._requestInProgress) {\n that._requestInProgress = true;\n that._pending = undefined;\n callback();\n } else {\n that._pending = {\n callback: proxy(callback, that),\n options: options\n };\n }\n },\n _dequeueRequest: function () {\n var that = this;\n that._requestInProgress = false;\n if (that._pending) {\n that._queueRequest(that._pending.options, that._pending.callback);\n }\n },\n _handleCustomErrors: function (response) {\n if (this.reader.errors) {\n var errors = this.reader.errors(response);\n if (errors) {\n this.trigger(ERROR, {\n xhr: null,\n status: 'customerror',\n errorThrown: 'custom error',\n errors: errors\n });\n return true;\n }\n }\n return false;\n },\n _shouldWrap: function (data) {\n var model = this.reader.model;\n if (model && data.length) {\n return !(data[0] instanceof model);\n }\n return false;\n },\n _observe: function (data) {\n var that = this, model = that.reader.model;\n that._shouldDetachObservableParents = true;\n if (data instanceof ObservableArray) {\n that._shouldDetachObservableParents = false;\n if (that._shouldWrap(data)) {\n data.type = that.reader.model;\n data.wrapAll(data, data);\n }\n } else {\n var arrayType = that.pageSize() && !that.options.serverPaging ? LazyObservableArray : ObservableArray;\n data = new arrayType(data, that.reader.model);\n data.parent = function () {\n return that.parent();\n };\n }\n if (that._isServerGrouped()) {\n wrapGroupItems(data, model);\n }\n if (that._changeHandler && that._data && that._data instanceof ObservableArray) {\n that._data.unbind(CHANGE, that._changeHandler);\n } else {\n that._changeHandler = proxy(that._change, that);\n }\n return data.bind(CHANGE, that._changeHandler);\n },\n _updateTotalForAction: function (action, items) {\n var that = this;\n var total = parseInt(that._total, 10);\n if (!isNumber(that._total)) {\n total = parseInt(that._pristineTotal, 10);\n }\n if (action === 'add') {\n total += items.length;\n } else if (action === 'remove') {\n total -= items.length;\n } else if (action !== 'itemchange' && action !== 'sync' && !that.options.serverPaging) {\n total = that._pristineTotal;\n } else if (action === 'sync') {\n total = that._pristineTotal = parseInt(that._total, 10);\n }\n that._total = total;\n },\n _change: function (e) {\n var that = this, idx, length, action = e ? e.action : '';\n if (action === 'remove') {\n for (idx = 0, length = e.items.length; idx < length; idx++) {\n if (!e.items[idx].isNew || !e.items[idx].isNew()) {\n that._destroyed.push(e.items[idx]);\n }\n }\n }\n if (that.options.autoSync && (action === 'add' || action === 'remove' || action === 'itemchange')) {\n var handler = function (args) {\n if (args.action === 'sync') {\n that.unbind('change', handler);\n that._updateTotalForAction(action, e.items);\n }\n };\n that.first('change', handler);\n that.sync();\n } else {\n that._updateTotalForAction(action, e ? e.items : []);\n that._process(that._data, e);\n }\n },\n _calculateAggregates: function (data, options) {\n options = options || {};\n var query = new Query(data), aggregates = options.aggregate, filter = options.filter;\n if (filter) {\n query = query.filter(filter);\n }\n return query.aggregate(aggregates);\n },\n _process: function (data, e) {\n var that = this, options = {}, result;\n if (that.options.serverPaging !== true) {\n options.skip = that._skip;\n options.take = that._take || that._pageSize;\n if (options.skip === undefined && that._page !== undefined && that._pageSize !== undefined) {\n options.skip = (that._page - 1) * that._pageSize;\n }\n }\n if (that.options.serverSorting !== true) {\n options.sort = that._sort;\n }\n if (that.options.serverFiltering !== true) {\n options.filter = that._filter;\n }\n if (that.options.serverGrouping !== true) {\n options.group = that._group;\n }\n if (that.options.serverAggregates !== true) {\n options.aggregate = that._aggregate;\n that._aggregateResult = that._calculateAggregates(data, options);\n }\n result = that._queryProcess(data, options);\n that.view(result.data);\n if (result.total !== undefined && !that.options.serverFiltering) {\n that._total = result.total;\n }\n e = e || {};\n e.items = e.items || that._view;\n that.trigger(CHANGE, e);\n },\n _queryProcess: function (data, options) {\n return Query.process(data, options);\n },\n _mergeState: function (options) {\n var that = this;\n if (options !== undefined) {\n that._pageSize = options.pageSize;\n that._page = options.page;\n that._sort = options.sort;\n that._filter = options.filter;\n that._group = options.group;\n that._aggregate = options.aggregate;\n that._skip = that._currentRangeStart = options.skip;\n that._take = options.take;\n if (that._skip === undefined) {\n that._skip = that._currentRangeStart = that.skip();\n options.skip = that.skip();\n }\n if (that._take === undefined && that._pageSize !== undefined) {\n that._take = that._pageSize;\n options.take = that._take;\n }\n if (options.sort) {\n that._sort = options.sort = normalizeSort(options.sort);\n }\n if (options.filter) {\n that._filter = options.filter = normalizeFilter(options.filter);\n }\n if (options.group) {\n that._group = options.group = normalizeGroup(options.group);\n }\n if (options.aggregate) {\n that._aggregate = options.aggregate = normalizeAggregate(options.aggregate);\n }\n }\n return options;\n },\n query: function (options) {\n var result;\n var remote = this.options.serverSorting || this.options.serverPaging || this.options.serverFiltering || this.options.serverGrouping || this.options.serverAggregates;\n if (remote || (this._data === undefined || this._data.length === 0) && !this._destroyed.length) {\n return this.read(this._mergeState(options));\n }\n var isPrevented = this.trigger(REQUESTSTART, { type: 'read' });\n if (!isPrevented) {\n this.trigger(PROGRESS);\n result = this._queryProcess(this._data, this._mergeState(options));\n if (!this.options.serverFiltering) {\n if (result.total !== undefined) {\n this._total = result.total;\n } else {\n this._total = this._data.length;\n }\n }\n this._aggregateResult = this._calculateAggregates(this._data, options);\n this.view(result.data);\n this.trigger(REQUESTEND, { type: 'read' });\n this.trigger(CHANGE, { items: result.data });\n }\n return $.Deferred().resolve(isPrevented).promise();\n },\n fetch: function (callback) {\n var that = this;\n var fn = function (isPrevented) {\n if (isPrevented !== true && isFunction(callback)) {\n callback.call(that);\n }\n };\n return this._query().then(fn);\n },\n _query: function (options) {\n var that = this;\n return that.query(extend({}, {\n page: that.page(),\n pageSize: that.pageSize(),\n sort: that.sort(),\n filter: that.filter(),\n group: that.group(),\n aggregate: that.aggregate()\n }, options));\n },\n next: function (options) {\n var that = this, page = that.page(), total = that.total();\n options = options || {};\n if (!page || total && page + 1 > that.totalPages()) {\n return;\n }\n that._skip = that._currentRangeStart = page * that.take();\n page += 1;\n options.page = page;\n that._query(options);\n return page;\n },\n prev: function (options) {\n var that = this, page = that.page();\n options = options || {};\n if (!page || page === 1) {\n return;\n }\n that._skip = that._currentRangeStart = that._skip - that.take();\n page -= 1;\n options.page = page;\n that._query(options);\n return page;\n },\n page: function (val) {\n var that = this, skip;\n if (val !== undefined) {\n val = math.max(math.min(math.max(val, 1), that.totalPages()), 1);\n that._query({ page: val });\n return;\n }\n skip = that.skip();\n return skip !== undefined ? math.round((skip || 0) / (that.take() || 1)) + 1 : undefined;\n },\n pageSize: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({\n pageSize: val,\n page: 1\n });\n return;\n }\n return that.take();\n },\n sort: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ sort: val });\n return;\n }\n return that._sort;\n },\n filter: function (val) {\n var that = this;\n if (val === undefined) {\n return that._filter;\n }\n that.trigger('reset');\n that._query({\n filter: val,\n page: 1\n });\n },\n group: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ group: val });\n return;\n }\n return that._group;\n },\n total: function () {\n return parseInt(this._total || 0, 10);\n },\n aggregate: function (val) {\n var that = this;\n if (val !== undefined) {\n that._query({ aggregate: val });\n return;\n }\n return that._aggregate;\n },\n aggregates: function () {\n var result = this._aggregateResult;\n if (isEmptyObject(result)) {\n result = this._emptyAggregates(this.aggregate());\n }\n return result;\n },\n _emptyAggregates: function (aggregates) {\n var result = {};\n if (!isEmptyObject(aggregates)) {\n var aggregate = {};\n if (!isArray(aggregates)) {\n aggregates = [aggregates];\n }\n for (var idx = 0; idx < aggregates.length; idx++) {\n aggregate[aggregates[idx].aggregate] = 0;\n result[aggregates[idx].field] = aggregate;\n }\n }\n return result;\n },\n _wrapInEmptyGroup: function (model) {\n var groups = this.group(), parent, group, idx, length;\n for (idx = groups.length - 1, length = 0; idx >= length; idx--) {\n group = groups[idx];\n parent = {\n value: model.get(group.field),\n field: group.field,\n items: parent ? [parent] : [model],\n hasSubgroups: !!parent,\n aggregates: this._emptyAggregates(group.aggregates)\n };\n }\n return parent;\n },\n totalPages: function () {\n var that = this, pageSize = that.pageSize() || that.total();\n return math.ceil((that.total() || 0) / pageSize);\n },\n inRange: function (skip, take) {\n var that = this, end = math.min(skip + take, that.total());\n if (!that.options.serverPaging && that._data.length > 0) {\n return true;\n }\n return that._findRange(skip, end).length > 0;\n },\n lastRange: function () {\n var ranges = this._ranges;\n return ranges[ranges.length - 1] || {\n start: 0,\n end: 0,\n data: []\n };\n },\n firstItemUid: function () {\n var ranges = this._ranges;\n return ranges.length && ranges[0].data.length && ranges[0].data[0].uid;\n },\n enableRequestsInProgress: function () {\n this._skipRequestsInProgress = false;\n },\n _timeStamp: function () {\n return new Date().getTime();\n },\n range: function (skip, take) {\n this._currentRequestTimeStamp = this._timeStamp();\n this._skipRequestsInProgress = true;\n skip = math.min(skip || 0, this.total());\n var that = this, pageSkip = math.max(math.floor(skip / take), 0) * take, size = math.min(pageSkip + take, that.total()), data;\n data = that._findRange(skip, math.min(skip + take, that.total()));\n if (data.length) {\n that._pending = undefined;\n that._skip = skip > that.skip() ? math.min(size, (that.totalPages() - 1) * that.take()) : pageSkip;\n that._currentRangeStart = skip;\n that._take = take;\n var paging = that.options.serverPaging;\n var sorting = that.options.serverSorting;\n var filtering = that.options.serverFiltering;\n var aggregates = that.options.serverAggregates;\n try {\n that.options.serverPaging = true;\n if (!that._isServerGrouped() && !(that.group() && that.group().length)) {\n that.options.serverSorting = true;\n }\n that.options.serverFiltering = true;\n that.options.serverPaging = true;\n that.options.serverAggregates = true;\n if (paging) {\n that._detachObservableParents();\n that._data = data = that._observe(data);\n }\n that._process(data);\n } finally {\n that.options.serverPaging = paging;\n that.options.serverSorting = sorting;\n that.options.serverFiltering = filtering;\n that.options.serverAggregates = aggregates;\n }\n return;\n }\n if (take !== undefined) {\n if (!that._rangeExists(pageSkip, size)) {\n that.prefetch(pageSkip, take, function () {\n if (skip > pageSkip && size < that.total() && !that._rangeExists(size, math.min(size + take, that.total()))) {\n that.prefetch(size, take, function () {\n that.range(skip, take);\n });\n } else {\n that.range(skip, take);\n }\n });\n } else if (pageSkip < skip) {\n that.prefetch(size, take, function () {\n that.range(skip, take);\n });\n }\n }\n },\n _findRange: function (start, end) {\n var that = this, ranges = that._ranges, range, data = [], skipIdx, takeIdx, startIndex, endIndex, rangeData, rangeEnd, processed, options = that.options, remote = options.serverSorting || options.serverPaging || options.serverFiltering || options.serverGrouping || options.serverAggregates, flatData, count, length;\n for (skipIdx = 0, length = ranges.length; skipIdx < length; skipIdx++) {\n range = ranges[skipIdx];\n if (start >= range.start && start <= range.end) {\n count = 0;\n for (takeIdx = skipIdx; takeIdx < length; takeIdx++) {\n range = ranges[takeIdx];\n flatData = that._flatData(range.data, true);\n if (flatData.length && start + count >= range.start) {\n rangeData = range.data;\n rangeEnd = range.end;\n if (!remote) {\n var sort = normalizeGroup(that.group() || []).concat(normalizeSort(that.sort() || []));\n processed = that._queryProcess(range.data, {\n sort: sort,\n filter: that.filter()\n });\n flatData = rangeData = processed.data;\n if (processed.total !== undefined) {\n rangeEnd = processed.total;\n }\n }\n startIndex = 0;\n if (start + count > range.start) {\n startIndex = start + count - range.start;\n }\n endIndex = flatData.length;\n if (rangeEnd > end) {\n endIndex = endIndex - (rangeEnd - end);\n }\n count += endIndex - startIndex;\n data = that._mergeGroups(data, rangeData, startIndex, endIndex);\n if (end <= range.end && count == end - start) {\n return data;\n }\n }\n }\n break;\n }\n }\n return [];\n },\n _mergeGroups: function (data, range, skip, take) {\n if (this._isServerGrouped()) {\n var temp = range.toJSON(), prevGroup;\n if (data.length) {\n prevGroup = data[data.length - 1];\n }\n mergeGroups(prevGroup, temp, skip, take);\n return data.concat(temp);\n }\n return data.concat(range.slice(skip, take));\n },\n skip: function () {\n var that = this;\n if (that._skip === undefined) {\n return that._page !== undefined ? (that._page - 1) * (that.take() || 1) : undefined;\n }\n return that._skip;\n },\n currentRangeStart: function () {\n return this._currentRangeStart || 0;\n },\n take: function () {\n return this._take || this._pageSize;\n },\n _prefetchSuccessHandler: function (skip, size, callback, force) {\n var that = this;\n var timestamp = that._timeStamp();\n return function (data) {\n var found = false, range = {\n start: skip,\n end: size,\n data: [],\n timestamp: that._timeStamp()\n }, idx, length, temp;\n that._dequeueRequest();\n that.trigger(REQUESTEND, {\n response: data,\n type: 'read'\n });\n data = that.reader.parse(data);\n temp = that._readData(data);\n if (temp.length) {\n for (idx = 0, length = that._ranges.length; idx < length; idx++) {\n if (that._ranges[idx].start === skip) {\n found = true;\n range = that._ranges[idx];\n break;\n }\n }\n if (!found) {\n that._ranges.push(range);\n }\n }\n range.data = that._observe(temp);\n range.end = range.start + that._flatData(range.data, true).length;\n that._ranges.sort(function (x, y) {\n return x.start - y.start;\n });\n that._total = that.reader.total(data);\n if (force || (timestamp >= that._currentRequestTimeStamp || !that._skipRequestsInProgress)) {\n if (callback && temp.length) {\n callback();\n } else {\n that.trigger(CHANGE, {});\n }\n }\n };\n },\n prefetch: function (skip, take, callback) {\n var that = this, size = math.min(skip + take, that.total()), options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n if (!that._rangeExists(skip, size)) {\n clearTimeout(that._timeout);\n that._timeout = setTimeout(function () {\n that._queueRequest(options, function () {\n if (!that.trigger(REQUESTSTART, { type: 'read' })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback),\n error: function () {\n var args = slice.call(arguments);\n that.error.apply(that, args);\n }\n });\n } else {\n that._dequeueRequest();\n }\n });\n }, 100);\n } else if (callback) {\n callback();\n }\n },\n _multiplePrefetch: function (skip, take, callback) {\n var that = this, size = math.min(skip + take, that.total()), options = {\n take: take,\n skip: skip,\n page: skip / take + 1,\n pageSize: take,\n sort: that._sort,\n filter: that._filter,\n group: that._group,\n aggregate: that._aggregate\n };\n if (!that._rangeExists(skip, size)) {\n if (!that.trigger(REQUESTSTART, { type: 'read' })) {\n that.transport.read({\n data: that._params(options),\n success: that._prefetchSuccessHandler(skip, size, callback, true)\n });\n }\n } else if (callback) {\n callback();\n }\n },\n _rangeExists: function (start, end) {\n var that = this, ranges = that._ranges, idx, length;\n for (idx = 0, length = ranges.length; idx < length; idx++) {\n if (ranges[idx].start <= start && ranges[idx].end >= end) {\n return true;\n }\n }\n return false;\n },\n _removeModelFromRanges: function (model) {\n var result, found, range;\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n this._eachItem(range.data, function (items) {\n result = removeModel(items, model);\n if (result) {\n found = true;\n }\n });\n if (found) {\n break;\n }\n }\n },\n _updateRangesLength: function () {\n var startOffset = 0, range, rangeLength;\n for (var idx = 0, length = this._ranges.length; idx < length; idx++) {\n range = this._ranges[idx];\n range.start = range.start - startOffset;\n rangeLength = this._flatData(range.data, true).length;\n startOffset = range.end - rangeLength;\n range.end = range.start + rangeLength;\n }\n }\n });\n var Transport = {};\n Transport.create = function (options, data, dataSource) {\n var transport, transportOptions = options.transport ? $.extend({}, options.transport) : null;\n if (transportOptions) {\n transportOptions.read = typeof transportOptions.read === STRING ? { url: transportOptions.read } : transportOptions.read;\n if (options.type === 'jsdo') {\n transportOptions.dataSource = dataSource;\n }\n if (options.type) {\n kendo.data.transports = kendo.data.transports || {};\n kendo.data.schemas = kendo.data.schemas || {};\n if (!kendo.data.transports[options.type]) {\n kendo.logToConsole('Unknown DataSource transport type \\'' + options.type + '\\'.\\nVerify that registration scripts for this type are included after Kendo UI on the page.', 'warn');\n } else if (!isPlainObject(kendo.data.transports[options.type])) {\n transport = new kendo.data.transports[options.type](extend(transportOptions, { data: data }));\n } else {\n transportOptions = extend(true, {}, kendo.data.transports[options.type], transportOptions);\n }\n options.schema = extend(true, {}, kendo.data.schemas[options.type], options.schema);\n }\n if (!transport) {\n transport = isFunction(transportOptions.read) ? transportOptions : new RemoteTransport(transportOptions);\n }\n } else {\n transport = new LocalTransport({ data: options.data || [] });\n }\n return transport;\n };\n DataSource.create = function (options) {\n if (isArray(options) || options instanceof ObservableArray) {\n options = { data: options };\n }\n var dataSource = options || {}, data = dataSource.data, fields = dataSource.fields, table = dataSource.table, select = dataSource.select, idx, length, model = {}, field;\n if (!data && fields && !dataSource.transport) {\n if (table) {\n data = inferTable(table, fields);\n } else if (select) {\n data = inferSelect(select, fields);\n if (dataSource.group === undefined && data[0] && data[0].optgroup !== undefined) {\n dataSource.group = 'optgroup';\n }\n }\n }\n if (kendo.data.Model && fields && (!dataSource.schema || !dataSource.schema.model)) {\n for (idx = 0, length = fields.length; idx < length; idx++) {\n field = fields[idx];\n if (field.type) {\n model[field.field] = field;\n }\n }\n if (!isEmptyObject(model)) {\n dataSource.schema = extend(true, dataSource.schema, { model: { fields: model } });\n }\n }\n dataSource.data = data;\n select = null;\n dataSource.select = null;\n table = null;\n dataSource.table = null;\n return dataSource instanceof DataSource ? dataSource : new DataSource(dataSource);\n };\n function inferSelect(select, fields) {\n select = $(select)[0];\n var options = select.options;\n var firstField = fields[0];\n var secondField = fields[1];\n var data = [];\n var idx, length;\n var optgroup;\n var option;\n var record;\n var value;\n for (idx = 0, length = options.length; idx < length; idx++) {\n record = {};\n option = options[idx];\n optgroup = option.parentNode;\n if (optgroup === select) {\n optgroup = null;\n }\n if (option.disabled || optgroup && optgroup.disabled) {\n continue;\n }\n if (optgroup) {\n record.optgroup = optgroup.label;\n }\n record[firstField.field] = option.text;\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n record[secondField.field] = value;\n data.push(record);\n }\n return data;\n }\n function inferTable(table, fields) {\n var tbody = $(table)[0].tBodies[0], rows = tbody ? tbody.rows : [], idx, length, fieldIndex, fieldCount = fields.length, data = [], cells, record, cell, empty;\n for (idx = 0, length = rows.length; idx < length; idx++) {\n record = {};\n empty = true;\n cells = rows[idx].cells;\n for (fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++) {\n cell = cells[fieldIndex];\n if (cell.nodeName.toLowerCase() !== 'th') {\n empty = false;\n record[fields[fieldIndex].field] = cell.innerHTML;\n }\n }\n if (!empty) {\n data.push(record);\n }\n }\n return data;\n }\n var Node = Model.define({\n idField: 'id',\n init: function (value) {\n var that = this, hasChildren = that.hasChildren || value && value.hasChildren, childrenField = 'items', childrenOptions = {};\n kendo.data.Model.fn.init.call(that, value);\n if (typeof that.children === STRING) {\n childrenField = that.children;\n }\n childrenOptions = {\n schema: {\n data: childrenField,\n model: {\n hasChildren: hasChildren,\n id: that.idField,\n fields: that.fields\n }\n }\n };\n if (typeof that.children !== STRING) {\n extend(childrenOptions, that.children);\n }\n childrenOptions.data = value;\n if (!hasChildren) {\n hasChildren = childrenOptions.schema.data;\n }\n if (typeof hasChildren === STRING) {\n hasChildren = kendo.getter(hasChildren);\n }\n if (isFunction(hasChildren)) {\n that.hasChildren = !!hasChildren.call(that, that);\n }\n that._childrenOptions = childrenOptions;\n if (that.hasChildren) {\n that._initChildren();\n }\n that._loaded = !!(value && value._loaded);\n },\n _initChildren: function () {\n var that = this;\n var children, transport, parameterMap;\n if (!(that.children instanceof HierarchicalDataSource)) {\n children = that.children = new HierarchicalDataSource(that._childrenOptions);\n transport = children.transport;\n parameterMap = transport.parameterMap;\n transport.parameterMap = function (data, type) {\n data[that.idField || 'id'] = that.id;\n if (parameterMap) {\n data = parameterMap(data, type);\n }\n return data;\n };\n children.parent = function () {\n return that;\n };\n children.bind(CHANGE, function (e) {\n e.node = e.node || that;\n that.trigger(CHANGE, e);\n });\n children.bind(ERROR, function (e) {\n var collection = that.parent();\n if (collection) {\n e.node = e.node || that;\n collection.trigger(ERROR, e);\n }\n });\n that._updateChildrenField();\n }\n },\n append: function (model) {\n this._initChildren();\n this.loaded(true);\n this.children.add(model);\n },\n hasChildren: false,\n level: function () {\n var parentNode = this.parentNode(), level = 0;\n while (parentNode && parentNode.parentNode) {\n level++;\n parentNode = parentNode.parentNode ? parentNode.parentNode() : null;\n }\n return level;\n },\n _updateChildrenField: function () {\n var fieldName = this._childrenOptions.schema.data;\n this[fieldName || 'items'] = this.children.data();\n },\n _childrenLoaded: function () {\n this._loaded = true;\n this._updateChildrenField();\n },\n load: function () {\n var options = {};\n var method = '_query';\n var children, promise;\n if (this.hasChildren) {\n this._initChildren();\n children = this.children;\n options[this.idField || 'id'] = this.id;\n if (!this._loaded) {\n children._data = undefined;\n method = 'read';\n }\n children.one(CHANGE, proxy(this._childrenLoaded, this));\n promise = children[method](options);\n } else {\n this.loaded(true);\n }\n return promise || $.Deferred().resolve().promise();\n },\n parentNode: function () {\n var array = this.parent();\n return array.parent();\n },\n loaded: function (value) {\n if (value !== undefined) {\n this._loaded = value;\n } else {\n return this._loaded;\n }\n },\n shouldSerialize: function (field) {\n return Model.fn.shouldSerialize.call(this, field) && field !== 'children' && field !== '_loaded' && field !== 'hasChildren' && field !== '_childrenOptions';\n }\n });\n function dataMethod(name) {\n return function () {\n var data = this._data, result = DataSource.fn[name].apply(this, slice.call(arguments));\n if (this._data != data) {\n this._attachBubbleHandlers();\n }\n return result;\n };\n }\n var HierarchicalDataSource = DataSource.extend({\n init: function (options) {\n var node = Node.define({ children: options });\n DataSource.fn.init.call(this, extend(true, {}, {\n schema: {\n modelBase: node,\n model: node\n }\n }, options));\n this._attachBubbleHandlers();\n },\n _attachBubbleHandlers: function () {\n var that = this;\n that._data.bind(ERROR, function (e) {\n that.trigger(ERROR, e);\n });\n },\n remove: function (node) {\n var parentNode = node.parentNode(), dataSource = this, result;\n if (parentNode && parentNode._initChildren) {\n dataSource = parentNode.children;\n }\n result = DataSource.fn.remove.call(dataSource, node);\n if (parentNode && !dataSource.data().length) {\n parentNode.hasChildren = false;\n }\n return result;\n },\n success: dataMethod('success'),\n data: dataMethod('data'),\n insert: function (index, model) {\n var parentNode = this.parent();\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n return DataSource.fn.insert.call(this, index, model);\n },\n _find: function (method, value) {\n var idx, length, node, children;\n var data = this._data;\n if (!data) {\n return;\n }\n node = DataSource.fn[method].call(this, value);\n if (node) {\n return node;\n }\n data = this._flatData(this._data);\n for (idx = 0, length = data.length; idx < length; idx++) {\n children = data[idx].children;\n if (!(children instanceof HierarchicalDataSource)) {\n continue;\n }\n node = children[method](value);\n if (node) {\n return node;\n }\n }\n },\n get: function (id) {\n return this._find('get', id);\n },\n getByUid: function (uid) {\n return this._find('getByUid', uid);\n }\n });\n function inferList(list, fields) {\n var items = $(list).children(), idx, length, data = [], record, textField = fields[0].field, urlField = fields[1] && fields[1].field, spriteCssClassField = fields[2] && fields[2].field, imageUrlField = fields[3] && fields[3].field, item, id, textChild, className, children;\n function elements(collection, tagName) {\n return collection.filter(tagName).add(collection.find(tagName));\n }\n for (idx = 0, length = items.length; idx < length; idx++) {\n record = { _loaded: true };\n item = items.eq(idx);\n textChild = item[0].firstChild;\n children = item.children();\n list = children.filter('ul');\n children = children.filter(':not(ul)');\n id = item.attr('data-id');\n if (id) {\n record.id = id;\n }\n if (textChild) {\n record[textField] = textChild.nodeType == 3 ? textChild.nodeValue : children.text();\n }\n if (urlField) {\n record[urlField] = elements(children, 'a').attr('href');\n }\n if (imageUrlField) {\n record[imageUrlField] = elements(children, 'img').attr('src');\n }\n if (spriteCssClassField) {\n className = elements(children, '.k-sprite').prop('className');\n record[spriteCssClassField] = className && $.trim(className.replace('k-sprite', ''));\n }\n if (list.length) {\n record.items = inferList(list.eq(0), fields);\n }\n if (item.attr('data-hasChildren') == 'true') {\n record.hasChildren = true;\n }\n data.push(record);\n }\n return data;\n }\n HierarchicalDataSource.create = function (options) {\n options = options && options.push ? { data: options } : options;\n var dataSource = options || {}, data = dataSource.data, fields = dataSource.fields, list = dataSource.list;\n if (data && data._dataSource) {\n return data._dataSource;\n }\n if (!data && fields && !dataSource.transport) {\n if (list) {\n data = inferList(list, fields);\n }\n }\n dataSource.data = data;\n return dataSource instanceof HierarchicalDataSource ? dataSource : new HierarchicalDataSource(dataSource);\n };\n var Buffer = kendo.Observable.extend({\n init: function (dataSource, viewSize, disablePrefetch) {\n kendo.Observable.fn.init.call(this);\n this._prefetching = false;\n this.dataSource = dataSource;\n this.prefetch = !disablePrefetch;\n var buffer = this;\n dataSource.bind('change', function () {\n buffer._change();\n });\n dataSource.bind('reset', function () {\n buffer._reset();\n });\n this._syncWithDataSource();\n this.setViewSize(viewSize);\n },\n setViewSize: function (viewSize) {\n this.viewSize = viewSize;\n this._recalculate();\n },\n at: function (index) {\n var pageSize = this.pageSize, itemPresent = true;\n if (index >= this.total()) {\n this.trigger('endreached', { index: index });\n return null;\n }\n if (!this.useRanges) {\n return this.dataSource.view()[index];\n }\n if (this.useRanges) {\n if (index < this.dataOffset || index >= this.skip + pageSize) {\n itemPresent = this.range(Math.floor(index / pageSize) * pageSize);\n }\n if (index === this.prefetchThreshold) {\n this._prefetch();\n }\n if (index === this.midPageThreshold) {\n this.range(this.nextMidRange, true);\n } else if (index === this.nextPageThreshold) {\n this.range(this.nextFullRange);\n } else if (index === this.pullBackThreshold) {\n if (this.offset === this.skip) {\n this.range(this.previousMidRange);\n } else {\n this.range(this.previousFullRange);\n }\n }\n if (itemPresent) {\n return this.dataSource.at(index - this.dataOffset);\n } else {\n this.trigger('endreached', { index: index });\n return null;\n }\n }\n },\n indexOf: function (item) {\n return this.dataSource.data().indexOf(item) + this.dataOffset;\n },\n total: function () {\n return parseInt(this.dataSource.total(), 10);\n },\n next: function () {\n var buffer = this, pageSize = buffer.pageSize, offset = buffer.skip - buffer.viewSize + pageSize, pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize;\n this.offset = offset;\n this.dataSource.prefetch(pageSkip, pageSize, function () {\n buffer._goToRange(offset, true);\n });\n },\n range: function (offset, nextRange) {\n if (this.offset === offset) {\n return true;\n }\n var buffer = this, pageSize = this.pageSize, pageSkip = math.max(math.floor(offset / pageSize), 0) * pageSize, dataSource = this.dataSource;\n if (nextRange) {\n pageSkip += pageSize;\n }\n if (dataSource.inRange(offset, pageSize)) {\n this.offset = offset;\n this._recalculate();\n this._goToRange(offset);\n return true;\n } else if (this.prefetch) {\n dataSource.prefetch(pageSkip, pageSize, function () {\n buffer.offset = offset;\n buffer._recalculate();\n buffer._goToRange(offset, true);\n });\n return false;\n }\n return true;\n },\n syncDataSource: function () {\n var offset = this.offset;\n this.offset = null;\n this.range(offset);\n },\n destroy: function () {\n this.unbind();\n },\n _prefetch: function () {\n var buffer = this, pageSize = this.pageSize, prefetchOffset = this.skip + pageSize, dataSource = this.dataSource;\n if (!dataSource.inRange(prefetchOffset, pageSize) && !this._prefetching && this.prefetch) {\n this._prefetching = true;\n this.trigger('prefetching', {\n skip: prefetchOffset,\n take: pageSize\n });\n dataSource.prefetch(prefetchOffset, pageSize, function () {\n buffer._prefetching = false;\n buffer.trigger('prefetched', {\n skip: prefetchOffset,\n take: pageSize\n });\n });\n }\n },\n _goToRange: function (offset, expanding) {\n if (this.offset !== offset) {\n return;\n }\n this.dataOffset = offset;\n this._expanding = expanding;\n this.dataSource.range(offset, this.pageSize);\n this.dataSource.enableRequestsInProgress();\n },\n _reset: function () {\n this._syncPending = true;\n },\n _change: function () {\n var dataSource = this.dataSource;\n this.length = this.useRanges ? dataSource.lastRange().end : dataSource.view().length;\n if (this._syncPending) {\n this._syncWithDataSource();\n this._recalculate();\n this._syncPending = false;\n this.trigger('reset', { offset: this.offset });\n }\n this.trigger('resize');\n if (this._expanding) {\n this.trigger('expand');\n }\n delete this._expanding;\n },\n _syncWithDataSource: function () {\n var dataSource = this.dataSource;\n this._firstItemUid = dataSource.firstItemUid();\n this.dataOffset = this.offset = dataSource.skip() || 0;\n this.pageSize = dataSource.pageSize();\n this.useRanges = dataSource.options.serverPaging;\n },\n _recalculate: function () {\n var pageSize = this.pageSize, offset = this.offset, viewSize = this.viewSize, skip = Math.ceil(offset / pageSize) * pageSize;\n this.skip = skip;\n this.midPageThreshold = skip + pageSize - 1;\n this.nextPageThreshold = skip + viewSize - 1;\n this.prefetchThreshold = skip + Math.floor(pageSize / 3 * 2);\n this.pullBackThreshold = this.offset - 1;\n this.nextMidRange = skip + pageSize - viewSize;\n this.nextFullRange = skip;\n this.previousMidRange = offset - viewSize;\n this.previousFullRange = skip - pageSize;\n }\n });\n var BatchBuffer = kendo.Observable.extend({\n init: function (dataSource, batchSize) {\n var batchBuffer = this;\n kendo.Observable.fn.init.call(batchBuffer);\n this.dataSource = dataSource;\n this.batchSize = batchSize;\n this._total = 0;\n this.buffer = new Buffer(dataSource, batchSize * 3);\n this.buffer.bind({\n 'endreached': function (e) {\n batchBuffer.trigger('endreached', { index: e.index });\n },\n 'prefetching': function (e) {\n batchBuffer.trigger('prefetching', {\n skip: e.skip,\n take: e.take\n });\n },\n 'prefetched': function (e) {\n batchBuffer.trigger('prefetched', {\n skip: e.skip,\n take: e.take\n });\n },\n 'reset': function () {\n batchBuffer._total = 0;\n batchBuffer.trigger('reset');\n },\n 'resize': function () {\n batchBuffer._total = Math.ceil(this.length / batchBuffer.batchSize);\n batchBuffer.trigger('resize', {\n total: batchBuffer.total(),\n offset: this.offset\n });\n }\n });\n },\n syncDataSource: function () {\n this.buffer.syncDataSource();\n },\n at: function (index) {\n var buffer = this.buffer, skip = index * this.batchSize, take = this.batchSize, view = [], item;\n if (buffer.offset > skip) {\n buffer.at(buffer.offset - 1);\n }\n for (var i = 0; i < take; i++) {\n item = buffer.at(skip + i);\n if (item === null) {\n break;\n }\n view.push(item);\n }\n return view;\n },\n total: function () {\n return this._total;\n },\n destroy: function () {\n this.buffer.destroy();\n this.unbind();\n }\n });\n extend(true, kendo.data, {\n readers: { json: DataReader },\n Query: Query,\n DataSource: DataSource,\n HierarchicalDataSource: HierarchicalDataSource,\n Node: Node,\n ObservableObject: ObservableObject,\n ObservableArray: ObservableArray,\n LazyObservableArray: LazyObservableArray,\n LocalTransport: LocalTransport,\n RemoteTransport: RemoteTransport,\n Cache: Cache,\n DataReader: DataReader,\n Model: Model,\n Buffer: Buffer,\n BatchBuffer: BatchBuffer\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.binder', [\n 'kendo.core',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'binder',\n name: 'MVVM',\n category: 'framework',\n description: 'Model View ViewModel (MVVM) is a design pattern which helps developers separate the Model (the data) from the View (the UI).',\n depends: [\n 'core',\n 'data'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Observable = kendo.Observable, ObservableObject = kendo.data.ObservableObject, ObservableArray = kendo.data.ObservableArray, toString = {}.toString, binders = {}, Class = kendo.Class, proxy = $.proxy, VALUE = 'value', SOURCE = 'source', EVENTS = 'events', CHECKED = 'checked', CSS = 'css', deleteExpando = true, FUNCTION = 'function', CHANGE = 'change';\n (function () {\n var a = document.createElement('a');\n try {\n delete a.test;\n } catch (e) {\n deleteExpando = false;\n }\n }());\n var Binding = Observable.extend({\n init: function (parents, path) {\n var that = this;\n Observable.fn.init.call(that);\n that.source = parents[0];\n that.parents = parents;\n that.path = path;\n that.dependencies = {};\n that.dependencies[path] = true;\n that.observable = that.source instanceof Observable;\n that._access = function (e) {\n that.dependencies[e.field] = true;\n };\n if (that.observable) {\n that._change = function (e) {\n that.change(e);\n };\n that.source.bind(CHANGE, that._change);\n }\n },\n _parents: function () {\n var parents = this.parents;\n var value = this.get();\n if (value && typeof value.parent == 'function') {\n var parent = value.parent();\n if ($.inArray(parent, parents) < 0) {\n parents = [parent].concat(parents);\n }\n }\n return parents;\n },\n change: function (e) {\n var dependency, ch, field = e.field, that = this;\n if (that.path === 'this') {\n that.trigger(CHANGE, e);\n } else {\n for (dependency in that.dependencies) {\n if (dependency.indexOf(field) === 0) {\n ch = dependency.charAt(field.length);\n if (!ch || ch === '.' || ch === '[') {\n that.trigger(CHANGE, e);\n break;\n }\n }\n }\n }\n },\n start: function (source) {\n source.bind('get', this._access);\n },\n stop: function (source) {\n source.unbind('get', this._access);\n },\n get: function () {\n var that = this, source = that.source, index = 0, path = that.path, result = source;\n if (!that.observable) {\n return result;\n }\n that.start(that.source);\n result = source.get(path);\n while (result === undefined && source) {\n source = that.parents[++index];\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n if (result === undefined) {\n source = that.source;\n while (result === undefined && source) {\n source = source.parent();\n if (source instanceof ObservableObject) {\n result = source.get(path);\n }\n }\n }\n if (typeof result === 'function') {\n index = path.lastIndexOf('.');\n if (index > 0) {\n source = source.get(path.substring(0, index));\n }\n that.start(source);\n if (source !== that.source) {\n result = result.call(source, that.source);\n } else {\n result = result.call(source);\n }\n that.stop(source);\n }\n if (source && source !== that.source) {\n that.currentSource = source;\n source.unbind(CHANGE, that._change).bind(CHANGE, that._change);\n }\n that.stop(that.source);\n return result;\n },\n set: function (value) {\n var source = this.currentSource || this.source;\n var field = kendo.getter(this.path)(source);\n if (typeof field === 'function') {\n if (source !== this.source) {\n field.call(source, this.source, value);\n } else {\n field.call(source, value);\n }\n } else {\n source.set(this.path, value);\n }\n },\n destroy: function () {\n if (this.observable) {\n this.source.unbind(CHANGE, this._change);\n if (this.currentSource) {\n this.currentSource.unbind(CHANGE, this._change);\n }\n }\n this.unbind();\n }\n });\n var EventBinding = Binding.extend({\n get: function () {\n var source = this.source, path = this.path, index = 0, handler;\n handler = source.get(path);\n while (!handler && source) {\n source = this.parents[++index];\n if (source instanceof ObservableObject) {\n handler = source.get(path);\n }\n }\n return proxy(handler, source);\n }\n });\n var TemplateBinding = Binding.extend({\n init: function (source, path, template) {\n var that = this;\n Binding.fn.init.call(that, source, path);\n that.template = template;\n },\n render: function (value) {\n var html;\n this.start(this.source);\n html = kendo.render(this.template, value);\n this.stop(this.source);\n return html;\n }\n });\n var Binder = Class.extend({\n init: function (element, bindings, options) {\n this.element = element;\n this.bindings = bindings;\n this.options = options;\n },\n bind: function (binding, attribute) {\n var that = this;\n binding = attribute ? binding[attribute] : binding;\n binding.bind(CHANGE, function (e) {\n that.refresh(attribute || e);\n });\n that.refresh(attribute);\n },\n destroy: function () {\n }\n });\n var TypedBinder = Binder.extend({\n dataType: function () {\n var dataType = this.element.getAttribute('data-type') || this.element.type || 'text';\n return dataType.toLowerCase();\n },\n parsedValue: function () {\n return this._parseValue(this.element.value, this.dataType());\n },\n _parseValue: function (value, dataType) {\n if (dataType == 'date') {\n value = kendo.parseDate(value, 'yyyy-MM-dd');\n } else if (dataType == 'datetime-local') {\n value = kendo.parseDate(value, [\n 'yyyy-MM-ddTHH:mm:ss',\n 'yyyy-MM-ddTHH:mm'\n ]);\n } else if (dataType == 'number') {\n value = kendo.parseFloat(value);\n } else if (dataType == 'boolean') {\n value = value.toLowerCase();\n if (kendo.parseFloat(value) !== null) {\n value = Boolean(kendo.parseFloat(value));\n } else {\n value = value.toLowerCase() === 'true';\n }\n }\n return value;\n }\n });\n binders.attr = Binder.extend({\n refresh: function (key) {\n this.element.setAttribute(key, this.bindings.attr[key].get());\n }\n });\n binders.css = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.classes = {};\n },\n refresh: function (className) {\n var element = $(this.element), binding = this.bindings.css[className], hasClass = this.classes[className] = binding.get();\n if (hasClass) {\n element.addClass(className);\n } else {\n element.removeClass(className);\n }\n }\n });\n binders.style = Binder.extend({\n refresh: function (key) {\n this.element.style[key] = this.bindings.style[key].get() || '';\n }\n });\n binders.enabled = Binder.extend({\n refresh: function () {\n if (this.bindings.enabled.get()) {\n this.element.removeAttribute('disabled');\n } else {\n this.element.setAttribute('disabled', 'disabled');\n }\n }\n });\n binders.readonly = Binder.extend({\n refresh: function () {\n if (this.bindings.readonly.get()) {\n this.element.setAttribute('readonly', 'readonly');\n } else {\n this.element.removeAttribute('readonly');\n }\n }\n });\n binders.disabled = Binder.extend({\n refresh: function () {\n if (this.bindings.disabled.get()) {\n this.element.setAttribute('disabled', 'disabled');\n } else {\n this.element.removeAttribute('disabled');\n }\n }\n });\n binders.events = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n this.handlers = {};\n },\n refresh: function (key) {\n var element = $(this.element), binding = this.bindings.events[key], handler = this.handlers[key];\n if (handler) {\n element.off(key, handler);\n }\n handler = this.handlers[key] = binding.get();\n element.on(key, binding.source, handler);\n },\n destroy: function () {\n var element = $(this.element), handler;\n for (handler in this.handlers) {\n element.off(handler, this.handlers[handler]);\n }\n }\n });\n binders.text = Binder.extend({\n refresh: function () {\n var text = this.bindings.text.get();\n var dataFormat = this.element.getAttribute('data-format') || '';\n if (text == null) {\n text = '';\n }\n $(this.element).text(kendo.toString(text, dataFormat));\n }\n });\n binders.visible = Binder.extend({\n refresh: function () {\n if (this.bindings.visible.get()) {\n this.element.style.display = '';\n } else {\n this.element.style.display = 'none';\n }\n }\n });\n binders.invisible = Binder.extend({\n refresh: function () {\n if (!this.bindings.invisible.get()) {\n this.element.style.display = '';\n } else {\n this.element.style.display = 'none';\n }\n }\n });\n binders.html = Binder.extend({\n refresh: function () {\n this.element.innerHTML = this.bindings.html.get();\n }\n });\n binders.value = TypedBinder.extend({\n init: function (element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = proxy(this.change, this);\n this.eventName = options.valueUpdate || CHANGE;\n $(this.element).on(this.eventName, this._change);\n this._initChange = false;\n },\n change: function () {\n this._initChange = this.eventName != CHANGE;\n this.bindings[VALUE].set(this.parsedValue());\n this._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var value = this.bindings[VALUE].get();\n if (value == null) {\n value = '';\n }\n var type = this.dataType();\n if (type == 'date') {\n value = kendo.toString(value, 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(value, 'yyyy-MM-ddTHH:mm:ss');\n }\n this.element.value = value;\n }\n this._initChange = false;\n },\n destroy: function () {\n $(this.element).off(this.eventName, this._change);\n }\n });\n binders.source = Binder.extend({\n init: function (element, bindings, options) {\n Binder.fn.init.call(this, element, bindings, options);\n var source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource && options.autoBind !== false) {\n source.fetch();\n }\n },\n refresh: function (e) {\n var that = this, source = that.bindings.source.get();\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == 'add') {\n that.add(e.index, e.items);\n } else if (e.action == 'remove') {\n that.remove(e.index, e.items);\n } else if (e.action != 'itemchange') {\n that.render();\n }\n } else {\n that.render();\n }\n },\n container: function () {\n var element = this.element;\n if (element.nodeName.toLowerCase() == 'table') {\n if (!element.tBodies[0]) {\n element.appendChild(document.createElement('tbody'));\n }\n element = element.tBodies[0];\n }\n return element;\n },\n template: function () {\n var options = this.options, template = options.template, nodeName = this.container().nodeName.toLowerCase();\n if (!template) {\n if (nodeName == 'select') {\n if (options.valueField || options.textField) {\n template = kendo.format('', options.valueField || options.textField, options.textField || options.valueField);\n } else {\n template = '';\n }\n } else if (nodeName == 'tbody') {\n template = '#:data#';\n } else if (nodeName == 'ul' || nodeName == 'ol') {\n template = '
  • #:data#
  • ';\n } else {\n template = '#:data#';\n }\n template = kendo.template(template);\n }\n return template;\n },\n add: function (index, items) {\n var element = this.container(), parents, idx, length, child, clone = element.cloneNode(false), reference = element.children[index];\n $(clone).html(kendo.render(this.template(), items));\n if (clone.children.length) {\n parents = this.bindings.source._parents();\n for (idx = 0, length = items.length; idx < length; idx++) {\n child = clone.children[0];\n element.insertBefore(child, reference || null);\n bindElement(child, items[idx], this.options.roles, [items[idx]].concat(parents));\n }\n }\n },\n remove: function (index, items) {\n var idx, element = this.container();\n for (idx = 0; idx < items.length; idx++) {\n var child = element.children[index];\n unbindElementTree(child, true);\n element.removeChild(child);\n }\n },\n render: function () {\n var source = this.bindings.source.get(), parents, idx, length, element = this.container(), template = this.template();\n if (source == null) {\n return;\n }\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n if (!(source instanceof ObservableArray) && toString.call(source) !== '[object Array]') {\n source = [source];\n }\n if (this.bindings.template) {\n unbindElementChildren(element, true);\n $(element).html(this.bindings.template.render(source));\n if (element.children.length) {\n parents = this.bindings.source._parents();\n for (idx = 0, length = source.length; idx < length; idx++) {\n bindElement(element.children[idx], source[idx], this.options.roles, [source[idx]].concat(parents));\n }\n }\n } else {\n $(element).html(kendo.render(template, source));\n }\n }\n });\n binders.input = {\n checked: TypedBinder.extend({\n init: function (element, bindings, options) {\n TypedBinder.fn.init.call(this, element, bindings, options);\n this._change = proxy(this.change, this);\n $(this.element).change(this._change);\n },\n change: function () {\n var element = this.element;\n var value = this.value();\n if (element.type == 'radio') {\n value = this.parsedValue();\n this.bindings[CHECKED].set(value);\n } else if (element.type == 'checkbox') {\n var source = this.bindings[CHECKED].get();\n var index;\n if (source instanceof ObservableArray) {\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n if (index > -1) {\n source.splice(index, 1);\n } else {\n source.push(value);\n }\n } else {\n this.bindings[CHECKED].set(value);\n }\n }\n },\n refresh: function () {\n var value = this.bindings[CHECKED].get(), source = value, type = this.dataType(), element = this.element;\n if (element.type == 'checkbox') {\n if (source instanceof ObservableArray) {\n var index = -1;\n value = this.parsedValue();\n if (value instanceof Date) {\n for (var i = 0; i < source.length; i++) {\n if (source[i] instanceof Date && +source[i] === +value) {\n index = i;\n break;\n }\n }\n } else {\n index = source.indexOf(value);\n }\n element.checked = index >= 0;\n } else {\n element.checked = source;\n }\n } else if (element.type == 'radio' && value != null) {\n if (type == 'date') {\n value = kendo.toString(value, 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(value, 'yyyy-MM-ddTHH:mm:ss');\n }\n if (element.value === value.toString()) {\n element.checked = true;\n } else {\n element.checked = false;\n }\n }\n },\n value: function () {\n var element = this.element, value = element.value;\n if (element.type == 'checkbox') {\n value = element.checked;\n }\n return value;\n },\n destroy: function () {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n binders.select = {\n source: binders.source.extend({\n refresh: function (e) {\n var that = this, source = that.bindings.source.get();\n if (source instanceof ObservableArray || source instanceof kendo.data.DataSource) {\n e = e || {};\n if (e.action == 'add') {\n that.add(e.index, e.items);\n } else if (e.action == 'remove') {\n that.remove(e.index, e.items);\n } else if (e.action == 'itemchange' || e.action === undefined) {\n that.render();\n if (that.bindings.value) {\n if (that.bindings.value) {\n var val = retrievePrimitiveValues(that.bindings.value.get(), $(that.element).data('valueField'));\n if (val === null) {\n that.element.selectedIndex = -1;\n } else {\n that.element.value = val;\n }\n }\n }\n }\n } else {\n that.render();\n }\n }\n }),\n value: TypedBinder.extend({\n init: function (target, bindings, options) {\n TypedBinder.fn.init.call(this, target, bindings, options);\n this._change = proxy(this.change, this);\n $(this.element).change(this._change);\n },\n parsedValue: function () {\n var dataType = this.dataType();\n var values = [];\n var value, option, idx, length;\n for (idx = 0, length = this.element.options.length; idx < length; idx++) {\n option = this.element.options[idx];\n if (option.selected) {\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n values.push(this._parseValue(value, dataType));\n }\n }\n return values;\n },\n change: function () {\n var values = [], element = this.element, source, field = this.options.valueField || this.options.textField, valuePrimitive = this.options.valuePrimitive, option, valueIndex, value, idx, length;\n for (idx = 0, length = element.options.length; idx < length; idx++) {\n option = element.options[idx];\n if (option.selected) {\n value = option.attributes.value;\n if (value && value.specified) {\n value = option.value;\n } else {\n value = option.text;\n }\n values.push(this._parseValue(value, this.dataType()));\n }\n }\n if (field) {\n source = this.bindings.source.get();\n if (source instanceof kendo.data.DataSource) {\n source = source.view();\n }\n for (valueIndex = 0; valueIndex < values.length; valueIndex++) {\n for (idx = 0, length = source.length; idx < length; idx++) {\n var sourceValue = this._parseValue(source[idx].get(field), this.dataType());\n var match = String(sourceValue) === values[valueIndex];\n if (match) {\n values[valueIndex] = source[idx];\n break;\n }\n }\n }\n }\n value = this.bindings[VALUE].get();\n if (value instanceof ObservableArray) {\n value.splice.apply(value, [\n 0,\n value.length\n ].concat(values));\n } else if (!valuePrimitive && (value instanceof ObservableObject || value === null || value === undefined || !field)) {\n this.bindings[VALUE].set(values[0]);\n } else {\n this.bindings[VALUE].set(values[0].get(field));\n }\n },\n refresh: function () {\n var optionIndex, element = this.element, options = element.options, value = this.bindings[VALUE].get(), values = value, field = this.options.valueField || this.options.textField, found = false, type = this.dataType(), optionValue;\n if (!(values instanceof ObservableArray)) {\n values = new ObservableArray([value]);\n }\n element.selectedIndex = -1;\n for (var valueIndex = 0; valueIndex < values.length; valueIndex++) {\n value = values[valueIndex];\n if (field && value instanceof ObservableObject) {\n value = value.get(field);\n }\n if (type == 'date') {\n value = kendo.toString(values[valueIndex], 'yyyy-MM-dd');\n } else if (type == 'datetime-local') {\n value = kendo.toString(values[valueIndex], 'yyyy-MM-ddTHH:mm:ss');\n }\n for (optionIndex = 0; optionIndex < options.length; optionIndex++) {\n optionValue = options[optionIndex].value;\n if (optionValue === '' && value !== '') {\n optionValue = options[optionIndex].text;\n }\n if (value != null && optionValue == value.toString()) {\n options[optionIndex].selected = true;\n found = true;\n }\n }\n }\n },\n destroy: function () {\n $(this.element).off(CHANGE, this._change);\n }\n })\n };\n function dataSourceBinding(bindingName, fieldName, setter) {\n return Binder.extend({\n init: function (widget, bindings, options) {\n var that = this;\n Binder.fn.init.call(that, widget.element[0], bindings, options);\n that.widget = widget;\n that._dataBinding = proxy(that.dataBinding, that);\n that._dataBound = proxy(that.dataBound, that);\n that._itemChange = proxy(that.itemChange, that);\n },\n itemChange: function (e) {\n bindElement(e.item[0], e.data, this._ns(e.ns), [e.data].concat(this.bindings[bindingName]._parents()));\n },\n dataBinding: function (e) {\n var idx, length, widget = this.widget, items = e.removedItems || widget.items();\n for (idx = 0, length = items.length; idx < length; idx++) {\n unbindElementTree(items[idx], false);\n }\n },\n _ns: function (ns) {\n ns = ns || kendo.ui;\n var all = [\n kendo.ui,\n kendo.dataviz.ui,\n kendo.mobile.ui\n ];\n all.splice($.inArray(ns, all), 1);\n all.unshift(ns);\n return kendo.rolesFromNamespaces(all);\n },\n dataBound: function (e) {\n var idx, length, widget = this.widget, items = e.addedItems || widget.items(), dataSource = widget[fieldName], view, parents, hds = kendo.data.HierarchicalDataSource;\n if (hds && dataSource instanceof hds) {\n return;\n }\n if (items.length) {\n view = e.addedDataItems || dataSource.flatView();\n parents = this.bindings[bindingName]._parents();\n for (idx = 0, length = view.length; idx < length; idx++) {\n bindElement(items[idx], view[idx], this._ns(e.ns), [view[idx]].concat(parents));\n }\n }\n },\n refresh: function (e) {\n var that = this, source, widget = that.widget, select, multiselect;\n e = e || {};\n if (!e.action) {\n that.destroy();\n widget.bind('dataBinding', that._dataBinding);\n widget.bind('dataBound', that._dataBound);\n widget.bind('itemChange', that._itemChange);\n source = that.bindings[bindingName].get();\n if (widget[fieldName] instanceof kendo.data.DataSource && widget[fieldName] != source) {\n if (source instanceof kendo.data.DataSource) {\n widget[setter](source);\n } else if (source && source._dataSource) {\n widget[setter](source._dataSource);\n } else {\n widget[fieldName].data(source);\n select = kendo.ui.Select && widget instanceof kendo.ui.Select;\n multiselect = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n if (that.bindings.value && (select || multiselect)) {\n widget.value(retrievePrimitiveValues(that.bindings.value.get(), widget.options.dataValueField));\n }\n }\n }\n }\n },\n destroy: function () {\n var widget = this.widget;\n widget.unbind('dataBinding', this._dataBinding);\n widget.unbind('dataBound', this._dataBound);\n widget.unbind('itemChange', this._itemChange);\n }\n });\n }\n binders.widget = {\n events: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this.handlers = {};\n },\n refresh: function (key) {\n var binding = this.bindings.events[key], handler = this.handlers[key];\n if (handler) {\n this.widget.unbind(key, handler);\n }\n handler = binding.get();\n this.handlers[key] = function (e) {\n e.data = binding.source;\n handler(e);\n if (e.data === binding.source) {\n delete e.data;\n }\n };\n this.widget.bind(key, this.handlers[key]);\n },\n destroy: function () {\n var handler;\n for (handler in this.handlers) {\n this.widget.unbind(handler, this.handlers[handler]);\n }\n }\n }),\n checked: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = proxy(this.change, this);\n this.widget.bind(CHANGE, this._change);\n },\n change: function () {\n this.bindings[CHECKED].set(this.value());\n },\n refresh: function () {\n this.widget.check(this.bindings[CHECKED].get() === true);\n },\n value: function () {\n var element = this.element, value = element.value;\n if (value == 'on' || value == 'off') {\n value = element.checked;\n }\n return value;\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n visible: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n var visible = this.bindings.visible.get();\n this.widget.wrapper[0].style.display = visible ? '' : 'none';\n }\n }),\n invisible: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n var invisible = this.bindings.invisible.get();\n this.widget.wrapper[0].style.display = invisible ? 'none' : '';\n }\n }),\n enabled: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n if (this.widget.enable) {\n this.widget.enable(this.bindings.enabled.get());\n }\n }\n }),\n disabled: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n },\n refresh: function () {\n if (this.widget.enable) {\n this.widget.enable(!this.bindings.disabled.get());\n }\n }\n }),\n source: dataSourceBinding('source', 'dataSource', 'setDataSource'),\n value: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = $.proxy(this.change, this);\n this.widget.first(CHANGE, this._change);\n var value = this.bindings.value.get();\n this._valueIsObservableObject = !options.valuePrimitive && (value == null || value instanceof ObservableObject);\n this._valueIsObservableArray = value instanceof ObservableArray;\n this._initChange = false;\n },\n _source: function () {\n var source;\n if (this.widget.dataItem) {\n source = this.widget.dataItem();\n if (source && source instanceof ObservableObject) {\n return [source];\n }\n }\n if (this.bindings.source) {\n source = this.bindings.source.get();\n }\n if (!source || source instanceof kendo.data.DataSource) {\n source = this.widget.dataSource.flatView();\n }\n return source;\n },\n change: function () {\n var value = this.widget.value(), field = this.options.dataValueField || this.options.dataTextField, isArray = toString.call(value) === '[object Array]', isObservableObject = this._valueIsObservableObject, valueIndex, valueLength, values = [], sourceItem, sourceValue, idx, length, source;\n this._initChange = true;\n if (field) {\n if (value === '' && (isObservableObject || this.options.valuePrimitive)) {\n value = null;\n } else {\n source = this._source();\n if (isArray) {\n valueLength = value.length;\n values = value.slice(0);\n }\n for (idx = 0, length = source.length; idx < length; idx++) {\n sourceItem = source[idx];\n sourceValue = sourceItem.get(field);\n if (isArray) {\n for (valueIndex = 0; valueIndex < valueLength; valueIndex++) {\n if (sourceValue == values[valueIndex]) {\n values[valueIndex] = sourceItem;\n break;\n }\n }\n } else if (sourceValue == value) {\n value = isObservableObject ? sourceItem : sourceValue;\n break;\n }\n }\n if (values[0]) {\n if (this._valueIsObservableArray) {\n value = values;\n } else if (isObservableObject || !field) {\n value = values[0];\n } else {\n value = values[0].get(field);\n }\n }\n }\n }\n this.bindings.value.set(value);\n this._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var widget = this.widget;\n var options = widget.options;\n var textField = options.dataTextField;\n var valueField = options.dataValueField || textField;\n var value = this.bindings.value.get();\n var text = options.text || '';\n var idx = 0, length;\n var values = [];\n if (value === undefined) {\n value = null;\n }\n if (valueField) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n values[idx] = value[idx].get(valueField);\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n text = value.get(textField);\n value = value.get(valueField);\n }\n }\n if (options.autoBind === false && !options.cascadeFrom && widget.listView && !widget.listView.bound()) {\n if (textField === valueField && !text) {\n text = value;\n }\n if (!text && (value || value === 0) && options.valuePrimitive) {\n widget.value(value);\n } else {\n widget._preselect(value, text);\n }\n } else {\n widget.value(value);\n }\n }\n this._initChange = false;\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n }),\n gantt: { dependencies: dataSourceBinding('dependencies', 'dependencies', 'setDependenciesDataSource') },\n multiselect: {\n value: Binder.extend({\n init: function (widget, bindings, options) {\n Binder.fn.init.call(this, widget.element[0], bindings, options);\n this.widget = widget;\n this._change = $.proxy(this.change, this);\n this.widget.first(CHANGE, this._change);\n this._initChange = false;\n },\n change: function () {\n var that = this, oldValues = that.bindings[VALUE].get(), valuePrimitive = that.options.valuePrimitive, newValues = valuePrimitive ? that.widget.value() : that.widget.dataItems();\n var field = this.options.dataValueField || this.options.dataTextField;\n newValues = newValues.slice(0);\n that._initChange = true;\n if (oldValues instanceof ObservableArray) {\n var remove = [];\n var newLength = newValues.length;\n var i = 0, j = 0;\n var old = oldValues[i];\n var same = false;\n var removeIndex;\n var newValue;\n var found;\n while (old !== undefined) {\n found = false;\n for (j = 0; j < newLength; j++) {\n if (valuePrimitive) {\n same = newValues[j] == old;\n } else {\n newValue = newValues[j];\n newValue = newValue.get ? newValue.get(field) : newValue;\n same = newValue == (old.get ? old.get(field) : old);\n }\n if (same) {\n newValues.splice(j, 1);\n newLength -= 1;\n found = true;\n break;\n }\n }\n if (!found) {\n remove.push(old);\n arraySplice(oldValues, i, 1);\n removeIndex = i;\n } else {\n i += 1;\n }\n old = oldValues[i];\n }\n arraySplice(oldValues, oldValues.length, 0, newValues);\n if (remove.length) {\n oldValues.trigger('change', {\n action: 'remove',\n items: remove,\n index: removeIndex\n });\n }\n if (newValues.length) {\n oldValues.trigger('change', {\n action: 'add',\n items: newValues,\n index: oldValues.length - 1\n });\n }\n } else {\n that.bindings[VALUE].set(newValues);\n }\n that._initChange = false;\n },\n refresh: function () {\n if (!this._initChange) {\n var options = this.options, widget = this.widget, field = options.dataValueField || options.dataTextField, value = this.bindings.value.get(), data = value, idx = 0, length, values = [], selectedValue;\n if (value === undefined) {\n value = null;\n }\n if (field) {\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n selectedValue = value[idx];\n values[idx] = selectedValue.get ? selectedValue.get(field) : selectedValue;\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(field);\n }\n }\n if (options.autoBind === false && options.valuePrimitive !== true && !widget._isBound()) {\n widget._preselect(data, value);\n } else {\n widget.value(value);\n }\n }\n },\n destroy: function () {\n this.widget.unbind(CHANGE, this._change);\n }\n })\n },\n scheduler: {\n source: dataSourceBinding('source', 'dataSource', 'setDataSource').extend({\n dataBound: function (e) {\n var idx;\n var length;\n var widget = this.widget;\n var elements = e.addedItems || widget.items();\n var data, parents;\n if (elements.length) {\n data = e.addedDataItems || widget.dataItems();\n parents = this.bindings.source._parents();\n for (idx = 0, length = data.length; idx < length; idx++) {\n bindElement(elements[idx], data[idx], this._ns(e.ns), [data[idx]].concat(parents));\n }\n }\n }\n })\n }\n };\n var arraySplice = function (arr, idx, remove, add) {\n add = add || [];\n remove = remove || 0;\n var addLength = add.length;\n var oldLength = arr.length;\n var shifted = [].slice.call(arr, idx + remove);\n var shiftedLength = shifted.length;\n var index;\n if (addLength) {\n addLength = idx + addLength;\n index = 0;\n for (; idx < addLength; idx++) {\n arr[idx] = add[index];\n index++;\n }\n arr.length = addLength;\n } else if (remove) {\n arr.length = idx;\n remove += idx;\n while (idx < remove) {\n delete arr[--remove];\n }\n }\n if (shiftedLength) {\n shiftedLength = idx + shiftedLength;\n index = 0;\n for (; idx < shiftedLength; idx++) {\n arr[idx] = shifted[index];\n index++;\n }\n arr.length = shiftedLength;\n }\n idx = arr.length;\n while (idx < oldLength) {\n delete arr[idx];\n idx++;\n }\n };\n var BindingTarget = Class.extend({\n init: function (target, options) {\n this.target = target;\n this.options = options;\n this.toDestroy = [];\n },\n bind: function (bindings) {\n var key, hasValue, hasSource, hasEvents, hasChecked, hasCss, widgetBinding = this instanceof WidgetBindingTarget, specificBinders = this.binders();\n for (key in bindings) {\n if (key == VALUE) {\n hasValue = true;\n } else if (key == SOURCE) {\n hasSource = true;\n } else if (key == EVENTS && !widgetBinding) {\n hasEvents = true;\n } else if (key == CHECKED) {\n hasChecked = true;\n } else if (key == CSS) {\n hasCss = true;\n } else {\n this.applyBinding(key, bindings, specificBinders);\n }\n }\n if (hasSource) {\n this.applyBinding(SOURCE, bindings, specificBinders);\n }\n if (hasValue) {\n this.applyBinding(VALUE, bindings, specificBinders);\n }\n if (hasChecked) {\n this.applyBinding(CHECKED, bindings, specificBinders);\n }\n if (hasEvents && !widgetBinding) {\n this.applyBinding(EVENTS, bindings, specificBinders);\n }\n if (hasCss && !widgetBinding) {\n this.applyBinding(CSS, bindings, specificBinders);\n }\n },\n binders: function () {\n return binders[this.target.nodeName.toLowerCase()] || {};\n },\n applyBinding: function (name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders[name], toDestroy = this.toDestroy, attribute, binding = bindings[name];\n if (binder) {\n binder = new binder(this.target, bindings, this.options);\n toDestroy.push(binder);\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else if (name !== 'template') {\n throw new Error('The ' + name + ' binding is not supported by the ' + this.target.nodeName.toLowerCase() + ' element');\n }\n },\n destroy: function () {\n var idx, length, toDestroy = this.toDestroy;\n for (idx = 0, length = toDestroy.length; idx < length; idx++) {\n toDestroy[idx].destroy();\n }\n }\n });\n var WidgetBindingTarget = BindingTarget.extend({\n binders: function () {\n return binders.widget[this.target.options.name.toLowerCase()] || {};\n },\n applyBinding: function (name, bindings, specificBinders) {\n var binder = specificBinders[name] || binders.widget[name], toDestroy = this.toDestroy, attribute, binding = bindings[name];\n if (binder) {\n binder = new binder(this.target, bindings, this.target.options);\n toDestroy.push(binder);\n if (binding instanceof Binding) {\n binder.bind(binding);\n toDestroy.push(binding);\n } else {\n for (attribute in binding) {\n binder.bind(binding, attribute);\n toDestroy.push(binding[attribute]);\n }\n }\n } else {\n throw new Error('The ' + name + ' binding is not supported by the ' + this.target.options.name + ' widget');\n }\n }\n });\n function bindingTargetForRole(element, roles) {\n var widget = kendo.initWidget(element, {}, roles);\n if (widget) {\n return new WidgetBindingTarget(widget);\n }\n }\n var keyValueRegExp = /[A-Za-z0-9_\\-]+:(\\{([^}]*)\\}|[^,}]+)/g, whiteSpaceRegExp = /\\s/g;\n function parseBindings(bind) {\n var result = {}, idx, length, token, colonIndex, key, value, tokens;\n tokens = bind.match(keyValueRegExp);\n for (idx = 0, length = tokens.length; idx < length; idx++) {\n token = tokens[idx];\n colonIndex = token.indexOf(':');\n key = token.substring(0, colonIndex);\n value = token.substring(colonIndex + 1);\n if (value.charAt(0) == '{') {\n value = parseBindings(value);\n }\n result[key] = value;\n }\n return result;\n }\n function createBindings(bindings, source, type) {\n var binding, result = {};\n for (binding in bindings) {\n result[binding] = new type(source, bindings[binding]);\n }\n return result;\n }\n function bindElement(element, source, roles, parents) {\n var role = element.getAttribute('data-' + kendo.ns + 'role'), idx, bind = element.getAttribute('data-' + kendo.ns + 'bind'), children = element.children, childrenCopy = [], deep = true, bindings, options = {}, target;\n parents = parents || [source];\n if (role || bind) {\n unbindElement(element, false);\n }\n if (role) {\n target = bindingTargetForRole(element, roles);\n }\n if (bind) {\n bind = parseBindings(bind.replace(whiteSpaceRegExp, ''));\n if (!target) {\n options = kendo.parseOptions(element, {\n textField: '',\n valueField: '',\n template: '',\n valueUpdate: CHANGE,\n valuePrimitive: false,\n autoBind: true\n });\n options.roles = roles;\n target = new BindingTarget(element, options);\n }\n target.source = source;\n bindings = createBindings(bind, parents, Binding);\n if (options.template) {\n bindings.template = new TemplateBinding(parents, '', options.template);\n }\n if (bindings.click) {\n bind.events = bind.events || {};\n bind.events.click = bind.click;\n bindings.click.destroy();\n delete bindings.click;\n }\n if (bindings.source) {\n deep = false;\n }\n if (bind.attr) {\n bindings.attr = createBindings(bind.attr, parents, Binding);\n }\n if (bind.style) {\n bindings.style = createBindings(bind.style, parents, Binding);\n }\n if (bind.events) {\n bindings.events = createBindings(bind.events, parents, EventBinding);\n }\n if (bind.css) {\n bindings.css = createBindings(bind.css, parents, Binding);\n }\n target.bind(bindings);\n }\n if (target) {\n element.kendoBindingTarget = target;\n }\n if (deep && children) {\n for (idx = 0; idx < children.length; idx++) {\n childrenCopy[idx] = children[idx];\n }\n for (idx = 0; idx < childrenCopy.length; idx++) {\n bindElement(childrenCopy[idx], source, roles, parents);\n }\n }\n }\n function bind(dom, object) {\n var idx, length, node, roles = kendo.rolesFromNamespaces([].slice.call(arguments, 2));\n object = kendo.observable(object);\n dom = $(dom);\n for (idx = 0, length = dom.length; idx < length; idx++) {\n node = dom[idx];\n if (node.nodeType === 1) {\n bindElement(node, object, roles);\n }\n }\n }\n function unbindElement(element, destroyWidget) {\n var bindingTarget = element.kendoBindingTarget;\n if (bindingTarget) {\n bindingTarget.destroy();\n if (deleteExpando) {\n delete element.kendoBindingTarget;\n } else if (element.removeAttribute) {\n element.removeAttribute('kendoBindingTarget');\n } else {\n element.kendoBindingTarget = null;\n }\n }\n if (destroyWidget) {\n var widget = kendo.widgetInstance($(element));\n if (widget && typeof widget.destroy === FUNCTION) {\n widget.destroy();\n }\n }\n }\n function unbindElementTree(element, destroyWidgets) {\n unbindElement(element, destroyWidgets);\n unbindElementChildren(element, destroyWidgets);\n }\n function unbindElementChildren(element, destroyWidgets) {\n var children = element.children;\n if (children) {\n for (var idx = 0, length = children.length; idx < length; idx++) {\n unbindElementTree(children[idx], destroyWidgets);\n }\n }\n }\n function unbind(dom) {\n var idx, length;\n dom = $(dom);\n for (idx = 0, length = dom.length; idx < length; idx++) {\n unbindElementTree(dom[idx], false);\n }\n }\n function notify(widget, namespace) {\n var element = widget.element, bindingTarget = element[0].kendoBindingTarget;\n if (bindingTarget) {\n bind(element, bindingTarget.source, namespace);\n }\n }\n function retrievePrimitiveValues(value, valueField) {\n var values = [];\n var idx = 0;\n var length;\n var item;\n if (!valueField) {\n return value;\n }\n if (value instanceof ObservableArray) {\n for (length = value.length; idx < length; idx++) {\n item = value[idx];\n values[idx] = item.get ? item.get(valueField) : item[valueField];\n }\n value = values;\n } else if (value instanceof ObservableObject) {\n value = value.get(valueField);\n }\n return value;\n }\n kendo.unbind = unbind;\n kendo.bind = bind;\n kendo.data.binders = binders;\n kendo.data.Binder = Binder;\n kendo.notify = notify;\n kendo.observable = function (object) {\n if (!(object instanceof ObservableObject)) {\n object = new ObservableObject(object);\n }\n return object;\n };\n kendo.observableHierarchy = function (array) {\n var dataSource = kendo.data.HierarchicalDataSource.create(array);\n function recursiveRead(data) {\n var i, children;\n for (i = 0; i < data.length; i++) {\n data[i]._initChildren();\n children = data[i].children;\n children.fetch();\n data[i].items = children.data();\n recursiveRead(data[i].items);\n }\n }\n dataSource.fetch();\n recursiveRead(dataSource.data());\n dataSource._data._dataSource = dataSource;\n return dataSource._data;\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.fx', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'fx',\n name: 'Effects',\n category: 'framework',\n description: 'Required for animation effects in all Kendo UI widgets.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, fx = kendo.effects, each = $.each, extend = $.extend, proxy = $.proxy, support = kendo.support, browser = support.browser, transforms = support.transforms, transitions = support.transitions, scaleProperties = {\n scale: 0,\n scalex: 0,\n scaley: 0,\n scale3d: 0\n }, translateProperties = {\n translate: 0,\n translatex: 0,\n translatey: 0,\n translate3d: 0\n }, hasZoom = typeof document.documentElement.style.zoom !== 'undefined' && !transforms, matrix3dRegExp = /matrix3?d?\\s*\\(.*,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?,\\s*([\\d\\.\\-]+)\\w*?/i, cssParamsRegExp = /^(-?[\\d\\.\\-]+)?[\\w\\s]*,?\\s*(-?[\\d\\.\\-]+)?[\\w\\s]*/i, translateXRegExp = /translatex?$/i, oldEffectsRegExp = /(zoom|fade|expand)(\\w+)/, singleEffectRegExp = /(zoom|fade|expand)/, unitRegExp = /[xy]$/i, transformProps = [\n 'perspective',\n 'rotate',\n 'rotatex',\n 'rotatey',\n 'rotatez',\n 'rotate3d',\n 'scale',\n 'scalex',\n 'scaley',\n 'scalez',\n 'scale3d',\n 'skew',\n 'skewx',\n 'skewy',\n 'translate',\n 'translatex',\n 'translatey',\n 'translatez',\n 'translate3d',\n 'matrix',\n 'matrix3d'\n ], transform2d = [\n 'rotate',\n 'scale',\n 'scalex',\n 'scaley',\n 'skew',\n 'skewx',\n 'skewy',\n 'translate',\n 'translatex',\n 'translatey',\n 'matrix'\n ], transform2units = {\n 'rotate': 'deg',\n scale: '',\n skew: 'px',\n translate: 'px'\n }, cssPrefix = transforms.css, round = Math.round, BLANK = '', PX = 'px', NONE = 'none', AUTO = 'auto', WIDTH = 'width', HEIGHT = 'height', HIDDEN = 'hidden', ORIGIN = 'origin', ABORT_ID = 'abortId', OVERFLOW = 'overflow', TRANSLATE = 'translate', POSITION = 'position', COMPLETE_CALLBACK = 'completeCallback', TRANSITION = cssPrefix + 'transition', TRANSFORM = cssPrefix + 'transform', BACKFACE = cssPrefix + 'backface-visibility', PERSPECTIVE = cssPrefix + 'perspective', DEFAULT_PERSPECTIVE = '1500px', TRANSFORM_PERSPECTIVE = 'perspective(' + DEFAULT_PERSPECTIVE + ')', directions = {\n left: {\n reverse: 'right',\n property: 'left',\n transition: 'translatex',\n vertical: false,\n modifier: -1\n },\n right: {\n reverse: 'left',\n property: 'left',\n transition: 'translatex',\n vertical: false,\n modifier: 1\n },\n down: {\n reverse: 'up',\n property: 'top',\n transition: 'translatey',\n vertical: true,\n modifier: 1\n },\n up: {\n reverse: 'down',\n property: 'top',\n transition: 'translatey',\n vertical: true,\n modifier: -1\n },\n top: { reverse: 'bottom' },\n bottom: { reverse: 'top' },\n 'in': {\n reverse: 'out',\n modifier: -1\n },\n out: {\n reverse: 'in',\n modifier: 1\n },\n vertical: { reverse: 'vertical' },\n horizontal: { reverse: 'horizontal' }\n };\n kendo.directions = directions;\n extend($.fn, {\n kendoStop: function (clearQueue, gotoEnd) {\n if (transitions) {\n return fx.stopQueue(this, clearQueue || false, gotoEnd || false);\n } else {\n return this.stop(clearQueue, gotoEnd);\n }\n }\n });\n if (transforms && !transitions) {\n each(transform2d, function (idx, value) {\n $.fn[value] = function (val) {\n if (typeof val == 'undefined') {\n return animationProperty(this, value);\n } else {\n var that = $(this)[0], transformValue = value + '(' + val + transform2units[value.replace(unitRegExp, '')] + ')';\n if (that.style.cssText.indexOf(TRANSFORM) == -1) {\n $(this).css(TRANSFORM, transformValue);\n } else {\n that.style.cssText = that.style.cssText.replace(new RegExp(value + '\\\\(.*?\\\\)', 'i'), transformValue);\n }\n }\n return this;\n };\n $.fx.step[value] = function (fx) {\n $(fx.elem)[value](fx.now);\n };\n });\n var curProxy = $.fx.prototype.cur;\n $.fx.prototype.cur = function () {\n if (transform2d.indexOf(this.prop) != -1) {\n return parseFloat($(this.elem)[this.prop]());\n }\n return curProxy.apply(this, arguments);\n };\n }\n kendo.toggleClass = function (element, classes, options, add) {\n if (classes) {\n classes = classes.split(' ');\n if (transitions) {\n options = extend({\n exclusive: 'all',\n duration: 400,\n ease: 'ease-out'\n }, options);\n element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease);\n setTimeout(function () {\n element.css(TRANSITION, '').css(HEIGHT);\n }, options.duration);\n }\n each(classes, function (idx, value) {\n element.toggleClass(value, add);\n });\n }\n return element;\n };\n kendo.parseEffects = function (input, mirror) {\n var effects = {};\n if (typeof input === 'string') {\n each(input.split(' '), function (idx, value) {\n var redirectedEffect = !singleEffectRegExp.test(value), resolved = value.replace(oldEffectsRegExp, function (match, $1, $2) {\n return $1 + ':' + $2.toLowerCase();\n }), effect = resolved.split(':'), direction = effect[1], effectBody = {};\n if (effect.length > 1) {\n effectBody.direction = mirror && redirectedEffect ? directions[direction].reverse : direction;\n }\n effects[effect[0]] = effectBody;\n });\n } else {\n each(input, function (idx) {\n var direction = this.direction;\n if (direction && mirror && !singleEffectRegExp.test(idx)) {\n this.direction = directions[direction].reverse;\n }\n effects[idx] = this;\n });\n }\n return effects;\n };\n function parseInteger(value) {\n return parseInt(value, 10);\n }\n function parseCSS(element, property) {\n return parseInteger(element.css(property));\n }\n function keys(obj) {\n var acc = [];\n for (var propertyName in obj) {\n acc.push(propertyName);\n }\n return acc;\n }\n function strip3DTransforms(properties) {\n for (var key in properties) {\n if (transformProps.indexOf(key) != -1 && transform2d.indexOf(key) == -1) {\n delete properties[key];\n }\n }\n return properties;\n }\n function normalizeCSS(element, properties) {\n var transformation = [], cssValues = {}, lowerKey, key, value, isTransformed;\n for (key in properties) {\n lowerKey = key.toLowerCase();\n isTransformed = transforms && transformProps.indexOf(lowerKey) != -1;\n if (!support.hasHW3D && isTransformed && transform2d.indexOf(lowerKey) == -1) {\n delete properties[key];\n } else {\n value = properties[key];\n if (isTransformed) {\n transformation.push(key + '(' + value + ')');\n } else {\n cssValues[key] = value;\n }\n }\n }\n if (transformation.length) {\n cssValues[TRANSFORM] = transformation.join(' ');\n }\n return cssValues;\n }\n if (transitions) {\n extend(fx, {\n transition: function (element, properties, options) {\n var css, delay = 0, oldKeys = element.data('keys') || [], timeoutID;\n options = extend({\n duration: 200,\n ease: 'ease-out',\n complete: null,\n exclusive: 'all'\n }, options);\n var stopTransitionCalled = false;\n var stopTransition = function () {\n if (!stopTransitionCalled) {\n stopTransitionCalled = true;\n if (timeoutID) {\n clearTimeout(timeoutID);\n timeoutID = null;\n }\n element.removeData(ABORT_ID).dequeue().css(TRANSITION, '').css(TRANSITION);\n options.complete.call(element);\n }\n };\n options.duration = $.fx ? $.fx.speeds[options.duration] || options.duration : options.duration;\n css = normalizeCSS(element, properties);\n $.merge(oldKeys, keys(css));\n element.data('keys', $.unique(oldKeys)).height();\n element.css(TRANSITION, options.exclusive + ' ' + options.duration + 'ms ' + options.ease).css(TRANSITION);\n element.css(css).css(TRANSFORM);\n if (transitions.event) {\n element.one(transitions.event, stopTransition);\n if (options.duration !== 0) {\n delay = 500;\n }\n }\n timeoutID = setTimeout(stopTransition, options.duration + delay);\n element.data(ABORT_ID, timeoutID);\n element.data(COMPLETE_CALLBACK, stopTransition);\n },\n stopQueue: function (element, clearQueue, gotoEnd) {\n var cssValues, taskKeys = element.data('keys'), retainPosition = !gotoEnd && taskKeys, completeCallback = element.data(COMPLETE_CALLBACK);\n if (retainPosition) {\n cssValues = kendo.getComputedStyles(element[0], taskKeys);\n }\n if (completeCallback) {\n completeCallback();\n }\n if (retainPosition) {\n element.css(cssValues);\n }\n return element.removeData('keys').stop(clearQueue);\n }\n });\n }\n function animationProperty(element, property) {\n if (transforms) {\n var transform = element.css(TRANSFORM);\n if (transform == NONE) {\n return property == 'scale' ? 1 : 0;\n }\n var match = transform.match(new RegExp(property + '\\\\s*\\\\(([\\\\d\\\\w\\\\.]+)')), computed = 0;\n if (match) {\n computed = parseInteger(match[1]);\n } else {\n match = transform.match(matrix3dRegExp) || [\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n property = property.toLowerCase();\n if (translateXRegExp.test(property)) {\n computed = parseFloat(match[3] / match[2]);\n } else if (property == 'translatey') {\n computed = parseFloat(match[4] / match[2]);\n } else if (property == 'scale') {\n computed = parseFloat(match[2]);\n } else if (property == 'rotate') {\n computed = parseFloat(Math.atan2(match[2], match[1]));\n }\n }\n return computed;\n } else {\n return parseFloat(element.css(property));\n }\n }\n var EffectSet = kendo.Class.extend({\n init: function (element, options) {\n var that = this;\n that.element = element;\n that.effects = [];\n that.options = options;\n that.restore = [];\n },\n run: function (effects) {\n var that = this, effect, idx, jdx, length = effects.length, element = that.element, options = that.options, deferred = $.Deferred(), start = {}, end = {}, target, children, childrenLength;\n that.effects = effects;\n deferred.then($.proxy(that, 'complete'));\n element.data('animating', true);\n for (idx = 0; idx < length; idx++) {\n effect = effects[idx];\n effect.setReverse(options.reverse);\n effect.setOptions(options);\n that.addRestoreProperties(effect.restore);\n effect.prepare(start, end);\n children = effect.children();\n for (jdx = 0, childrenLength = children.length; jdx < childrenLength; jdx++) {\n children[jdx].duration(options.duration).run();\n }\n }\n for (var effectName in options.effects) {\n extend(end, options.effects[effectName].properties);\n }\n if (!element.is(':visible')) {\n extend(start, { display: element.data('olddisplay') || 'block' });\n }\n if (transforms && !options.reset) {\n target = element.data('targetTransform');\n if (target) {\n start = extend(target, start);\n }\n }\n start = normalizeCSS(element, start);\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n element.css(start).css(TRANSFORM);\n for (idx = 0; idx < length; idx++) {\n effects[idx].setup();\n }\n if (options.init) {\n options.init();\n }\n element.data('targetTransform', end);\n fx.animate(element, end, extend({}, options, { complete: deferred.resolve }));\n return deferred.promise();\n },\n stop: function () {\n $(this.element).kendoStop(true, true);\n },\n addRestoreProperties: function (restore) {\n var element = this.element, value, i = 0, length = restore.length;\n for (; i < length; i++) {\n value = restore[i];\n this.restore.push(value);\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n },\n restoreCallback: function () {\n var element = this.element;\n for (var i = 0, length = this.restore.length; i < length; i++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n complete: function () {\n var that = this, idx = 0, element = that.element, options = that.options, effects = that.effects, length = effects.length;\n element.removeData('animating').dequeue();\n if (options.hide) {\n element.data('olddisplay', element.css('display')).hide();\n }\n this.restoreCallback();\n if (hasZoom && !transforms) {\n setTimeout($.proxy(this, 'restoreCallback'), 0);\n }\n for (; idx < length; idx++) {\n effects[idx].teardown();\n }\n if (options.completeCallback) {\n options.completeCallback(element);\n }\n }\n });\n fx.promise = function (element, options) {\n var effects = [], effectClass, effectSet = new EffectSet(element, options), parsedEffects = kendo.parseEffects(options.effects), effect;\n options.effects = parsedEffects;\n for (var effectName in parsedEffects) {\n effectClass = fx[capitalize(effectName)];\n if (effectClass) {\n effect = new effectClass(element, parsedEffects[effectName].direction);\n effects.push(effect);\n }\n }\n if (effects[0]) {\n effectSet.run(effects);\n } else {\n if (!element.is(':visible')) {\n element.css({ display: element.data('olddisplay') || 'block' }).css('display');\n }\n if (options.init) {\n options.init();\n }\n element.dequeue();\n effectSet.complete();\n }\n };\n extend(fx, {\n animate: function (elements, properties, options) {\n var useTransition = options.transition !== false;\n delete options.transition;\n if (transitions && 'transition' in fx && useTransition) {\n fx.transition(elements, properties, options);\n } else {\n if (transforms) {\n elements.animate(strip3DTransforms(properties), {\n queue: false,\n show: false,\n hide: false,\n duration: options.duration,\n complete: options.complete\n });\n } else {\n elements.each(function () {\n var element = $(this), multiple = {};\n each(transformProps, function (idx, value) {\n var params, currentValue = properties ? properties[value] + ' ' : null;\n if (currentValue) {\n var single = properties;\n if (value in scaleProperties && properties[value] !== undefined) {\n params = currentValue.match(cssParamsRegExp);\n if (transforms) {\n extend(single, { scale: +params[0] });\n }\n } else {\n if (value in translateProperties && properties[value] !== undefined) {\n var position = element.css(POSITION), isFixed = position == 'absolute' || position == 'fixed';\n if (!element.data(TRANSLATE)) {\n if (isFixed) {\n element.data(TRANSLATE, {\n top: parseCSS(element, 'top') || 0,\n left: parseCSS(element, 'left') || 0,\n bottom: parseCSS(element, 'bottom'),\n right: parseCSS(element, 'right')\n });\n } else {\n element.data(TRANSLATE, {\n top: parseCSS(element, 'marginTop') || 0,\n left: parseCSS(element, 'marginLeft') || 0\n });\n }\n }\n var originalPosition = element.data(TRANSLATE);\n params = currentValue.match(cssParamsRegExp);\n if (params) {\n var dX = value == TRANSLATE + 'y' ? +null : +params[1], dY = value == TRANSLATE + 'y' ? +params[1] : +params[2];\n if (isFixed) {\n if (!isNaN(originalPosition.right)) {\n if (!isNaN(dX)) {\n extend(single, { right: originalPosition.right - dX });\n }\n } else {\n if (!isNaN(dX)) {\n extend(single, { left: originalPosition.left + dX });\n }\n }\n if (!isNaN(originalPosition.bottom)) {\n if (!isNaN(dY)) {\n extend(single, { bottom: originalPosition.bottom - dY });\n }\n } else {\n if (!isNaN(dY)) {\n extend(single, { top: originalPosition.top + dY });\n }\n }\n } else {\n if (!isNaN(dX)) {\n extend(single, { marginLeft: originalPosition.left + dX });\n }\n if (!isNaN(dY)) {\n extend(single, { marginTop: originalPosition.top + dY });\n }\n }\n }\n }\n }\n if (!transforms && value != 'scale' && value in single) {\n delete single[value];\n }\n if (single) {\n extend(multiple, single);\n }\n }\n });\n if (browser.msie) {\n delete multiple.scale;\n }\n element.animate(multiple, {\n queue: false,\n show: false,\n hide: false,\n duration: options.duration,\n complete: options.complete\n });\n });\n }\n }\n }\n });\n fx.animatedPromise = fx.promise;\n var Effect = kendo.Class.extend({\n init: function (element, direction) {\n var that = this;\n that.element = element;\n that._direction = direction;\n that.options = {};\n that._additionalEffects = [];\n if (!that.restore) {\n that.restore = [];\n }\n },\n reverse: function () {\n this._reverse = true;\n return this.run();\n },\n play: function () {\n this._reverse = false;\n return this.run();\n },\n add: function (additional) {\n this._additionalEffects.push(additional);\n return this;\n },\n direction: function (value) {\n this._direction = value;\n return this;\n },\n duration: function (duration) {\n this._duration = duration;\n return this;\n },\n compositeRun: function () {\n var that = this, effectSet = new EffectSet(that.element, {\n reverse: that._reverse,\n duration: that._duration\n }), effects = that._additionalEffects.concat([that]);\n return effectSet.run(effects);\n },\n run: function () {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n var that = this, element = that.element, idx = 0, restore = that.restore, length = restore.length, value, deferred = $.Deferred(), start = {}, end = {}, target, children = that.children(), childrenLength = children.length;\n deferred.then($.proxy(that, '_complete'));\n element.data('animating', true);\n for (idx = 0; idx < length; idx++) {\n value = restore[idx];\n if (!element.data(value)) {\n element.data(value, element.css(value));\n }\n }\n for (idx = 0; idx < childrenLength; idx++) {\n children[idx].duration(that._duration).run();\n }\n that.prepare(start, end);\n if (!element.is(':visible')) {\n extend(start, { display: element.data('olddisplay') || 'block' });\n }\n if (transforms) {\n target = element.data('targetTransform');\n if (target) {\n start = extend(target, start);\n }\n }\n start = normalizeCSS(element, start);\n if (transforms && !transitions) {\n start = strip3DTransforms(start);\n }\n element.css(start).css(TRANSFORM);\n that.setup();\n element.data('targetTransform', end);\n fx.animate(element, end, {\n duration: that._duration,\n complete: deferred.resolve\n });\n return deferred.promise();\n },\n stop: function () {\n var idx = 0, children = this.children(), childrenLength = children.length;\n for (idx = 0; idx < childrenLength; idx++) {\n children[idx].stop();\n }\n $(this.element).kendoStop(true, true);\n return this;\n },\n restoreCallback: function () {\n var element = this.element;\n for (var i = 0, length = this.restore.length; i < length; i++) {\n var value = this.restore[i];\n element.css(value, element.data(value));\n }\n },\n _complete: function () {\n var that = this, element = that.element;\n element.removeData('animating').dequeue();\n that.restoreCallback();\n if (that.shouldHide()) {\n element.data('olddisplay', element.css('display')).hide();\n }\n if (hasZoom && !transforms) {\n setTimeout($.proxy(that, 'restoreCallback'), 0);\n }\n that.teardown();\n },\n setOptions: function (options) {\n extend(true, this.options, options);\n },\n children: function () {\n return [];\n },\n shouldHide: $.noop,\n setup: $.noop,\n prepare: $.noop,\n teardown: $.noop,\n directions: [],\n setReverse: function (reverse) {\n this._reverse = reverse;\n return this;\n }\n });\n function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1);\n }\n function createEffect(name, definition) {\n var effectClass = Effect.extend(definition), directions = effectClass.prototype.directions;\n fx[capitalize(name)] = effectClass;\n fx.Element.prototype[name] = function (direction, opt1, opt2, opt3) {\n return new effectClass(this.element, direction, opt1, opt2, opt3);\n };\n each(directions, function (idx, theDirection) {\n fx.Element.prototype[name + capitalize(theDirection)] = function (opt1, opt2, opt3) {\n return new effectClass(this.element, theDirection, opt1, opt2, opt3);\n };\n });\n }\n var FOUR_DIRECTIONS = [\n 'left',\n 'right',\n 'up',\n 'down'\n ], IN_OUT = [\n 'in',\n 'out'\n ];\n createEffect('slideIn', {\n directions: FOUR_DIRECTIONS,\n divisor: function (value) {\n this.options.divisor = value;\n return this;\n },\n prepare: function (start, end) {\n var that = this, tmp, element = that.element, direction = directions[that._direction], offset = -direction.modifier * (direction.vertical ? element.outerHeight() : element.outerWidth()), startValue = offset / (that.options && that.options.divisor || 1) + PX, endValue = '0px';\n if (that._reverse) {\n tmp = start;\n start = end;\n end = tmp;\n }\n if (transforms) {\n start[direction.transition] = startValue;\n end[direction.transition] = endValue;\n } else {\n start[direction.property] = startValue;\n end[direction.property] = endValue;\n }\n }\n });\n createEffect('tile', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, previous) {\n Effect.prototype.init.call(this, element, direction);\n this.options = { previous: previous };\n },\n previousDivisor: function (value) {\n this.options.previousDivisor = value;\n return this;\n },\n children: function () {\n var that = this, reverse = that._reverse, previous = that.options.previous, divisor = that.options.previousDivisor || 1, dir = that._direction;\n var children = [kendo.fx(that.element).slideIn(dir).setReverse(reverse)];\n if (previous) {\n children.push(kendo.fx(previous).slideIn(directions[dir].reverse).divisor(divisor).setReverse(!reverse));\n }\n return children;\n }\n });\n function createToggleEffect(name, property, defaultStart, defaultEnd) {\n createEffect(name, {\n directions: IN_OUT,\n startValue: function (value) {\n this._startValue = value;\n return this;\n },\n endValue: function (value) {\n this._endValue = value;\n return this;\n },\n shouldHide: function () {\n return this._shouldHide;\n },\n prepare: function (start, end) {\n var that = this, startValue, endValue, out = this._direction === 'out', startDataValue = that.element.data(property), startDataValueIsSet = !(isNaN(startDataValue) || startDataValue == defaultStart);\n if (startDataValueIsSet) {\n startValue = startDataValue;\n } else if (typeof this._startValue !== 'undefined') {\n startValue = this._startValue;\n } else {\n startValue = out ? defaultStart : defaultEnd;\n }\n if (typeof this._endValue !== 'undefined') {\n endValue = this._endValue;\n } else {\n endValue = out ? defaultEnd : defaultStart;\n }\n if (this._reverse) {\n start[property] = endValue;\n end[property] = startValue;\n } else {\n start[property] = startValue;\n end[property] = endValue;\n }\n that._shouldHide = end[property] === defaultEnd;\n }\n });\n }\n createToggleEffect('fade', 'opacity', 1, 0);\n createToggleEffect('zoom', 'scale', 1, 0.01);\n createEffect('slideMargin', {\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, origin = element.data(ORIGIN), offset = options.offset, margin, reverse = that._reverse;\n if (!reverse && origin === null) {\n element.data(ORIGIN, parseFloat(element.css('margin-' + options.axis)));\n }\n margin = element.data(ORIGIN) || 0;\n end['margin-' + options.axis] = !reverse ? margin + offset : margin;\n }\n });\n createEffect('slideTo', {\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, offset = options.offset.split(','), reverse = that._reverse;\n if (transforms) {\n end.translatex = !reverse ? offset[0] : 0;\n end.translatey = !reverse ? offset[1] : 0;\n } else {\n end.left = !reverse ? offset[0] : 0;\n end.top = !reverse ? offset[1] : 0;\n }\n element.css('left');\n }\n });\n createEffect('expand', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n restore: [OVERFLOW],\n prepare: function (start, end) {\n var that = this, element = that.element, options = that.options, reverse = that._reverse, property = that._direction === 'vertical' ? HEIGHT : WIDTH, setLength = element[0].style[property], oldLength = element.data(property), length = parseFloat(oldLength || setLength), realLength = round(element.css(property, AUTO)[property]());\n start.overflow = HIDDEN;\n length = options && options.reset ? realLength || length : length || realLength;\n end[property] = (reverse ? 0 : length) + PX;\n start[property] = (reverse ? length : 0) + PX;\n if (oldLength === undefined) {\n element.data(property, setLength);\n }\n },\n shouldHide: function () {\n return this._reverse;\n },\n teardown: function () {\n var that = this, element = that.element, property = that._direction === 'vertical' ? HEIGHT : WIDTH, length = element.data(property);\n if (length == AUTO || length === BLANK) {\n setTimeout(function () {\n element.css(property, AUTO).css(property);\n }, 0);\n }\n }\n });\n var TRANSFER_START_STATE = {\n position: 'absolute',\n marginLeft: 0,\n marginTop: 0,\n scale: 1\n };\n createEffect('transfer', {\n init: function (element, target) {\n this.element = element;\n this.options = { target: target };\n this.restore = [];\n },\n setup: function () {\n this.element.appendTo(document.body);\n },\n prepare: function (start, end) {\n var that = this, element = that.element, outerBox = fx.box(element), innerBox = fx.box(that.options.target), currentScale = animationProperty(element, 'scale'), scale = fx.fillScale(innerBox, outerBox), transformOrigin = fx.transformOrigin(innerBox, outerBox);\n extend(start, TRANSFER_START_STATE);\n end.scale = 1;\n element.css(TRANSFORM, 'scale(1)').css(TRANSFORM);\n element.css(TRANSFORM, 'scale(' + currentScale + ')');\n start.top = outerBox.top;\n start.left = outerBox.left;\n start.transformOrigin = transformOrigin.x + PX + ' ' + transformOrigin.y + PX;\n if (that._reverse) {\n start.scale = scale;\n } else {\n end.scale = scale;\n }\n }\n });\n var CLIPS = {\n top: 'rect(auto auto $size auto)',\n bottom: 'rect($size auto auto auto)',\n left: 'rect(auto $size auto auto)',\n right: 'rect(auto auto auto $size)'\n };\n var ROTATIONS = {\n top: {\n start: 'rotatex(0deg)',\n end: 'rotatex(180deg)'\n },\n bottom: {\n start: 'rotatex(-180deg)',\n end: 'rotatex(0deg)'\n },\n left: {\n start: 'rotatey(0deg)',\n end: 'rotatey(-180deg)'\n },\n right: {\n start: 'rotatey(180deg)',\n end: 'rotatey(0deg)'\n }\n };\n function clipInHalf(container, direction) {\n var vertical = kendo.directions[direction].vertical, size = container[vertical ? HEIGHT : WIDTH]() / 2 + 'px';\n return CLIPS[direction].replace('$size', size);\n }\n createEffect('turningPage', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n prepare: function (start, end) {\n var that = this, reverse = that._reverse, direction = reverse ? directions[that._direction].reverse : that._direction, rotation = ROTATIONS[direction];\n start.zIndex = 1;\n if (that._clipInHalf) {\n start.clip = clipInHalf(that._container, kendo.directions[direction].reverse);\n }\n start[BACKFACE] = HIDDEN;\n end[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.start : rotation.end);\n start[TRANSFORM] = TRANSFORM_PERSPECTIVE + (reverse ? rotation.end : rotation.start);\n },\n setup: function () {\n this._container.append(this.element);\n },\n face: function (value) {\n this._face = value;\n return this;\n },\n shouldHide: function () {\n var that = this, reverse = that._reverse, face = that._face;\n return reverse && !face || !reverse && face;\n },\n clipInHalf: function (value) {\n this._clipInHalf = value;\n return this;\n },\n temporary: function () {\n this.element.addClass('temp-page');\n return this;\n }\n });\n createEffect('staticPage', {\n directions: FOUR_DIRECTIONS,\n init: function (element, direction, container) {\n Effect.prototype.init.call(this, element, direction);\n this._container = container;\n },\n restore: ['clip'],\n prepare: function (start, end) {\n var that = this, direction = that._reverse ? directions[that._direction].reverse : that._direction;\n start.clip = clipInHalf(that._container, direction);\n start.opacity = 0.999;\n end.opacity = 1;\n },\n shouldHide: function () {\n var that = this, reverse = that._reverse, face = that._face;\n return reverse && !face || !reverse && face;\n },\n face: function (value) {\n this._face = value;\n return this;\n }\n });\n createEffect('pageturn', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n init: function (element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n children: function () {\n var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, faceClone = options.face.clone(true).removeAttr('id'), backClone = options.back.clone(true).removeAttr('id'), element = that.element;\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n return [\n kendo.fx(options.face).staticPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).staticPage(reverseDirection, element).setReverse(reverse),\n kendo.fx(faceClone).turningPage(direction, element).face(true).clipInHalf(true).temporary().setReverse(reverse),\n kendo.fx(backClone).turningPage(reverseDirection, element).clipInHalf(true).temporary().setReverse(reverse)\n ];\n },\n prepare: function (start, end) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = 'preserve-3d';\n start.opacity = 0.999;\n end.opacity = 1;\n },\n teardown: function () {\n this.element.find('.temp-page').remove();\n }\n });\n createEffect('flip', {\n directions: [\n 'horizontal',\n 'vertical'\n ],\n init: function (element, direction, face, back) {\n Effect.prototype.init.call(this, element, direction);\n this.options = {};\n this.options.face = face;\n this.options.back = back;\n },\n children: function () {\n var that = this, options = that.options, direction = that._direction === 'horizontal' ? 'left' : 'top', reverseDirection = kendo.directions[direction].reverse, reverse = that._reverse, temp, element = that.element;\n if (reverse) {\n temp = direction;\n direction = reverseDirection;\n reverseDirection = temp;\n }\n return [\n kendo.fx(options.face).turningPage(direction, element).face(true).setReverse(reverse),\n kendo.fx(options.back).turningPage(reverseDirection, element).setReverse(reverse)\n ];\n },\n prepare: function (start) {\n start[PERSPECTIVE] = DEFAULT_PERSPECTIVE;\n start.transformStyle = 'preserve-3d';\n }\n });\n var RESTORE_OVERFLOW = !support.mobileOS.android;\n var IGNORE_TRANSITION_EVENT_SELECTOR = '.km-touch-scrollbar, .km-actionsheet-wrapper';\n createEffect('replace', {\n _before: $.noop,\n _after: $.noop,\n init: function (element, previous, transitionClass) {\n Effect.prototype.init.call(this, element);\n this._previous = $(previous);\n this._transitionClass = transitionClass;\n },\n duration: function () {\n throw new Error('The replace effect does not support duration setting; the effect duration may be customized through the transition class rule');\n },\n beforeTransition: function (callback) {\n this._before = callback;\n return this;\n },\n afterTransition: function (callback) {\n this._after = callback;\n return this;\n },\n _both: function () {\n return $().add(this._element).add(this._previous);\n },\n _containerClass: function () {\n var direction = this._direction, containerClass = 'k-fx k-fx-start k-fx-' + this._transitionClass;\n if (direction) {\n containerClass += ' k-fx-' + direction;\n }\n if (this._reverse) {\n containerClass += ' k-fx-reverse';\n }\n return containerClass;\n },\n complete: function (e) {\n if (!this.deferred || e && $(e.target).is(IGNORE_TRANSITION_EVENT_SELECTOR)) {\n return;\n }\n var container = this.container;\n container.removeClass('k-fx-end').removeClass(this._containerClass()).off(transitions.event, this.completeProxy);\n this._previous.hide().removeClass('k-fx-current');\n this.element.removeClass('k-fx-next');\n if (RESTORE_OVERFLOW) {\n container.css(OVERFLOW, '');\n }\n if (!this.isAbsolute) {\n this._both().css(POSITION, '');\n }\n this.deferred.resolve();\n delete this.deferred;\n },\n run: function () {\n if (this._additionalEffects && this._additionalEffects[0]) {\n return this.compositeRun();\n }\n var that = this, element = that.element, previous = that._previous, container = element.parents().filter(previous.parents()).first(), both = that._both(), deferred = $.Deferred(), originalPosition = element.css(POSITION), originalOverflow;\n if (!container.length) {\n container = element.parent();\n }\n this.container = container;\n this.deferred = deferred;\n this.isAbsolute = originalPosition == 'absolute';\n if (!this.isAbsolute) {\n both.css(POSITION, 'absolute');\n }\n if (RESTORE_OVERFLOW) {\n originalOverflow = container.css(OVERFLOW);\n container.css(OVERFLOW, 'hidden');\n }\n if (!transitions) {\n this.complete();\n } else {\n element.addClass('k-fx-hidden');\n container.addClass(this._containerClass());\n this.completeProxy = $.proxy(this, 'complete');\n container.on(transitions.event, this.completeProxy);\n kendo.animationFrame(function () {\n element.removeClass('k-fx-hidden').addClass('k-fx-next');\n previous.css('display', '').addClass('k-fx-current');\n that._before(previous, element);\n kendo.animationFrame(function () {\n container.removeClass('k-fx-start').addClass('k-fx-end');\n that._after(previous, element);\n });\n });\n }\n return deferred.promise();\n },\n stop: function () {\n this.complete();\n }\n });\n var Animation = kendo.Class.extend({\n init: function () {\n var that = this;\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n },\n tick: $.noop,\n done: $.noop,\n onEnd: $.noop,\n onCancel: $.noop,\n start: function () {\n if (!this.enabled()) {\n return;\n }\n if (!this.done()) {\n this._started = true;\n kendo.animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n },\n enabled: function () {\n return true;\n },\n cancel: function () {\n this._started = false;\n this.onCancel();\n },\n _tick: function () {\n var that = this;\n if (!that._started) {\n return;\n }\n that.tick();\n if (!that.done()) {\n kendo.animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n }\n });\n var Transition = Animation.extend({\n init: function (options) {\n var that = this;\n extend(that, options);\n Animation.fn.init.call(that);\n },\n done: function () {\n return this.timePassed() >= this.duration;\n },\n timePassed: function () {\n return Math.min(this.duration, new Date() - this.startDate);\n },\n moveTo: function (options) {\n var that = this, movable = that.movable;\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration == 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = new Date();\n that.start();\n },\n _easeProxy: function (ease) {\n var that = this;\n return function () {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n }\n });\n extend(Transition, {\n easeOutExpo: function (t, b, c, d) {\n return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n easeOutBack: function (t, b, c, d, s) {\n s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n });\n fx.Animation = Animation;\n fx.Transition = Transition;\n fx.createEffect = createEffect;\n fx.box = function (element) {\n element = $(element);\n var result = element.offset();\n result.width = element.outerWidth();\n result.height = element.outerHeight();\n return result;\n };\n fx.transformOrigin = function (inner, outer) {\n var x = (inner.left - outer.left) * outer.width / (outer.width - inner.width), y = (inner.top - outer.top) * outer.height / (outer.height - inner.height);\n return {\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y\n };\n };\n fx.fillScale = function (inner, outer) {\n return Math.min(inner.width / outer.width, inner.height / outer.height);\n };\n fx.fitScale = function (inner, outer) {\n return Math.max(inner.width / outer.width, inner.height / outer.height);\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.view', [\n 'kendo.core',\n 'kendo.binder',\n 'kendo.fx'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'view',\n name: 'View',\n category: 'framework',\n description: 'The View class instantiates and handles the events of a certain screen from the application.',\n depends: [\n 'core',\n 'binder',\n 'fx'\n ],\n hidden: false\n };\n (function ($, undefined) {\n var kendo = window.kendo, Observable = kendo.Observable, SCRIPT = 'SCRIPT', INIT = 'init', SHOW = 'show', HIDE = 'hide', TRANSITION_START = 'transitionStart', TRANSITION_END = 'transitionEnd', ATTACH = 'attach', DETACH = 'detach', sizzleErrorRegExp = /unrecognized expression/;\n var View = Observable.extend({\n init: function (content, options) {\n var that = this;\n options = options || {};\n Observable.fn.init.call(that);\n that.content = content;\n that.id = kendo.guid();\n that.tagName = options.tagName || 'div';\n that.model = options.model;\n that._wrap = options.wrap !== false;\n this._evalTemplate = options.evalTemplate || false;\n that._fragments = {};\n that.bind([\n INIT,\n SHOW,\n HIDE,\n TRANSITION_START,\n TRANSITION_END\n ], options);\n },\n render: function (container) {\n var that = this, notInitialized = !that.element;\n if (notInitialized) {\n that.element = that._createElement();\n }\n if (container) {\n $(container).append(that.element);\n }\n if (notInitialized) {\n kendo.bind(that.element, that.model);\n that.trigger(INIT);\n }\n if (container) {\n that._eachFragment(ATTACH);\n that.trigger(SHOW);\n }\n return that.element;\n },\n clone: function () {\n return new ViewClone(this);\n },\n triggerBeforeShow: function () {\n return true;\n },\n triggerBeforeHide: function () {\n return true;\n },\n showStart: function () {\n this.element.css('display', '');\n },\n showEnd: function () {\n },\n hideEnd: function () {\n this.hide();\n },\n beforeTransition: function (type) {\n this.trigger(TRANSITION_START, { type: type });\n },\n afterTransition: function (type) {\n this.trigger(TRANSITION_END, { type: type });\n },\n hide: function () {\n this._eachFragment(DETACH);\n this.element.detach();\n this.trigger(HIDE);\n },\n destroy: function () {\n var element = this.element;\n if (element) {\n kendo.unbind(element);\n kendo.destroy(element);\n element.remove();\n }\n },\n fragments: function (fragments) {\n $.extend(this._fragments, fragments);\n },\n _eachFragment: function (methodName) {\n for (var placeholder in this._fragments) {\n this._fragments[placeholder][methodName](this, placeholder);\n }\n },\n _createElement: function () {\n var that = this, wrapper = '<' + that.tagName + ' />', element, content;\n try {\n content = $(document.getElementById(that.content) || that.content);\n if (content[0].tagName === SCRIPT) {\n content = content.html();\n }\n } catch (e) {\n if (sizzleErrorRegExp.test(e.message)) {\n content = that.content;\n }\n }\n if (typeof content === 'string') {\n content = content.replace(/^\\s+|\\s+$/g, '');\n if (that._evalTemplate) {\n content = kendo.template(content)(that.model || {});\n }\n element = $(wrapper).append(content);\n if (!that._wrap) {\n element = element.contents();\n }\n } else {\n element = content;\n if (that._evalTemplate) {\n var result = $(kendo.template($('
    ').append(element.clone(true)).html())(that.model || {}));\n if ($.contains(document, element[0])) {\n element.replaceWith(result);\n }\n element = result;\n }\n if (that._wrap) {\n element = element.wrapAll(wrapper).parent();\n }\n }\n return element;\n }\n });\n var ViewClone = kendo.Class.extend({\n init: function (view) {\n $.extend(this, {\n element: view.element.clone(true),\n transition: view.transition,\n id: view.id\n });\n view.element.parent().append(this.element);\n },\n hideEnd: function () {\n this.element.remove();\n },\n beforeTransition: $.noop,\n afterTransition: $.noop\n });\n var Layout = View.extend({\n init: function (content, options) {\n View.fn.init.call(this, content, options);\n this.containers = {};\n },\n container: function (selector) {\n var container = this.containers[selector];\n if (!container) {\n container = this._createContainer(selector);\n this.containers[selector] = container;\n }\n return container;\n },\n showIn: function (selector, view, transition) {\n this.container(selector).show(view, transition);\n },\n _createContainer: function (selector) {\n var root = this.render(), element = root.find(selector), container;\n if (!element.length && root.is(selector)) {\n if (root.is(selector)) {\n element = root;\n } else {\n throw new Error('can\\'t find a container with the specified ' + selector + ' selector');\n }\n }\n container = new ViewContainer(element);\n container.bind('accepted', function (e) {\n e.view.render(element);\n });\n return container;\n }\n });\n var Fragment = View.extend({\n attach: function (view, placeholder) {\n view.element.find(placeholder).replaceWith(this.render());\n },\n detach: function () {\n }\n });\n var transitionRegExp = /^(\\w+)(:(\\w+))?( (\\w+))?$/;\n function parseTransition(transition) {\n if (!transition) {\n return {};\n }\n var matches = transition.match(transitionRegExp) || [];\n return {\n type: matches[1],\n direction: matches[3],\n reverse: matches[5] === 'reverse'\n };\n }\n var ViewContainer = Observable.extend({\n init: function (container) {\n Observable.fn.init.call(this);\n this.container = container;\n this.history = [];\n this.view = null;\n this.running = false;\n },\n after: function () {\n this.running = false;\n this.trigger('complete', { view: this.view });\n this.trigger('after');\n },\n end: function () {\n this.view.showEnd();\n this.previous.hideEnd();\n this.after();\n },\n show: function (view, transition, locationID) {\n if (!view.triggerBeforeShow() || this.view && !this.view.triggerBeforeHide()) {\n this.trigger('after');\n return false;\n }\n locationID = locationID || view.id;\n var that = this, current = view === that.view ? view.clone() : that.view, history = that.history, previousEntry = history[history.length - 2] || {}, back = previousEntry.id === locationID, theTransition = transition || (back ? history[history.length - 1].transition : view.transition), transitionData = parseTransition(theTransition);\n if (that.running) {\n that.effect.stop();\n }\n if (theTransition === 'none') {\n theTransition = null;\n }\n that.trigger('accepted', { view: view });\n that.view = view;\n that.previous = current;\n that.running = true;\n if (!back) {\n history.push({\n id: locationID,\n transition: theTransition\n });\n } else {\n history.pop();\n }\n if (!current) {\n view.showStart();\n view.showEnd();\n that.after();\n return true;\n }\n if (!theTransition || !kendo.effects.enabled) {\n view.showStart();\n that.end();\n } else {\n view.element.addClass('k-fx-hidden');\n view.showStart();\n if (back && !transition) {\n transitionData.reverse = !transitionData.reverse;\n }\n that.effect = kendo.fx(view.element).replace(current.element, transitionData.type).beforeTransition(function () {\n view.beforeTransition('show');\n current.beforeTransition('hide');\n }).afterTransition(function () {\n view.afterTransition('show');\n current.afterTransition('hide');\n }).direction(transitionData.direction).setReverse(transitionData.reverse);\n that.effect.run().then(function () {\n that.end();\n });\n }\n return true;\n }\n });\n kendo.ViewContainer = ViewContainer;\n kendo.Fragment = Fragment;\n kendo.Layout = Layout;\n kendo.View = View;\n kendo.ViewClone = ViewClone;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.data.signalr', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'data.signalr',\n name: 'SignalR',\n category: 'framework',\n depends: ['data'],\n hidden: true\n };\n (function ($) {\n var transport = kendo.data.RemoteTransport.extend({\n init: function (options) {\n var signalr = options && options.signalr ? options.signalr : {};\n var promise = signalr.promise;\n if (!promise) {\n throw new Error('The \"promise\" option must be set.');\n }\n if (typeof promise.done != 'function' || typeof promise.fail != 'function') {\n throw new Error('The \"promise\" option must be a Promise.');\n }\n this.promise = promise;\n var hub = signalr.hub;\n if (!hub) {\n throw new Error('The \"hub\" option must be set.');\n }\n if (typeof hub.on != 'function' || typeof hub.invoke != 'function') {\n throw new Error('The \"hub\" option is not a valid SignalR hub proxy.');\n }\n this.hub = hub;\n kendo.data.RemoteTransport.fn.init.call(this, options);\n },\n push: function (callbacks) {\n var client = this.options.signalr.client || {};\n if (client.create) {\n this.hub.on(client.create, callbacks.pushCreate);\n }\n if (client.update) {\n this.hub.on(client.update, callbacks.pushUpdate);\n }\n if (client.destroy) {\n this.hub.on(client.destroy, callbacks.pushDestroy);\n }\n },\n _crud: function (options, type) {\n var hub = this.hub;\n var server = this.options.signalr.server;\n if (!server || !server[type]) {\n throw new Error(kendo.format('The \"server.{0}\" option must be set.', type));\n }\n var args = [server[type]];\n var data = this.parameterMap(options.data, type);\n if (!$.isEmptyObject(data)) {\n args.push(data);\n }\n this.promise.done(function () {\n hub.invoke.apply(hub, args).done(options.success).fail(options.error);\n });\n },\n read: function (options) {\n this._crud(options, 'read');\n },\n create: function (options) {\n this._crud(options, 'create');\n },\n update: function (options) {\n this._crud(options, 'update');\n },\n destroy: function (options) {\n this._crud(options, 'destroy');\n }\n });\n $.extend(true, kendo.data, { transports: { signalr: transport } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.validator', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'validator',\n name: 'Validator',\n category: 'web',\n description: 'The Validator offers an easy way to do a client-side form validation.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, NS = '.kendoValidator', INVALIDMSG = 'k-invalid-msg', invalidMsgRegExp = new RegExp(INVALIDMSG, 'i'), INVALIDINPUT = 'k-invalid', VALIDINPUT = 'k-valid', emailRegExp = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i, urlRegExp = /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i, INPUTSELECTOR = ':input:not(:button,[type=submit],[type=reset],[disabled],[readonly])', CHECKBOXSELECTOR = ':checkbox:not([disabled],[readonly])', NUMBERINPUTSELECTOR = '[type=number],[type=range]', BLUR = 'blur', NAME = 'name', FORM = 'form', NOVALIDATE = 'novalidate', proxy = $.proxy, patternMatcher = function (value, pattern) {\n if (typeof pattern === 'string') {\n pattern = new RegExp('^(?:' + pattern + ')$');\n }\n return pattern.test(value);\n }, matcher = function (input, selector, pattern) {\n var value = input.val();\n if (input.filter(selector).length && value !== '') {\n return patternMatcher(value, pattern);\n }\n return true;\n }, hasAttribute = function (input, name) {\n if (input.length) {\n return input[0].attributes[name] != null;\n }\n return false;\n };\n if (!kendo.ui.validator) {\n kendo.ui.validator = {\n rules: {},\n messages: {}\n };\n }\n function resolveRules(element) {\n var resolvers = kendo.ui.validator.ruleResolvers || {}, rules = {}, name;\n for (name in resolvers) {\n $.extend(true, rules, resolvers[name].resolve(element));\n }\n return rules;\n }\n function decode(value) {\n return value.replace(/&/g, '&').replace(/"/g, '\"').replace(/'/g, '\\'').replace(/</g, '<').replace(/>/g, '>');\n }\n function numberOfDecimalDigits(value) {\n value = (value + '').split('.');\n if (value.length > 1) {\n return value[1].length;\n }\n return 0;\n }\n function parseHtml(text) {\n if ($.parseHTML) {\n return $($.parseHTML(text));\n }\n return $(text);\n }\n function searchForMessageContainer(elements, fieldName) {\n var containers = $(), element, attr;\n for (var idx = 0, length = elements.length; idx < length; idx++) {\n element = elements[idx];\n if (invalidMsgRegExp.test(element.className)) {\n attr = element.getAttribute(kendo.attr('for'));\n if (attr === fieldName) {\n containers = containers.add(element);\n }\n }\n }\n return containers;\n }\n var Validator = Widget.extend({\n init: function (element, options) {\n var that = this, resolved = resolveRules(element), validateAttributeSelector = '[' + kendo.attr('validate') + '!=false]';\n options = options || {};\n options.rules = $.extend({}, kendo.ui.validator.rules, resolved.rules, options.rules);\n options.messages = $.extend({}, kendo.ui.validator.messages, resolved.messages, options.messages);\n Widget.fn.init.call(that, element, options);\n that._errorTemplate = kendo.template(that.options.errorTemplate);\n if (that.element.is(FORM)) {\n that.element.attr(NOVALIDATE, NOVALIDATE);\n }\n that._inputSelector = INPUTSELECTOR + validateAttributeSelector;\n that._checkboxSelector = CHECKBOXSELECTOR + validateAttributeSelector;\n that._errors = {};\n that._attachEvents();\n that._isValidated = false;\n },\n events: [\n 'validate',\n 'change'\n ],\n options: {\n name: 'Validator',\n errorTemplate: '' + ' #=message#',\n messages: {\n required: '{0} is required',\n pattern: '{0} is not valid',\n min: '{0} should be greater than or equal to {1}',\n max: '{0} should be smaller than or equal to {1}',\n step: '{0} is not valid',\n email: '{0} is not valid email',\n url: '{0} is not valid URL',\n date: '{0} is not valid date',\n dateCompare: 'End date should be greater than or equal to the start date'\n },\n rules: {\n required: function (input) {\n var checkbox = input.filter('[type=checkbox]').length && !input.is(':checked'), value = input.val();\n return !(hasAttribute(input, 'required') && (value === '' || !value || checkbox));\n },\n pattern: function (input) {\n if (input.filter('[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]').filter('[pattern]').length && input.val() !== '') {\n return patternMatcher(input.val(), input.attr('pattern'));\n }\n return true;\n },\n min: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[min]').length && input.val() !== '') {\n var min = parseFloat(input.attr('min')) || 0, val = kendo.parseFloat(input.val());\n return min <= val;\n }\n return true;\n },\n max: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[max]').length && input.val() !== '') {\n var max = parseFloat(input.attr('max')) || 0, val = kendo.parseFloat(input.val());\n return max >= val;\n }\n return true;\n },\n step: function (input) {\n if (input.filter(NUMBERINPUTSELECTOR + ',[' + kendo.attr('type') + '=number]').filter('[step]').length && input.val() !== '') {\n var min = parseFloat(input.attr('min')) || 0, step = parseFloat(input.attr('step')) || 1, val = parseFloat(input.val()), decimals = numberOfDecimalDigits(step), raise;\n if (decimals) {\n raise = Math.pow(10, decimals);\n return Math.floor((val - min) * raise) % (step * raise) / Math.pow(100, decimals) === 0;\n }\n return (val - min) % step === 0;\n }\n return true;\n },\n email: function (input) {\n return matcher(input, '[type=email],[' + kendo.attr('type') + '=email]', emailRegExp);\n },\n url: function (input) {\n return matcher(input, '[type=url],[' + kendo.attr('type') + '=url]', urlRegExp);\n },\n date: function (input) {\n if (input.filter('[type^=date],[' + kendo.attr('type') + '=date]').length && input.val() !== '') {\n return kendo.parseDate(input.val(), input.attr(kendo.attr('format'))) !== null;\n }\n return true;\n }\n },\n validateOnBlur: true\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.off(NS);\n },\n value: function () {\n if (!this._isValidated) {\n return false;\n }\n return this.errors().length === 0;\n },\n _submit: function (e) {\n if (!this.validate()) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n }\n return true;\n },\n _checkElement: function (element) {\n var state = this.value();\n this.validateInput(element);\n if (this.value() !== state) {\n this.trigger('change');\n }\n },\n _attachEvents: function () {\n var that = this;\n if (that.element.is(FORM)) {\n that.element.on('submit' + NS, proxy(that._submit, that));\n }\n if (that.options.validateOnBlur) {\n if (!that.element.is(INPUTSELECTOR)) {\n that.element.on(BLUR + NS, that._inputSelector, function () {\n that._checkElement($(this));\n });\n that.element.on('click' + NS, that._checkboxSelector, function () {\n that._checkElement($(this));\n });\n } else {\n that.element.on(BLUR + NS, function () {\n that._checkElement(that.element);\n });\n if (that.element.is(CHECKBOXSELECTOR)) {\n that.element.on('click' + NS, function () {\n that._checkElement(that.element);\n });\n }\n }\n }\n },\n validate: function () {\n var inputs;\n var idx;\n var result = false;\n var length;\n var isValid = this.value();\n this._errors = {};\n if (!this.element.is(INPUTSELECTOR)) {\n var invalid = false;\n inputs = this.element.find(this._inputSelector);\n for (idx = 0, length = inputs.length; idx < length; idx++) {\n if (!this.validateInput(inputs.eq(idx))) {\n invalid = true;\n }\n }\n result = !invalid;\n } else {\n result = this.validateInput(this.element);\n }\n this.trigger('validate', { valid: result });\n if (isValid !== result) {\n this.trigger('change');\n }\n return result;\n },\n validateInput: function (input) {\n input = $(input);\n this._isValidated = true;\n var that = this, template = that._errorTemplate, result = that._checkValidity(input), valid = result.valid, className = '.' + INVALIDMSG, fieldName = input.attr(NAME) || '', lbl = that._findMessageContainer(fieldName).add(input.next(className).filter(function () {\n var element = $(this);\n if (element.filter('[' + kendo.attr('for') + ']').length) {\n return element.attr(kendo.attr('for')) === fieldName;\n }\n return true;\n })).hide(), messageText;\n input.removeAttr('aria-invalid');\n if (!valid) {\n messageText = that._extractMessage(input, result.key);\n that._errors[fieldName] = messageText;\n var messageLabel = parseHtml(template({ message: decode(messageText) }));\n var lblId = lbl.attr('id');\n that._decorateMessageContainer(messageLabel, fieldName);\n if (lblId) {\n messageLabel.attr('id', lblId);\n }\n if (!lbl.replaceWith(messageLabel).length) {\n messageLabel.insertAfter(input);\n }\n messageLabel.show();\n input.attr('aria-invalid', true);\n } else {\n delete that._errors[fieldName];\n }\n input.toggleClass(INVALIDINPUT, !valid);\n input.toggleClass(VALIDINPUT, valid);\n return valid;\n },\n hideMessages: function () {\n var that = this, className = '.' + INVALIDMSG, element = that.element;\n if (!element.is(INPUTSELECTOR)) {\n element.find(className).hide();\n } else {\n element.next(className).hide();\n }\n },\n _findMessageContainer: function (fieldName) {\n var locators = kendo.ui.validator.messageLocators, name, containers = $();\n for (var idx = 0, length = this.element.length; idx < length; idx++) {\n containers = containers.add(searchForMessageContainer(this.element[idx].getElementsByTagName('*'), fieldName));\n }\n for (name in locators) {\n containers = containers.add(locators[name].locate(this.element, fieldName));\n }\n return containers;\n },\n _decorateMessageContainer: function (container, fieldName) {\n var locators = kendo.ui.validator.messageLocators, name;\n container.addClass(INVALIDMSG).attr(kendo.attr('for'), fieldName || '');\n for (name in locators) {\n locators[name].decorate(container, fieldName);\n }\n container.attr('role', 'alert');\n },\n _extractMessage: function (input, ruleKey) {\n var that = this, customMessage = that.options.messages[ruleKey], fieldName = input.attr(NAME);\n customMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n return kendo.format(input.attr(kendo.attr(ruleKey + '-msg')) || input.attr('validationMessage') || input.attr('title') || customMessage || '', fieldName, input.attr(ruleKey) || input.attr(kendo.attr(ruleKey)));\n },\n _checkValidity: function (input) {\n var rules = this.options.rules, rule;\n for (rule in rules) {\n if (!rules[rule].call(this, input)) {\n return {\n valid: false,\n key: rule\n };\n }\n }\n return { valid: true };\n },\n errors: function () {\n var results = [], errors = this._errors, error;\n for (error in errors) {\n results.push(errors[error]);\n }\n return results;\n }\n });\n kendo.ui.plugin(Validator);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.draganddrop', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'draganddrop',\n name: 'Drag & drop',\n category: 'framework',\n description: 'Drag & drop functionality for any DOM element.',\n depends: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, document = window.document, $window = $(window), Class = kendo.Class, Widget = kendo.ui.Widget, Observable = kendo.Observable, UserEvents = kendo.UserEvents, proxy = $.proxy, extend = $.extend, getOffset = kendo.getOffset, draggables = {}, dropTargets = {}, dropAreas = {}, lastDropTarget, elementUnderCursor = kendo.elementUnderCursor, KEYUP = 'keyup', CHANGE = 'change', DRAGSTART = 'dragstart', HOLD = 'hold', DRAG = 'drag', DRAGEND = 'dragend', DRAGCANCEL = 'dragcancel', HINTDESTROYED = 'hintDestroyed', DRAGENTER = 'dragenter', DRAGLEAVE = 'dragleave', DROP = 'drop';\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n function containerBoundaries(container, element) {\n var offset = getOffset(container), minX = offset.left + numericCssPropery(container, 'borderLeftWidth') + numericCssPropery(container, 'paddingLeft'), minY = offset.top + numericCssPropery(container, 'borderTopWidth') + numericCssPropery(container, 'paddingTop'), maxX = minX + container.width() - element.outerWidth(true), maxY = minY + container.height() - element.outerHeight(true);\n return {\n x: {\n min: minX,\n max: maxX\n },\n y: {\n min: minY,\n max: maxY\n }\n };\n }\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0, targetLen = targets && targets.length, areaLen = areas && areas.length;\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return {\n target: theTarget,\n targetElement: target\n };\n }\n }\n for (i = 0; i < areaLen; i++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return {\n target: theFilter,\n targetElement: target\n };\n }\n }\n target = target.parentNode;\n }\n return undefined;\n }\n var TapCapture = Observable.extend({\n init: function (element, options) {\n var that = this, domElement = element[0];\n that.capture = false;\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(' '), function () {\n domElement.addEventListener(this, proxy(that._press, that), true);\n });\n $.each(kendo.eventMap.up.split(' '), function () {\n domElement.addEventListener(this, proxy(that._release, that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(' '), function () {\n domElement.attachEvent(this, proxy(that._press, that));\n });\n $.each(kendo.eventMap.up.split(' '), function () {\n domElement.attachEvent(this, proxy(that._release, that));\n });\n }\n Observable.fn.init.call(that);\n that.bind([\n 'press',\n 'release'\n ], options || {});\n },\n captureNext: function () {\n this.capture = true;\n },\n cancelCapture: function () {\n this.capture = false;\n },\n _press: function (e) {\n var that = this;\n that.trigger('press');\n if (that.capture) {\n e.preventDefault();\n }\n },\n _release: function (e) {\n var that = this;\n that.trigger('release');\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n var PaneDimension = Observable.extend({\n init: function (options) {\n var that = this;\n Observable.fn.init.call(that);\n that.forcedEnabled = false;\n $.extend(that, options);\n that.scale = 1;\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n },\n makeVirtual: function () {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n virtualSize: function (min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n outOfBounds: function (offset) {\n return offset > this.max || offset < this.min;\n },\n forceEnabled: function () {\n this.forcedEnabled = true;\n },\n getSize: function () {\n return this.container[0][this.measure];\n },\n getTotal: function () {\n return this.element[0][this.scrollSize];\n },\n rescale: function (scale) {\n this.scale = scale;\n },\n update: function (silent) {\n var that = this, total = that.virtual ? that._virtualMax : that.getTotal(), scaledTotal = total * that.scale, size = that.getSize();\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n var PaneDimensions = Observable.extend({\n init: function (options) {\n var that = this;\n Observable.fn.init.call(that);\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n },\n rescale: function (newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n centerCoordinates: function () {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n },\n refresh: function () {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n var PaneAxis = Observable.extend({\n init: function (options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n outOfBounds: function () {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n dragMove: function (delta) {\n var that = this, dimension = that.dimension, axis = that.axis, movable = that.movable, position = movable[axis] + delta;\n if (!dimension.enabled) {\n return;\n }\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n delta *= that.resistance;\n }\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n var Pane = Class.extend({\n init: function (options) {\n var that = this, x, y, resistance, movable;\n extend(that, { elastic: true }, options);\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart: function (e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n press: function (e) {\n if ($(e.event.target).closest('a').is('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange: function (e) {\n var previousGesture = that.gesture, previousCenter = previousGesture.center, center = e.center, scaleDelta = e.distance / previousGesture.distance, minScale = that.dimensions.minScale, maxScale = that.dimensions.maxScale, coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n var offsetX = movable.x + that.offset.left, offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n movable.scaleWith(scaleDelta);\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n move: function (e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end: function (e) {\n e.preventDefault();\n }\n });\n }\n });\n var TRANSFORM_STYLE = support.transitions.prefix + 'Transform', translate;\n if (support.hasHW3D) {\n translate = function (x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n };\n } else {\n translate = function (x, y, scale) {\n return 'translate(' + x + 'px,' + y + 'px) scale(' + scale + ')';\n };\n }\n var Movable = Observable.extend({\n init: function (element) {\n var that = this;\n Observable.fn.init.call(that);\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n translateAxis: function (axis, by) {\n this[axis] += by;\n this.refresh();\n },\n scaleTo: function (scale) {\n this.scale = scale;\n this.refresh();\n },\n scaleWith: function (scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n translate: function (coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n moveAxis: function (axis, value) {\n this[axis] = value;\n this.refresh();\n },\n moveTo: function (coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n refresh: function () {\n var that = this, x = that.x, y = that.y, newCoordinates;\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n newCoordinates = translate(x, y, that.scale);\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = 'absolute';\n that.element[0].style.left = that.x + 'px';\n that.element[0].style.top = that.y + 'px';\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n _saveCoordinates: function (coordinates) {\n this.coordinates = coordinates;\n }\n });\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group, droppables = collection[groupName], i;\n Widget.fn.destroy.call(widget);\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0;\n delete collection[groupName];\n }\n }\n var DropTarget = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n var group = that.options.group;\n if (!(group in dropTargets)) {\n dropTargets[group] = [that];\n } else {\n dropTargets[group].push(that);\n }\n },\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n options: {\n name: 'DropTarget',\n group: 'default'\n },\n destroy: function () {\n destroyDroppable(dropTargets, this);\n },\n _trigger: function (eventName, e) {\n var that = this, draggable = draggables[that.options.group];\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n _over: function (e) {\n this._trigger(DRAGENTER, e);\n },\n _out: function (e) {\n this._trigger(DRAGLEAVE, e);\n },\n _drop: function (e) {\n var that = this, draggable = draggables[that.options.group];\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n DropTarget.destroyGroup = function (groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName], i;\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n DropTarget._cache = dropTargets;\n var DropTargetArea = DropTarget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n var group = that.options.group;\n if (!(group in dropAreas)) {\n dropAreas[group] = [that];\n } else {\n dropAreas[group].push(that);\n }\n },\n destroy: function () {\n destroyDroppable(dropAreas, this);\n },\n options: {\n name: 'DropTargetArea',\n group: 'default',\n filter: null\n }\n });\n var Draggable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._activated = false;\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: proxy(that._start, that),\n hold: proxy(that._hold, that),\n move: proxy(that._drag, that),\n end: proxy(that._end, that),\n cancel: proxy(that._cancel, that),\n select: proxy(that._select, that)\n });\n that._afterEndHandler = proxy(that._afterEnd, that);\n that._captureEscape = proxy(that._captureEscape, that);\n },\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n options: {\n name: 'Draggable',\n distance: kendo.support.touch ? 0 : 5,\n group: 'default',\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n autoScroll: false,\n dropped: false\n },\n cancelHold: function () {\n this._activated = false;\n },\n _captureEscape: function (e) {\n var that = this;\n if (e.keyCode === kendo.keys.ESC) {\n that._trigger(DRAGCANCEL, { event: e });\n that.userEvents.cancel();\n }\n },\n _updateHint: function (e) {\n var that = this, coordinates, options = that.options, boundaries = that.boundaries, axis = options.axis, cursorOffset = that.options.cursorOffset;\n if (cursorOffset) {\n coordinates = {\n left: e.x.location + cursorOffset.left,\n top: e.y.location + cursorOffset.top\n };\n } else {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n }\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n if (axis === 'x') {\n delete coordinates.top;\n } else if (axis === 'y') {\n delete coordinates.left;\n }\n that.hint.css(coordinates);\n },\n _shouldIgnoreTarget: function (target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n _select: function (e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n _start: function (e) {\n var that = this, options = that.options, container = options.container, hint = options.hint;\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || options.holdToDrag && !that._activated) {\n that.userEvents.cancel();\n return;\n }\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n that.hint.css({\n position: 'absolute',\n zIndex: 20000,\n left: offset.left,\n top: offset.top\n }).appendTo(document.body);\n that.angular('compile', function () {\n that.hint.removeAttr('ng-repeat');\n var scopeTarget = $(e.target);\n while (!scopeTarget.data('$$kendoScope') && scopeTarget.length) {\n scopeTarget = scopeTarget.parent();\n }\n return {\n elements: that.hint.get(),\n scopeFrom: scopeTarget.data('$$kendoScope')\n };\n });\n }\n draggables[options.group] = that;\n that.dropped = false;\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n $(document).on(KEYUP, that._captureEscape);\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n that._afterEnd();\n }\n that.userEvents.capture();\n },\n _hold: function (e) {\n this.currentTarget = e.target;\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n }\n },\n _drag: function (e) {\n e.preventDefault();\n var cursorElement = this._elementUnderCursor(e);\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n if (this.options.autoScroll) {\n if (this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval($.proxy(this, '_autoScroll'), 50);\n }\n }\n }\n if (this.hint) {\n this._updateHint(e);\n }\n },\n _processMovement: function (e, cursorElement) {\n this._withDropTarget(cursorElement, function (target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n this._trigger(DRAG, extend(e, {\n dropTarget: lastDropTarget,\n elementUnderCursor: cursorElement\n }));\n },\n _autoScroll: function () {\n var parent = this._scrollableParent[0], velocity = this._scrollVelocity, compensation = this._scrollCompenstation;\n if (!parent) {\n return;\n }\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n var yIsScrollable, xIsScrollable;\n var isRootNode = parent === scrollableRoot()[0];\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n }\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n }\n if (isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n this.hint.css(compensation);\n }\n },\n _end: function (e) {\n this._withDropTarget(this._elementUnderCursor(e), function (target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n this._cancel(this._trigger(DRAGEND, e));\n },\n _cancel: function (isDefaultPrevented) {\n var that = this;\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n if (that.hint && !that.dropped) {\n setTimeout(function () {\n that.hint.stop(true, true);\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, 'fast', that._afterEndHandler);\n }\n }, 0);\n } else {\n that._afterEnd();\n }\n },\n _trigger: function (eventName, e) {\n var that = this;\n return that.trigger(eventName, extend({}, e.event, {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor\n }));\n },\n _elementUnderCursor: function (e) {\n var target = elementUnderCursor(e), hint = this.hint;\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n return target;\n },\n _withDropTarget: function (element, callback) {\n var result, group = this.options.group, targets = dropTargets[group], areas = dropAreas[group];\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that._afterEnd();\n that.userEvents.destroy();\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that.currentTarget = null;\n },\n _afterEnd: function () {\n var that = this;\n if (that.hint) {\n that.hint.remove();\n }\n delete draggables[that.options.group];\n that.trigger('destroy');\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0], offset, top, left;\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n function scrollableRoot() {\n return $(kendo.support.browser.chrome ? document.body : document.documentElement);\n }\n function findScrollableParent(element) {\n var root = scrollableRoot();\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n var parent = $(element)[0];\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n if (parent === document.body) {\n return root;\n }\n return $(parent);\n }\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = {\n x: 0,\n y: 0\n };\n var AUTO_SCROLL_AREA = 50;\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n return velocity;\n }\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.scroller', [\n 'kendo.fx',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.scroller',\n name: 'Scroller',\n category: 'mobile',\n description: 'The Kendo Mobile Scroller widget enables touch friendly kinetic scrolling for the contents of a given DOM element.',\n depends: [\n 'fx',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, fx = kendo.effects, ui = mobile.ui, proxy = $.proxy, extend = $.extend, Widget = ui.Widget, Class = kendo.Class, Movable = kendo.ui.Movable, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Transition = fx.Transition, Animation = fx.Animation, abs = Math.abs, SNAPBACK_DURATION = 500, SCROLLBAR_OPACITY = 0.7, FRICTION = 0.96, VELOCITY_MULTIPLIER = 10, MAX_VELOCITY = 55, OUT_OF_BOUNDS_FRICTION = 0.5, ANIMATED_SCROLLER_PRECISION = 5, RELEASECLASS = 'km-scroller-release', REFRESHCLASS = 'km-scroller-refresh', PULL = 'pull', CHANGE = 'change', RESIZE = 'resize', SCROLL = 'scroll', MOUSE_WHEEL_ID = 2;\n var ZoomSnapBack = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options);\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.tapCapture.bind('press', proxy(that.cancel, that));\n },\n enabled: function () {\n return this.movable.scale < this.dimensions.minScale;\n },\n done: function () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n },\n tick: function () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n },\n onEnd: function () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n }\n });\n var DragInertia = Animation.extend({\n init: function (options) {\n var that = this;\n Animation.fn.init.call(that);\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function () {\n that._end();\n }\n })\n });\n that.tapCapture.bind('press', function () {\n that.cancel();\n });\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n },\n onCancel: function () {\n this.transition.cancel();\n },\n freeze: function (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n },\n onEnd: function () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n },\n done: function () {\n return abs(this.velocity) < 1;\n },\n start: function (e) {\n var that = this, velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.fn.start.call(that);\n }\n },\n tick: function () {\n var that = this, dimension = that.dimension, friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction, delta = that.velocity *= friction, location = that.movable[that.axis] + delta;\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n that.movable.moveAxis(that.axis, location);\n },\n _end: function () {\n this.tapCapture.cancelCapture();\n this.end();\n },\n _snapBack: function () {\n var that = this, dimension = that.dimension, snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n that._moveTo(snapBack);\n },\n _moveTo: function (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n }\n });\n var AnimatedScroller = Animation.extend({\n init: function (options) {\n var that = this;\n kendo.effects.Animation.fn.init.call(this);\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n },\n tick: function () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n },\n done: function () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n },\n onEnd: function () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n },\n setCoordinates: function (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n },\n setCallback: function (callback) {\n if (callback && kendo.isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n },\n _updateCoordinates: function () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n }\n });\n var ScrollBar = Class.extend({\n init: function (options) {\n var that = this, horizontal = options.axis === 'x', element = $('
    ');\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n that.scrollMovable.bind(CHANGE, proxy(that.refresh, that));\n that.container.append(element);\n if (options.alwaysVisible) {\n that.show();\n }\n },\n refresh: function () {\n var that = this, axis = that.axis, dimension = that.dimension, paneSize = dimension.size, scrollMovable = that.scrollMovable, sizeRatio = paneSize / dimension.total, position = Math.round(-scrollMovable[axis] * sizeRatio), size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.css('display', 'none');\n } else {\n this.element.css('display', '');\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize != size) {\n that.element.css(that.size, size + 'px');\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n },\n show: function () {\n this.element.css({\n opacity: SCROLLBAR_OPACITY,\n visibility: 'visible'\n });\n },\n hide: function () {\n if (!this.alwaysVisible) {\n this.element.css({ opacity: 0 });\n }\n }\n });\n var Scroller = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n that._native = that.options.useNative && kendo.support.hasNativeScrolling;\n if (that._native) {\n element.addClass('km-native-scroller').prepend('
    ');\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children().first()\n });\n return;\n }\n element.css('overflow', 'hidden').addClass('km-scroll-wrapper').wrapInner('
    ').prepend('
    ');\n var inner = element.children().eq(1), tapCapture = new kendo.TapCapture(element), movable = new Movable(inner), dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }), avoidScrolling = this.options.avoidScrolling, userEvents = new kendo.UserEvents(element, {\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n start: function (e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity), velocityY = abs(e.y.velocity), horizontalSwipe = velocityX * 2 >= velocityY, originatedFromFixedContainer = $.contains(that.fixedContainer[0], e.event.target), verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }), pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }), zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }), animatedScroller = new AnimatedScroller({\n moveTo: function (coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n movable.bind(CHANGE, function () {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n if (that.options.mousewheelScrolling) {\n element.on('DOMMouseScroll mousewheel', proxy(this, '_wheelScroll'));\n }\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children().first()\n });\n that._initAxis('x');\n that._initAxis('y');\n that._wheelEnd = function () {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n dimensions.refresh();\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n _wheelScroll: function (e) {\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = kendo.wheelDeltaY(e);\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n e.preventDefault();\n },\n makeVirtual: function () {\n this.dimensions.y.makeVirtual();\n },\n virtualSize: function (min, max) {\n this.dimensions.y.virtualSize(min, max);\n },\n height: function () {\n return this.dimensions.y.size;\n },\n scrollHeight: function () {\n return this.scrollElement[0].scrollHeight;\n },\n scrollWidth: function () {\n return this.scrollElement[0].scrollWidth;\n },\n options: {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function () {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n },\n events: [\n PULL,\n SCROLL,\n RESIZE\n ],\n _resize: function () {\n if (!this._native) {\n this.contentResized();\n }\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n },\n reset: function () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n },\n contentResized: function () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n },\n zoomOut: function () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n },\n enable: function () {\n this.enabled = true;\n },\n disable: function () {\n this.enabled = false;\n },\n scrollTo: function (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n },\n animatedScrollTo: function (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n },\n pullHandled: function () {\n var that = this;\n that.refreshHint.removeClass(REFRESHCLASS);\n that.hintContainer.html(that.pullTemplate({}));\n that.yinertia.onEnd();\n that.xinertia.onEnd();\n that.userEvents.cancel();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n },\n _scale: function (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n },\n _initPullToRefresh: function () {\n var that = this;\n that.dimensions.y.forceEnabled();\n that.pullTemplate = kendo.template(that.options.messages.pullTemplate);\n that.releaseTemplate = kendo.template(that.options.messages.releaseTemplate);\n that.refreshTemplate = kendo.template(that.options.messages.refreshTemplate);\n that.scrollElement.prepend('' + that.pullTemplate({}) + '');\n that.refreshHint = that.scrollElement.children().first();\n that.hintContainer = that.refreshHint.children('.km-template');\n that.pane.y.bind('change', proxy(that._paneChange, that));\n that.userEvents.bind('end', proxy(that._dragEnd, that));\n },\n _dragEnd: function () {\n var that = this;\n if (!that.pulled) {\n return;\n }\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS).addClass(REFRESHCLASS);\n that.hintContainer.html(that.refreshTemplate({}));\n that.yinertia.freeze(that.options.pullOffset / 2);\n that.trigger('pull');\n },\n _paneChange: function () {\n var that = this;\n if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n if (!that.pulled) {\n that.pulled = true;\n that.refreshHint.removeClass(REFRESHCLASS).addClass(RELEASECLASS);\n that.hintContainer.html(that.releaseTemplate({}));\n }\n } else if (that.pulled) {\n that.pulled = false;\n that.refreshHint.removeClass(RELEASECLASS);\n that.hintContainer.html(that.pullTemplate({}));\n }\n },\n _initAxis: function (axis) {\n var that = this, movable = that.movable, dimension = that.dimensions[axis], tapCapture = that.tapCapture, paneAxis = that.pane[axis], scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n dimension.bind(CHANGE, function () {\n scrollBar.refresh();\n });\n paneAxis.bind(CHANGE, function () {\n scrollBar.show();\n });\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function () {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n }\n });\n ui.plugin(Scroller);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.resizable', [\n 'kendo.core',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'resizable',\n name: 'Resizable',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, proxy = $.proxy, isFunction = kendo.isFunction, extend = $.extend, HORIZONTAL = 'horizontal', VERTICAL = 'vertical', START = 'start', RESIZE = 'resize', RESIZEEND = 'resizeend';\n var Resizable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.orientation = that.options.orientation.toLowerCase() != VERTICAL ? HORIZONTAL : VERTICAL;\n that._positionMouse = that.orientation == HORIZONTAL ? 'x' : 'y';\n that._position = that.orientation == HORIZONTAL ? 'left' : 'top';\n that._sizingDom = that.orientation == HORIZONTAL ? 'outerWidth' : 'outerHeight';\n that.draggable = new ui.Draggable(element, {\n distance: 1,\n filter: options.handle,\n drag: proxy(that._resize, that),\n dragcancel: proxy(that._cancel, that),\n dragstart: proxy(that._start, that),\n dragend: proxy(that._stop, that)\n });\n that.userEvents = that.draggable.userEvents;\n },\n events: [\n RESIZE,\n RESIZEEND,\n START\n ],\n options: {\n name: 'Resizable',\n orientation: HORIZONTAL\n },\n resize: function () {\n },\n _max: function (e) {\n var that = this, hintSize = that.hint ? that.hint[that._sizingDom]() : 0, size = that.options.max;\n return isFunction(size) ? size(e) : size !== undefined ? that._initialElementPosition + size - hintSize : size;\n },\n _min: function (e) {\n var that = this, size = that.options.min;\n return isFunction(size) ? size(e) : size !== undefined ? that._initialElementPosition + size : size;\n },\n _start: function (e) {\n var that = this, hint = that.options.hint, el = $(e.currentTarget);\n that._initialElementPosition = el.position()[that._position];\n that._initialMousePosition = e[that._positionMouse].startLocation;\n if (hint) {\n that.hint = isFunction(hint) ? $(hint(el)) : hint;\n that.hint.css({ position: 'absolute' }).css(that._position, that._initialElementPosition).appendTo(that.element);\n }\n that.trigger(START, e);\n that._maxPosition = that._max(e);\n that._minPosition = that._min(e);\n $(document.body).css('cursor', el.css('cursor'));\n },\n _resize: function (e) {\n var that = this, maxPosition = that._maxPosition, minPosition = that._minPosition, currentPosition = that._initialElementPosition + (e[that._positionMouse].location - that._initialMousePosition), position;\n position = minPosition !== undefined ? Math.max(minPosition, currentPosition) : currentPosition;\n that.position = position = maxPosition !== undefined ? Math.min(maxPosition, position) : position;\n if (that.hint) {\n that.hint.toggleClass(that.options.invalidClass || '', position == maxPosition || position == minPosition).css(that._position, position);\n }\n that.resizing = true;\n that.trigger(RESIZE, extend(e, { position: position }));\n },\n _stop: function (e) {\n var that = this;\n if (that.hint) {\n that.hint.remove();\n }\n that.resizing = false;\n that.trigger(RESIZEEND, extend(e, { position: that.position }));\n $(document.body).css('cursor', '');\n },\n _cancel: function (e) {\n var that = this;\n if (that.hint) {\n that.position = undefined;\n that.hint.css(that._position, that._initialElementPosition);\n that._stop(e);\n }\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n if (that.draggable) {\n that.draggable.destroy();\n }\n },\n press: function (target) {\n if (!target) {\n return;\n }\n var position = target.position(), that = this;\n that.userEvents.press(position.left, position.top, target[0]);\n that.targetPosition = position;\n that.target = target;\n },\n move: function (delta) {\n var that = this, orientation = that._position, position = that.targetPosition, current = that.position;\n if (current === undefined) {\n current = position[orientation];\n }\n position[orientation] = current + delta;\n that.userEvents.move(position.left, position.top);\n },\n end: function () {\n this.userEvents.end();\n this.target = this.position = undefined;\n }\n });\n kendo.ui.plugin(Resizable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.sortable', ['kendo.draganddrop'], f);\n}(function () {\n var __meta__ = {\n id: 'sortable',\n name: 'Sortable',\n category: 'framework',\n depends: ['draganddrop']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, START = 'start', BEFORE_MOVE = 'beforeMove', MOVE = 'move', END = 'end', CHANGE = 'change', CANCEL = 'cancel', ACTION_SORT = 'sort', ACTION_REMOVE = 'remove', ACTION_RECEIVE = 'receive', DEFAULT_FILTER = '>*', MISSING_INDEX = -1;\n function containsOrEqualTo(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n function defaultHint(element) {\n return element.clone();\n }\n function defaultPlaceholder(element) {\n return element.clone().removeAttr('id').css('visibility', 'hidden');\n }\n var Sortable = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n if (!that.options.placeholder) {\n that.options.placeholder = defaultPlaceholder;\n }\n if (!that.options.hint) {\n that.options.hint = defaultHint;\n }\n that.draggable = that._createDraggable();\n },\n events: [\n START,\n BEFORE_MOVE,\n MOVE,\n END,\n CHANGE,\n CANCEL\n ],\n options: {\n name: 'Sortable',\n hint: null,\n placeholder: null,\n filter: DEFAULT_FILTER,\n holdToDrag: false,\n disabled: null,\n container: null,\n connectWith: null,\n handler: null,\n cursorOffset: null,\n axis: null,\n ignore: null,\n autoScroll: false,\n cursor: 'auto',\n moveOnDragEnter: false\n },\n destroy: function () {\n this.draggable.destroy();\n Widget.fn.destroy.call(this);\n },\n _createDraggable: function () {\n var that = this, element = that.element, options = that.options;\n return new kendo.ui.Draggable(element, {\n filter: options.filter,\n hint: kendo.isFunction(options.hint) ? options.hint : $(options.hint),\n holdToDrag: options.holdToDrag,\n container: options.container ? $(options.container) : null,\n cursorOffset: options.cursorOffset,\n axis: options.axis,\n ignore: options.ignore,\n autoScroll: options.autoScroll,\n dragstart: $.proxy(that._dragstart, that),\n dragcancel: $.proxy(that._dragcancel, that),\n drag: $.proxy(that._drag, that),\n dragend: $.proxy(that._dragend, that)\n });\n },\n _dragstart: function (e) {\n var draggedElement = this.draggedElement = e.currentTarget, disabled = this.options.disabled, handler = this.options.handler, _placeholder = this.options.placeholder, placeholder = this.placeholder = kendo.isFunction(_placeholder) ? $(_placeholder.call(this, draggedElement)) : $(_placeholder);\n if (disabled && draggedElement.is(disabled)) {\n e.preventDefault();\n } else if (handler && !$(e.initialTarget).is(handler)) {\n e.preventDefault();\n } else {\n if (this.trigger(START, {\n item: draggedElement,\n draggableEvent: e\n })) {\n e.preventDefault();\n } else {\n draggedElement.css('display', 'none');\n draggedElement.before(placeholder);\n this._setCursor();\n }\n }\n },\n _dragcancel: function () {\n this._cancel();\n this.trigger(CANCEL, { item: this.draggedElement });\n this._resetCursor();\n },\n _drag: function (e) {\n var draggedElement = this.draggedElement, target = this._findTarget(e), targetCenter, cursorOffset = {\n left: e.x.location,\n top: e.y.location\n }, offsetDelta, axisDelta = {\n x: e.x.delta,\n y: e.y.delta\n }, direction, sibling, getSibling, axis = this.options.axis, moveOnDragEnter = this.options.moveOnDragEnter, eventData = {\n item: draggedElement,\n list: this,\n draggableEvent: e\n };\n if (axis === 'x' || axis === 'y') {\n this._movementByAxis(axis, cursorOffset, axisDelta[axis], eventData);\n return;\n }\n if (target) {\n targetCenter = this._getElementCenter(target.element);\n offsetDelta = {\n left: Math.round(cursorOffset.left - targetCenter.left),\n top: Math.round(cursorOffset.top - targetCenter.top)\n };\n $.extend(eventData, { target: target.element });\n if (target.appendToBottom) {\n this._movePlaceholder(target, null, eventData);\n return;\n }\n if (target.appendAfterHidden) {\n this._movePlaceholder(target, 'next', eventData);\n }\n if (this._isFloating(target.element)) {\n if (axisDelta.x < 0 && (moveOnDragEnter || offsetDelta.left < 0)) {\n direction = 'prev';\n } else if (axisDelta.x > 0 && (moveOnDragEnter || offsetDelta.left > 0)) {\n direction = 'next';\n }\n } else {\n if (axisDelta.y < 0 && (moveOnDragEnter || offsetDelta.top < 0)) {\n direction = 'prev';\n } else if (axisDelta.y > 0 && (moveOnDragEnter || offsetDelta.top > 0)) {\n direction = 'next';\n }\n }\n if (direction) {\n getSibling = direction === 'prev' ? jQuery.fn.prev : jQuery.fn.next;\n sibling = getSibling.call(target.element);\n while (sibling.length && !sibling.is(':visible')) {\n sibling = getSibling.call(sibling);\n }\n if (sibling[0] != this.placeholder[0]) {\n this._movePlaceholder(target, direction, eventData);\n }\n }\n }\n },\n _dragend: function (e) {\n var placeholder = this.placeholder, draggedElement = this.draggedElement, draggedIndex = this.indexOf(draggedElement), placeholderIndex = this.indexOf(placeholder), connectWith = this.options.connectWith, connectedList, isDefaultPrevented, eventData, connectedListEventData;\n this._resetCursor();\n eventData = {\n action: ACTION_SORT,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: placeholderIndex,\n draggableEvent: e\n };\n if (placeholderIndex >= 0) {\n isDefaultPrevented = this.trigger(END, eventData);\n } else {\n connectedList = placeholder.parents(connectWith).getKendoSortable();\n eventData.action = ACTION_REMOVE;\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(placeholder)\n });\n isDefaultPrevented = !(!this.trigger(END, eventData) && !connectedList.trigger(END, connectedListEventData));\n }\n if (isDefaultPrevented || placeholderIndex === draggedIndex) {\n this._cancel();\n return;\n }\n placeholder.replaceWith(draggedElement);\n draggedElement.show();\n this.draggable.dropped = true;\n eventData = {\n action: this.indexOf(draggedElement) != MISSING_INDEX ? ACTION_SORT : ACTION_REMOVE,\n item: draggedElement,\n oldIndex: draggedIndex,\n newIndex: this.indexOf(draggedElement),\n draggableEvent: e\n };\n this.trigger(CHANGE, eventData);\n if (connectedList) {\n connectedListEventData = $.extend({}, eventData, {\n action: ACTION_RECEIVE,\n oldIndex: MISSING_INDEX,\n newIndex: connectedList.indexOf(draggedElement)\n });\n connectedList.trigger(CHANGE, connectedListEventData);\n }\n },\n _findTarget: function (e) {\n var element = this._findElementUnderCursor(e), items, connectWith = this.options.connectWith, node;\n if ($.contains(this.element[0], element)) {\n items = this.items();\n node = items.filter(element)[0] || items.has(element)[0];\n return node ? {\n element: $(node),\n sortable: this\n } : null;\n } else if (this.element[0] == element && this._isEmpty()) {\n return {\n element: this.element,\n sortable: this,\n appendToBottom: true\n };\n } else if (this.element[0] == element && this._isLastHidden()) {\n node = this.items().eq(0);\n return {\n element: node,\n sortable: this,\n appendAfterHidden: true\n };\n } else if (connectWith) {\n return this._searchConnectedTargets(element, e);\n }\n },\n _findElementUnderCursor: function (e) {\n var elementUnderCursor = kendo.elementUnderCursor(e), draggable = e.sender;\n if (containsOrEqualTo(draggable.hint[0], elementUnderCursor)) {\n draggable.hint.hide();\n elementUnderCursor = kendo.elementUnderCursor(e);\n if (!elementUnderCursor) {\n elementUnderCursor = kendo.elementUnderCursor(e);\n }\n draggable.hint.show();\n }\n return elementUnderCursor;\n },\n _searchConnectedTargets: function (element, e) {\n var connected = $(this.options.connectWith), sortableInstance, items, node;\n for (var i = 0; i < connected.length; i++) {\n sortableInstance = connected.eq(i).getKendoSortable();\n if ($.contains(connected[i], element)) {\n if (sortableInstance) {\n items = sortableInstance.items();\n node = items.filter(element)[0] || items.has(element)[0];\n if (node) {\n sortableInstance.placeholder = this.placeholder;\n return {\n element: $(node),\n sortable: sortableInstance\n };\n } else {\n return null;\n }\n }\n } else if (connected[i] == element) {\n if (sortableInstance && sortableInstance._isEmpty()) {\n return {\n element: connected.eq(i),\n sortable: sortableInstance,\n appendToBottom: true\n };\n } else if (this._isCursorAfterLast(sortableInstance, e)) {\n node = sortableInstance.items().last();\n return {\n element: node,\n sortable: sortableInstance\n };\n }\n }\n }\n },\n _isCursorAfterLast: function (sortable, e) {\n var lastItem = sortable.items().last(), cursorOffset = {\n left: e.x.location,\n top: e.y.location\n }, lastItemOffset, delta;\n lastItemOffset = kendo.getOffset(lastItem);\n lastItemOffset.top += lastItem.outerHeight();\n lastItemOffset.left += lastItem.outerWidth();\n if (this._isFloating(lastItem)) {\n delta = lastItemOffset.left - cursorOffset.left;\n } else {\n delta = lastItemOffset.top - cursorOffset.top;\n }\n return delta < 0 ? true : false;\n },\n _movementByAxis: function (axis, cursorOffset, delta, eventData) {\n var cursorPosition = axis === 'x' ? cursorOffset.left : cursorOffset.top, target = delta < 0 ? this.placeholder.prev() : this.placeholder.next(), targetCenter;\n if (target.length && !target.is(':visible')) {\n target = delta < 0 ? target.prev() : target.next();\n }\n $.extend(eventData, { target: target });\n targetCenter = this._getElementCenter(target);\n if (targetCenter) {\n targetCenter = axis === 'x' ? targetCenter.left : targetCenter.top;\n }\n if (target.length && delta < 0 && cursorPosition - targetCenter < 0) {\n this._movePlaceholder({\n element: target,\n sortable: this\n }, 'prev', eventData);\n } else if (target.length && delta > 0 && cursorPosition - targetCenter > 0) {\n this._movePlaceholder({\n element: target,\n sortable: this\n }, 'next', eventData);\n }\n },\n _movePlaceholder: function (target, direction, eventData) {\n var placeholder = this.placeholder;\n if (!target.sortable.trigger(BEFORE_MOVE, eventData)) {\n if (!direction) {\n target.element.append(placeholder);\n } else if (direction === 'prev') {\n target.element.before(placeholder);\n } else if (direction === 'next') {\n target.element.after(placeholder);\n }\n target.sortable.trigger(MOVE, eventData);\n }\n },\n _setCursor: function () {\n var cursor = this.options.cursor, body;\n if (cursor && cursor !== 'auto') {\n body = $(document.body);\n this._originalCursorType = body.css('cursor');\n body.css({ 'cursor': cursor });\n if (!this._cursorStylesheet) {\n this._cursorStylesheet = $('');\n }\n this._cursorStylesheet.appendTo(body);\n }\n },\n _resetCursor: function () {\n if (this._originalCursorType) {\n $(document.body).css('cursor', this._originalCursorType);\n this._originalCursorType = null;\n this._cursorStylesheet.remove();\n }\n },\n _getElementCenter: function (element) {\n var center = element.length ? kendo.getOffset(element) : null;\n if (center) {\n center.top += element.outerHeight() / 2;\n center.left += element.outerWidth() / 2;\n }\n return center;\n },\n _isFloating: function (item) {\n return /left|right/.test(item.css('float')) || /inline|table-cell/.test(item.css('display'));\n },\n _cancel: function () {\n this.draggedElement.show();\n this.placeholder.remove();\n },\n _items: function () {\n var filter = this.options.filter, items;\n if (filter) {\n items = this.element.find(filter);\n } else {\n items = this.element.children();\n }\n return items;\n },\n indexOf: function (element) {\n var items = this._items(), placeholder = this.placeholder, draggedElement = this.draggedElement;\n if (placeholder && element[0] == placeholder[0]) {\n return items.not(draggedElement).index(element);\n } else {\n return items.not(placeholder).index(element);\n }\n },\n items: function () {\n var placeholder = this.placeholder, items = this._items();\n if (placeholder) {\n items = items.not(placeholder);\n }\n return items;\n },\n _isEmpty: function () {\n return !this.items().length;\n },\n _isLastHidden: function () {\n return this.items().length === 1 && this.items().is(':hidden');\n }\n });\n kendo.ui.plugin(Sortable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.selectable', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'selectable',\n name: 'Selectable',\n category: 'framework',\n depends: [\n 'core',\n 'userevents'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, abs = Math.abs, ARIASELECTED = 'aria-selected', SELECTED = 'k-state-selected', ACTIVE = 'k-state-selecting', SELECTABLE = 'k-selectable', CHANGE = 'change', NS = '.kendoSelectable', UNSELECTING = 'k-state-unselecting', INPUTSELECTOR = 'input,a,textarea,.k-multiselect-wrap,select,button,a.k-button>.k-icon,button.k-button>.k-icon,span.k-icon.k-i-expand,span.k-icon.k-i-collapse', msie = kendo.support.browser.msie, supportEventDelegation = false;\n (function ($) {\n (function () {\n $('
    ').on('click', '>*', function () {\n supportEventDelegation = true;\n }).find('span').click().end().off();\n }());\n }($));\n var Selectable = Widget.extend({\n init: function (element, options) {\n var that = this, multiple;\n Widget.fn.init.call(that, element, options);\n that._marquee = $('
    ');\n that._lastActive = null;\n that.element.addClass(SELECTABLE);\n that.relatedTarget = that.options.relatedTarget;\n multiple = that.options.multiple;\n if (this.options.aria && multiple) {\n that.element.attr('aria-multiselectable', true);\n }\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: (!supportEventDelegation ? '.' + SELECTABLE + ' ' : '') + that.options.filter,\n tap: proxy(that._tap, that)\n });\n if (multiple) {\n that.userEvents.bind('start', proxy(that._start, that)).bind('move', proxy(that._move, that)).bind('end', proxy(that._end, that)).bind('select', proxy(that._select, that));\n }\n },\n events: [CHANGE],\n options: {\n name: 'Selectable',\n filter: '>*',\n multiple: false,\n relatedTarget: $.noop\n },\n _isElement: function (target) {\n var elements = this.element;\n var idx, length = elements.length, result = false;\n target = target[0];\n for (idx = 0; idx < length; idx++) {\n if (elements[idx] === target) {\n result = true;\n break;\n }\n }\n return result;\n },\n _tap: function (e) {\n var target = $(e.target), that = this, ctrlKey = e.event.ctrlKey || e.event.metaKey, multiple = that.options.multiple, shiftKey = multiple && e.event.shiftKey, selected, whichCode = e.event.which, buttonCode = e.event.button;\n if (!that._isElement(target.closest('.' + SELECTABLE)) || whichCode && whichCode == 3 || buttonCode && buttonCode == 2) {\n return;\n }\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n selected = target.hasClass(SELECTED);\n if (!multiple || !ctrlKey) {\n that.clear();\n }\n target = target.add(that.relatedTarget(target));\n if (shiftKey) {\n that.selectRange(that._firstSelectee(), target);\n } else {\n if (selected && ctrlKey) {\n that._unselect(target);\n that._notify(CHANGE);\n } else {\n that.value(target);\n }\n that._lastActive = that._downTarget = target;\n }\n },\n _start: function (e) {\n var that = this, target = $(e.target), selected = target.hasClass(SELECTED), currentElement, ctrlKey = e.event.ctrlKey || e.event.metaKey;\n if (!this._allowSelection(e.event.target)) {\n return;\n }\n that._downTarget = target;\n if (!that._isElement(target.closest('.' + SELECTABLE))) {\n that.userEvents.cancel();\n return;\n }\n if (that.options.useAllItems) {\n that._items = that.element.find(that.options.filter);\n } else {\n currentElement = target.closest(that.element);\n that._items = currentElement.find(that.options.filter);\n }\n e.sender.capture();\n that._marquee.appendTo(document.body).css({\n left: e.x.client + 1,\n top: e.y.client + 1,\n width: 0,\n height: 0\n });\n if (!ctrlKey) {\n that.clear();\n }\n target = target.add(that.relatedTarget(target));\n if (selected) {\n that._selectElement(target, true);\n if (ctrlKey) {\n target.addClass(UNSELECTING);\n }\n }\n },\n _move: function (e) {\n var that = this, position = {\n left: e.x.startLocation > e.x.location ? e.x.location : e.x.startLocation,\n top: e.y.startLocation > e.y.location ? e.y.location : e.y.startLocation,\n width: abs(e.x.initialDelta),\n height: abs(e.y.initialDelta)\n };\n that._marquee.css(position);\n that._invalidateSelectables(position, e.event.ctrlKey || e.event.metaKey);\n e.preventDefault();\n },\n _end: function () {\n var that = this;\n that._marquee.remove();\n that._unselect(that.element.find(that.options.filter + '.' + UNSELECTING)).removeClass(UNSELECTING);\n var target = that.element.find(that.options.filter + '.' + ACTIVE);\n target = target.add(that.relatedTarget(target));\n that.value(target);\n that._lastActive = that._downTarget;\n that._items = null;\n },\n _invalidateSelectables: function (position, ctrlKey) {\n var idx, length, target = this._downTarget[0], items = this._items, related, toSelect;\n for (idx = 0, length = items.length; idx < length; idx++) {\n toSelect = items.eq(idx);\n related = toSelect.add(this.relatedTarget(toSelect));\n if (collision(toSelect, position)) {\n if (toSelect.hasClass(SELECTED)) {\n if (ctrlKey && target !== toSelect[0]) {\n related.removeClass(SELECTED).addClass(UNSELECTING);\n }\n } else if (!toSelect.hasClass(ACTIVE) && !toSelect.hasClass(UNSELECTING)) {\n related.addClass(ACTIVE);\n }\n } else {\n if (toSelect.hasClass(ACTIVE)) {\n related.removeClass(ACTIVE);\n } else if (ctrlKey && toSelect.hasClass(UNSELECTING)) {\n related.removeClass(UNSELECTING).addClass(SELECTED);\n }\n }\n }\n },\n value: function (val) {\n var that = this, selectElement = proxy(that._selectElement, that);\n if (val) {\n val.each(function () {\n selectElement(this);\n });\n that._notify(CHANGE);\n return;\n }\n return that.element.find(that.options.filter + '.' + SELECTED);\n },\n _firstSelectee: function () {\n var that = this, selected;\n if (that._lastActive !== null) {\n return that._lastActive;\n }\n selected = that.value();\n return selected.length > 0 ? selected[0] : that.element.find(that.options.filter)[0];\n },\n _selectElement: function (element, preventNotify) {\n var toSelect = $(element), isPrevented = !preventNotify && this._notify('select', { element: element });\n toSelect.removeClass(ACTIVE);\n if (!isPrevented) {\n toSelect.addClass(SELECTED);\n if (this.options.aria) {\n toSelect.attr(ARIASELECTED, true);\n }\n }\n },\n _notify: function (name, args) {\n args = args || {};\n return this.trigger(name, args);\n },\n _unselect: function (element) {\n element.removeClass(SELECTED);\n if (this.options.aria) {\n element.attr(ARIASELECTED, false);\n }\n return element;\n },\n _select: function (e) {\n if (this._allowSelection(e.event.target)) {\n if (!msie || msie && !$(kendo._activeElement()).is(INPUTSELECTOR)) {\n e.preventDefault();\n }\n }\n },\n _allowSelection: function (target) {\n if ($(target).is(INPUTSELECTOR)) {\n this.userEvents.cancel();\n this._downTarget = null;\n return false;\n }\n return true;\n },\n resetTouchEvents: function () {\n this.userEvents.cancel();\n },\n clear: function () {\n var items = this.element.find(this.options.filter + '.' + SELECTED);\n this._unselect(items);\n },\n selectRange: function (start, end) {\n var that = this, idx, tmp, items;\n that.clear();\n if (that.element.length > 1) {\n items = that.options.continuousItems();\n }\n if (!items || !items.length) {\n items = that.element.find(that.options.filter);\n }\n start = $.inArray($(start)[0], items);\n end = $.inArray($(end)[0], items);\n if (start > end) {\n tmp = start;\n start = end;\n end = tmp;\n }\n if (!that.options.useAllItems) {\n end += that.element.length - 1;\n }\n for (idx = start; idx <= end; idx++) {\n that._selectElement(items[idx]);\n }\n that._notify(CHANGE);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.element.off(NS);\n that.userEvents.destroy();\n that._marquee = that._lastActive = that.element = that.userEvents = null;\n }\n });\n Selectable.parseOptions = function (selectable) {\n var asLowerString = typeof selectable === 'string' && selectable.toLowerCase();\n return {\n multiple: asLowerString && asLowerString.indexOf('multiple') > -1,\n cell: asLowerString && asLowerString.indexOf('cell') > -1\n };\n };\n function collision(element, position) {\n if (!element.is(':visible')) {\n return false;\n }\n var elementPosition = kendo.getOffset(element), right = position.left + position.width, bottom = position.top + position.height;\n elementPosition.right = elementPosition.left + element.outerWidth();\n elementPosition.bottom = elementPosition.top + element.outerHeight();\n return !(elementPosition.left > right || elementPosition.right < position.left || elementPosition.top > bottom || elementPosition.bottom < position.top);\n }\n kendo.ui.plugin(Selectable);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.button', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'button',\n name: 'Button',\n category: 'web',\n description: 'The Button widget displays styled buttons.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, keys = kendo.keys, CLICK = 'click', KBUTTON = 'k-button', KBUTTONICON = 'k-button-icon', KBUTTONICONTEXT = 'k-button-icontext', NS = '.kendoButton', DISABLED = 'disabled', DISABLEDSTATE = 'k-state-disabled', FOCUSEDSTATE = 'k-state-focused', SELECTEDSTATE = 'k-state-selected';\n var Button = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n element.addClass(KBUTTON).attr('role', 'button');\n options.enable = options.enable && !element.attr(DISABLED);\n that.enable(options.enable);\n that._tabindex();\n that._graphics();\n element.on(CLICK + NS, proxy(that._click, that)).on('focus' + NS, proxy(that._focus, that)).on('blur' + NS, proxy(that._blur, that)).on('keydown' + NS, proxy(that._keydown, that)).on('keyup' + NS, proxy(that._keyup, that));\n kendo.notify(that);\n },\n destroy: function () {\n var that = this;\n that.wrapper.off(NS);\n Widget.fn.destroy.call(that);\n },\n events: [CLICK],\n options: {\n name: 'Button',\n icon: '',\n spriteCssClass: '',\n imageUrl: '',\n enable: true\n },\n _isNativeButton: function () {\n return this.element.prop('tagName').toLowerCase() == 'button';\n },\n _click: function (e) {\n if (this.options.enable) {\n if (this.trigger(CLICK, { event: e })) {\n e.preventDefault();\n }\n }\n },\n _focus: function () {\n if (this.options.enable) {\n this.element.addClass(FOCUSEDSTATE);\n }\n },\n _blur: function () {\n this.element.removeClass(FOCUSEDSTATE);\n },\n _keydown: function (e) {\n var that = this;\n if (!that._isNativeButton()) {\n if (e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR) {\n if (e.keyCode == keys.SPACEBAR) {\n e.preventDefault();\n if (that.options.enable) {\n that.element.addClass(SELECTEDSTATE);\n }\n }\n that._click(e);\n }\n }\n },\n _keyup: function () {\n this.element.removeClass(SELECTEDSTATE);\n },\n _graphics: function () {\n var that = this, element = that.element, options = that.options, icon = options.icon, spriteCssClass = options.spriteCssClass, imageUrl = options.imageUrl, span, img, isEmpty;\n if (spriteCssClass || imageUrl || icon) {\n isEmpty = true;\n element.contents().not('span.k-sprite').not('span.k-icon').not('img.k-image').each(function (idx, el) {\n if (el.nodeType == 1 || el.nodeType == 3 && $.trim(el.nodeValue).length > 0) {\n isEmpty = false;\n }\n });\n if (isEmpty) {\n element.addClass(KBUTTONICON);\n } else {\n element.addClass(KBUTTONICONTEXT);\n }\n }\n if (icon) {\n span = element.children('span.k-icon').first();\n if (!span[0]) {\n span = $('').prependTo(element);\n }\n span.addClass('k-i-' + icon);\n } else if (spriteCssClass) {\n span = element.children('span.k-sprite').first();\n if (!span[0]) {\n span = $('').prependTo(element);\n }\n span.addClass(spriteCssClass);\n } else if (imageUrl) {\n img = element.children('img.k-image').first();\n if (!img[0]) {\n img = $('\"icon\"').prependTo(element);\n }\n img.attr('src', imageUrl);\n }\n },\n enable: function (enable) {\n var that = this, element = that.element;\n if (enable === undefined) {\n enable = true;\n }\n enable = !!enable;\n that.options.enable = enable;\n element.toggleClass(DISABLEDSTATE, !enable).attr('aria-disabled', !enable).attr(DISABLED, !enable);\n try {\n element.blur();\n } catch (err) {\n }\n }\n });\n kendo.ui.plugin(Button);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.pager', ['kendo.data'], f);\n}(function () {\n var __meta__ = {\n id: 'pager',\n name: 'Pager',\n category: 'framework',\n depends: ['data'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, proxy = $.proxy, FIRST = '.k-i-seek-w', LAST = '.k-i-seek-e', PREV = '.k-i-arrow-w', NEXT = '.k-i-arrow-e', CHANGE = 'change', NS = '.kendoPager', CLICK = 'click', KEYDOWN = 'keydown', DISABLED = 'disabled', iconTemplate = kendo.template('#=text#');\n function button(template, idx, text, numeric, title) {\n return template({\n idx: idx,\n text: text,\n ns: kendo.ns,\n numeric: numeric,\n title: title || ''\n });\n }\n function icon(className, text, wrapClassName) {\n return iconTemplate({\n className: className.substring(1),\n text: text,\n wrapClassName: wrapClassName || ''\n });\n }\n function update(element, selector, page, disabled) {\n element.find(selector).parent().attr(kendo.attr('page'), page).attr('tabindex', -1).toggleClass('k-state-disabled', disabled);\n }\n function first(element, page) {\n update(element, FIRST, 1, page <= 1);\n }\n function prev(element, page) {\n update(element, PREV, Math.max(1, page - 1), page <= 1);\n }\n function next(element, page, totalPages) {\n update(element, NEXT, Math.min(totalPages, page + 1), page >= totalPages);\n }\n function last(element, page, totalPages) {\n update(element, LAST, totalPages, page >= totalPages);\n }\n var Pager = Widget.extend({\n init: function (element, options) {\n var that = this, page, totalPages;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that.dataSource = kendo.data.DataSource.create(options.dataSource);\n that.linkTemplate = kendo.template(that.options.linkTemplate);\n that.selectTemplate = kendo.template(that.options.selectTemplate);\n that.currentPageTemplate = kendo.template(that.options.currentPageTemplate);\n page = that.page();\n totalPages = that.totalPages();\n that._refreshHandler = proxy(that.refresh, that);\n that.dataSource.bind(CHANGE, that._refreshHandler);\n if (options.previousNext) {\n if (!that.element.find(FIRST).length) {\n that.element.append(icon(FIRST, options.messages.first, 'k-pager-first'));\n first(that.element, page, totalPages);\n }\n if (!that.element.find(PREV).length) {\n that.element.append(icon(PREV, options.messages.previous));\n prev(that.element, page, totalPages);\n }\n }\n if (options.numeric) {\n that.list = that.element.find('.k-pager-numbers');\n if (!that.list.length) {\n that.list = $('
      ').appendTo(that.element);\n }\n }\n if (options.input) {\n if (!that.element.find('.k-pager-input').length) {\n that.element.append('' + options.messages.page + '' + kendo.format(options.messages.of, totalPages) + '');\n }\n that.element.on(KEYDOWN + NS, '.k-pager-input input', proxy(that._keydown, that));\n }\n if (options.previousNext) {\n if (!that.element.find(NEXT).length) {\n that.element.append(icon(NEXT, options.messages.next));\n next(that.element, page, totalPages);\n }\n if (!that.element.find(LAST).length) {\n that.element.append(icon(LAST, options.messages.last, 'k-pager-last'));\n last(that.element, page, totalPages);\n }\n }\n if (options.pageSizes) {\n if (!that.element.find('.k-pager-sizes').length) {\n var pageSizes = options.pageSizes.length ? options.pageSizes : [\n 'all',\n 5,\n 10,\n 20\n ];\n var pageItems = $.map(pageSizes, function (size) {\n if (size.toLowerCase && size.toLowerCase() === 'all') {\n return '';\n }\n return '';\n });\n $('' + kendo.format(options.messages.of, totalPages)).find('input').val(page).attr(DISABLED, total < 1).toggleClass('k-state-disabled', total < 1);\n }\n if (options.previousNext) {\n first(that.element, page, totalPages);\n prev(that.element, page, totalPages);\n next(that.element, page, totalPages);\n last(that.element, page, totalPages);\n }\n if (options.pageSizes) {\n var hasAll = that.element.find('.k-pager-sizes option[value=\\'all\\']').length > 0;\n var selectAll = hasAll && pageSize === this.dataSource.total();\n var text = pageSize;\n if (selectAll) {\n pageSize = 'all';\n text = options.messages.allPages;\n }\n that.element.find('.k-pager-sizes select').val(pageSize).filter('[' + kendo.attr('role') + '=dropdownlist]').kendoDropDownList('value', pageSize).kendoDropDownList('text', text);\n }\n },\n _keydown: function (e) {\n if (e.keyCode === kendo.keys.ENTER) {\n var input = this.element.find('.k-pager-input').find('input'), page = parseInt(input.val(), 10);\n if (isNaN(page) || page < 1 || page > this.totalPages()) {\n page = this.page();\n }\n input.val(page);\n this.page(page);\n }\n },\n _refreshClick: function (e) {\n e.preventDefault();\n this.dataSource.read();\n },\n _change: function (e) {\n var value = e.currentTarget.value;\n var pageSize = parseInt(value, 10);\n var dataSource = this.dataSource;\n if (!isNaN(pageSize)) {\n dataSource.pageSize(pageSize);\n } else if ((value + '').toLowerCase() == 'all') {\n dataSource.pageSize(dataSource.total());\n }\n },\n _toggleActive: function () {\n this.list.toggleClass('k-state-expanded');\n },\n _click: function (e) {\n var target = $(e.currentTarget);\n e.preventDefault();\n if (!target.is('.k-state-disabled')) {\n this.page(target.attr(kendo.attr('page')));\n }\n },\n totalPages: function () {\n return Math.ceil((this.dataSource.total() || 0) / (this.pageSize() || 1));\n },\n pageSize: function () {\n return this.dataSource.pageSize() || this.dataSource.total();\n },\n page: function (page) {\n if (page !== undefined) {\n this.dataSource.page(page);\n this.trigger(CHANGE, { index: page });\n } else {\n if (this.dataSource.total() > 0) {\n return this.dataSource.page();\n } else {\n return 0;\n }\n }\n }\n });\n ui.plugin(Pager);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.popup', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'popup',\n name: 'Pop-up',\n category: 'framework',\n depends: ['core'],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, support = kendo.support, getOffset = kendo.getOffset, OPEN = 'open', CLOSE = 'close', DEACTIVATE = 'deactivate', ACTIVATE = 'activate', CENTER = 'center', LEFT = 'left', RIGHT = 'right', TOP = 'top', BOTTOM = 'bottom', ABSOLUTE = 'absolute', HIDDEN = 'hidden', BODY = 'body', LOCATION = 'location', POSITION = 'position', VISIBLE = 'visible', EFFECTS = 'effects', ACTIVE = 'k-state-active', ACTIVEBORDER = 'k-state-border', ACTIVEBORDERREGEXP = /k-state-border-(\\w+)/, ACTIVECHILDREN = '.k-picker-wrap, .k-dropdown-wrap, .k-link', MOUSEDOWN = 'down', DOCUMENT_ELEMENT = $(document.documentElement), WINDOW = $(window), SCROLL = 'scroll', cssPrefix = support.transitions.css, TRANSFORM = cssPrefix + 'transform', extend = $.extend, NS = '.kendoPopup', styles = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n ];\n function contains(container, target) {\n return container === target || $.contains(container, target);\n }\n var Popup = Widget.extend({\n init: function (element, options) {\n var that = this, parentPopup;\n options = options || {};\n if (options.isRtl) {\n options.origin = options.origin || BOTTOM + ' ' + RIGHT;\n options.position = options.position || TOP + ' ' + RIGHT;\n }\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that.collisions = options.collision ? options.collision.split(' ') : [];\n that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid());\n if (that.collisions.length === 1) {\n that.collisions.push(that.collisions[0]);\n }\n parentPopup = $(that.options.anchor).closest('.k-popup,.k-group').filter(':not([class^=km-])');\n options.appendTo = $($(options.appendTo)[0] || parentPopup[0] || BODY);\n that.element.hide().addClass('k-popup k-group k-reset').toggleClass('k-rtl', !!options.isRtl).css({ position: ABSOLUTE }).appendTo(options.appendTo).on('mouseenter' + NS, function () {\n that._hovered = true;\n }).on('mouseleave' + NS, function () {\n that._hovered = false;\n });\n that.wrapper = $();\n if (options.animation === false) {\n options.animation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n }\n extend(options.animation.open, {\n complete: function () {\n that.wrapper.css({ overflow: VISIBLE });\n that._activated = true;\n that._trigger(ACTIVATE);\n }\n });\n extend(options.animation.close, {\n complete: function () {\n that._animationClose();\n }\n });\n that._mousedownProxy = function (e) {\n that._mousedown(e);\n };\n if (support.mobileOS.android) {\n that._resizeProxy = function (e) {\n setTimeout(function () {\n that._resize(e);\n }, 600);\n };\n } else {\n that._resizeProxy = function (e) {\n that._resize(e);\n };\n }\n if (options.toggleTarget) {\n $(options.toggleTarget).on(options.toggleEvent + NS, $.proxy(that.toggle, that));\n }\n },\n events: [\n OPEN,\n ACTIVATE,\n CLOSE,\n DEACTIVATE\n ],\n options: {\n name: 'Popup',\n toggleEvent: 'click',\n origin: BOTTOM + ' ' + LEFT,\n position: TOP + ' ' + LEFT,\n anchor: BODY,\n appendTo: null,\n collision: 'flip fit',\n viewport: window,\n copyAnchorStyles: true,\n autosize: false,\n modal: false,\n adjustSize: {\n width: 0,\n height: 0\n },\n animation: {\n open: {\n effects: 'slideIn:down',\n transition: true,\n duration: 200\n },\n close: {\n duration: 100,\n hide: true\n }\n }\n },\n _animationClose: function () {\n var that = this;\n var location = that.wrapper.data(LOCATION);\n that.wrapper.hide();\n if (location) {\n that.wrapper.css(location);\n }\n if (that.options.anchor != BODY) {\n that._hideDirClass();\n }\n that._closing = false;\n that._trigger(DEACTIVATE);\n },\n destroy: function () {\n var that = this, options = that.options, element = that.element.off(NS), parent;\n Widget.fn.destroy.call(that);\n if (options.toggleTarget) {\n $(options.toggleTarget).off(NS);\n }\n if (!options.modal) {\n DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n }\n kendo.destroy(that.element.children());\n element.removeData();\n if (options.appendTo[0] === document.body) {\n parent = element.parent('.k-animation-container');\n if (parent[0]) {\n parent.remove();\n } else {\n element.remove();\n }\n }\n },\n open: function (x, y) {\n var that = this, fixed = {\n isFixed: !isNaN(parseInt(y, 10)),\n x: x,\n y: y\n }, element = that.element, options = that.options, animation, wrapper, anchor = $(options.anchor), mobile = element[0] && element.hasClass('km-widget');\n if (!that.visible()) {\n if (options.copyAnchorStyles) {\n if (mobile && styles[0] == 'font-size') {\n styles.shift();\n }\n element.css(kendo.getComputedStyles(anchor[0], styles));\n }\n if (element.data('animating') || that._trigger(OPEN)) {\n return;\n }\n that._activated = false;\n if (!options.modal) {\n DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy).bind(that.downEvent, that._mousedownProxy);\n that._toggleResize(false);\n that._toggleResize(true);\n }\n that.wrapper = wrapper = kendo.wrap(element, options.autosize).css({\n overflow: HIDDEN,\n display: 'block',\n position: ABSOLUTE\n });\n if (support.mobileOS.android) {\n wrapper.css(TRANSFORM, 'translatez(0)');\n }\n wrapper.css(POSITION);\n if ($(options.appendTo)[0] == document.body) {\n wrapper.css(TOP, '-10000px');\n }\n that.flipped = that._position(fixed);\n animation = that._openAnimation();\n if (options.anchor != BODY) {\n that._showDirClass(animation);\n }\n element.data(EFFECTS, animation.effects).kendoStop(true).kendoAnimate(animation);\n }\n },\n _openAnimation: function () {\n var animation = extend(true, {}, this.options.animation.open);\n animation.effects = kendo.parseEffects(animation.effects, this.flipped);\n return animation;\n },\n _hideDirClass: function () {\n var anchor = $(this.options.anchor);\n var direction = ((anchor.attr('class') || '').match(ACTIVEBORDERREGEXP) || [\n '',\n 'down'\n ])[1];\n var dirClass = ACTIVEBORDER + '-' + direction;\n anchor.removeClass(dirClass).children(ACTIVECHILDREN).removeClass(ACTIVE).removeClass(dirClass);\n this.element.removeClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse);\n },\n _showDirClass: function (animation) {\n var direction = animation.effects.slideIn ? animation.effects.slideIn.direction : 'down';\n var dirClass = ACTIVEBORDER + '-' + direction;\n $(this.options.anchor).addClass(dirClass).children(ACTIVECHILDREN).addClass(ACTIVE).addClass(dirClass);\n this.element.addClass(ACTIVEBORDER + '-' + kendo.directions[direction].reverse);\n },\n position: function () {\n if (this.visible()) {\n this.flipped = this._position();\n }\n },\n toggle: function () {\n var that = this;\n that[that.visible() ? CLOSE : OPEN]();\n },\n visible: function () {\n return this.element.is(':' + VISIBLE);\n },\n close: function (skipEffects) {\n var that = this, options = that.options, wrap, animation, openEffects, closeEffects;\n if (that.visible()) {\n wrap = that.wrapper[0] ? that.wrapper : kendo.wrap(that.element).hide();\n that._toggleResize(false);\n if (that._closing || that._trigger(CLOSE)) {\n that._toggleResize(true);\n return;\n }\n that.element.find('.k-popup').each(function () {\n var that = $(this), popup = that.data('kendoPopup');\n if (popup) {\n popup.close(skipEffects);\n }\n });\n DOCUMENT_ELEMENT.unbind(that.downEvent, that._mousedownProxy);\n if (skipEffects) {\n animation = {\n hide: true,\n effects: {}\n };\n } else {\n animation = extend(true, {}, options.animation.close);\n openEffects = that.element.data(EFFECTS);\n closeEffects = animation.effects;\n if (!closeEffects && !kendo.size(closeEffects) && openEffects && kendo.size(openEffects)) {\n animation.effects = openEffects;\n animation.reverse = true;\n }\n that._closing = true;\n }\n that.element.kendoStop(true);\n wrap.css({ overflow: HIDDEN });\n that.element.kendoAnimate(animation);\n }\n },\n _trigger: function (ev) {\n return this.trigger(ev, { type: ev });\n },\n _resize: function (e) {\n var that = this;\n if (support.resize.indexOf(e.type) !== -1) {\n clearTimeout(that._resizeTimeout);\n that._resizeTimeout = setTimeout(function () {\n that._position();\n that._resizeTimeout = null;\n }, 50);\n } else {\n if (!that._hovered || that._activated && that.element.hasClass('k-list-container')) {\n that.close();\n }\n }\n },\n _toggleResize: function (toggle) {\n var method = toggle ? 'on' : 'off';\n var eventNames = support.resize;\n if (!(support.mobileOS.ios || support.mobileOS.android)) {\n eventNames += ' ' + SCROLL;\n }\n this._scrollableParents()[method](SCROLL, this._resizeProxy);\n WINDOW[method](eventNames, this._resizeProxy);\n },\n _mousedown: function (e) {\n var that = this, container = that.element[0], options = that.options, anchor = $(options.anchor)[0], toggleTarget = options.toggleTarget, target = kendo.eventTarget(e), popup = $(target).closest('.k-popup'), mobile = popup.parent().parent('.km-shim').length;\n popup = popup[0];\n if (!mobile && popup && popup !== that.element[0]) {\n return;\n }\n if ($(e.target).closest('a').data('rel') === 'popover') {\n return;\n }\n if (!contains(container, target) && !contains(anchor, target) && !(toggleTarget && contains($(toggleTarget)[0], target))) {\n that.close();\n }\n },\n _fit: function (position, size, viewPortSize) {\n var output = 0;\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n if (position < 0) {\n output = -position;\n }\n return output;\n },\n _flip: function (offset, size, anchorSize, viewPortSize, origin, position, boxSize) {\n var output = 0;\n boxSize = boxSize || size;\n if (position !== origin && position !== CENTER && origin !== CENTER) {\n if (offset + boxSize > viewPortSize) {\n output += -(anchorSize + size);\n }\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n }\n return output;\n },\n _scrollableParents: function () {\n return $(this.options.anchor).parentsUntil('body').filter(function (index, element) {\n return kendo.isScrollable(element);\n });\n },\n _position: function (fixed) {\n var that = this, element = that.element, wrapper = that.wrapper, options = that.options, viewport = $(options.viewport), viewportOffset = viewport.offset(), anchor = $(options.anchor), origins = options.origin.toLowerCase().split(' '), positions = options.position.toLowerCase().split(' '), collisions = that.collisions, zoomLevel = support.zoomLevel(), siblingContainer, parents, parentZIndex, zIndex = 10002, isWindow = !!(viewport[0] == window && window.innerWidth && zoomLevel <= 1.02), idx = 0, docEl = document.documentElement, length, viewportWidth, viewportHeight;\n viewportWidth = isWindow ? window.innerWidth : viewport.width();\n viewportHeight = isWindow ? window.innerHeight : viewport.height();\n if (isWindow && docEl.scrollHeight - docEl.clientHeight > 0) {\n viewportWidth -= kendo.support.scrollbar();\n }\n siblingContainer = anchor.parents().filter(wrapper.siblings());\n if (siblingContainer[0]) {\n parentZIndex = Math.max(Number(siblingContainer.css('zIndex')), 0);\n if (parentZIndex) {\n zIndex = parentZIndex + 10;\n } else {\n parents = anchor.parentsUntil(siblingContainer);\n for (length = parents.length; idx < length; idx++) {\n parentZIndex = Number($(parents[idx]).css('zIndex'));\n if (parentZIndex && zIndex < parentZIndex) {\n zIndex = parentZIndex + 10;\n }\n }\n }\n }\n wrapper.css('zIndex', zIndex);\n if (fixed && fixed.isFixed) {\n wrapper.css({\n left: fixed.x,\n top: fixed.y\n });\n } else {\n wrapper.css(that._align(origins, positions));\n }\n var pos = getOffset(wrapper, POSITION, anchor[0] === wrapper.offsetParent()[0]), offset = getOffset(wrapper), anchorParent = anchor.offsetParent().parent('.k-animation-container,.k-popup,.k-group');\n if (anchorParent.length) {\n pos = getOffset(wrapper, POSITION, true);\n offset = getOffset(wrapper);\n }\n if (viewport[0] === window) {\n offset.top -= window.pageYOffset || document.documentElement.scrollTop || 0;\n offset.left -= window.pageXOffset || document.documentElement.scrollLeft || 0;\n } else {\n offset.top -= viewportOffset.top;\n offset.left -= viewportOffset.left;\n }\n if (!that.wrapper.data(LOCATION)) {\n wrapper.data(LOCATION, extend({}, pos));\n }\n var offsets = extend({}, offset), location = extend({}, pos), adjustSize = options.adjustSize;\n if (collisions[0] === 'fit') {\n location.top += that._fit(offsets.top, wrapper.outerHeight() + adjustSize.height, viewportHeight / zoomLevel);\n }\n if (collisions[1] === 'fit') {\n location.left += that._fit(offsets.left, wrapper.outerWidth() + adjustSize.width, viewportWidth / zoomLevel);\n }\n var flipPos = extend({}, location);\n var elementHeight = element.outerHeight();\n var wrapperHeight = wrapper.outerHeight();\n if (!wrapper.height() && elementHeight) {\n wrapperHeight = wrapperHeight + elementHeight;\n }\n if (collisions[0] === 'flip') {\n location.top += that._flip(offsets.top, elementHeight, anchor.outerHeight(), viewportHeight / zoomLevel, origins[0], positions[0], wrapperHeight);\n }\n if (collisions[1] === 'flip') {\n location.left += that._flip(offsets.left, element.outerWidth(), anchor.outerWidth(), viewportWidth / zoomLevel, origins[1], positions[1], wrapper.outerWidth());\n }\n element.css(POSITION, ABSOLUTE);\n wrapper.css(location);\n return location.left != flipPos.left || location.top != flipPos.top;\n },\n _align: function (origin, position) {\n var that = this, element = that.wrapper, anchor = $(that.options.anchor), verticalOrigin = origin[0], horizontalOrigin = origin[1], verticalPosition = position[0], horizontalPosition = position[1], anchorOffset = getOffset(anchor), appendTo = $(that.options.appendTo), appendToOffset, width = element.outerWidth(), height = element.outerHeight(), anchorWidth = anchor.outerWidth(), anchorHeight = anchor.outerHeight(), top = anchorOffset.top, left = anchorOffset.left, round = Math.round;\n if (appendTo[0] != document.body) {\n appendToOffset = getOffset(appendTo);\n top -= appendToOffset.top;\n left -= appendToOffset.left;\n }\n if (verticalOrigin === BOTTOM) {\n top += anchorHeight;\n }\n if (verticalOrigin === CENTER) {\n top += round(anchorHeight / 2);\n }\n if (verticalPosition === BOTTOM) {\n top -= height;\n }\n if (verticalPosition === CENTER) {\n top -= round(height / 2);\n }\n if (horizontalOrigin === RIGHT) {\n left += anchorWidth;\n }\n if (horizontalOrigin === CENTER) {\n left += round(anchorWidth / 2);\n }\n if (horizontalPosition === RIGHT) {\n left -= width;\n }\n if (horizontalPosition === CENTER) {\n left -= round(width / 2);\n }\n return {\n top: top,\n left: left\n };\n }\n });\n ui.plugin(Popup);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.notification', [\n 'kendo.core',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'notification',\n name: 'Notification',\n category: 'web',\n description: 'The Notification widget displays user alerts.',\n depends: [\n 'core',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, proxy = $.proxy, extend = $.extend, setTimeout = window.setTimeout, CLICK = 'click', SHOW = 'show', HIDE = 'hide', KNOTIFICATION = 'k-notification', KICLOSE = '.k-notification-wrap .k-i-close', INFO = 'info', SUCCESS = 'success', WARNING = 'warning', ERROR = 'error', TOP = 'top', LEFT = 'left', BOTTOM = 'bottom', RIGHT = 'right', UP = 'up', NS = '.kendoNotification', WRAPPER = '
      ', TEMPLATE = '
      ' + '#=typeIcon#' + '#=content#' + 'Hide' + '
      ', SAFE_TEMPLATE = TEMPLATE.replace('#=content#', '#:content#');\n var Notification = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n if (!options.appendTo || !$(options.appendTo).is(element)) {\n that.element.hide();\n }\n that._compileTemplates(options.templates);\n that._guid = '_' + kendo.guid();\n that._isRtl = kendo.support.isRtl(element);\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n kendo.notify(that);\n },\n events: [\n SHOW,\n HIDE\n ],\n options: {\n name: 'Notification',\n position: {\n pinned: true,\n top: null,\n left: null,\n bottom: 20,\n right: 20\n },\n stacking: 'default',\n hideOnClick: true,\n button: false,\n allowHideAfter: 0,\n autoHideAfter: 5000,\n appendTo: null,\n width: null,\n height: null,\n templates: [],\n animation: {\n open: {\n effects: 'fade:in',\n duration: 300\n },\n close: {\n effects: 'fade:out',\n duration: 600,\n hide: true\n }\n }\n },\n _compileTemplates: function (templates) {\n var that = this;\n var kendoTemplate = kendo.template;\n that._compiled = {};\n $.each(templates, function (key, value) {\n that._compiled[value.type] = kendoTemplate(value.template || $('#' + value.templateId).html());\n });\n that._defaultCompiled = kendoTemplate(TEMPLATE);\n that._safeCompiled = kendoTemplate(SAFE_TEMPLATE);\n },\n _getCompiled: function (type, safe) {\n var defaultCompiled = safe ? this._safeCompiled : this._defaultCompiled;\n return type ? this._compiled[type] || defaultCompiled : defaultCompiled;\n },\n _compileStacking: function (stacking, top, left) {\n var that = this, paddings = {\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0\n }, horizontalAlignment = left !== null ? LEFT : RIGHT, origin, position;\n switch (stacking) {\n case 'down':\n origin = BOTTOM + ' ' + horizontalAlignment;\n position = TOP + ' ' + horizontalAlignment;\n delete paddings.paddingBottom;\n break;\n case RIGHT:\n origin = TOP + ' ' + RIGHT;\n position = TOP + ' ' + LEFT;\n delete paddings.paddingRight;\n break;\n case LEFT:\n origin = TOP + ' ' + LEFT;\n position = TOP + ' ' + RIGHT;\n delete paddings.paddingLeft;\n break;\n case UP:\n origin = TOP + ' ' + horizontalAlignment;\n position = BOTTOM + ' ' + horizontalAlignment;\n delete paddings.paddingTop;\n break;\n default:\n if (top !== null) {\n origin = BOTTOM + ' ' + horizontalAlignment;\n position = TOP + ' ' + horizontalAlignment;\n delete paddings.paddingBottom;\n } else {\n origin = TOP + ' ' + horizontalAlignment;\n position = BOTTOM + ' ' + horizontalAlignment;\n delete paddings.paddingTop;\n }\n break;\n }\n that._popupOrigin = origin;\n that._popupPosition = position;\n that._popupPaddings = paddings;\n },\n _attachPopupEvents: function (options, popup) {\n var that = this, allowHideAfter = options.allowHideAfter, attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0, closeIcon;\n function attachClick(target) {\n target.on(CLICK + NS, function () {\n that._hidePopup(popup);\n });\n }\n if (popup.options.anchor !== document.body && popup.options.origin.indexOf(RIGHT) > 0) {\n popup.bind('open', function () {\n var shadows = kendo.getShadows(popup.element);\n setTimeout(function () {\n popup.wrapper.css('left', parseFloat(popup.wrapper.css('left')) + shadows.left + shadows.right);\n });\n });\n }\n if (options.hideOnClick) {\n popup.bind('activate', function () {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(popup.element);\n }, allowHideAfter);\n } else {\n attachClick(popup.element);\n }\n });\n } else if (options.button) {\n closeIcon = popup.element.find(KICLOSE);\n if (attachDelay) {\n setTimeout(function () {\n attachClick(closeIcon);\n }, allowHideAfter);\n } else {\n attachClick(closeIcon);\n }\n }\n },\n _showPopup: function (wrapper, options) {\n var that = this, autoHideAfter = options.autoHideAfter, x = options.position.left, y = options.position.top, popup, openPopup;\n openPopup = $('.' + that._guid + ':not(.k-hiding)').last();\n popup = new kendo.ui.Popup(wrapper, {\n anchor: openPopup[0] ? openPopup : document.body,\n origin: that._popupOrigin,\n position: that._popupPosition,\n animation: options.animation,\n modal: true,\n collision: '',\n isRtl: that._isRtl,\n close: function () {\n that._triggerHide(this.element);\n },\n deactivate: function (e) {\n e.sender.element.off(NS);\n e.sender.element.find(KICLOSE).off(NS);\n e.sender.destroy();\n }\n });\n that._attachPopupEvents(options, popup);\n if (openPopup[0]) {\n popup.open();\n } else {\n if (x === null) {\n x = $(window).width() - wrapper.width() - options.position.right;\n }\n if (y === null) {\n y = $(window).height() - wrapper.height() - options.position.bottom;\n }\n popup.open(x, y);\n }\n popup.wrapper.addClass(that._guid).css(extend({ margin: 0 }, that._popupPaddings));\n if (options.position.pinned) {\n popup.wrapper.css('position', 'fixed');\n if (openPopup[0]) {\n that._togglePin(popup.wrapper, true);\n }\n } else if (!openPopup[0]) {\n that._togglePin(popup.wrapper, false);\n }\n if (autoHideAfter > 0) {\n setTimeout(function () {\n that._hidePopup(popup);\n }, autoHideAfter);\n }\n },\n _hidePopup: function (popup) {\n popup.wrapper.addClass('k-hiding');\n popup.close();\n },\n _togglePin: function (wrapper, pin) {\n var win = $(window), sign = pin ? -1 : 1;\n wrapper.css({\n top: parseInt(wrapper.css(TOP), 10) + sign * win.scrollTop(),\n left: parseInt(wrapper.css(LEFT), 10) + sign * win.scrollLeft()\n });\n },\n _attachStaticEvents: function (options, wrapper) {\n var that = this, allowHideAfter = options.allowHideAfter, attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0;\n function attachClick(target) {\n target.on(CLICK + NS, proxy(that._hideStatic, that, wrapper));\n }\n if (options.hideOnClick) {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(wrapper);\n }, allowHideAfter);\n } else {\n attachClick(wrapper);\n }\n } else if (options.button) {\n if (attachDelay) {\n setTimeout(function () {\n attachClick(wrapper.find(KICLOSE));\n }, allowHideAfter);\n } else {\n attachClick(wrapper.find(KICLOSE));\n }\n }\n },\n _showStatic: function (wrapper, options) {\n var that = this, autoHideAfter = options.autoHideAfter, animation = options.animation, insertionMethod = options.stacking == UP || options.stacking == LEFT ? 'prependTo' : 'appendTo';\n wrapper.addClass(that._guid)[insertionMethod](options.appendTo).hide().kendoAnimate(animation.open || false);\n that._attachStaticEvents(options, wrapper);\n if (autoHideAfter > 0) {\n setTimeout(function () {\n that._hideStatic(wrapper);\n }, autoHideAfter);\n }\n },\n _hideStatic: function (wrapper) {\n wrapper.kendoAnimate(extend(this.options.animation.close || false, {\n complete: function () {\n wrapper.off(NS).find(KICLOSE).off(NS);\n wrapper.remove();\n }\n }));\n this._triggerHide(wrapper);\n },\n _triggerHide: function (element) {\n this.trigger(HIDE, { element: element });\n this.angular('cleanup', function () {\n return { elements: element };\n });\n },\n show: function (content, type, safe) {\n var that = this, options = that.options, wrapper = $(WRAPPER), args, defaultArgs;\n if (!type) {\n type = INFO;\n }\n if (content !== null && content !== undefined && content !== '') {\n if (kendo.isFunction(content)) {\n content = content();\n }\n defaultArgs = {\n typeIcon: type,\n content: ''\n };\n if ($.isPlainObject(content)) {\n args = extend(defaultArgs, content);\n } else {\n args = extend(defaultArgs, { content: content });\n }\n wrapper.addClass(KNOTIFICATION + '-' + type).toggleClass(KNOTIFICATION + '-button', options.button).attr('data-role', 'alert').css({\n width: options.width,\n height: options.height\n }).append(that._getCompiled(type, safe)(args));\n that.angular('compile', function () {\n return {\n elements: wrapper,\n data: [{ dataItem: args }]\n };\n });\n if ($(options.appendTo)[0]) {\n that._showStatic(wrapper, options);\n } else {\n that._showPopup(wrapper, options);\n }\n that.trigger(SHOW, { element: wrapper });\n }\n return that;\n },\n showText: function (content, type) {\n this.show(content, type, true);\n },\n info: function (content) {\n return this.show(content, INFO);\n },\n success: function (content) {\n return this.show(content, SUCCESS);\n },\n warning: function (content) {\n return this.show(content, WARNING);\n },\n error: function (content) {\n return this.show(content, ERROR);\n },\n hide: function () {\n var that = this, openedNotifications = that.getNotifications();\n if (that.options.appendTo) {\n openedNotifications.each(function (idx, element) {\n that._hideStatic($(element));\n });\n } else {\n openedNotifications.each(function (idx, element) {\n var popup = $(element).data('kendoPopup');\n if (popup) {\n that._hidePopup(popup);\n }\n });\n }\n return that;\n },\n getNotifications: function () {\n var that = this, guidElements = $('.' + that._guid);\n if (that.options.appendTo) {\n return guidElements;\n } else {\n return guidElements.children('.' + KNOTIFICATION);\n }\n },\n setOptions: function (newOptions) {\n var that = this, options;\n Widget.fn.setOptions.call(that, newOptions);\n options = that.options;\n if (newOptions.templates !== undefined) {\n that._compileTemplates(options.templates);\n }\n if (newOptions.stacking !== undefined || newOptions.position !== undefined) {\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n }\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.getNotifications().off(NS).find(KICLOSE).off(NS);\n }\n });\n kendo.ui.plugin(Notification);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.tooltip', [\n 'kendo.core',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'tooltip',\n name: 'Tooltip',\n category: 'web',\n description: 'The Tooltip widget displays a popup hint for a given html element.',\n depends: [\n 'core',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, Popup = kendo.ui.Popup, isFunction = kendo.isFunction, isPlainObject = $.isPlainObject, extend = $.extend, proxy = $.proxy, DOCUMENT = $(document), isLocalUrl = kendo.isLocalUrl, ARIAIDSUFFIX = '_tt_active', DESCRIBEDBY = 'aria-describedby', SHOW = 'show', HIDE = 'hide', ERROR = 'error', CONTENTLOAD = 'contentLoad', REQUESTSTART = 'requestStart', KCONTENTFRAME = 'k-content-frame', TEMPLATE = '
      #if (!autoHide) {# #}#' + '
      ' + '#if (callout){ #
      #}#' + '
      ', IFRAMETEMPLATE = kendo.template(''), NS = '.kendoTooltip', POSITIONS = {\n bottom: {\n origin: 'bottom center',\n position: 'top center'\n },\n top: {\n origin: 'top center',\n position: 'bottom center'\n },\n left: {\n origin: 'center left',\n position: 'center right',\n collision: 'fit flip'\n },\n right: {\n origin: 'center right',\n position: 'center left',\n collision: 'fit flip'\n },\n center: {\n position: 'center center',\n origin: 'center center'\n }\n }, REVERSE = {\n 'top': 'bottom',\n 'bottom': 'top',\n 'left': 'right',\n 'right': 'left',\n 'center': 'center'\n }, DIRCLASSES = {\n bottom: 'n',\n top: 's',\n left: 'e',\n right: 'w',\n center: 'n'\n }, DIMENSIONS = {\n 'horizontal': {\n offset: 'top',\n size: 'outerHeight'\n },\n 'vertical': {\n offset: 'left',\n size: 'outerWidth'\n }\n }, DEFAULTCONTENT = function (e) {\n return e.target.data(kendo.ns + 'title');\n };\n function restoreTitle(element) {\n while (element.length) {\n restoreTitleAttributeForElement(element);\n element = element.parent();\n }\n }\n function restoreTitleAttributeForElement(element) {\n var title = element.data(kendo.ns + 'title');\n if (title) {\n element.attr('title', title);\n element.removeData(kendo.ns + 'title');\n }\n }\n function saveTitleAttributeForElement(element) {\n var title = element.attr('title');\n if (title) {\n element.data(kendo.ns + 'title', title);\n element.attr('title', '');\n }\n }\n function saveTitleAttributes(element) {\n while (element.length && !element.is('body')) {\n saveTitleAttributeForElement(element);\n element = element.parent();\n }\n }\n var Tooltip = Widget.extend({\n init: function (element, options) {\n var that = this, axis;\n Widget.fn.init.call(that, element, options);\n axis = that.options.position.match(/left|right/) ? 'horizontal' : 'vertical';\n that.dimensions = DIMENSIONS[axis];\n that._documentKeyDownHandler = proxy(that._documentKeyDown, that);\n that.element.on(that.options.showOn + NS, that.options.filter, proxy(that._showOn, that)).on('mouseenter' + NS, that.options.filter, proxy(that._mouseenter, that));\n if (this.options.autoHide) {\n that.element.on('mouseleave' + NS, that.options.filter, proxy(that._mouseleave, that));\n }\n },\n options: {\n name: 'Tooltip',\n filter: '',\n content: DEFAULTCONTENT,\n showAfter: 100,\n callout: true,\n position: 'bottom',\n showOn: 'mouseenter',\n autoHide: true,\n width: null,\n height: null,\n animation: {\n open: {\n effects: 'fade:in',\n duration: 0\n },\n close: {\n effects: 'fade:out',\n duration: 40,\n hide: true\n }\n }\n },\n events: [\n SHOW,\n HIDE,\n CONTENTLOAD,\n ERROR,\n REQUESTSTART\n ],\n _mouseenter: function (e) {\n saveTitleAttributes($(e.currentTarget));\n },\n _showOn: function (e) {\n var that = this;\n var currentTarget = $(e.currentTarget);\n if (that.options.showOn && that.options.showOn.match(/click|focus/)) {\n that._show(currentTarget);\n } else {\n clearTimeout(that.timeout);\n that.timeout = setTimeout(function () {\n that._show(currentTarget);\n }, that.options.showAfter);\n }\n },\n _appendContent: function (target) {\n var that = this, contentOptions = that.options.content, element = that.content, showIframe = that.options.iframe, iframe;\n if (isPlainObject(contentOptions) && contentOptions.url) {\n if (!('iframe' in that.options)) {\n showIframe = !isLocalUrl(contentOptions.url);\n }\n that.trigger(REQUESTSTART, {\n options: contentOptions,\n target: target\n });\n if (!showIframe) {\n element.empty();\n kendo.ui.progress(element, true);\n that._ajaxRequest(contentOptions);\n } else {\n element.hide();\n iframe = element.find('.' + KCONTENTFRAME)[0];\n if (iframe) {\n iframe.src = contentOptions.url || iframe.src;\n } else {\n element.html(IFRAMETEMPLATE({ content: contentOptions }));\n }\n element.find('.' + KCONTENTFRAME).off('load' + NS).on('load' + NS, function () {\n that.trigger(CONTENTLOAD);\n element.show();\n });\n }\n } else if (contentOptions && isFunction(contentOptions)) {\n contentOptions = contentOptions({\n sender: this,\n target: target\n });\n element.html(contentOptions || '');\n } else {\n element.html(contentOptions);\n }\n that.angular('compile', function () {\n return { elements: element };\n });\n },\n _ajaxRequest: function (options) {\n var that = this;\n jQuery.ajax(extend({\n type: 'GET',\n dataType: 'html',\n cache: false,\n error: function (xhr, status) {\n kendo.ui.progress(that.content, false);\n that.trigger(ERROR, {\n status: status,\n xhr: xhr\n });\n },\n success: proxy(function (data) {\n kendo.ui.progress(that.content, false);\n that.content.html(data);\n that.trigger(CONTENTLOAD);\n }, that)\n }, options));\n },\n _documentKeyDown: function (e) {\n if (e.keyCode === kendo.keys.ESC) {\n this.hide();\n }\n },\n refresh: function () {\n var that = this, popup = that.popup;\n if (popup && popup.options.anchor) {\n that._appendContent(popup.options.anchor);\n }\n },\n hide: function () {\n if (this.popup) {\n this.popup.close();\n }\n },\n show: function (target) {\n target = target || this.element;\n saveTitleAttributes(target);\n this._show(target);\n },\n _show: function (target) {\n var that = this, current = that.target();\n if (!that.popup) {\n that._initPopup();\n }\n if (current && current[0] != target[0]) {\n that.popup.close();\n that.popup.element.kendoStop(true, true);\n }\n if (!current || current[0] != target[0]) {\n that._appendContent(target);\n that.popup.options.anchor = target;\n }\n that.popup.one('deactivate', function () {\n restoreTitle(target);\n target.removeAttr(DESCRIBEDBY);\n this.element.removeAttr('id').attr('aria-hidden', true);\n DOCUMENT.off('keydown' + NS, that._documentKeyDownHandler);\n });\n that.popup.open();\n },\n _initPopup: function () {\n var that = this, options = that.options, wrapper = $(kendo.template(TEMPLATE)({\n callout: options.callout && options.position !== 'center',\n dir: DIRCLASSES[options.position],\n autoHide: options.autoHide\n }));\n that.popup = new Popup(wrapper, extend({\n activate: function () {\n var anchor = this.options.anchor, ariaId = anchor[0].id || that.element[0].id;\n if (ariaId) {\n anchor.attr(DESCRIBEDBY, ariaId + ARIAIDSUFFIX);\n this.element.attr('id', ariaId + ARIAIDSUFFIX);\n }\n if (options.callout) {\n that._positionCallout();\n }\n this.element.removeAttr('aria-hidden');\n DOCUMENT.on('keydown' + NS, that._documentKeyDownHandler);\n that.trigger(SHOW);\n },\n close: function () {\n that.trigger(HIDE);\n },\n copyAnchorStyles: false,\n animation: options.animation\n }, POSITIONS[options.position]));\n wrapper.css({\n width: options.width,\n height: options.height\n });\n that.content = wrapper.find('.k-tooltip-content');\n that.arrow = wrapper.find('.k-callout');\n if (options.autoHide) {\n wrapper.on('mouseleave' + NS, proxy(that._mouseleave, that));\n } else {\n wrapper.on('click' + NS, '.k-tooltip-button', proxy(that._closeButtonClick, that));\n }\n },\n _closeButtonClick: function (e) {\n e.preventDefault();\n this.hide();\n },\n _mouseleave: function (e) {\n if (this.popup) {\n var element = $(e.currentTarget), offset = element.offset(), pageX = e.pageX, pageY = e.pageY;\n offset.right = offset.left + element.outerWidth();\n offset.bottom = offset.top + element.outerHeight();\n if (pageX > offset.left && pageX < offset.right && pageY > offset.top && pageY < offset.bottom) {\n return;\n }\n this.popup.close();\n } else {\n restoreTitle($(e.currentTarget));\n }\n clearTimeout(this.timeout);\n },\n _positionCallout: function () {\n var that = this, position = that.options.position, dimensions = that.dimensions, offset = dimensions.offset, popup = that.popup, anchor = popup.options.anchor, anchorOffset = $(anchor).offset(), arrowBorder = parseInt(that.arrow.css('border-top-width'), 10), elementOffset = $(popup.element).offset(), cssClass = DIRCLASSES[popup.flipped ? REVERSE[position] : position], offsetAmount = anchorOffset[offset] - elementOffset[offset] + $(anchor)[dimensions.size]() / 2 - arrowBorder;\n that.arrow.removeClass('k-callout-n k-callout-s k-callout-w k-callout-e').addClass('k-callout-' + cssClass).css(offset, offsetAmount);\n },\n target: function () {\n if (this.popup) {\n return this.popup.options.anchor;\n }\n return null;\n },\n destroy: function () {\n var popup = this.popup;\n if (popup) {\n popup.element.off(NS);\n popup.destroy();\n }\n clearTimeout(this.timeout);\n this.element.off(NS);\n DOCUMENT.off('keydown' + NS, this._documentKeyDownHandler);\n Widget.fn.destroy.call(this);\n }\n });\n kendo.ui.plugin(Tooltip);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.toolbar', [\n 'kendo.core',\n 'kendo.userevents',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'toolbar',\n name: 'ToolBar',\n category: 'web',\n description: 'The ToolBar widget displays one or more command buttons divided into groups.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Class = kendo.Class, Widget = kendo.ui.Widget, proxy = $.proxy, isFunction = kendo.isFunction, keys = kendo.keys, TOOLBAR = 'k-toolbar', BUTTON = 'k-button', OVERFLOW_BUTTON = 'k-overflow-button', TOGGLE_BUTTON = 'k-toggle-button', BUTTON_GROUP = 'k-button-group', SPLIT_BUTTON = 'k-split-button', SEPARATOR = 'k-separator', POPUP = 'k-popup', RESIZABLE_TOOLBAR = 'k-toolbar-resizable', STATE_ACTIVE = 'k-state-active', STATE_DISABLED = 'k-state-disabled', STATE_HIDDEN = 'k-state-hidden', GROUP_START = 'k-group-start', GROUP_END = 'k-group-end', PRIMARY = 'k-primary', ICON = 'k-icon', ICON_PREFIX = 'k-i-', BUTTON_ICON = 'k-button-icon', BUTTON_ICON_TEXT = 'k-button-icontext', LIST_CONTAINER = 'k-list-container k-split-container', SPLIT_BUTTON_ARROW = 'k-split-button-arrow', OVERFLOW_ANCHOR = 'k-overflow-anchor', OVERFLOW_CONTAINER = 'k-overflow-container', FIRST_TOOLBAR_VISIBLE = 'k-toolbar-first-visible', LAST_TOOLBAR_VISIBLE = 'k-toolbar-last-visible', CLICK = 'click', TOGGLE = 'toggle', OPEN = 'open', CLOSE = 'close', OVERFLOW_OPEN = 'overflowOpen', OVERFLOW_CLOSE = 'overflowClose', OVERFLOW_NEVER = 'never', OVERFLOW_AUTO = 'auto', OVERFLOW_ALWAYS = 'always', OVERFLOW_HIDDEN = 'k-overflow-hidden', KENDO_UID_ATTR = kendo.attr('uid');\n kendo.toolbar = {};\n var components = {\n overflowAnchor: '
      ',\n overflowContainer: '
        '\n };\n kendo.toolbar.registerComponent = function (name, toolbar, overflow) {\n components[name] = {\n toolbar: toolbar,\n overflow: overflow\n };\n };\n var Item = kendo.Class.extend({\n addOverflowAttr: function () {\n this.element.attr(kendo.attr('overflow'), this.options.overflow || OVERFLOW_AUTO);\n },\n addUidAttr: function () {\n this.element.attr(KENDO_UID_ATTR, this.options.uid);\n },\n addIdAttr: function () {\n if (this.options.id) {\n this.element.attr('id', this.options.id);\n }\n },\n addOverflowIdAttr: function () {\n if (this.options.id) {\n this.element.attr('id', this.options.id + '_overflow');\n }\n },\n attributes: function () {\n if (this.options.attributes) {\n this.element.attr(this.options.attributes);\n }\n },\n show: function () {\n this.element.removeClass(STATE_HIDDEN).show();\n this.options.hidden = false;\n },\n hide: function () {\n this.element.addClass(STATE_HIDDEN).hide();\n this.options.hidden = true;\n },\n remove: function () {\n this.element.remove();\n },\n enable: function (isEnabled) {\n if (isEnabled === undefined) {\n isEnabled = true;\n }\n this.element.toggleClass(STATE_DISABLED, !isEnabled);\n this.options.enable = isEnabled;\n },\n twin: function () {\n var uid = this.element.attr(KENDO_UID_ATTR);\n if (this.overflow) {\n return this.toolbar.element.find('[' + KENDO_UID_ATTR + '=\\'' + uid + '\\']').data(this.options.type);\n } else if (this.toolbar.options.resizable) {\n return this.toolbar.popup.element.find('[' + KENDO_UID_ATTR + '=\\'' + uid + '\\']').data(this.options.type);\n }\n }\n });\n kendo.toolbar.Item = Item;\n var Button = Item.extend({\n init: function (options, toolbar) {\n var element = options.useButtonTag ? $('') : $('');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.attributes();\n if (options.primary) {\n element.addClass(PRIMARY);\n }\n if (options.togglable) {\n element.addClass(TOGGLE_BUTTON);\n this.toggle(options.selected);\n }\n if (options.url !== undefined && !options.useButtonTag) {\n element.attr('href', options.url);\n if (options.mobile) {\n element.attr(kendo.attr('role'), 'button');\n }\n }\n if (options.group) {\n element.attr(kendo.attr('group'), options.group);\n this.group = this.toolbar.addToGroup(this, options.group);\n }\n if (!options.togglable && options.click && isFunction(options.click)) {\n this.clickHandler = options.click;\n }\n if (options.togglable && options.toggle && isFunction(options.toggle)) {\n this.toggleHandler = options.toggle;\n }\n },\n toggle: function (state, propagate) {\n state = !!state;\n if (this.group && state) {\n this.group.select(this);\n } else if (!this.group) {\n this.select(state);\n }\n if (propagate && this.twin()) {\n this.twin().toggle(state);\n }\n },\n getParentGroup: function () {\n if (this.options.isChild) {\n return this.element.closest('.' + BUTTON_GROUP).data('buttonGroup');\n }\n },\n _addGraphics: function () {\n var element = this.element, icon = this.options.icon, spriteCssClass = this.options.spriteCssClass, imageUrl = this.options.imageUrl, isEmpty, span, img;\n if (spriteCssClass || imageUrl || icon) {\n isEmpty = true;\n element.contents().not('span.k-sprite,span.' + ICON + ',img.k-image').each(function (idx, el) {\n if (el.nodeType == 1 || el.nodeType == 3 && $.trim(el.nodeValue).length > 0) {\n isEmpty = false;\n }\n });\n if (isEmpty) {\n element.addClass(BUTTON_ICON);\n } else {\n element.addClass(BUTTON_ICON_TEXT);\n }\n }\n if (icon) {\n span = element.children('span.' + ICON).first();\n if (!span[0]) {\n span = $('').prependTo(element);\n }\n span.addClass(ICON_PREFIX + icon);\n } else if (spriteCssClass) {\n span = element.children('span.k-sprite').first();\n if (!span[0]) {\n span = $('').prependTo(element);\n }\n span.addClass(spriteCssClass);\n } else if (imageUrl) {\n img = element.children('img.k-image').first();\n if (!img[0]) {\n img = $('\"icon\"').prependTo(element);\n }\n img.attr('src', imageUrl);\n }\n }\n });\n kendo.toolbar.Button = Button;\n var ToolBarButton = Button.extend({\n init: function (options, toolbar) {\n Button.fn.init.call(this, options, toolbar);\n var element = this.element;\n element.addClass(BUTTON);\n this.addIdAttr();\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n if (options.showText != 'overflow' && options.text) {\n if (options.mobile) {\n element.html('' + options.text + '');\n } else {\n element.html(options.text);\n }\n }\n options.hasIcon = options.showIcon != 'overflow' && (options.icon || options.spriteCssClass || options.imageUrl);\n if (options.hasIcon) {\n this._addGraphics();\n }\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n if (options.hidden) {\n this.hide();\n }\n this.element.data({\n type: 'button',\n button: this\n });\n },\n select: function (selected) {\n if (selected === undefined) {\n selected = false;\n }\n this.element.toggleClass(STATE_ACTIVE, selected);\n this.options.selected = selected;\n }\n });\n kendo.toolbar.ToolBarButton = ToolBarButton;\n var OverflowButton = Button.extend({\n init: function (options, toolbar) {\n this.overflow = true;\n Button.fn.init.call(this, options, toolbar);\n var element = this.element;\n if (options.showText != 'toolbar' && options.text) {\n if (options.mobile) {\n element.html('' + options.text + '');\n } else {\n element.html('' + options.text + '');\n }\n }\n options.hasIcon = options.showIcon != 'toolbar' && (options.icon || options.spriteCssClass || options.imageUrl);\n if (options.hasIcon) {\n this._addGraphics();\n }\n if (!options.isChild) {\n this._wrap();\n }\n this.addOverflowIdAttr();\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.enable(options.enable);\n element.addClass(OVERFLOW_BUTTON + ' ' + BUTTON);\n if (options.hidden) {\n this.hide();\n }\n this.element.data({\n type: 'button',\n button: this\n });\n },\n _wrap: function () {\n this.element = this.element.wrap('
      • ').parent();\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n },\n select: function (selected) {\n if (selected === undefined) {\n selected = false;\n }\n if (this.options.isChild) {\n this.element.toggleClass(STATE_ACTIVE, selected);\n } else {\n this.element.find('.k-button').toggleClass(STATE_ACTIVE, selected);\n }\n this.options.selected = selected;\n }\n });\n kendo.toolbar.OverflowButton = OverflowButton;\n kendo.toolbar.registerComponent('button', ToolBarButton, OverflowButton);\n var ButtonGroup = Item.extend({\n createButtons: function (buttonConstructor) {\n var options = this.options;\n var items = options.buttons || [];\n var item;\n for (var i = 0; i < items.length; i++) {\n if (!items[i].uid) {\n items[i].uid = kendo.guid();\n }\n item = new buttonConstructor($.extend({\n mobile: options.mobile,\n isChild: true,\n type: 'button'\n }, items[i]), this.toolbar);\n item.element.appendTo(this.element);\n }\n },\n refresh: function () {\n this.element.children().filter(':not(\\'.' + STATE_HIDDEN + '\\'):first').addClass(GROUP_START);\n this.element.children().filter(':not(\\'.' + STATE_HIDDEN + '\\'):last').addClass(GROUP_END);\n }\n });\n kendo.toolbar.ButtonGroup = ButtonGroup;\n var ToolBarButtonGroup = ButtonGroup.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
        ');\n this.options = options;\n this.toolbar = toolbar;\n this.addIdAttr();\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n this.createButtons(ToolBarButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n element.addClass(BUTTON_GROUP);\n this.element.data({\n type: 'buttonGroup',\n buttonGroup: this\n });\n }\n });\n kendo.toolbar.ToolBarButtonGroup = ToolBarButtonGroup;\n var OverflowButtonGroup = ButtonGroup.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
      • ');\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n this.addOverflowIdAttr();\n this.createButtons(OverflowButton);\n this.attributes();\n this.addUidAttr();\n this.addOverflowAttr();\n this.refresh();\n element.addClass((options.mobile ? '' : BUTTON_GROUP) + ' k-overflow-group');\n this.element.data({\n type: 'buttonGroup',\n buttonGroup: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowButtonGroup = OverflowButtonGroup;\n kendo.toolbar.registerComponent('buttonGroup', ToolBarButtonGroup, OverflowButtonGroup);\n var ToolBarSplitButton = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
        ');\n this.options = options;\n this.toolbar = toolbar;\n this.mainButton = new ToolBarButton($.extend({}, options, { hidden: false }), toolbar);\n this.arrowButton = $('');\n this.popupElement = $('
          ');\n this.mainButton.element.removeAttr('href tabindex').appendTo(element);\n this.arrowButton.appendTo(element);\n this.popupElement.appendTo(element);\n if (options.align) {\n element.addClass('k-align-' + options.align);\n }\n if (!options.id) {\n options.id = options.uid;\n }\n element.attr('id', options.id + '_wrapper');\n this.addOverflowAttr();\n this.addUidAttr();\n this.createMenuButtons();\n this.createPopup();\n this._navigatable();\n this.mainButton.main = true;\n this.enable(options.enable);\n if (options.hidden) {\n this.hide();\n }\n element.data({\n type: 'splitButton',\n splitButton: this,\n kendoPopup: this.popup\n });\n },\n _navigatable: function () {\n var that = this;\n that.popupElement.on('keydown', '.' + BUTTON, function (e) {\n var li = $(e.target).parent();\n e.preventDefault();\n if (e.keyCode === keys.ESC || e.keyCode === keys.TAB || e.altKey && e.keyCode === keys.UP) {\n that.toggle();\n that.focus();\n } else if (e.keyCode === keys.DOWN) {\n findFocusableSibling(li, 'next').focus();\n } else if (e.keyCode === keys.UP) {\n findFocusableSibling(li, 'prev').focus();\n } else if (e.keyCode === keys.SPACEBAR || e.keyCode === keys.ENTER) {\n that.toolbar.userEvents.trigger('tap', { target: $(e.target) });\n }\n });\n },\n createMenuButtons: function () {\n var options = this.options;\n var items = options.menuButtons;\n var item;\n for (var i = 0; i < items.length; i++) {\n item = new ToolBarButton($.extend({\n mobile: options.mobile,\n type: 'button',\n click: options.click\n }, items[i]), this.toolbar);\n item.element.wrap('
        • ').parent().appendTo(this.popupElement);\n }\n },\n createPopup: function () {\n var options = this.options;\n var element = this.element;\n this.popupElement.attr('id', options.id + '_optionlist').attr(KENDO_UID_ATTR, options.rootUid);\n if (options.mobile) {\n this.popupElement = actionSheetWrap(this.popupElement);\n }\n this.popup = this.popupElement.kendoPopup({\n appendTo: options.mobile ? $(options.mobile).children('.km-pane') : null,\n anchor: element,\n isRtl: this.toolbar._isRtl,\n copyAnchorStyles: false,\n animation: options.animation,\n open: adjustPopupWidth,\n activate: function () {\n this.element.find(':kendoFocusable').first().focus();\n },\n close: function () {\n element.focus();\n }\n }).data('kendoPopup');\n this.popup.element.on(CLICK, 'a.k-button', preventClick);\n },\n remove: function () {\n this.popup.element.off(CLICK, 'a.k-button');\n this.popup.destroy();\n this.element.remove();\n },\n toggle: function () {\n this.popup.toggle();\n },\n enable: function (isEnabled) {\n if (isEnabled === undefined) {\n isEnabled = true;\n }\n this.mainButton.enable(isEnabled);\n this.options.enable = isEnabled;\n },\n focus: function () {\n this.element.focus();\n },\n hide: function () {\n if (this.popup) {\n this.popup.close();\n }\n this.element.addClass(STATE_HIDDEN).hide();\n this.options.hidden = true;\n },\n show: function () {\n this.element.removeClass(STATE_HIDDEN).hide();\n this.options.hidden = false;\n }\n });\n kendo.toolbar.ToolBarSplitButton = ToolBarSplitButton;\n var OverflowSplitButton = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
        • '), items = options.menuButtons, item;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n this.mainButton = new OverflowButton($.extend({ isChild: true }, options));\n this.mainButton.element.appendTo(element);\n for (var i = 0; i < items.length; i++) {\n item = new OverflowButton($.extend({\n mobile: options.mobile,\n isChild: true\n }, items[i]), this.toolbar);\n item.element.appendTo(element);\n }\n this.addUidAttr();\n this.addOverflowAttr();\n this.mainButton.main = true;\n element.data({\n type: 'splitButton',\n splitButton: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowSplitButton = OverflowSplitButton;\n kendo.toolbar.registerComponent('splitButton', ToolBarSplitButton, OverflowSplitButton);\n var ToolBarSeparator = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
           
          ');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.attributes();\n this.addIdAttr();\n this.addUidAttr();\n this.addOverflowAttr();\n element.addClass(SEPARATOR);\n element.data({\n type: 'separator',\n separator: this\n });\n }\n });\n var OverflowSeparator = Item.extend({\n init: function (options, toolbar) {\n var element = this.element = $('
        •  
        • ');\n this.element = element;\n this.options = options;\n this.toolbar = toolbar;\n this.overflow = true;\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n element.addClass(SEPARATOR);\n element.data({\n type: 'separator',\n separator: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.registerComponent('separator', ToolBarSeparator, OverflowSeparator);\n var TemplateItem = Item.extend({\n init: function (template, options, toolbar) {\n var element = isFunction(template) ? template(options) : template;\n if (!(element instanceof jQuery)) {\n element = $('
          ').html(element);\n } else {\n element = element.wrap('
          ').parent();\n }\n this.element = element;\n this.options = options;\n this.options.type = 'template';\n this.toolbar = toolbar;\n this.attributes();\n this.addUidAttr();\n this.addIdAttr();\n this.addOverflowAttr();\n element.data({\n type: 'template',\n template: this\n });\n }\n });\n kendo.toolbar.TemplateItem = TemplateItem;\n var OverflowTemplateItem = Item.extend({\n init: function (template, options, toolbar) {\n var element = isFunction(template) ? $(template(options)) : $(template);\n if (!(element instanceof jQuery)) {\n element = $('
        • ').html(element);\n } else {\n element = element.wrap('
        • ').parent();\n }\n this.element = element;\n this.options = options;\n this.options.type = 'template';\n this.toolbar = toolbar;\n this.overflow = true;\n this.attributes();\n this.addUidAttr();\n this.addOverflowIdAttr();\n this.addOverflowAttr();\n element.data({\n type: 'template',\n template: this\n });\n },\n overflowHidden: function () {\n this.element.addClass(OVERFLOW_HIDDEN);\n }\n });\n kendo.toolbar.OverflowTemplateItem = OverflowTemplateItem;\n function adjustPopupWidth() {\n var anchor = this.options.anchor, computedWidth = anchor.outerWidth(), width;\n kendo.wrap(this.element).addClass('k-split-wrapper');\n if (this.element.css('box-sizing') !== 'border-box') {\n width = computedWidth - (this.element.outerWidth() - this.element.width());\n } else {\n width = computedWidth;\n }\n this.element.css({\n fontFamily: anchor.css('font-family'),\n 'min-width': width\n });\n }\n function toggleActive(e) {\n if (!e.target.is('.k-toggle-button')) {\n e.target.toggleClass(STATE_ACTIVE, e.type == 'press');\n }\n }\n function actionSheetWrap(element) {\n element = $(element);\n return element.hasClass('km-actionsheet') ? element.closest('.km-popup-wrapper') : element.addClass('km-widget km-actionsheet').wrap('
          ').parent().wrap('
          ').parent();\n }\n function preventClick(e) {\n e.preventDefault();\n }\n function findFocusableSibling(element, dir) {\n var getSibling = dir === 'next' ? $.fn.next : $.fn.prev;\n var getter = dir === 'next' ? $.fn.first : $.fn.last;\n var candidate = getSibling.call(element);\n if (candidate.is(':kendoFocusable') || !candidate.length) {\n return candidate;\n }\n if (candidate.find(':kendoFocusable').length) {\n return getter.call(candidate.find(':kendoFocusable'));\n }\n return findFocusableSibling(candidate, dir);\n }\n var Group = Class.extend({\n init: function (name) {\n this.name = name;\n this.buttons = [];\n },\n add: function (button) {\n this.buttons[this.buttons.length] = button;\n },\n remove: function (button) {\n var index = $.inArray(button, this.buttons);\n this.buttons.splice(index, 1);\n },\n select: function (button) {\n var tmp;\n for (var i = 0; i < this.buttons.length; i++) {\n tmp = this.buttons[i];\n tmp.select(false);\n }\n button.select(true);\n if (button.twin()) {\n button.twin().select(true);\n }\n }\n });\n var ToolBar = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.wrapper = that.element;\n element.addClass(TOOLBAR + ' k-widget');\n this.uid = kendo.guid();\n this._isRtl = kendo.support.isRtl(element);\n this._groups = {};\n element.attr(KENDO_UID_ATTR, this.uid);\n that.isMobile = typeof options.mobile === 'boolean' ? options.mobile : that.element.closest('.km-root')[0];\n that.animation = that.isMobile ? { open: { effects: 'fade' } } : {};\n if (that.isMobile) {\n element.addClass('km-widget');\n ICON = 'km-icon';\n ICON_PREFIX = 'km-';\n BUTTON = 'km-button';\n BUTTON_GROUP = 'km-buttongroup km-widget';\n STATE_ACTIVE = 'km-state-active';\n STATE_DISABLED = 'km-state-disabled';\n }\n if (options.resizable) {\n that._renderOverflow();\n element.addClass(RESIZABLE_TOOLBAR);\n that.overflowUserEvents = new kendo.UserEvents(that.element, {\n threshold: 5,\n allowSelection: true,\n filter: '.' + OVERFLOW_ANCHOR,\n tap: proxy(that._toggleOverflow, that)\n });\n that._resizeHandler = kendo.onResize(function () {\n that.resize();\n });\n } else {\n that.popup = { element: $([]) };\n }\n if (options.items && options.items.length) {\n for (var i = 0; i < options.items.length; i++) {\n that.add(options.items[i]);\n }\n }\n that.userEvents = new kendo.UserEvents(document, {\n threshold: 5,\n allowSelection: true,\n filter: '[' + KENDO_UID_ATTR + '=' + this.uid + '] a.' + BUTTON + ', ' + '[' + KENDO_UID_ATTR + '=' + this.uid + '] .' + OVERFLOW_BUTTON,\n tap: proxy(that._buttonClick, that),\n press: toggleActive,\n release: toggleActive\n });\n that.element.on(CLICK, 'a.k-button', preventClick);\n that._navigatable();\n if (options.resizable) {\n that.popup.element.on(CLICK, +'a.k-button', preventClick);\n }\n if (options.resizable) {\n this._toggleOverflowAnchor();\n }\n kendo.notify(that);\n },\n events: [\n CLICK,\n TOGGLE,\n OPEN,\n CLOSE,\n OVERFLOW_OPEN,\n OVERFLOW_CLOSE\n ],\n options: {\n name: 'ToolBar',\n items: [],\n resizable: true,\n mobile: null\n },\n addToGroup: function (button, groupName) {\n var group;\n if (!this._groups[groupName]) {\n group = this._groups[groupName] = new Group();\n } else {\n group = this._groups[groupName];\n }\n group.add(button);\n return group;\n },\n destroy: function () {\n var that = this;\n that.element.find('.' + SPLIT_BUTTON).each(function (idx, element) {\n $(element).data('kendoPopup').destroy();\n });\n that.element.off(CLICK, 'a.k-button');\n that.userEvents.destroy();\n if (that.options.resizable) {\n kendo.unbindResize(that._resizeHandler);\n that.overflowUserEvents.destroy();\n that.popup.element.off(CLICK, 'a.k-button');\n that.popup.destroy();\n }\n Widget.fn.destroy.call(that);\n },\n add: function (options) {\n var component = components[options.type], template = options.template, tool, that = this, itemClasses = that.isMobile ? '' : 'k-item k-state-default', overflowTemplate = options.overflowTemplate, overflowTool;\n $.extend(options, {\n uid: kendo.guid(),\n animation: that.animation,\n mobile: that.isMobile,\n rootUid: that.uid\n });\n if (options.menuButtons) {\n for (var i = 0; i < options.menuButtons.length; i++) {\n $.extend(options.menuButtons[i], { uid: kendo.guid() });\n }\n }\n if (template && !overflowTemplate) {\n options.overflow = OVERFLOW_NEVER;\n } else if (!options.overflow) {\n options.overflow = OVERFLOW_AUTO;\n }\n if (options.overflow !== OVERFLOW_NEVER && that.options.resizable) {\n if (overflowTemplate) {\n overflowTool = new OverflowTemplateItem(overflowTemplate, options, that);\n } else if (component) {\n overflowTool = new component.overflow(options, that);\n overflowTool.element.addClass(itemClasses);\n }\n if (overflowTool) {\n if (options.overflow === OVERFLOW_AUTO) {\n overflowTool.overflowHidden();\n }\n overflowTool.element.appendTo(that.popup.container);\n that.angular('compile', function () {\n return { elements: overflowTool.element.get() };\n });\n }\n }\n if (options.overflow !== OVERFLOW_ALWAYS) {\n if (template) {\n tool = new TemplateItem(template, options, that);\n } else if (component) {\n tool = new component.toolbar(options, that);\n }\n if (tool) {\n if (that.options.resizable) {\n tool.element.appendTo(that.element).css('visibility', 'hidden');\n that._shrink(that.element.innerWidth());\n tool.element.css('visibility', 'visible');\n } else {\n tool.element.appendTo(that.element);\n }\n that.angular('compile', function () {\n return { elements: tool.element.get() };\n });\n }\n }\n },\n _getItem: function (candidate) {\n var element, toolbarItem, overflowItem, isResizable = this.options.resizable, type;\n element = this.element.find(candidate);\n if (!element.length) {\n element = $('.k-split-container[data-uid=' + this.uid + ']').find(candidate);\n }\n type = element.length ? element.data('type') : '';\n toolbarItem = element.data(type);\n if (toolbarItem) {\n if (toolbarItem.main) {\n element = element.parent('.' + SPLIT_BUTTON);\n type = 'splitButton';\n toolbarItem = element.data(type);\n }\n if (isResizable) {\n overflowItem = toolbarItem.twin();\n }\n } else if (isResizable) {\n element = this.popup.element.find(candidate);\n type = element.length ? element.data('type') : '';\n overflowItem = element.data(type);\n if (overflowItem && overflowItem.main) {\n element = element.parent('.' + SPLIT_BUTTON);\n type = 'splitButton';\n overflowItem = element.data(type);\n }\n }\n return {\n type: type,\n toolbar: toolbarItem,\n overflow: overflowItem\n };\n },\n remove: function (candidate) {\n var item = this._getItem(candidate);\n if (item.toolbar) {\n item.toolbar.remove();\n }\n if (item.overflow) {\n item.overflow.remove();\n }\n this.resize(true);\n },\n hide: function (candidate) {\n var item = this._getItem(candidate);\n if (item.toolbar) {\n if (item.toolbar.options.type === 'button' && item.toolbar.options.isChild) {\n item.toolbar.hide();\n item.toolbar.getParentGroup().refresh();\n } else if (!item.toolbar.options.hidden) {\n item.toolbar.hide();\n }\n }\n if (item.overflow) {\n if (item.overflow.options.type === 'button' && item.overflow.options.isChild) {\n item.overflow.hide();\n item.overflow.getParentGroup().refresh();\n } else if (!item.toolbar.options.hidden) {\n item.overflow.hide();\n }\n }\n this.resize(true);\n },\n show: function (candidate) {\n var item = this._getItem(candidate);\n if (item.toolbar) {\n if (item.toolbar.options.type === 'button' && item.toolbar.options.isChild) {\n item.toolbar.show();\n item.toolbar.getParentGroup().refresh();\n } else if (item.toolbar.options.hidden) {\n item.toolbar.show();\n }\n }\n if (item.overflow) {\n if (item.overflow.options.type === 'button' && item.overflow.options.isChild) {\n item.toolbar.show();\n item.overflow.getParentGroup().refresh();\n } else if (item.overflow.options.hidden) {\n item.overflow.show();\n }\n }\n this.resize(true);\n },\n enable: function (element, enable) {\n var item = this._getItem(element);\n if (typeof enable == 'undefined') {\n enable = true;\n }\n if (item.toolbar) {\n item.toolbar.enable(enable);\n }\n if (item.overflow) {\n item.overflow.enable(enable);\n }\n },\n getSelectedFromGroup: function (groupName) {\n return this.element.find('.' + TOGGLE_BUTTON + '[data-group=\\'' + groupName + '\\']').filter('.' + STATE_ACTIVE);\n },\n toggle: function (button, checked) {\n var element = $(button), item = element.data('button');\n if (item.options.togglable) {\n if (checked === undefined) {\n checked = true;\n }\n item.toggle(checked, true);\n }\n },\n _renderOverflow: function () {\n var that = this, overflowContainer = components.overflowContainer, isRtl = that._isRtl, horizontalDirection = isRtl ? 'left' : 'right';\n that.overflowAnchor = $(components.overflowAnchor).addClass(BUTTON);\n that.element.append(that.overflowAnchor);\n if (that.isMobile) {\n that.overflowAnchor.append('');\n overflowContainer = actionSheetWrap(overflowContainer);\n } else {\n that.overflowAnchor.append('');\n }\n that.popup = new kendo.ui.Popup(overflowContainer, {\n origin: 'bottom ' + horizontalDirection,\n position: 'top ' + horizontalDirection,\n anchor: that.overflowAnchor,\n isRtl: isRtl,\n animation: that.animation,\n appendTo: that.isMobile ? $(that.isMobile).children('.km-pane') : null,\n copyAnchorStyles: false,\n open: function (e) {\n var wrapper = kendo.wrap(that.popup.element).addClass('k-overflow-wrapper');\n if (!that.isMobile) {\n wrapper.css('margin-left', (isRtl ? -1 : 1) * ((wrapper.outerWidth() - wrapper.width()) / 2 + 1));\n } else {\n that.popup.container.css('max-height', parseFloat($('.km-content:visible').innerHeight()) - 15 + 'px');\n }\n if (that.trigger(OVERFLOW_OPEN)) {\n e.preventDefault();\n }\n },\n activate: function () {\n this.element.find(':kendoFocusable').first().focus();\n },\n close: function (e) {\n if (that.trigger(OVERFLOW_CLOSE)) {\n e.preventDefault();\n }\n this.element.focus();\n }\n });\n that.popup.element.on('keydown', '.' + BUTTON, function (e) {\n var target = $(e.target), li = target.parent(), isComplexTool = li.is('.' + BUTTON_GROUP) || li.is('.' + SPLIT_BUTTON), element;\n e.preventDefault();\n if (e.keyCode === keys.ESC || e.keyCode === keys.TAB || e.altKey && e.keyCode === keys.UP) {\n that._toggleOverflow();\n that.overflowAnchor.focus();\n } else if (e.keyCode === keys.DOWN) {\n element = !isComplexTool || isComplexTool && target.is(':last-child') ? li : target;\n findFocusableSibling(element, 'next').focus();\n } else if (e.keyCode === keys.UP) {\n element = !isComplexTool || isComplexTool && target.is(':first-child') ? li : target;\n findFocusableSibling(element, 'prev').focus();\n } else if (e.keyCode === keys.SPACEBAR || e.keyCode === keys.ENTER) {\n that.userEvents.trigger('tap', { target: $(e.target) });\n }\n });\n if (that.isMobile) {\n that.popup.container = that.popup.element.find('.' + OVERFLOW_CONTAINER);\n } else {\n that.popup.container = that.popup.element;\n }\n that.popup.container.attr(KENDO_UID_ATTR, this.uid);\n },\n _toggleOverflowAnchor: function () {\n var hasVisibleChildren = false;\n if (this.options.mobile) {\n hasVisibleChildren = this.popup.element.find('.' + OVERFLOW_CONTAINER).children(':not(.' + OVERFLOW_HIDDEN + ', .' + POPUP + ')').length > 0;\n } else {\n hasVisibleChildren = this.popup.element.children(':not(.' + OVERFLOW_HIDDEN + ', .' + POPUP + ')').length > 0;\n }\n if (hasVisibleChildren) {\n this.overflowAnchor.css({\n visibility: 'visible',\n width: ''\n });\n } else {\n this.overflowAnchor.css({\n visibility: 'hidden',\n width: '1px'\n });\n }\n },\n _buttonClick: function (e) {\n var that = this, popup, target, item, splitContainer, isSplitButtonArrow = e.target.closest('.' + SPLIT_BUTTON_ARROW).length, handler, eventData, urlTarget;\n e.preventDefault();\n if (isSplitButtonArrow) {\n that._toggle(e);\n return;\n }\n target = $(e.target).closest('.' + BUTTON, that.element);\n if (target.hasClass(OVERFLOW_ANCHOR)) {\n return;\n }\n item = target.data('button');\n if (!item && that.popup) {\n target = $(e.target).closest('.' + OVERFLOW_BUTTON, that.popup.container);\n item = target.parent('li').data('button');\n }\n if (!item || !item.options.enable) {\n return;\n }\n if (item.options.togglable) {\n handler = isFunction(item.toggleHandler) ? item.toggleHandler : null;\n item.toggle(!item.options.selected, true);\n eventData = {\n target: target,\n group: item.options.group,\n checked: item.options.selected,\n id: item.options.id\n };\n if (handler) {\n handler.call(that, eventData);\n }\n that.trigger(TOGGLE, eventData);\n } else {\n handler = isFunction(item.clickHandler) ? item.clickHandler : null;\n eventData = {\n sender: that,\n target: target,\n id: item.options.id\n };\n if (handler) {\n handler.call(that, eventData);\n }\n that.trigger(CLICK, eventData);\n }\n if (item.options.url) {\n if (item.options.attributes && item.options.attributes.target) {\n urlTarget = item.options.attributes.target;\n }\n window.open(item.options.url, urlTarget || '_self');\n }\n if (target.hasClass(OVERFLOW_BUTTON)) {\n that.popup.close();\n }\n splitContainer = target.closest('.k-split-container');\n if (splitContainer[0]) {\n popup = splitContainer.data('kendoPopup');\n (popup ? popup : splitContainer.parents('.km-popup-wrapper').data('kendoPopup')).close();\n }\n },\n _navigatable: function () {\n var that = this;\n that.element.attr('tabindex', 0).focus(function () {\n var element = $(this).find(':kendoFocusable:first');\n if (element.is('.' + OVERFLOW_ANCHOR)) {\n element = findFocusableSibling(element, 'next');\n }\n element[0].focus();\n }).on('keydown', proxy(that._keydown, that));\n },\n _keydown: function (e) {\n var target = $(e.target), keyCode = e.keyCode, items = this.element.children(':not(.k-separator):visible');\n if (keyCode === keys.TAB) {\n var element = target.parentsUntil(this.element).last(), lastHasFocus = false, firstHasFocus = false;\n if (!element.length) {\n element = target;\n }\n if (element.is('.' + OVERFLOW_ANCHOR)) {\n if (e.shiftKey) {\n e.preventDefault();\n }\n if (items.last().is(':kendoFocusable')) {\n items.last().focus();\n } else {\n items.last().find(':kendoFocusable').last().focus();\n }\n }\n if (!e.shiftKey && items.index(element) === items.length - 1) {\n if (element.is('.' + BUTTON_GROUP)) {\n lastHasFocus = target.is(':last-child');\n } else {\n lastHasFocus = true;\n }\n }\n if (e.shiftKey && items.index(element) === 1) {\n if (element.is('.' + BUTTON_GROUP)) {\n firstHasFocus = target.is(':first-child');\n } else {\n firstHasFocus = true;\n }\n }\n if (lastHasFocus && this.overflowAnchor && this.overflowAnchor.css('visibility') !== 'hidden') {\n e.preventDefault();\n this.overflowAnchor.focus();\n }\n if (firstHasFocus) {\n e.preventDefault();\n this.wrapper.prev(':kendoFocusable').focus();\n }\n }\n if (e.altKey && keyCode === keys.DOWN) {\n var splitButton = $(document.activeElement).data('splitButton');\n var isOverflowAnchor = $(document.activeElement).is('.' + OVERFLOW_ANCHOR);\n if (splitButton) {\n splitButton.toggle();\n } else if (isOverflowAnchor) {\n this._toggleOverflow();\n }\n return;\n }\n if ((keyCode === keys.SPACEBAR || keyCode === keys.ENTER) && !target.is('input, checkbox')) {\n e.preventDefault();\n if (target.is('.' + SPLIT_BUTTON)) {\n target = target.children().first();\n }\n this.userEvents.trigger('tap', { target: target });\n return;\n }\n },\n _toggle: function (e) {\n var splitButton = $(e.target).closest('.' + SPLIT_BUTTON).data('splitButton'), isDefaultPrevented;\n e.preventDefault();\n if (!splitButton.options.enable) {\n return;\n }\n if (splitButton.popup.element.is(':visible')) {\n isDefaultPrevented = this.trigger(CLOSE, { target: splitButton.element });\n } else {\n isDefaultPrevented = this.trigger(OPEN, { target: splitButton.element });\n }\n if (!isDefaultPrevented) {\n splitButton.toggle();\n }\n },\n _toggleOverflow: function () {\n this.popup.toggle();\n },\n _resize: function (e) {\n var containerWidth = e.width;\n if (!this.options.resizable) {\n return;\n }\n this.popup.close();\n this._shrink(containerWidth);\n this._stretch(containerWidth);\n this._markVisibles();\n this._toggleOverflowAnchor();\n },\n _childrenWidth: function () {\n var childrenWidth = 0;\n this.element.children(':visible:not(\\'.' + STATE_HIDDEN + '\\')').each(function () {\n childrenWidth += $(this).outerWidth(true);\n });\n return Math.ceil(childrenWidth);\n },\n _shrink: function (containerWidth) {\n var commandElement, visibleCommands;\n if (containerWidth < this._childrenWidth()) {\n visibleCommands = this.element.children(':visible:not([data-overflow=\\'never\\'], .' + OVERFLOW_ANCHOR + ')');\n for (var i = visibleCommands.length - 1; i >= 0; i--) {\n commandElement = visibleCommands.eq(i);\n if (containerWidth > this._childrenWidth()) {\n break;\n } else {\n this._hideItem(commandElement);\n }\n }\n }\n },\n _stretch: function (containerWidth) {\n var commandElement, hiddenCommands;\n if (containerWidth > this._childrenWidth()) {\n hiddenCommands = this.element.children(':hidden:not(\\'.' + STATE_HIDDEN + '\\')');\n for (var i = 0; i < hiddenCommands.length; i++) {\n commandElement = hiddenCommands.eq(i);\n if (containerWidth < this._childrenWidth() || !this._showItem(commandElement, containerWidth)) {\n break;\n }\n }\n }\n },\n _hideItem: function (item) {\n item.hide();\n if (this.popup) {\n this.popup.container.find('>li[data-uid=\\'' + item.data('uid') + '\\']').removeClass(OVERFLOW_HIDDEN);\n }\n },\n _showItem: function (item, containerWidth) {\n if (item.length && containerWidth > this._childrenWidth() + item.outerWidth(true)) {\n item.show();\n if (this.popup) {\n this.popup.container.find('>li[data-uid=\\'' + item.data('uid') + '\\']').addClass(OVERFLOW_HIDDEN);\n }\n return true;\n }\n return false;\n },\n _markVisibles: function () {\n var overflowItems = this.popup.container.children(), toolbarItems = this.element.children(':not(.k-overflow-anchor)'), visibleOverflowItems = overflowItems.filter(':not(.k-overflow-hidden)'), visibleToolbarItems = toolbarItems.filter(':visible');\n overflowItems.add(toolbarItems).removeClass(FIRST_TOOLBAR_VISIBLE + ' ' + LAST_TOOLBAR_VISIBLE);\n visibleOverflowItems.first().add(visibleToolbarItems.first()).addClass(FIRST_TOOLBAR_VISIBLE);\n visibleOverflowItems.last().add(visibleToolbarItems.last()).addClass(LAST_TOOLBAR_VISIBLE);\n }\n });\n kendo.ui.plugin(ToolBar);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.list', [\n 'kendo.data',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'list',\n name: 'List',\n category: 'framework',\n depends: [\n 'data',\n 'popup'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, keys = kendo.keys, support = kendo.support, htmlEncode = kendo.htmlEncode, activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, ID = 'id', CHANGE = 'change', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', LOADING = 'k-loading', OPEN = 'open', CLOSE = 'close', CASCADE = 'cascade', SELECT = 'select', SELECTED = 'selected', REQUESTSTART = 'requestStart', REQUESTEND = 'requestEnd', WIDTH = 'width', extend = $.extend, proxy = $.proxy, isArray = $.isArray, browser = support.browser, isIE8 = browser.msie && browser.version < 9, quotRegExp = /\"/g, alternativeNames = {\n 'ComboBox': 'DropDownList',\n 'DropDownList': 'ComboBox'\n };\n var List = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this, ns = that.ns, id;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._isSelect = element.is(SELECT);\n if (that._isSelect && that.element[0].length) {\n if (!options.dataSource) {\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n }\n }\n that.ul = $('
            ').attr({\n tabIndex: -1,\n 'aria-hidden': true\n });\n that.list = $('
            ').append(that.ul).on('mousedown' + ns, proxy(that._listMousedown, that));\n id = element.attr(ID);\n if (id) {\n that.list.attr(ID, id + '-list');\n that.ul.attr(ID, id + '_listbox');\n }\n that._header();\n that._accessors();\n that._initValue();\n },\n options: {\n valuePrimitive: false,\n headerTemplate: ''\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n if (options && options.enable !== undefined) {\n options.enabled = options.enable;\n }\n },\n focus: function () {\n this._focused.focus();\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _listOptions: function (options) {\n var that = this;\n var currentOptions = that.options;\n var virtual = currentOptions.virtual;\n var listBoundHandler = proxy(that._listBound, that);\n virtual = typeof virtual === 'object' ? virtual : {};\n options = $.extend({\n autoBind: false,\n selectable: true,\n dataSource: that.dataSource,\n click: proxy(that._click, that),\n change: proxy(that._listChange, that),\n activate: proxy(that._activateItem, that),\n deactivate: proxy(that._deactivateItem, that),\n dataBinding: function () {\n that.trigger('dataBinding');\n that._angularItems('cleanup');\n },\n dataBound: listBoundHandler,\n listBound: listBoundHandler,\n height: currentOptions.height,\n dataValueField: currentOptions.dataValueField,\n dataTextField: currentOptions.dataTextField,\n groupTemplate: currentOptions.groupTemplate,\n fixedGroupTemplate: currentOptions.fixedGroupTemplate,\n template: currentOptions.template\n }, options, virtual);\n if (!options.template) {\n options.template = '#:' + kendo.expr(options.dataTextField, 'data') + '#';\n }\n return options;\n },\n _initList: function () {\n var that = this;\n var listOptions = that._listOptions({ selectedItemChange: proxy(that._listChange, that) });\n if (!that.options.virtual) {\n that.listView = new kendo.ui.StaticList(that.ul, listOptions);\n } else {\n that.listView = new kendo.ui.VirtualList(that.ul, listOptions);\n }\n that._setListValue();\n },\n _setListValue: function (value) {\n value = value || this.options.value;\n if (value !== undefined) {\n this.listView.value(value).done(proxy(this._updateSelectionState, this));\n }\n },\n _updateSelectionState: $.noop,\n _listMousedown: function (e) {\n if (!this.filterInput || this.filterInput[0] !== e.target) {\n e.preventDefault();\n }\n },\n _isFilterEnabled: function () {\n var filter = this.options.filter;\n return filter && filter !== 'none';\n },\n _clearFilter: function () {\n if (!this.options.virtual) {\n this.listView.bound(false);\n }\n this._filterSource();\n },\n _filterSource: function (filter, force) {\n var that = this;\n var options = that.options;\n var dataSource = that.dataSource;\n var expression = extend({}, dataSource.filter() || {});\n var removed = removeFiltersForField(expression, options.dataTextField);\n if ((filter || removed) && that.trigger('filtering', { filter: filter })) {\n return;\n }\n expression = {\n filters: expression.filters || [],\n logic: 'and'\n };\n if (filter) {\n expression.filters.push(filter);\n }\n if (that._cascading) {\n this.listView.setDSFilter(expression);\n }\n if (!force) {\n dataSource.filter(expression);\n } else {\n dataSource.read({ filter: expression });\n }\n },\n _header: function () {\n var that = this;\n var template = that.options.headerTemplate;\n var header;\n if ($.isFunction(template)) {\n template = template({});\n }\n if (template) {\n that.list.prepend(template);\n header = that.ul.prev();\n that.header = header[0] ? header : null;\n if (that.header) {\n that.angular('compile', function () {\n return { elements: that.header };\n });\n }\n }\n },\n _initValue: function () {\n var that = this, value = that.options.value;\n if (value !== null) {\n that.element.val(value);\n } else {\n value = that._accessor();\n that.options.value = value;\n }\n that._old = value;\n },\n _ignoreCase: function () {\n var that = this, model = that.dataSource.reader.model, field;\n if (model && model.fields) {\n field = model.fields[that.options.dataTextField];\n if (field && field.type && field.type !== 'string') {\n that.options.ignoreCase = false;\n }\n }\n },\n _focus: function (candidate) {\n return this.listView.focus(candidate);\n },\n current: function (candidate) {\n return this._focus(candidate);\n },\n items: function () {\n return this.ul[0].children;\n },\n destroy: function () {\n var that = this;\n var ns = that.ns;\n Widget.fn.destroy.call(that);\n that._unbindDataSource();\n that.listView.destroy();\n that.list.off(ns);\n that.popup.destroy();\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n dataItem: function (index) {\n var that = this;\n if (index === undefined) {\n return that.listView.selectedDataItems()[0];\n }\n if (typeof index !== 'number') {\n if (that.options.virtual) {\n return that.dataSource.getByUid($(index).data('uid'));\n }\n index = $(that.items()).index(index);\n }\n return that.dataSource.flatView()[index];\n },\n _activateItem: function () {\n var current = this.listView.focus();\n if (current) {\n this._focused.add(this.filterInput).attr('aria-activedescendant', current.attr('id'));\n }\n },\n _deactivateItem: function () {\n this._focused.add(this.filterInput).removeAttr('aria-activedescendant');\n },\n _accessors: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var getter = kendo.getter;\n var textField = element.attr(kendo.attr('text-field'));\n var valueField = element.attr(kendo.attr('value-field'));\n if (!options.dataTextField && textField) {\n options.dataTextField = textField;\n }\n if (!options.dataValueField && valueField) {\n options.dataValueField = valueField;\n }\n that._text = getter(options.dataTextField);\n that._value = getter(options.dataValueField);\n },\n _aria: function (id) {\n var that = this, options = that.options, element = that._focused.add(that.filterInput);\n if (options.suggest !== undefined) {\n element.attr('aria-autocomplete', options.suggest ? 'both' : 'list');\n }\n id = id ? id + ' ' + that.ul[0].id : that.ul[0].id;\n element.attr('aria-owns', id);\n that.ul.attr('aria-live', !that._isFilterEnabled() ? 'off' : 'polite');\n },\n _blur: function () {\n var that = this;\n that._change();\n that.close();\n },\n _change: function () {\n var that = this;\n var index = that.selectedIndex;\n var optionValue = that.options.value;\n var value = that.value();\n var trigger;\n if (that._isSelect && !that.listView.bound() && optionValue) {\n value = optionValue;\n }\n if (value !== unifyType(that._old, typeof value)) {\n trigger = true;\n } else if (index !== undefined && index !== that._oldIndex) {\n trigger = true;\n }\n if (trigger) {\n that._old = value;\n that._oldIndex = index;\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n }\n that.typing = false;\n },\n _data: function () {\n return this.dataSource.view();\n },\n _enable: function () {\n var that = this, options = that.options, disabled = that.element.is('[disabled]');\n if (options.enable !== undefined) {\n options.enabled = options.enable;\n }\n if (!options.enabled || disabled) {\n that.enable(false);\n } else {\n that.readonly(that.element.is('[readonly]'));\n }\n },\n _dataValue: function (dataItem) {\n var value = this._value(dataItem);\n if (value === undefined) {\n value = this._text(dataItem);\n }\n return value;\n },\n _offsetHeight: function () {\n var offsetHeight = 0;\n var siblings = this.listView.content.prevAll(':visible');\n siblings.each(function () {\n var element = $(this);\n if (element.hasClass('k-list-filter')) {\n offsetHeight += element.children().outerHeight();\n } else {\n offsetHeight += element.outerHeight();\n }\n });\n return offsetHeight;\n },\n _height: function (length) {\n var that = this;\n var list = that.list;\n var height = that.options.height;\n var visible = that.popup.visible();\n var offsetTop;\n var popups;\n if (length) {\n popups = list.add(list.parent('.k-animation-container')).show();\n if (!list.is(':visible')) {\n popups.hide();\n return;\n }\n height = that.listView.content[0].scrollHeight > height ? height : 'auto';\n popups.height(height);\n if (height !== 'auto') {\n offsetTop = that._offsetHeight();\n if (offsetTop) {\n height -= offsetTop;\n }\n }\n that.listView.content.height(height);\n if (!visible) {\n popups.hide();\n }\n }\n return height;\n },\n _adjustListWidth: function () {\n var list = this.list, width = list[0].style.width, wrapper = this.wrapper, computedStyle, computedWidth;\n if (!list.data(WIDTH) && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = parseFloat(computedStyle && computedStyle.width) || wrapper.outerWidth();\n if (computedStyle && browser.msie) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n if (list.css('box-sizing') !== 'border-box') {\n width = computedWidth - (list.outerWidth() - list.width());\n } else {\n width = computedWidth;\n }\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: width\n }).data(WIDTH, width);\n return true;\n },\n _openHandler: function (e) {\n this._adjustListWidth();\n if (this.trigger(OPEN)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', true);\n this.ul.attr('aria-hidden', false);\n }\n },\n _closeHandler: function (e) {\n if (this.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', false);\n this.ul.attr('aria-hidden', true);\n }\n },\n _focusItem: function () {\n var listView = this.listView;\n var focusedItem = listView.focus();\n var index = listView.select();\n index = index[index.length - 1];\n if (index === undefined && this.options.highlightFirst && !focusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else {\n listView.scrollToIndex(0);\n }\n },\n _calculateGroupPadding: function (height) {\n var li = this.ul.children('.k-first:first');\n var groupHeader = this.listView.content.prev('.k-group-header');\n var padding = 0;\n if (groupHeader[0] && groupHeader[0].style.display !== 'none') {\n if (height !== 'auto') {\n padding = kendo.support.scrollbar();\n }\n padding += parseFloat(li.css('border-right-width'), 10) + parseFloat(li.children('.k-group').css('padding-right'), 10);\n groupHeader.css('padding-right', padding);\n }\n },\n _calculatePopupHeight: function (force) {\n var height = this._height(this.dataSource.flatView().length || force);\n this._calculateGroupPadding(height);\n },\n _resizePopup: function (force) {\n if (this.options.virtual) {\n return;\n }\n if (!this.popup.element.is(':visible')) {\n this.popup.one('open', function (force) {\n return proxy(function () {\n this._calculatePopupHeight(force);\n }, this);\n }.call(this, force));\n } else {\n this._calculatePopupHeight(force);\n }\n },\n _popup: function () {\n var that = this;\n that.popup = new ui.Popup(that.list, extend({}, that.options.popup, {\n anchor: that.wrapper,\n open: proxy(that._openHandler, that),\n close: proxy(that._closeHandler, that),\n animation: that.options.animation,\n isRtl: support.isRtl(that.wrapper)\n }));\n },\n _makeUnselectable: function () {\n if (isIE8) {\n this.list.find('*').not('.k-textbox').attr('unselectable', 'on');\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggle: function (open, preventFocus) {\n var that = this;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n open = open !== undefined ? open : !that.popup.visible();\n if (!preventFocus && !touchEnabled && that._focused[0] !== activeElement()) {\n that._prevent = true;\n that._focused.focus();\n that._prevent = false;\n }\n that[open ? OPEN : CLOSE]();\n },\n _triggerCascade: function () {\n var that = this;\n if (!that._cascadeTriggered || that._old !== that.value() || that._oldIndex !== that.selectedIndex) {\n that._cascadeTriggered = true;\n that.trigger(CASCADE, { userTriggered: that._userTriggered });\n }\n },\n _triggerChange: function () {\n if (this._valueBeforeCascade !== this.value()) {\n this.trigger(CHANGE);\n }\n },\n _unbindDataSource: function () {\n var that = this;\n that.dataSource.unbind(REQUESTSTART, that._requestStartHandler).unbind(REQUESTEND, that._requestEndHandler).unbind('error', that._errorHandler);\n }\n });\n function unifyType(value, type) {\n if (value !== undefined && value !== '' && value !== null) {\n if (type === 'boolean') {\n value = Boolean(value);\n } else if (type === 'number') {\n value = Number(value);\n } else if (type === 'string') {\n value = value.toString();\n }\n }\n return value;\n }\n extend(List, {\n inArray: function (node, parentNode) {\n var idx, length, siblings = parentNode.children;\n if (!node || node.parentNode !== parentNode) {\n return -1;\n }\n for (idx = 0, length = siblings.length; idx < length; idx++) {\n if (node === siblings[idx]) {\n return idx;\n }\n }\n return -1;\n },\n unifyType: unifyType\n });\n kendo.ui.List = List;\n ui.Select = List.extend({\n init: function (element, options) {\n List.fn.init.call(this, element, options);\n this._initial = this.element.val();\n },\n setDataSource: function (dataSource) {\n var that = this;\n var parent;\n that.options.dataSource = dataSource;\n that._dataSource();\n if (that.listView.bound()) {\n that._initialIndex = null;\n }\n that.listView.setDataSource(that.dataSource);\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n parent = that._parentWidget();\n if (parent) {\n that._cascadeSelect(parent);\n }\n },\n close: function () {\n this.popup.close();\n },\n select: function (candidate) {\n var that = this;\n if (candidate === undefined) {\n return that.selectedIndex;\n } else {\n that._select(candidate);\n that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n }\n },\n search: function (word) {\n word = typeof word === 'string' ? word : this.text();\n var that = this;\n var length = word.length;\n var options = that.options;\n var ignoreCase = options.ignoreCase;\n var field = options.dataTextField;\n clearTimeout(that._typingTimeout);\n if (!length || length >= options.minLength) {\n that._state = 'filter';\n if (!that._isFilterEnabled()) {\n that._filter(word);\n } else {\n that._open = true;\n that._filterSource({\n value: ignoreCase ? word.toLowerCase() : word,\n field: field,\n operator: options.filter,\n ignoreCase: ignoreCase\n });\n }\n }\n },\n _accessor: function (value, idx) {\n return this[this._isSelect ? '_accessorSelect' : '_accessorInput'](value, idx);\n },\n _accessorInput: function (value) {\n var element = this.element[0];\n if (value === undefined) {\n return element.value;\n } else {\n if (value === null) {\n value = '';\n }\n element.value = value;\n }\n },\n _accessorSelect: function (value, idx) {\n var element = this.element[0];\n var selectedIndex = element.selectedIndex;\n var option;\n if (value === undefined) {\n if (selectedIndex > -1) {\n option = element.options[selectedIndex];\n }\n if (option) {\n value = option.value;\n }\n return value || '';\n } else {\n if (selectedIndex > -1) {\n element.options[selectedIndex].removeAttribute(SELECTED);\n element.options[selectedIndex].selected = false;\n }\n if (idx === undefined) {\n idx = -1;\n }\n if (value !== null && value !== '' && idx == -1) {\n this._custom(value);\n } else {\n if (value) {\n element.value = value;\n } else {\n element.selectedIndex = idx;\n }\n if (element.selectedIndex > -1) {\n option = element.options[element.selectedIndex];\n }\n if (option) {\n option.setAttribute(SELECTED, SELECTED);\n }\n }\n }\n },\n _custom: function (value) {\n var that = this;\n var element = that.element;\n var custom = that._customOption;\n if (!custom) {\n custom = $('
            ').parent();\n this.header = this.content.before('
            ').prev();\n this.bound(false);\n this._optionID = kendo.guid();\n this._selectedIndices = [];\n this._view = [];\n this._dataItems = [];\n this._values = [];\n var value = this.options.value;\n if (value) {\n this._values = $.isArray(value) ? value.slice(0) : [value];\n }\n this._getter();\n this._templates();\n this.setDataSource(this.options.dataSource);\n this._onScroll = proxy(function () {\n var that = this;\n clearTimeout(that._scrollId);\n that._scrollId = setTimeout(function () {\n that._renderHeader();\n }, 50);\n }, this);\n },\n options: {\n name: 'StaticList',\n dataValueField: null,\n valuePrimitive: false,\n selectable: true,\n template: null,\n groupTemplate: null,\n fixedGroupTemplate: null\n },\n events: [\n 'click',\n CHANGE,\n 'activate',\n 'deactivate',\n 'dataBinding',\n 'dataBound',\n 'selectedItemChange'\n ],\n setDataSource: function (source) {\n var that = this;\n var dataSource = source || {};\n var value;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource = kendo.data.DataSource.create(dataSource);\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n value = that.value();\n that.value([]);\n that.bound(false);\n that.value(value);\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n }\n that.setDSFilter(dataSource.filter());\n that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n that._fixedHeader();\n },\n skip: function () {\n return this.dataSource.skip();\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._getter();\n this._templates();\n this._render();\n },\n destroy: function () {\n this.element.off(STATIC_LIST_NS);\n if (this._refreshHandler) {\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n }\n clearTimeout(this._scrollId);\n Widget.fn.destroy.call(this);\n },\n scrollToIndex: function (index) {\n var item = this.element[0].children[index];\n if (item) {\n this.scroll(item);\n }\n },\n scroll: function (item) {\n if (!item) {\n return;\n }\n if (item[0]) {\n item = item[0];\n }\n var content = this.content[0], itemOffsetTop = item.offsetTop, itemOffsetHeight = item.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n },\n selectedDataItems: function (dataItems) {\n if (dataItems === undefined) {\n return this._dataItems.slice();\n }\n this._dataItems = dataItems;\n this._values = this._getValues(dataItems);\n },\n _getValues: function (dataItems) {\n var getter = this._valueGetter;\n return $.map(dataItems, function (dataItem) {\n return getter(dataItem);\n });\n },\n focusNext: function () {\n var current = this.focus();\n if (!current) {\n current = 0;\n } else {\n current = current.next();\n }\n this.focus(current);\n },\n focusPrev: function () {\n var current = this.focus();\n if (!current) {\n current = this.element[0].children.length - 1;\n } else {\n current = current.prev();\n }\n this.focus(current);\n },\n focusFirst: function () {\n this.focus(this.element[0].children[0]);\n },\n focusLast: function () {\n this.focus(this.element[0].children[this.element[0].children.length - 1]);\n },\n focus: function (candidate) {\n var that = this;\n var id = that._optionID;\n var hasCandidate;\n if (candidate === undefined) {\n return that._current;\n }\n candidate = that._get(candidate);\n candidate = candidate[candidate.length - 1];\n candidate = $(this.element[0].children[candidate]);\n if (that._current) {\n that._current.removeClass(FOCUSED).removeAttr('aria-selected').removeAttr(ID);\n that.trigger('deactivate');\n }\n hasCandidate = !!candidate[0];\n if (hasCandidate) {\n candidate.addClass(FOCUSED);\n that.scroll(candidate);\n candidate.attr('id', id);\n }\n that._current = hasCandidate ? candidate : null;\n that.trigger('activate');\n },\n focusIndex: function () {\n return this.focus() ? this.focus().index() : undefined;\n },\n skipUpdate: function (skipUpdate) {\n this._skipUpdate = skipUpdate;\n },\n select: function (indices) {\n var that = this;\n var selectable = that.options.selectable;\n var singleSelection = selectable !== 'multiple' && selectable !== false;\n var selectedIndices = that._selectedIndices;\n var added = [];\n var removed = [];\n var result;\n if (indices === undefined) {\n return selectedIndices.slice();\n }\n indices = that._get(indices);\n if (indices.length === 1 && indices[0] === -1) {\n indices = [];\n }\n var filtered = that.isFiltered();\n if (filtered && !singleSelection && that._deselectFiltered(indices)) {\n return;\n }\n if (singleSelection && !filtered && $.inArray(indices[indices.length - 1], selectedIndices) !== -1) {\n if (that._dataItems.length && that._view.length) {\n that._dataItems = [that._view[selectedIndices[0]].item];\n }\n return;\n }\n result = that._deselect(indices);\n removed = result.removed;\n indices = result.indices;\n if (indices.length) {\n if (singleSelection) {\n indices = [indices[indices.length - 1]];\n }\n added = that._select(indices);\n }\n if (added.length || removed.length) {\n that._valueComparer = null;\n that.trigger(CHANGE, {\n added: added,\n removed: removed\n });\n }\n },\n removeAt: function (position) {\n this._selectedIndices.splice(position, 1);\n this._values.splice(position, 1);\n this._valueComparer = null;\n return {\n position: position,\n dataItem: this._dataItems.splice(position, 1)[0]\n };\n },\n setValue: function (value) {\n value = $.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n this._values = value;\n this._valueComparer = null;\n },\n value: function (value) {\n var that = this;\n var deferred = that._valueDeferred;\n var indices;\n if (value === undefined) {\n return that._values.slice();\n }\n that.setValue(value);\n if (!deferred || deferred.state() === 'resolved') {\n that._valueDeferred = deferred = $.Deferred();\n }\n if (that.bound()) {\n indices = that._valueIndices(that._values);\n if (that.options.selectable === 'multiple') {\n that.select(-1);\n }\n that.select(indices);\n deferred.resolve();\n }\n that._skipUpdate = false;\n return deferred;\n },\n items: function () {\n return this.element.children('.k-item');\n },\n _click: function (e) {\n if (!e.isDefaultPrevented()) {\n if (!this.trigger('click', { item: $(e.currentTarget) })) {\n this.select(e.currentTarget);\n }\n }\n },\n _valueExpr: function (type, values) {\n var that = this;\n var idx = 0;\n var body;\n var comparer;\n var normalized = [];\n if (!that._valueComparer || that._valueType !== type) {\n that._valueType = type;\n for (; idx < values.length; idx++) {\n normalized.push(unifyType(values[idx], type));\n }\n body = 'for (var idx = 0; idx < ' + normalized.length + '; idx++) {' + ' if (current === values[idx]) {' + ' return idx;' + ' }' + '} ' + 'return -1;';\n comparer = new Function('current', 'values', body);\n that._valueComparer = function (current) {\n return comparer(current, normalized);\n };\n }\n return that._valueComparer;\n },\n _dataItemPosition: function (dataItem, values) {\n var value = this._valueGetter(dataItem);\n var valueExpr = this._valueExpr(typeof value, values);\n return valueExpr(value);\n },\n _getter: function () {\n this._valueGetter = kendo.getter(this.options.dataValueField);\n },\n _deselect: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var selectable = that.options.selectable;\n var selectedIndices = that._selectedIndices;\n var dataItems = that._dataItems;\n var values = that._values;\n var removed = [];\n var i = 0;\n var j;\n var index, selectedIndex;\n var removedIndices = 0;\n indices = indices.slice();\n if (selectable === true || !indices.length) {\n for (; i < selectedIndices.length; i++) {\n $(children[selectedIndices[i]]).removeClass('k-state-selected');\n removed.push({\n position: i,\n dataItem: dataItems[i]\n });\n }\n that._values = [];\n that._dataItems = [];\n that._selectedIndices = [];\n } else if (selectable === 'multiple') {\n for (; i < indices.length; i++) {\n index = indices[i];\n if (!$(children[index]).hasClass('k-state-selected')) {\n continue;\n }\n for (j = 0; j < selectedIndices.length; j++) {\n selectedIndex = selectedIndices[j];\n if (selectedIndex === index) {\n $(children[selectedIndex]).removeClass('k-state-selected');\n removed.push({\n position: j + removedIndices,\n dataItem: dataItems.splice(j, 1)[0]\n });\n selectedIndices.splice(j, 1);\n indices.splice(i, 1);\n values.splice(j, 1);\n removedIndices += 1;\n i -= 1;\n j -= 1;\n break;\n }\n }\n }\n }\n return {\n indices: indices,\n removed: removed\n };\n },\n _deselectFiltered: function (indices) {\n var children = this.element[0].children;\n var dataItem, index, position;\n var removed = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = this._view[index].item;\n position = this._dataItemPosition(dataItem, this._values);\n if (position > -1) {\n removed.push(this.removeAt(position));\n $(children[index]).removeClass('k-state-selected');\n }\n }\n if (removed.length) {\n this.trigger(CHANGE, {\n added: [],\n removed: removed\n });\n return true;\n }\n return false;\n },\n _select: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var data = that._view;\n var dataItem, index;\n var added = [];\n var idx = 0;\n if (indices[indices.length - 1] !== -1) {\n that.focus(indices);\n }\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = data[index];\n if (index === -1 || !dataItem) {\n continue;\n }\n dataItem = dataItem.item;\n that._selectedIndices.push(index);\n that._dataItems.push(dataItem);\n that._values.push(that._valueGetter(dataItem));\n $(children[index]).addClass('k-state-selected').attr('aria-selected', true);\n added.push({ dataItem: dataItem });\n }\n return added;\n },\n _get: function (candidate) {\n if (typeof candidate === 'number') {\n candidate = [candidate];\n } else if (!isArray(candidate)) {\n candidate = $(candidate).data('offset-index');\n if (candidate === undefined) {\n candidate = -1;\n }\n candidate = [candidate];\n }\n return candidate;\n },\n _template: function () {\n var that = this;\n var options = that.options;\n var template = options.template;\n if (!template) {\n template = kendo.template('
          • ${' + kendo.expr(options.dataTextField, 'data') + '}
          • ', { useWithBlock: false });\n } else {\n template = kendo.template(template);\n template = function (data) {\n return '
          • ' + template(data) + '
          • ';\n };\n }\n return template;\n },\n _templates: function () {\n var template;\n var templates = {\n template: this.options.template,\n groupTemplate: this.options.groupTemplate,\n fixedGroupTemplate: this.options.fixedGroupTemplate\n };\n for (var key in templates) {\n template = templates[key];\n if (template && typeof template !== 'function') {\n templates[key] = kendo.template(template);\n }\n }\n this.templates = templates;\n },\n _normalizeIndices: function (indices) {\n var newIndices = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n if (indices[idx] !== undefined) {\n newIndices.push(indices[idx]);\n }\n }\n return newIndices;\n },\n _valueIndices: function (values, indices) {\n var data = this._view;\n var idx = 0;\n var index;\n indices = indices ? indices.slice() : [];\n if (!values.length) {\n return [];\n }\n for (; idx < data.length; idx++) {\n index = this._dataItemPosition(data[idx].item, values);\n if (index !== -1) {\n indices[index] = idx;\n }\n }\n return this._normalizeIndices(indices);\n },\n _firstVisibleItem: function () {\n var element = this.element[0];\n var content = this.content[0];\n var scrollTop = content.scrollTop;\n var itemHeight = $(element.children[0]).height();\n var itemIndex = Math.floor(scrollTop / itemHeight) || 0;\n var item = element.children[itemIndex] || element.lastChild;\n var forward = item.offsetTop < scrollTop;\n while (item) {\n if (forward) {\n if (item.offsetTop + itemHeight > scrollTop || !item.nextSibling) {\n break;\n }\n item = item.nextSibling;\n } else {\n if (item.offsetTop <= scrollTop || !item.previousSibling) {\n break;\n }\n item = item.previousSibling;\n }\n }\n return this._view[$(item).data('offset-index')];\n },\n _fixedHeader: function () {\n if (this.isGrouped() && this.templates.fixedGroupTemplate) {\n this.header.show();\n this.content.scroll(this._onScroll);\n } else {\n this.header.hide();\n this.content.off('scroll', this._onScroll);\n }\n },\n _renderHeader: function () {\n var template = this.templates.fixedGroupTemplate;\n if (!template) {\n return;\n }\n var visibleItem = this._firstVisibleItem();\n if (visibleItem) {\n this.header.html(template(visibleItem.group));\n }\n },\n _renderItem: function (context) {\n var item = '
          • ';\n item += this.templates.template(dataItem);\n if (notFirstItem && context.newGroup) {\n item += '
            ' + this.templates.groupTemplate(context.group) + '
            ';\n }\n return item + '
          • ';\n },\n _render: function () {\n var html = '';\n var i = 0;\n var idx = 0;\n var context;\n var dataContext = [];\n var view = this.dataSource.view();\n var values = this.value();\n var group, newGroup, j;\n var isGrouped = this.isGrouped();\n if (isGrouped) {\n for (i = 0; i < view.length; i++) {\n group = view[i];\n newGroup = true;\n for (j = 0; j < group.items.length; j++) {\n context = {\n selected: this._selected(group.items[j], values),\n item: group.items[j],\n group: group.value,\n newGroup: newGroup,\n index: idx\n };\n dataContext[idx] = context;\n idx += 1;\n html += this._renderItem(context);\n newGroup = false;\n }\n }\n } else {\n for (i = 0; i < view.length; i++) {\n context = {\n selected: this._selected(view[i], values),\n item: view[i],\n index: i\n };\n dataContext[i] = context;\n html += this._renderItem(context);\n }\n }\n this._view = dataContext;\n this.element[0].innerHTML = html;\n if (isGrouped && dataContext.length) {\n this._renderHeader();\n }\n },\n _selected: function (dataItem, values) {\n var select = !this.isFiltered() || this.options.selectable === 'multiple';\n return select && this._dataItemPosition(dataItem, values) !== -1;\n },\n setDSFilter: function (filter) {\n this._lastDSFilter = extend({}, filter);\n },\n isFiltered: function () {\n if (!this._lastDSFilter) {\n this.setDSFilter(this.dataSource.filter());\n }\n return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n },\n refresh: function (e) {\n var that = this;\n var action = e && e.action;\n var skipUpdateOnBind = that.options.skipUpdateOnBind;\n var isItemChange = action === 'itemchange';\n var result;\n that.trigger('dataBinding');\n that._fixedHeader();\n that._render();\n that.bound(true);\n if (isItemChange || action === 'remove') {\n result = mapChangedItems(that._dataItems, e.items);\n if (result.changed.length) {\n if (isItemChange) {\n that.trigger('selectedItemChange', { items: result.changed });\n } else {\n that.value(that._getValues(result.unchanged));\n }\n }\n } else if (that.isFiltered() || that._skipUpdate) {\n that.focus(0);\n if (that._skipUpdate) {\n that._skipUpdate = false;\n that._selectedIndices = that._valueIndices(that._values, that._selectedIndices);\n }\n } else if (!skipUpdateOnBind && (!action || action === 'add')) {\n that.value(that._values);\n }\n if (that._valueDeferred) {\n that._valueDeferred.resolve();\n }\n that.trigger('dataBound');\n },\n bound: function (bound) {\n if (bound === undefined) {\n return this._bound;\n }\n this._bound = bound;\n },\n isGrouped: function () {\n return (this.dataSource.group() || []).length;\n }\n });\n ui.plugin(StaticList);\n function mapChangedItems(selected, itemsToMatch) {\n var itemsLength = itemsToMatch.length;\n var selectedLength = selected.length;\n var dataItem;\n var found;\n var i, j;\n var changed = [];\n var unchanged = [];\n if (selectedLength) {\n for (i = 0; i < selectedLength; i++) {\n dataItem = selected[i];\n found = false;\n for (j = 0; j < itemsLength; j++) {\n if (dataItem === itemsToMatch[j]) {\n found = true;\n changed.push({\n index: i,\n item: dataItem\n });\n break;\n }\n }\n if (!found) {\n unchanged.push(dataItem);\n }\n }\n }\n return {\n changed: changed,\n unchanged: unchanged\n };\n }\n function removeFiltersForField(expression, field) {\n var filters;\n var found = false;\n if (expression.filters) {\n filters = $.grep(expression.filters, function (filter) {\n found = removeFiltersForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field != field;\n }\n });\n if (!found && expression.filters.length !== filters.length) {\n found = true;\n }\n expression.filters = filters;\n }\n return found;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.calendar', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'calendar',\n name: 'Calendar',\n category: 'web',\n description: 'The Calendar widget renders a graphical calendar that supports navigation and selection.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, ui = kendo.ui, Widget = ui.Widget, keys = kendo.keys, parse = kendo.parseDate, adjustDST = kendo.date.adjustDST, extractFormat = kendo._extractFormat, template = kendo.template, getCulture = kendo.getCulture, transitions = kendo.support.transitions, transitionOrigin = transitions ? transitions.css + 'transform-origin' : '', cellTemplate = template('#=data.value#', { useWithBlock: false }), emptyCellTemplate = template(' ', { useWithBlock: false }), browser = kendo.support.browser, isIE8 = browser.msie && browser.version < 9, ns = '.kendoCalendar', CLICK = 'click' + ns, KEYDOWN_NS = 'keydown' + ns, ID = 'id', MIN = 'min', LEFT = 'left', SLIDE = 'slideIn', MONTH = 'month', CENTURY = 'century', CHANGE = 'change', NAVIGATE = 'navigate', VALUE = 'value', HOVER = 'k-state-hover', DISABLED = 'k-state-disabled', FOCUSED = 'k-state-focused', OTHERMONTH = 'k-other-month', OTHERMONTHCLASS = ' class=\"' + OTHERMONTH + '\"', TODAY = 'k-nav-today', CELLSELECTOR = 'td:has(.k-link)', BLUR = 'blur' + ns, FOCUS = 'focus', FOCUS_WITH_NS = FOCUS + ns, MOUSEENTER = support.touch ? 'touchstart' : 'mouseenter', MOUSEENTER_WITH_NS = support.touch ? 'touchstart' + ns : 'mouseenter' + ns, MOUSELEAVE = support.touch ? 'touchend' + ns + ' touchmove' + ns : 'mouseleave' + ns, MS_PER_MINUTE = 60000, MS_PER_DAY = 86400000, PREVARROW = '_prevArrow', NEXTARROW = '_nextArrow', ARIA_DISABLED = 'aria-disabled', ARIA_SELECTED = 'aria-selected', proxy = $.proxy, extend = $.extend, DATE = Date, views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n };\n var Calendar = Widget.extend({\n init: function (element, options) {\n var that = this, value, id;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n options.url = window.unescape(options.url);\n that.options.disableDates = getDisabledExpr(that.options.disableDates);\n that._templates();\n that._header();\n that._footer(that.footer);\n id = element.addClass('k-widget k-calendar').on(MOUSEENTER_WITH_NS + ' ' + MOUSELEAVE, CELLSELECTOR, mousetoggle).on(KEYDOWN_NS, 'table.k-content', proxy(that._move, that)).on(CLICK, CELLSELECTOR, function (e) {\n var link = e.currentTarget.firstChild, value = that._toDateObject(link);\n if (link.href.indexOf('#') != -1) {\n e.preventDefault();\n }\n if (that.options.disableDates(value) && that._view.name == 'month') {\n return;\n }\n that._click($(link));\n }).on('mouseup' + ns, 'table.k-content, .k-footer', function () {\n that._focusView(that.options.focusOnNav !== false);\n }).attr(ID);\n if (id) {\n that._cellID = id + '_cell_selected';\n }\n normalize(options);\n value = parse(options.value, options.format, options.culture);\n that._index = views[options.start];\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n that._addClassProxy = function () {\n that._active = true;\n if (that._cell.hasClass(DISABLED)) {\n var todayString = that._view.toDateString(getToday());\n that._cell = that._cellByDate(todayString);\n }\n that._cell.addClass(FOCUSED);\n };\n that._removeClassProxy = function () {\n that._active = false;\n that._cell.removeClass(FOCUSED);\n };\n that.value(value);\n kendo.notify(that);\n },\n options: {\n name: 'Calendar',\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n url: '',\n culture: '',\n footer: '',\n format: '',\n month: {},\n start: MONTH,\n depth: MONTH,\n animation: {\n horizontal: {\n effects: SLIDE,\n reverse: true,\n duration: 500,\n divisor: 2\n },\n vertical: {\n effects: 'zoomIn',\n duration: 400\n }\n }\n },\n events: [\n CHANGE,\n NAVIGATE\n ],\n setOptions: function (options) {\n var that = this;\n normalize(options);\n if (!options.dates[0]) {\n options.dates = that.options.dates;\n }\n options.disableDates = getDisabledExpr(options.disableDates);\n Widget.fn.setOptions.call(that, options);\n that._templates();\n that._footer(that.footer);\n that._index = views[that.options.start];\n that.navigate();\n },\n destroy: function () {\n var that = this, today = that._today;\n that.element.off(ns);\n that._title.off(ns);\n that[PREVARROW].off(ns);\n that[NEXTARROW].off(ns);\n kendo.destroy(that._table);\n if (today) {\n kendo.destroy(today.off(ns));\n }\n Widget.fn.destroy.call(that);\n },\n current: function () {\n return this._current;\n },\n view: function () {\n return this._view;\n },\n focus: function (table) {\n table = table || this._table;\n this._bindTable(table);\n table.focus();\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n navigateToPast: function () {\n this._navigate(PREVARROW, -1);\n },\n navigateToFuture: function () {\n this._navigate(NEXTARROW, 1);\n },\n navigateUp: function () {\n var that = this, index = that._index;\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n that.navigate(that._current, ++index);\n },\n navigateDown: function (value) {\n var that = this, index = that._index, depth = that.options.depth;\n if (!value) {\n return;\n }\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n that.navigate(value, --index);\n },\n navigate: function (value, view) {\n view = isNaN(view) ? views[view] : view;\n var that = this, options = that.options, culture = options.culture, min = options.min, max = options.max, title = that._title, from = that._table, old = that._oldTable, selectedValue = that._value, currentValue = that._current, future = value && +value > +currentValue, vertical = view !== undefined && view !== that._index, to, currentView, compare, disabled;\n if (!value) {\n value = currentValue;\n }\n that._current = value = new DATE(+restrictValue(value, min, max));\n if (view === undefined) {\n view = that._index;\n } else {\n that._index = view;\n }\n that._view = currentView = calendar.views[view];\n compare = currentView.compare;\n disabled = view === views[CENTURY];\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n disabled = compare(value, min) < 1;\n that[PREVARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n disabled = compare(value, max) > -1;\n that[NEXTARROW].toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n if (from && old && old.data('animating')) {\n old.kendoStop(true, true);\n from.kendoStop(true, true);\n }\n that._oldTable = from;\n if (!from || that._changeView) {\n title.html(currentView.title(value, min, max, culture));\n that._table = to = $(currentView.content(extend({\n min: min,\n max: max,\n date: value,\n url: options.url,\n dates: options.dates,\n format: options.format,\n culture: culture,\n disableDates: options.disableDates\n }, that[currentView.name])));\n makeUnselectable(to);\n var replace = from && from.data('start') === to.data('start');\n that._animate({\n from: from,\n to: to,\n vertical: vertical,\n future: future,\n replace: replace\n });\n that.trigger(NAVIGATE);\n that._focus(value);\n }\n if (view === views[options.depth] && selectedValue && !that.options.disableDates(selectedValue)) {\n that._class('k-state-selected', selectedValue);\n }\n that._class(FOCUSED, value);\n if (!from && that._cell) {\n that._cell.removeClass(FOCUSED);\n }\n that._changeView = true;\n },\n value: function (value) {\n var that = this, view = that._view, options = that.options, old = that._view, min = options.min, max = options.max;\n if (value === undefined) {\n return that._value;\n }\n if (value === null) {\n that._current = new Date(that._current.getFullYear(), that._current.getMonth(), that._current.getDate());\n }\n value = parse(value, options.format, options.culture);\n if (value !== null) {\n value = new DATE(+value);\n if (!isInRange(value, min, max)) {\n value = null;\n }\n }\n if (!that.options.disableDates(value)) {\n that._value = value;\n } else if (that._value === undefined) {\n that._value = null;\n }\n if (old && value === null && that._cell) {\n that._cell.removeClass('k-state-selected');\n } else {\n that._changeView = !value || view && view.compare(value, that._current) !== 0;\n that.navigate(value);\n }\n },\n _move: function (e) {\n var that = this, options = that.options, key = e.keyCode, view = that._view, index = that._index, min = that.options.min, max = that.options.max, currentValue = new DATE(+that._current), isRtl = kendo.support.isRtl(that.wrapper), isDisabled = that.options.disableDates, value, prevent, method, temp;\n if (e.target === that._table[0]) {\n that._active = true;\n }\n if (e.ctrlKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n that.navigateToFuture();\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n that.navigateToPast();\n prevent = true;\n } else if (key == keys.UP) {\n that.navigateUp();\n prevent = true;\n } else if (key == keys.DOWN) {\n that._click($(that._cell[0].firstChild));\n prevent = true;\n }\n } else {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.ENTER) {\n that._click($(that._cell[0].firstChild));\n prevent = true;\n } else if (key == keys.HOME || key == keys.END) {\n method = key == keys.HOME ? 'first' : 'last';\n temp = view[method](currentValue);\n currentValue = new DATE(temp.getFullYear(), temp.getMonth(), temp.getDate(), currentValue.getHours(), currentValue.getMinutes(), currentValue.getSeconds(), currentValue.getMilliseconds());\n prevent = true;\n } else if (key == keys.PAGEUP) {\n prevent = true;\n that.navigateToPast();\n } else if (key == keys.PAGEDOWN) {\n prevent = true;\n that.navigateToFuture();\n }\n if (value || method) {\n if (!method) {\n view.setDate(currentValue, value);\n }\n if (isDisabled(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n if (isInRange(currentValue, min, max)) {\n that._focus(restrictValue(currentValue, options.min, options.max));\n }\n }\n }\n if (prevent) {\n e.preventDefault();\n }\n return that._current;\n },\n _nextNavigatable: function (currentValue, value) {\n var that = this, disabled = true, view = that._view, min = that.options.min, max = that.options.max, isDisabled = that.options.disableDates, navigatableDate = new Date(currentValue.getTime());\n view.setDate(navigatableDate, -value);\n while (disabled) {\n view.setDate(currentValue, value);\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n _animate: function (options) {\n var that = this, from = options.from, to = options.to, active = that._active;\n if (!from) {\n to.insertAfter(that.element[0].firstChild);\n that._bindTable(to);\n } else if (from.parent().data('animating')) {\n from.off(ns);\n from.parent().kendoStop(true, true).remove();\n from.remove();\n to.insertAfter(that.element[0].firstChild);\n that._focusView(active);\n } else if (!from.is(':visible') || that.options.animation === false || options.replace) {\n to.insertAfter(from);\n from.off(ns).remove();\n that._focusView(active);\n } else {\n that[options.vertical ? '_vertical' : '_horizontal'](from, to, options.future);\n }\n },\n _horizontal: function (from, to, future) {\n var that = this, active = that._active, horizontal = that.options.animation.horizontal, effects = horizontal.effects, viewWidth = from.outerWidth();\n if (effects && effects.indexOf(SLIDE) != -1) {\n from.add(to).css({ width: viewWidth });\n from.wrap('
            ');\n that._focusView(active, from);\n from.parent().css({\n position: 'relative',\n width: viewWidth * 2,\n 'float': LEFT,\n 'margin-left': future ? 0 : -viewWidth\n });\n to[future ? 'insertAfter' : 'insertBefore'](from);\n extend(horizontal, {\n effects: SLIDE + ':' + (future ? 'right' : LEFT),\n complete: function () {\n from.off(ns).remove();\n that._oldTable = null;\n to.unwrap();\n that._focusView(active);\n }\n });\n from.parent().kendoStop(true, true).kendoAnimate(horizontal);\n }\n },\n _vertical: function (from, to) {\n var that = this, vertical = that.options.animation.vertical, effects = vertical.effects, active = that._active, cell, position;\n if (effects && effects.indexOf('zoom') != -1) {\n to.css({\n position: 'absolute',\n top: from.prev().outerHeight(),\n left: 0\n }).insertBefore(from);\n if (transitionOrigin) {\n cell = that._cellByDate(that._view.toDateString(that._current));\n position = cell.position();\n position = position.left + parseInt(cell.width() / 2, 10) + 'px' + ' ' + (position.top + parseInt(cell.height() / 2, 10) + 'px');\n to.css(transitionOrigin, position);\n }\n from.kendoStop(true, true).kendoAnimate({\n effects: 'fadeOut',\n duration: 600,\n complete: function () {\n from.off(ns).remove();\n that._oldTable = null;\n to.css({\n position: 'static',\n top: 0,\n left: 0\n });\n that._focusView(active);\n }\n });\n to.kendoStop(true, true).kendoAnimate(vertical);\n }\n },\n _cellByDate: function (value) {\n return this._table.find('td:not(.' + OTHERMONTH + ')').filter(function () {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n _class: function (className, date) {\n var that = this, id = that._cellID, cell = that._cell, value = that._view.toDateString(date), disabledDate;\n if (cell) {\n cell.removeAttr(ARIA_SELECTED).removeAttr('aria-label').removeAttr(ID);\n }\n if (date) {\n disabledDate = that.options.disableDates(date);\n }\n cell = that._table.find('td:not(.' + OTHERMONTH + ')').removeClass(className).filter(function () {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n }).attr(ARIA_SELECTED, true);\n if (className === FOCUSED && !that._active && that.options.focusOnNav !== false || disabledDate) {\n className = '';\n }\n cell.addClass(className);\n if (cell[0]) {\n that._cell = cell;\n }\n if (id) {\n cell.attr(ID, id);\n that._table.removeAttr('aria-activedescendant').attr('aria-activedescendant', id);\n }\n },\n _bindTable: function (table) {\n table.on(FOCUS_WITH_NS, this._addClassProxy).on(BLUR, this._removeClassProxy);\n },\n _click: function (link) {\n var that = this, options = that.options, currentValue = new Date(+that._current), value = that._toDateObject(link);\n adjustDST(value, 0);\n if (that.options.disableDates(value) && that._view.name == 'month') {\n value = that._value;\n }\n that._view.setDate(currentValue, value);\n that.navigateDown(restrictValue(currentValue, options.min, options.max));\n },\n _focus: function (value) {\n var that = this, view = that._view;\n if (view.compare(value, that._current) !== 0) {\n that.navigate(value);\n } else {\n that._current = value;\n that._class(FOCUSED, value);\n }\n },\n _focusView: function (active, table) {\n if (active) {\n this.focus(table);\n }\n },\n _footer: function (template) {\n var that = this, today = getToday(), element = that.element, footer = element.find('.k-footer');\n if (!template) {\n that._toggle(false);\n footer.hide();\n return;\n }\n if (!footer[0]) {\n footer = $('
            ').appendTo(element);\n }\n that._today = footer.show().find('.k-link').html(template(today)).attr('title', kendo.toString(today, 'D', that.options.culture));\n that._toggle();\n },\n _header: function () {\n var that = this, element = that.element, links;\n if (!element.find('.k-header')[0]) {\n element.html('
            ' + '' + '' + '' + '
            ');\n }\n links = element.find('.k-link').on(MOUSEENTER_WITH_NS + ' ' + MOUSELEAVE + ' ' + FOCUS_WITH_NS + ' ' + BLUR, mousetoggle).click(false);\n that._title = links.eq(1).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateUp();\n });\n that[PREVARROW] = links.eq(0).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateToPast();\n });\n that[NEXTARROW] = links.eq(2).on(CLICK, function () {\n that._active = that.options.focusOnNav !== false;\n that.navigateToFuture();\n });\n },\n _navigate: function (arrow, modifier) {\n var that = this, index = that._index + 1, currentValue = new DATE(+that._current);\n arrow = that[arrow];\n if (!arrow.hasClass(DISABLED)) {\n if (index > 3) {\n currentValue.setFullYear(currentValue.getFullYear() + 100 * modifier);\n } else {\n calendar.views[index].setDate(currentValue, modifier);\n }\n that.navigate(currentValue);\n }\n },\n _option: function (option, value) {\n var that = this, options = that.options, currentValue = that._value || that._current, isBigger;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.format, options.culture);\n if (!value) {\n return;\n }\n options[option] = new DATE(+value);\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n if (isBigger || isEqualMonth(currentValue, value)) {\n if (isBigger) {\n that._value = null;\n }\n that._changeView = true;\n }\n if (!that._changeView) {\n that._changeView = !!(options.month.content || options.month.empty);\n }\n that.navigate(that._value);\n that._toggle();\n },\n _toggle: function (toggle) {\n var that = this, options = that.options, isTodayDisabled = that.options.disableDates(getToday()), link = that._today;\n if (toggle === undefined) {\n toggle = isInRange(getToday(), options.min, options.max);\n }\n if (link) {\n link.off(CLICK);\n if (toggle && !isTodayDisabled) {\n link.addClass(TODAY).removeClass(DISABLED).on(CLICK, proxy(that._todayClick, that));\n } else {\n link.removeClass(TODAY).addClass(DISABLED).on(CLICK, prevent);\n }\n }\n },\n _todayClick: function (e) {\n var that = this, depth = views[that.options.depth], disabled = that.options.disableDates, today = getToday();\n e.preventDefault();\n if (disabled(today)) {\n return;\n }\n if (that._view.compare(that._current, today) === 0 && that._index == depth) {\n that._changeView = false;\n }\n that._value = today;\n that.navigate(today, depth);\n that.trigger(CHANGE);\n },\n _toDateObject: function (link) {\n var value = $(link).attr(kendo.attr(VALUE)).split('/');\n value = new DATE(value[0], value[1], value[2]);\n return value;\n },\n _templates: function () {\n var that = this, options = that.options, footer = options.footer, month = options.month, content = month.content, empty = month.empty;\n that.month = {\n content: template('' + (content || '#=data.value#') + '', { useWithBlock: !!content }),\n empty: template('' + (empty || ' ') + '', { useWithBlock: !!empty })\n };\n that.footer = footer !== false ? template(footer || '#= kendo.toString(data,\"D\",\"' + options.culture + '\") #', { useWithBlock: false }) : null;\n }\n });\n ui.plugin(Calendar);\n var calendar = {\n firstDayOfMonth: function (date) {\n return new DATE(date.getFullYear(), date.getMonth(), 1);\n },\n firstVisibleDay: function (date, calendarInfo) {\n calendarInfo = calendarInfo || kendo.culture().calendar;\n var firstDay = calendarInfo.firstDay, firstVisibleDay = new DATE(date.getFullYear(), date.getMonth(), 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n while (firstVisibleDay.getDay() != firstDay) {\n calendar.setTime(firstVisibleDay, -1 * MS_PER_DAY);\n }\n return firstVisibleDay;\n },\n setTime: function (date, time) {\n var tzOffsetBefore = date.getTimezoneOffset(), resultDATE = new DATE(date.getTime() + time), tzOffsetDiff = resultDATE.getTimezoneOffset() - tzOffsetBefore;\n date.setTime(resultDATE.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n },\n views: [\n {\n name: MONTH,\n title: function (date, min, max, culture) {\n return getCalendarInfo(culture).months.names[date.getMonth()] + ' ' + date.getFullYear();\n },\n content: function (options) {\n var that = this, idx = 0, min = options.min, max = options.max, date = options.date, dates = options.dates, format = options.format, culture = options.culture, navigateUrl = options.url, hasUrl = navigateUrl && dates[0], currentCalendar = getCalendarInfo(culture), firstDayIdx = currentCalendar.firstDay, days = currentCalendar.days, names = shiftArray(days.names, firstDayIdx), shortNames = shiftArray(days.namesShort, firstDayIdx), start = calendar.firstVisibleDay(date, currentCalendar), firstDayOfMonth = that.first(date), lastDayOfMonth = that.last(date), toDateString = that.toDateString, today = new DATE(), html = '';\n for (; idx < 7; idx++) {\n html += '';\n }\n today = new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n adjustDST(today, 0);\n today = +today;\n return view({\n cells: 42,\n perRow: 7,\n html: html += '',\n start: start,\n min: new DATE(min.getFullYear(), min.getMonth(), min.getDate()),\n max: new DATE(max.getFullYear(), max.getMonth(), max.getDate()),\n content: options.content,\n empty: options.empty,\n setter: that.setDate,\n disableDates: options.disableDates,\n build: function (date, idx, disableDates) {\n var cssClass = [], day = date.getDay(), linkClass = '', url = '#';\n if (date < firstDayOfMonth || date > lastDayOfMonth) {\n cssClass.push(OTHERMONTH);\n }\n if (disableDates(date)) {\n cssClass.push(DISABLED);\n }\n if (+date === today) {\n cssClass.push('k-today');\n }\n if (day === 0 || day === 6) {\n cssClass.push('k-weekend');\n }\n if (hasUrl && inArray(+date, dates)) {\n url = navigateUrl.replace('{0}', kendo.toString(date, format, culture));\n linkClass = ' k-action-link';\n }\n return {\n date: date,\n dates: dates,\n ns: kendo.ns,\n title: kendo.toString(date, 'D', culture),\n value: date.getDate(),\n dateString: toDateString(date),\n cssClass: cssClass[0] ? ' class=\"' + cssClass.join(' ') + '\"' : '',\n linkClass: linkClass,\n url: url\n };\n }\n });\n },\n first: function (date) {\n return calendar.firstDayOfMonth(date);\n },\n last: function (date) {\n var last = new DATE(date.getFullYear(), date.getMonth() + 1, 0), first = calendar.firstDayOfMonth(date), timeOffset = Math.abs(last.getTimezoneOffset() - first.getTimezoneOffset());\n if (timeOffset) {\n last.setHours(first.getHours() + timeOffset / 60);\n }\n return last;\n },\n compare: function (date1, date2) {\n var result, month1 = date1.getMonth(), year1 = date1.getFullYear(), month2 = date2.getMonth(), year2 = date2.getFullYear();\n if (year1 > year2) {\n result = 1;\n } else if (year1 < year2) {\n result = -1;\n } else {\n result = month1 == month2 ? 0 : month1 > month2 ? 1 : -1;\n }\n return result;\n },\n setDate: function (date, value) {\n var hours = date.getHours();\n if (value instanceof DATE) {\n date.setFullYear(value.getFullYear(), value.getMonth(), value.getDate());\n } else {\n calendar.setTime(date, value * MS_PER_DAY);\n }\n adjustDST(date, hours);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/' + date.getMonth() + '/' + date.getDate();\n }\n },\n {\n name: 'year',\n title: function (date) {\n return date.getFullYear();\n },\n content: function (options) {\n var namesAbbr = getCalendarInfo(options.culture).months.namesAbbr, toDateString = this.toDateString, min = options.min, max = options.max;\n return view({\n min: new DATE(min.getFullYear(), min.getMonth(), 1),\n max: new DATE(max.getFullYear(), max.getMonth(), 1),\n start: new DATE(options.date.getFullYear(), 0, 1),\n setter: this.setDate,\n build: function (date) {\n return {\n value: namesAbbr[date.getMonth()],\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: ''\n };\n }\n });\n },\n first: function (date) {\n return new DATE(date.getFullYear(), 0, date.getDate());\n },\n last: function (date) {\n return new DATE(date.getFullYear(), 11, date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2);\n },\n setDate: function (date, value) {\n var month, hours = date.getHours();\n if (value instanceof DATE) {\n month = value.getMonth();\n date.setFullYear(value.getFullYear(), month, date.getDate());\n if (month !== date.getMonth()) {\n date.setDate(0);\n }\n } else {\n month = date.getMonth() + value;\n date.setMonth(month);\n if (month > 11) {\n month -= 12;\n }\n if (month > 0 && date.getMonth() != month) {\n date.setDate(0);\n }\n }\n adjustDST(date, hours);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/' + date.getMonth() + '/1';\n }\n },\n {\n name: 'decade',\n title: function (date, min, max) {\n return title(date, min, max, 10);\n },\n content: function (options) {\n var year = options.date.getFullYear(), toDateString = this.toDateString;\n return view({\n start: new DATE(year - year % 10 - 1, 0, 1),\n min: new DATE(options.min.getFullYear(), 0, 1),\n max: new DATE(options.max.getFullYear(), 0, 1),\n setter: this.setDate,\n build: function (date, idx) {\n return {\n value: date.getFullYear(),\n ns: kendo.ns,\n dateString: toDateString(date),\n cssClass: idx === 0 || idx == 11 ? OTHERMONTHCLASS : ''\n };\n }\n });\n },\n first: function (date) {\n var year = date.getFullYear();\n return new DATE(year - year % 10, date.getMonth(), date.getDate());\n },\n last: function (date) {\n var year = date.getFullYear();\n return new DATE(year - year % 10 + 9, date.getMonth(), date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2, 10);\n },\n setDate: function (date, value) {\n setDate(date, value, 1);\n },\n toDateString: function (date) {\n return date.getFullYear() + '/0/1';\n }\n },\n {\n name: CENTURY,\n title: function (date, min, max) {\n return title(date, min, max, 100);\n },\n content: function (options) {\n var year = options.date.getFullYear(), min = options.min.getFullYear(), max = options.max.getFullYear(), toDateString = this.toDateString, minYear = min, maxYear = max;\n minYear = minYear - minYear % 10;\n maxYear = maxYear - maxYear % 10;\n if (maxYear - minYear < 10) {\n maxYear = minYear + 9;\n }\n return view({\n start: new DATE(year - year % 100 - 10, 0, 1),\n min: new DATE(minYear, 0, 1),\n max: new DATE(maxYear, 0, 1),\n setter: this.setDate,\n build: function (date, idx) {\n var start = date.getFullYear(), end = start + 9;\n if (start < min) {\n start = min;\n }\n if (end > max) {\n end = max;\n }\n return {\n ns: kendo.ns,\n value: start + ' - ' + end,\n dateString: toDateString(date),\n cssClass: idx === 0 || idx == 11 ? OTHERMONTHCLASS : ''\n };\n }\n });\n },\n first: function (date) {\n var year = date.getFullYear();\n return new DATE(year - year % 100, date.getMonth(), date.getDate());\n },\n last: function (date) {\n var year = date.getFullYear();\n return new DATE(year - year % 100 + 99, date.getMonth(), date.getDate());\n },\n compare: function (date1, date2) {\n return compare(date1, date2, 100);\n },\n setDate: function (date, value) {\n setDate(date, value, 10);\n },\n toDateString: function (date) {\n var year = date.getFullYear();\n return year - year % 10 + '/0/1';\n }\n }\n ]\n };\n function title(date, min, max, modular) {\n var start = date.getFullYear(), minYear = min.getFullYear(), maxYear = max.getFullYear(), end;\n start = start - start % modular;\n end = start + (modular - 1);\n if (start < minYear) {\n start = minYear;\n }\n if (end > maxYear) {\n end = maxYear;\n }\n return start + '-' + end;\n }\n function view(options) {\n var idx = 0, data, min = options.min, max = options.max, start = options.start, setter = options.setter, build = options.build, length = options.cells || 12, cellsPerRow = options.perRow || 4, content = options.content || cellTemplate, empty = options.empty || emptyCellTemplate, html = options.html || '
            ' + shortNames[idx] + '
            ';\n for (; idx < length; idx++) {\n if (idx > 0 && idx % cellsPerRow === 0) {\n html += '';\n }\n start = new DATE(start.getFullYear(), start.getMonth(), start.getDate(), 0, 0, 0);\n adjustDST(start, 0);\n data = build(start, idx, options.disableDates);\n html += isInRange(start, min, max) ? content(data) : empty(data);\n setter(start, 1);\n }\n return html + '
            ';\n }\n function compare(date1, date2, modifier) {\n var year1 = date1.getFullYear(), start = date2.getFullYear(), end = start, result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (year1 > end) {\n result = 1;\n } else if (year1 < start) {\n result = -1;\n }\n return result;\n }\n function getToday() {\n var today = new DATE();\n return new DATE(today.getFullYear(), today.getMonth(), today.getDate());\n }\n function restrictValue(value, min, max) {\n var today = getToday();\n if (value) {\n today = new DATE(+value);\n }\n if (min > today) {\n today = new DATE(+min);\n } else if (max < today) {\n today = new DATE(+max);\n }\n return today;\n }\n function isInRange(date, min, max) {\n return +date >= +min && +date <= +max;\n }\n function shiftArray(array, idx) {\n return array.slice(idx).concat(array.slice(0, idx));\n }\n function setDate(date, value, multiplier) {\n value = value instanceof DATE ? value.getFullYear() : date.getFullYear() + multiplier * value;\n date.setFullYear(value);\n }\n function mousetoggle(e) {\n var disabled = $(this).hasClass('k-state-disabled');\n if (!disabled) {\n $(this).toggleClass(HOVER, MOUSEENTER.indexOf(e.type) > -1 || e.type == FOCUS);\n }\n }\n function prevent(e) {\n e.preventDefault();\n }\n function getCalendarInfo(culture) {\n return getCulture(culture).calendars.standard;\n }\n function normalize(options) {\n var start = views[options.start], depth = views[options.depth], culture = getCulture(options.culture);\n options.format = extractFormat(options.format || culture.calendars.standard.patterns.d);\n if (isNaN(start)) {\n start = 0;\n options.start = MONTH;\n }\n if (depth === undefined || depth > start) {\n options.depth = MONTH;\n }\n if (!options.dates) {\n options.dates = [];\n }\n }\n function makeUnselectable(element) {\n if (isIE8) {\n element.find('*').attr('unselectable', 'on');\n }\n }\n function inArray(date, dates) {\n for (var i = 0, length = dates.length; i < length; i++) {\n if (date === +dates[i]) {\n return true;\n }\n }\n return false;\n }\n function isEqualDatePart(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() && value1.getMonth() === value2.getMonth() && value1.getDate() === value2.getDate();\n }\n return false;\n }\n function isEqualMonth(value1, value2) {\n if (value1) {\n return value1.getFullYear() === value2.getFullYear() && value1.getMonth() === value2.getMonth();\n }\n return false;\n }\n function getDisabledExpr(option) {\n if (kendo.isFunction(option)) {\n return option;\n }\n if ($.isArray(option)) {\n return createDisabledExpr(option);\n }\n return $.noop;\n }\n function convertDatesArray(dates) {\n var result = [];\n for (var i = 0; i < dates.length; i++) {\n result.push(dates[i].setHours(0, 0, 0, 0));\n }\n return result;\n }\n function createDisabledExpr(dates) {\n var body, callback, disabledDates = [], days = [\n 'su',\n 'mo',\n 'tu',\n 'we',\n 'th',\n 'fr',\n 'sa'\n ], searchExpression = 'if (found) {' + ' return true ' + '} else {' + 'return false' + '}';\n if (dates[0] instanceof DATE) {\n disabledDates = convertDatesArray(dates);\n body = 'var found = date && $.inArray(date.setHours(0, 0, 0, 0),[' + disabledDates + ']) > -1;' + searchExpression;\n } else {\n for (var i = 0; i < dates.length; i++) {\n var day = dates[i].slice(0, 2).toLowerCase();\n var index = $.inArray(day, days);\n if (index > -1) {\n disabledDates.push(index);\n }\n }\n body = 'var found = date && $.inArray(date.getDay(),[' + disabledDates + ']) > -1;' + searchExpression;\n }\n callback = new Function('date', body);\n return callback;\n }\n function isEqualDate(oldValue, newValue) {\n if (oldValue instanceof Date && newValue instanceof Date) {\n oldValue = oldValue.getTime();\n newValue = newValue.getTime();\n }\n return oldValue === newValue;\n }\n calendar.isEqualDatePart = isEqualDatePart;\n calendar.makeUnselectable = makeUnselectable;\n calendar.restrictValue = restrictValue;\n calendar.isInRange = isInRange;\n calendar.normalize = normalize;\n calendar.viewsEnum = views;\n calendar.disabled = getDisabledExpr;\n kendo.calendar = calendar;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.datepicker', [\n 'kendo.calendar',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'datepicker',\n name: 'DatePicker',\n category: 'web',\n description: 'The DatePicker widget allows the user to select a date from a calendar or by direct input.',\n depends: [\n 'calendar',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, parse = kendo.parseDate, keys = kendo.keys, template = kendo.template, activeElement = kendo._activeElement, DIV = '
            ', SPAN = '', ns = '.kendoDatePicker', CLICK = 'click' + ns, OPEN = 'open', CLOSE = 'close', CHANGE = 'change', DISABLED = 'disabled', READONLY = 'readonly', DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', HOVER = 'k-state-hover', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, MOUSEDOWN = 'mousedown' + ns, ID = 'id', MIN = 'min', MAX = 'max', MONTH = 'month', ARIA_DISABLED = 'aria-disabled', ARIA_EXPANDED = 'aria-expanded', ARIA_HIDDEN = 'aria-hidden', ARIA_READONLY = 'aria-readonly', calendar = kendo.calendar, isInRange = calendar.isInRange, restrictValue = calendar.restrictValue, isEqualDatePart = calendar.isEqualDatePart, extend = $.extend, proxy = $.proxy, DATE = Date;\n function normalize(options) {\n var parseFormats = options.parseFormats, format = options.format;\n calendar.normalize(options);\n parseFormats = $.isArray(parseFormats) ? parseFormats : [parseFormats];\n if (!parseFormats.length) {\n parseFormats.push('yyyy-MM-dd');\n }\n if ($.inArray(format, parseFormats) === -1) {\n parseFormats.splice(0, 0, options.format);\n }\n options.parseFormats = parseFormats;\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n var DateView = function (options) {\n var that = this, id, body = document.body, div = $(DIV).attr(ARIA_HIDDEN, 'true').addClass('k-calendar-container').appendTo(body);\n that.options = options = options || {};\n id = options.id;\n if (id) {\n id += '_dateview';\n div.attr(ID, id);\n that._dateViewID = id;\n }\n that.popup = new ui.Popup(div, extend(options.popup, options, {\n name: 'Popup',\n isRtl: kendo.support.isRtl(options.anchor)\n }));\n that.div = div;\n that.value(options.value);\n };\n DateView.prototype = {\n _calendar: function () {\n var that = this;\n var calendar = that.calendar;\n var options = that.options;\n var div;\n if (!calendar) {\n div = $(DIV).attr(ID, kendo.guid()).appendTo(that.popup.element).on(MOUSEDOWN, preventDefault).on(CLICK, 'td:has(.k-link)', proxy(that._click, that));\n that.calendar = calendar = new ui.Calendar(div);\n that._setOptions(options);\n kendo.calendar.makeUnselectable(calendar.element);\n calendar.navigate(that._value || that._current, options.start);\n that.value(that._value);\n }\n },\n _setOptions: function (options) {\n this.calendar.setOptions({\n focusOnNav: false,\n change: options.change,\n culture: options.culture,\n dates: options.dates,\n depth: options.depth,\n footer: options.footer,\n format: options.format,\n max: options.max,\n min: options.min,\n month: options.month,\n start: options.start,\n disableDates: options.disableDates\n });\n },\n setOptions: function (options) {\n var old = this.options;\n var disableDates = options.disableDates;\n if (disableDates) {\n options.disableDates = calendar.disabled(disableDates);\n }\n this.options = extend(old, options, {\n change: old.change,\n close: old.close,\n open: old.open\n });\n if (this.calendar) {\n this._setOptions(this.options);\n }\n },\n destroy: function () {\n this.popup.destroy();\n },\n open: function () {\n var that = this;\n that._calendar();\n that.popup.open();\n },\n close: function () {\n this.popup.close();\n },\n min: function (value) {\n this._option(MIN, value);\n },\n max: function (value) {\n this._option(MAX, value);\n },\n toggle: function () {\n var that = this;\n that[that.popup.visible() ? CLOSE : OPEN]();\n },\n move: function (e) {\n var that = this, key = e.keyCode, calendar = that.calendar, selectIsClicked = e.ctrlKey && key == keys.DOWN || key == keys.ENTER, handled = false;\n if (e.altKey) {\n if (key == keys.DOWN) {\n that.open();\n e.preventDefault();\n handled = true;\n } else if (key == keys.UP) {\n that.close();\n e.preventDefault();\n handled = true;\n }\n } else if (that.popup.visible()) {\n if (key == keys.ESC || selectIsClicked && calendar._cell.hasClass(SELECTED)) {\n that.close();\n e.preventDefault();\n return true;\n }\n that._current = calendar._move(e);\n handled = true;\n }\n return handled;\n },\n current: function (date) {\n this._current = date;\n this.calendar._focus(date);\n },\n value: function (value) {\n var that = this, calendar = that.calendar, options = that.options, disabledDate = options.disableDates;\n if (disabledDate && disabledDate(value)) {\n value = null;\n }\n that._value = value;\n that._current = new DATE(+restrictValue(value, options.min, options.max));\n if (calendar) {\n calendar.value(value);\n }\n },\n _click: function (e) {\n if (e.currentTarget.className.indexOf(SELECTED) !== -1) {\n this.close();\n }\n },\n _option: function (option, value) {\n var that = this;\n var calendar = that.calendar;\n that.options[option] = value;\n if (calendar) {\n calendar[option](value);\n }\n }\n };\n DateView.normalize = normalize;\n kendo.DateView = DateView;\n var DatePicker = Widget.extend({\n init: function (element, options) {\n var that = this, disabled, div;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.disableDates = kendo.calendar.disabled(options.disableDates);\n options.min = parse(element.attr('min')) || parse(options.min);\n options.max = parse(element.attr('max')) || parse(options.max);\n normalize(options);\n that._initialOptions = extend({}, options);\n that._wrapper();\n that.dateView = new DateView(extend({}, options, {\n id: element.attr(ID),\n anchor: that.wrapper,\n change: function () {\n that._change(this.value());\n that.close();\n },\n close: function (e) {\n if (that.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n element.attr(ARIA_EXPANDED, false);\n div.attr(ARIA_HIDDEN, true);\n }\n },\n open: function (e) {\n var options = that.options, date;\n if (that.trigger(OPEN)) {\n e.preventDefault();\n } else {\n if (that.element.val() !== that._oldText) {\n date = parse(element.val(), options.parseFormats, options.culture);\n that.dateView[date ? 'current' : 'value'](date);\n }\n element.attr(ARIA_EXPANDED, true);\n div.attr(ARIA_HIDDEN, false);\n that._updateARIA(date);\n }\n }\n }));\n div = that.dateView.div;\n that._icon();\n try {\n element[0].setAttribute('type', 'text');\n } catch (e) {\n element[0].type = 'text';\n }\n element.addClass('k-input').attr({\n role: 'combobox',\n 'aria-expanded': false,\n 'aria-owns': that.dateView._dateViewID\n });\n that._reset();\n that._template();\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that._old = that._update(options.value || that.element.val());\n that._oldText = element.val();\n kendo.notify(that);\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE\n ],\n options: {\n name: 'DatePicker',\n value: null,\n footer: '',\n format: '',\n culture: '',\n parseFormats: [],\n min: new Date(1900, 0, 1),\n max: new Date(2099, 11, 31),\n start: MONTH,\n depth: MONTH,\n animation: {},\n month: {},\n dates: [],\n ARIATemplate: 'Current focused date is #=kendo.toString(data.current, \"D\")#'\n },\n setOptions: function (options) {\n var that = this;\n var value = that._value;\n Widget.fn.setOptions.call(that, options);\n options = that.options;\n options.min = parse(options.min);\n options.max = parse(options.max);\n normalize(options);\n that.dateView.setOptions(options);\n if (value) {\n that.element.val(kendo.toString(value, options.format, options.culture));\n that._updateARIA(value);\n }\n },\n _editable: function (options) {\n var that = this, icon = that._dateIcon.off(ns), element = that.element.off(ns), wrapper = that._inputWrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n element.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusout' + ns, proxy(that._blur, that)).on('focus' + ns, function () {\n that._inputWrapper.addClass(FOCUSED);\n });\n icon.on(CLICK, proxy(that._click, that)).on(MOUSEDOWN, preventDefault);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that.dateView.destroy();\n that.element.off(ns);\n that._dateIcon.off(ns);\n that._inputWrapper.off(ns);\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n open: function () {\n this.dateView.open();\n },\n close: function () {\n this.dateView.close();\n },\n min: function (value) {\n return this._option(MIN, value);\n },\n max: function (value) {\n return this._option(MAX, value);\n },\n value: function (value) {\n var that = this;\n if (value === undefined) {\n return that._value;\n }\n that._old = that._update(value);\n if (that._old === null) {\n that.element.val('');\n }\n that._oldText = that.element.val();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _blur: function () {\n var that = this, value = that.element.val();\n that.close();\n if (value !== that._oldText) {\n that._change(value);\n }\n that._inputWrapper.removeClass(FOCUSED);\n },\n _click: function () {\n var that = this, element = that.element;\n that.dateView.toggle();\n if (!kendo.support.touch && element[0] !== activeElement()) {\n element.focus();\n }\n },\n _change: function (value) {\n var that = this, oldValue = that.element.val(), dateChanged;\n value = that._update(value);\n dateChanged = +that._old != +value;\n var valueUpdated = dateChanged && !that._typing;\n var textFormatted = oldValue !== that.element.val();\n if (valueUpdated || textFormatted) {\n that.element.trigger(CHANGE);\n }\n if (dateChanged) {\n that._old = value;\n that._oldText = that.element.val();\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _keydown: function (e) {\n var that = this, dateView = that.dateView, value = that.element.val(), handled = false;\n if (!dateView.popup.visible() && e.keyCode == keys.ENTER && value !== that._oldText) {\n that._change(value);\n } else {\n handled = dateView.move(e);\n that._updateARIA(dateView._current);\n if (!handled) {\n that._typing = true;\n }\n }\n },\n _icon: function () {\n var that = this, element = that.element, icon;\n icon = element.next('span.k-select');\n if (!icon[0]) {\n icon = $('select').insertAfter(element);\n }\n that._dateIcon = icon.attr({\n 'role': 'button',\n 'aria-controls': that.dateView._dateViewID\n });\n },\n _option: function (option, value) {\n var that = this, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = parse(value, options.parseFormats, options.culture);\n if (!value) {\n return;\n }\n options[option] = new DATE(+value);\n that.dateView[option](value);\n },\n _update: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max, current = that._value, date = parse(value, options.parseFormats, options.culture), isSameType = date === null && current === null || date instanceof Date && current instanceof Date, formattedValue;\n if (options.disableDates(date)) {\n date = null;\n if (!that._old) {\n value = null;\n }\n }\n if (+date === +current && isSameType) {\n formattedValue = kendo.toString(date, options.format, options.culture);\n if (formattedValue !== value) {\n that.element.val(date === null ? value : formattedValue);\n }\n return date;\n }\n if (date !== null && isEqualDatePart(date, min)) {\n date = restrictValue(date, min, max);\n } else if (!isInRange(date, min, max)) {\n date = null;\n }\n that._value = date;\n that.dateView.value(date);\n that.element.val(date ? kendo.toString(date, options.format, options.culture) : value);\n that._updateARIA(date);\n return date;\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper;\n wrapper = element.parents('.k-datepicker');\n if (!wrapper[0]) {\n wrapper = element.wrap(SPAN).parent().addClass('k-picker-wrap k-state-default');\n wrapper = wrapper.wrap(SPAN).parent();\n }\n wrapper[0].style.cssText = element[0].style.cssText;\n element.css({\n width: '100%',\n height: element[0].style.height\n });\n that.wrapper = wrapper.addClass('k-widget k-datepicker k-header').addClass(element[0].className);\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n that.value(element[0].defaultValue);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _template: function () {\n this._ariaTemplate = template(this.options.ARIATemplate);\n },\n _updateARIA: function (date) {\n var cell;\n var that = this;\n var calendar = that.dateView.calendar;\n that.element.removeAttr('aria-activedescendant');\n if (calendar) {\n cell = calendar._cell;\n cell.attr('aria-label', that._ariaTemplate({ current: date || calendar.current() }));\n that.element.attr('aria-activedescendant', cell.attr('id'));\n }\n }\n });\n ui.plugin(DatePicker);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.autocomplete', [\n 'kendo.list',\n 'kendo.mobile.scroller'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'autocomplete',\n name: 'AutoComplete',\n category: 'web',\n description: 'The AutoComplete widget provides suggestions depending on the typed text.It also allows multiple value entries.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, support = kendo.support, caret = kendo.caret, activeElement = kendo._activeElement, placeholderSupported = support.placeholder, ui = kendo.ui, List = ui.List, keys = kendo.keys, DataSource = kendo.data.DataSource, ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', CHANGE = 'change', DEFAULT = 'k-state-default', DISABLED = 'disabled', READONLY = 'readonly', FOCUSED = 'k-state-focused', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', HOVER = 'k-state-hover', ns = '.kendoAutoComplete', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, proxy = $.proxy;\n function indexOfWordAtCaret(caretIdx, text, separator) {\n return separator ? text.substring(0, caretIdx).split(separator).length - 1 : 0;\n }\n function wordAtCaret(caretIdx, text, separator) {\n return text.split(separator)[indexOfWordAtCaret(caretIdx, text, separator)];\n }\n function replaceWordAtCaret(caretIdx, text, word, separator) {\n var words = text.split(separator);\n words.splice(indexOfWordAtCaret(caretIdx, text, separator), 1, word);\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n return words.join(separator);\n }\n var AutoComplete = List.extend({\n init: function (element, options) {\n var that = this, wrapper, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n List.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n options.placeholder = options.placeholder || element.attr('placeholder');\n if (placeholderSupported) {\n element.attr('placeholder', options.placeholder);\n }\n that._wrapper();\n that._loader();\n that._dataSource();\n that._ignoreCase();\n element[0].type = 'text';\n wrapper = that.wrapper;\n that._popup();\n element.addClass('k-input').on('keydown' + ns, proxy(that._keydown, that)).on('keypress' + ns, proxy(that._keypress, that)).on('paste' + ns, proxy(that._search, that)).on('focus' + ns, function () {\n that._prev = that._accessor();\n that._oldText = that._prev;\n that._placeholder(false);\n wrapper.addClass(FOCUSED);\n }).on('focusout' + ns, function () {\n that._change();\n that._placeholder();\n wrapper.removeClass(FOCUSED);\n }).attr({\n autocomplete: 'off',\n role: 'textbox',\n 'aria-haspopup': true\n });\n that._enable();\n that._old = that._accessor();\n if (element[0].id) {\n element.attr('aria-owns', that.ul[0].id);\n }\n that._aria();\n that._placeholder();\n that._initList();\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that.listView.bind('click', function (e) {\n e.preventDefault();\n });\n that._resetFocusItemHandler = $.proxy(that._resetFocusItem, that);\n kendo.notify(that);\n },\n options: {\n name: 'AutoComplete',\n enabled: true,\n suggest: false,\n template: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n dataTextField: '',\n minLength: 1,\n delay: 200,\n height: 200,\n filter: 'startswith',\n ignoreCase: true,\n highlightFirst: false,\n separator: null,\n placeholder: '',\n animation: {},\n virtual: false,\n value: null\n },\n _dataSource: function () {\n var that = this;\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = DataSource.create(that.options.dataSource).bind('progress', that._progressHandler).bind('error', that._errorHandler);\n },\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._dataSource();\n this.listView.setDataSource(this.dataSource);\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria();\n },\n _listOptions: function (options) {\n var listOptions = List.fn._listOptions.call(this, $.extend(options, { skipUpdateOnBind: true }));\n listOptions.dataValueField = listOptions.dataTextField;\n listOptions.selectedItemChange = null;\n return listOptions;\n },\n _editable: function (options) {\n var that = this, element = that.element, wrapper = that.wrapper.off(ns), readonly = options.readonly, disable = options.disable;\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n element.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n element.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n close: function () {\n var that = this;\n var current = that.listView.focus();\n if (current) {\n current.removeClass(SELECTED);\n }\n that.popup.close();\n },\n destroy: function () {\n var that = this;\n that.element.off(ns);\n that.wrapper.off(ns);\n List.fn.destroy.call(that);\n },\n refresh: function () {\n this.listView.refresh();\n },\n select: function (li) {\n this._select(li);\n },\n search: function (word) {\n var that = this, options = that.options, ignoreCase = options.ignoreCase, separator = options.separator, length;\n word = word || that._accessor();\n clearTimeout(that._typingTimeout);\n if (separator) {\n word = wordAtCaret(caret(that.element)[0], word, separator);\n }\n length = word.length;\n if (!length || length >= options.minLength) {\n that._open = true;\n that._mute(function () {\n this.listView.value([]);\n });\n that._filterSource({\n value: ignoreCase ? word.toLowerCase() : word,\n operator: options.filter,\n field: options.dataTextField,\n ignoreCase: ignoreCase\n });\n }\n },\n suggest: function (word) {\n var that = this, key = that._last, value = that._accessor(), element = that.element[0], caretIdx = caret(element)[0], separator = that.options.separator, words = value.split(separator), wordIndex = indexOfWordAtCaret(caretIdx, value, separator), selectionEnd = caretIdx, idx;\n if (key == keys.BACKSPACE || key == keys.DELETE) {\n that._last = undefined;\n return;\n }\n word = word || '';\n if (typeof word !== 'string') {\n if (word[0]) {\n word = that.dataSource.view()[List.inArray(word[0], that.ul[0])];\n }\n word = word ? that._text(word) : '';\n }\n if (caretIdx <= 0) {\n caretIdx = value.toLowerCase().indexOf(word.toLowerCase()) + 1;\n }\n idx = value.substring(0, caretIdx).lastIndexOf(separator);\n idx = idx > -1 ? caretIdx - (idx + separator.length) : caretIdx;\n value = words[wordIndex].substring(0, idx);\n if (word) {\n word = word.toString();\n idx = word.toLowerCase().indexOf(value.toLowerCase());\n if (idx > -1) {\n word = word.substring(idx + value.length);\n selectionEnd = caretIdx + word.length;\n value += word;\n }\n if (separator && words[words.length - 1] !== '') {\n words.push('');\n }\n }\n words[wordIndex] = value;\n that._accessor(words.join(separator || ''));\n if (element === activeElement()) {\n caret(element, caretIdx, selectionEnd);\n }\n },\n value: function (value) {\n if (value !== undefined) {\n this.listView.value(value);\n this._accessor(value);\n this._old = this._accessor();\n this._oldText = this._accessor();\n } else {\n return this._accessor();\n }\n },\n _click: function (e) {\n var item = e.item;\n var element = this.element;\n e.preventDefault();\n this._active = true;\n if (this.trigger('select', { item: item })) {\n this.close();\n return;\n }\n this._oldText = element.val();\n this._select(item);\n this._blur();\n caret(element, element.val().length);\n },\n _resetFocusItem: function () {\n var index = this.options.highlightFirst ? 0 : -1;\n if (this.options.virtual) {\n this.listView.scrollTo(0);\n }\n this.listView.focus(index);\n },\n _listBound: function () {\n var that = this;\n var popup = that.popup;\n var options = that.options;\n var data = that.dataSource.flatView();\n var length = data.length;\n var isActive = that.element[0] === activeElement();\n var action;\n that._angularItems('compile');\n that._resizePopup();\n popup.position();\n if (length) {\n if (options.suggest && isActive) {\n that.suggest(data[0]);\n }\n }\n if (that._open) {\n that._open = false;\n action = length ? 'open' : 'close';\n if (that._typingTimeout && !isActive) {\n action = 'close';\n }\n if (length) {\n that._resetFocusItem();\n if (options.virtual) {\n that.popup.unbind('activate', that._resetFocusItemHandler).one('activate', that._resetFocusItemHandler);\n }\n }\n popup[action]();\n that._typingTimeout = undefined;\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _mute: function (callback) {\n this._muted = true;\n callback.call(this);\n this._muted = false;\n },\n _listChange: function () {\n var isActive = this._active || this.element[0] === activeElement();\n if (isActive && !this._muted) {\n this._selectValue(this.listView.selectedDataItems()[0]);\n }\n },\n _selectValue: function (dataItem) {\n var separator = this.options.separator;\n var text = '';\n if (dataItem) {\n text = this._text(dataItem);\n }\n if (text === null) {\n text = '';\n }\n if (separator) {\n text = replaceWordAtCaret(caret(this.element)[0], this._accessor(), text, separator);\n }\n this._prev = text;\n this._accessor(text);\n this._placeholder();\n },\n _change: function () {\n var that = this;\n var value = that.value();\n var trigger = value !== List.unifyType(that._old, typeof value);\n var valueUpdated = trigger && !that._typing;\n var itemSelected = that._oldText !== value;\n if (valueUpdated || itemSelected) {\n that.element.trigger(CHANGE);\n }\n if (trigger) {\n that._old = value;\n that.trigger(CHANGE);\n }\n that.typing = false;\n },\n _accessor: function (value) {\n var that = this, element = that.element[0];\n if (value !== undefined) {\n element.value = value === null ? '' : value;\n that._placeholder();\n } else {\n value = element.value;\n if (element.className.indexOf('k-readonly') > -1) {\n if (value === that.options.placeholder) {\n return '';\n } else {\n return value;\n }\n }\n return value;\n }\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var visible = that.popup.visible();\n var current = this.listView.focus();\n that._last = key;\n if (key === keys.DOWN) {\n if (visible) {\n this._move(current ? 'focusNext' : 'focusFirst');\n }\n e.preventDefault();\n } else if (key === keys.UP) {\n if (visible) {\n this._move(current ? 'focusPrev' : 'focusLast');\n }\n e.preventDefault();\n } else if (key === keys.ENTER || key === keys.TAB) {\n if (key === keys.ENTER && visible) {\n e.preventDefault();\n }\n if (visible && current) {\n if (that.trigger('select', { item: current })) {\n return;\n }\n this._select(current);\n }\n this._blur();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n }\n that.close();\n } else {\n that._search();\n }\n },\n _keypress: function () {\n this._oldText = this.element.val();\n this._typing = true;\n },\n _move: function (action) {\n this.listView[action]();\n if (this.options.suggest) {\n this.suggest(this.listView.focus());\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._loading.hide();\n that.element.attr('aria-busy', false);\n that._busy = null;\n },\n _showBusy: function () {\n var that = this;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(function () {\n that.element.attr('aria-busy', true);\n that._loading.show();\n }, 100);\n },\n _placeholder: function (show) {\n if (placeholderSupported) {\n return;\n }\n var that = this, element = that.element, placeholder = that.options.placeholder, value;\n if (placeholder) {\n value = element.val();\n if (show === undefined) {\n show = !value;\n }\n if (!show) {\n if (value !== placeholder) {\n placeholder = value;\n } else {\n placeholder = '';\n }\n }\n if (value === that._old && !show) {\n return;\n }\n element.toggleClass('k-readonly', show).val(placeholder);\n if (!placeholder && element[0] === document.activeElement) {\n caret(element[0], 0, 0);\n }\n }\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n if (that._prev !== that._accessor()) {\n that._prev = that._accessor();\n that.search();\n }\n }, that.options.delay);\n },\n _select: function (candidate) {\n this._active = true;\n this.listView.select(candidate);\n this._active = false;\n },\n _loader: function () {\n this._loading = $('').insertAfter(this.element);\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('').parent();\n }\n wrapper.attr('tabindex', -1);\n wrapper.attr('role', 'presentation');\n wrapper[0].style.cssText = DOMelement.style.cssText;\n element.css({\n width: '100%',\n height: DOMelement.style.height\n });\n that._focused = that.element;\n that.wrapper = wrapper.addClass('k-widget k-autocomplete k-header').addClass(DOMelement.className);\n }\n });\n ui.plugin(AutoComplete);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dropdownlist', [\n 'kendo.list',\n 'kendo.mobile.scroller'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dropdownlist',\n name: 'DropDownList',\n category: 'web',\n description: 'The DropDownList widget displays a list of values and allows the selection of a single value from the list.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, Select = ui.Select, support = kendo.support, activeElement = kendo._activeElement, ObservableObject = kendo.data.ObservableObject, keys = kendo.keys, ns = '.kendoDropDownList', DISABLED = 'disabled', READONLY = 'readonly', CHANGE = 'change', FOCUSED = 'k-state-focused', DEFAULT = 'k-state-default', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, TABINDEX = 'tabindex', STATE_FILTER = 'filter', STATE_ACCEPT = 'accept', MSG_INVALID_OPTION_LABEL = 'The `optionLabel` option is not valid due to missing fields. Define a custom optionLabel as shown here http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#configuration-optionLabel', proxy = $.proxy;\n var DropDownList = Select.extend({\n init: function (element, options) {\n var that = this;\n var index = options && options.index;\n var optionLabel, text, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n Select.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focus' + ns, proxy(that._focusHandler, that));\n that._focusInputHandler = $.proxy(that._focusInput, that);\n that.optionLabel = $();\n that._optionLabel();\n that._inputTemplate();\n that._reset();\n that._prev = '';\n that._word = '';\n that._wrapper();\n that._tabindex();\n that.wrapper.data(TABINDEX, that.wrapper.attr(TABINDEX));\n that._span();\n that._popup();\n that._mobile();\n that._dataSource();\n that._ignoreCase();\n that._filterHeader();\n that._aria();\n that._enable();\n that._oldIndex = that.selectedIndex = -1;\n if (index !== undefined) {\n options.index = index;\n }\n that._initialIndex = options.index;\n that._initList();\n that._cascade();\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (that.selectedIndex === -1) {\n text = options.text || '';\n if (!text) {\n optionLabel = options.optionLabel;\n if (optionLabel && options.index === 0) {\n text = optionLabel;\n } else if (that._isSelect) {\n text = element.children(':selected').text();\n }\n }\n that._textAccessor(text);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n that.listView.bind('click', function (e) {\n e.preventDefault();\n });\n kendo.notify(that);\n },\n options: {\n name: 'DropDownList',\n enabled: true,\n autoBind: true,\n index: 0,\n text: null,\n value: null,\n delay: 500,\n height: 200,\n dataTextField: '',\n dataValueField: '',\n optionLabel: '',\n cascadeFrom: '',\n cascadeFromField: '',\n ignoreCase: true,\n animation: {},\n filter: 'none',\n minLength: 1,\n virtual: false,\n template: null,\n valueTemplate: null,\n optionLabelTemplate: null,\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#'\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound',\n 'cascade',\n 'set'\n ],\n setOptions: function (options) {\n Select.fn.setOptions.call(this, options);\n this.listView.setOptions(this._listOptions(options));\n this._optionLabel();\n this._inputTemplate();\n this._accessors();\n this._filterHeader();\n this._enable();\n this._aria();\n if (!this.value() && this.hasOptionLabel()) {\n this.select(0);\n }\n },\n destroy: function () {\n var that = this;\n Select.fn.destroy.call(that);\n that.wrapper.off(ns);\n that.element.off(ns);\n that._inputWrapper.off(ns);\n that._arrow.off();\n that._arrow = null;\n that.optionLabel.off();\n },\n open: function () {\n var that = this;\n if (that.popup.visible()) {\n return;\n }\n if (!that.listView.bound() || that._state === STATE_ACCEPT) {\n that._open = true;\n that._state = 'rebind';\n if (that.filterInput) {\n that.filterInput.val('');\n that._prev = '';\n }\n that._filterSource();\n } else if (that._allowOpening()) {\n that.popup.one('activate', that._focusInputHandler);\n that.popup.open();\n that._focusItem();\n }\n },\n _focusInput: function () {\n this._focusElement(this.filterInput);\n },\n _allowOpening: function () {\n return this.hasOptionLabel() || this.filterInput || this.dataSource.view().length;\n },\n toggle: function (toggle) {\n this._toggle(toggle, true);\n },\n current: function (candidate) {\n var current;\n if (candidate === undefined) {\n current = this.listView.focus();\n if (!current && this.selectedIndex === 0 && this.hasOptionLabel()) {\n return this.optionLabel;\n }\n return current;\n }\n this._focus(candidate);\n },\n dataItem: function (index) {\n var that = this;\n var dataItem = null;\n if (index === null) {\n return index;\n }\n if (index === undefined) {\n dataItem = that.listView.selectedDataItems()[0];\n } else {\n if (typeof index !== 'number') {\n if (that.options.virtual) {\n return that.dataSource.getByUid($(index).data('uid'));\n }\n if (index.hasClass('k-list-optionlabel')) {\n index = -1;\n } else {\n index = $(that.items()).index(index);\n }\n } else if (that.hasOptionLabel()) {\n index -= 1;\n }\n dataItem = that.dataSource.flatView()[index];\n }\n if (!dataItem) {\n dataItem = that._optionLabelDataItem();\n }\n return dataItem;\n },\n refresh: function () {\n this.listView.refresh();\n },\n text: function (text) {\n var that = this;\n var dataItem, loweredText;\n var ignoreCase = that.options.ignoreCase;\n text = text === null ? '' : text;\n if (text !== undefined) {\n if (typeof text === 'string') {\n loweredText = ignoreCase ? text.toLowerCase() : text;\n that._select(function (data) {\n data = that._text(data);\n if (ignoreCase) {\n data = (data + '').toLowerCase();\n }\n return data === loweredText;\n });\n dataItem = that.dataItem();\n if (dataItem) {\n text = dataItem;\n }\n }\n that._textAccessor(text);\n } else {\n return that._textAccessor();\n }\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var dataSource = that.dataSource;\n if (value === undefined) {\n value = that._accessor() || that.listView.value()[0];\n return value === undefined || value === null ? '' : value;\n }\n if (value || !that.hasOptionLabel()) {\n that._initialIndex = null;\n }\n this.trigger('set', { value: value });\n if (that._request && that.options.cascadeFrom && that.listView.bound()) {\n if (that._valueSetter) {\n dataSource.unbind(CHANGE, that._valueSetter);\n }\n that._valueSetter = proxy(function () {\n that.value(value);\n }, that);\n dataSource.one(CHANGE, that._valueSetter);\n return;\n }\n if (that._isFilterEnabled() && listView.bound() && listView.isFiltered()) {\n that._clearFilter();\n } else {\n that._fetchData();\n }\n listView.value(value).done(function () {\n if (that.selectedIndex === -1 && that.text()) {\n that.text('');\n that._accessor('', -1);\n }\n that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n });\n },\n hasOptionLabel: function () {\n return this.optionLabel && !!this.optionLabel[0];\n },\n _optionLabel: function () {\n var that = this;\n var options = that.options;\n var optionLabel = options.optionLabel;\n var template = options.optionLabelTemplate;\n if (!optionLabel) {\n that.optionLabel.off().remove();\n that.optionLabel = $();\n return;\n }\n if (!template) {\n template = '#:';\n if (typeof optionLabel === 'string') {\n template += 'data';\n } else {\n template += kendo.expr(options.dataTextField, 'data');\n }\n template += '#';\n }\n if (typeof template !== 'function') {\n template = kendo.template(template);\n }\n that.optionLabelTemplate = template;\n if (!that.hasOptionLabel()) {\n that.optionLabel = $('
            ').prependTo(that.list);\n }\n that.optionLabel.html(template(optionLabel)).off().click(proxy(that._click, that)).on(HOVEREVENTS, that._toggleHover);\n that.angular('compile', function () {\n return {\n elements: that.optionLabel,\n data: [{ dataItem: that._optionLabelDataItem() }]\n };\n });\n },\n _optionLabelText: function () {\n var optionLabel = this.options.optionLabel;\n return typeof optionLabel === 'string' ? optionLabel : this._text(optionLabel);\n },\n _optionLabelDataItem: function () {\n var that = this;\n var optionLabel = that.options.optionLabel;\n if (that.hasOptionLabel()) {\n return $.isPlainObject(optionLabel) ? new ObservableObject(optionLabel) : that._assignInstance(that._optionLabelText(), '');\n }\n return null;\n },\n _buildOptions: function (data) {\n var that = this;\n if (!that._isSelect) {\n return;\n }\n var value = that.listView.value()[0];\n var optionLabel = that._optionLabelDataItem();\n if (value === undefined || value === null) {\n value = '';\n }\n if (optionLabel) {\n optionLabel = '';\n }\n that._options(data, optionLabel, value);\n if (value !== List.unifyType(that._accessor(), typeof value)) {\n that._customOption = null;\n that._custom(value);\n }\n },\n _listBound: function () {\n var that = this;\n var initialIndex = that._initialIndex;\n var filtered = that._state === STATE_FILTER;\n var data = that.dataSource.flatView();\n var dataItem;\n that._angularItems('compile');\n that._presetValue = false;\n that._resizePopup(true);\n that.popup.position();\n that._buildOptions(data);\n that._makeUnselectable();\n if (!filtered) {\n if (that._open) {\n that.toggle(that._allowOpening());\n }\n that._open = false;\n if (!that._fetch) {\n if (data.length) {\n if (!that.listView.value().length && initialIndex > -1 && initialIndex !== null) {\n that.select(initialIndex);\n }\n that._initialIndex = null;\n dataItem = that.listView.selectedDataItems()[0];\n if (dataItem && that.text() !== that._text(dataItem)) {\n that._selectValue(dataItem);\n }\n } else if (that._textAccessor() !== that._optionLabelText()) {\n that.listView.value('');\n that._selectValue(null);\n that._oldIndex = that.selectedIndex;\n }\n }\n }\n that._hideBusy();\n that.trigger('dataBound');\n },\n _listChange: function () {\n this._selectValue(this.listView.selectedDataItems()[0]);\n if (this._presetValue || this._old && this._oldIndex === -1) {\n this._oldIndex = this.selectedIndex;\n }\n },\n _focusHandler: function () {\n this.wrapper.focus();\n },\n _focusinHandler: function () {\n this._inputWrapper.addClass(FOCUSED);\n this._prevent = false;\n },\n _focusoutHandler: function () {\n var that = this;\n var filtered = that._state === STATE_FILTER;\n var isIFrame = window.self !== window.top;\n var focusedItem = that._focus();\n if (!that._prevent) {\n clearTimeout(that._typingTimeout);\n if (filtered && focusedItem && !that.trigger('select', { item: focusedItem })) {\n that._select(focusedItem, !that.dataSource.view().length);\n }\n if (support.mobileOS.ios && isIFrame) {\n that._change();\n } else {\n that._blur();\n }\n that._inputWrapper.removeClass(FOCUSED);\n that._prevent = true;\n that._open = false;\n that.element.blur();\n }\n },\n _wrapperMousedown: function () {\n this._prevent = !!this.filterInput;\n },\n _wrapperClick: function (e) {\n e.preventDefault();\n this.popup.unbind('activate', this._focusInputHandler);\n this._focused = this.wrapper;\n this._toggle();\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var disable = options.disable;\n var readonly = options.readonly;\n var wrapper = that.wrapper.add(that.filterInput).off(ns);\n var dropDownWrapper = that._inputWrapper.off(HOVEREVENTS);\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n dropDownWrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n wrapper.attr(TABINDEX, wrapper.data(TABINDEX)).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that)).on('mousedown' + ns, proxy(that._wrapperMousedown, that));\n that.wrapper.on('click' + ns, proxy(that._wrapperClick, that));\n if (!that.filterInput) {\n wrapper.on('keypress' + ns, proxy(that._keypress, that));\n }\n } else if (disable) {\n wrapper.removeAttr(TABINDEX);\n dropDownWrapper.addClass(STATEDISABLED).removeClass(DEFAULT);\n } else {\n dropDownWrapper.addClass(DEFAULT).removeClass(STATEDISABLED);\n wrapper.on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that));\n }\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var altKey = e.altKey;\n var isInputActive;\n var handled;\n var isPopupVisible = that.popup.visible();\n if (that.filterInput) {\n isInputActive = that.filterInput[0] === activeElement();\n }\n if (key === keys.LEFT) {\n key = keys.UP;\n handled = true;\n } else if (key === keys.RIGHT) {\n key = keys.DOWN;\n handled = true;\n }\n if (handled && isInputActive) {\n return;\n }\n e.keyCode = key;\n if (altKey && key === keys.UP || key === keys.ESC) {\n that._focusElement(that.wrapper);\n }\n if (key === keys.ENTER && that._typingTimeout && that.filterInput && isPopupVisible) {\n e.preventDefault();\n return;\n }\n handled = that._move(e);\n if (handled) {\n return;\n }\n if (!isPopupVisible || !that.filterInput) {\n if (key === keys.HOME) {\n handled = true;\n that._firstItem();\n } else if (key === keys.END) {\n handled = true;\n that._lastItem();\n }\n if (handled) {\n that._select(that._focus());\n e.preventDefault();\n }\n }\n if (!altKey && !handled && that.filterInput) {\n that._search();\n }\n },\n _matchText: function (text, word) {\n var ignoreCase = this.options.ignoreCase;\n if (text === undefined || text === null) {\n return false;\n }\n text = text + '';\n if (ignoreCase) {\n text = text.toLowerCase();\n }\n return text.indexOf(word) === 0;\n },\n _shuffleData: function (data, splitIndex) {\n var optionDataItem = this._optionLabelDataItem();\n if (optionDataItem) {\n data = [optionDataItem].concat(data);\n }\n return data.slice(splitIndex).concat(data.slice(0, splitIndex));\n },\n _selectNext: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var dataLength = data.length + (that.hasOptionLabel() ? 1 : 0);\n var isInLoop = sameCharsOnly(that._word, that._last);\n var startIndex = that.selectedIndex;\n var oldFocusedItem;\n var text;\n if (startIndex === -1) {\n startIndex = 0;\n } else {\n startIndex += isInLoop ? 1 : 0;\n startIndex = normalizeIndex(startIndex, dataLength);\n }\n data = data.toJSON ? data.toJSON() : data.slice();\n data = that._shuffleData(data, startIndex);\n for (var idx = 0; idx < dataLength; idx++) {\n text = that._text(data[idx]);\n if (isInLoop && that._matchText(text, that._last)) {\n break;\n } else if (that._matchText(text, that._word)) {\n break;\n }\n }\n if (idx !== dataLength) {\n oldFocusedItem = that._focus();\n that._select(normalizeIndex(startIndex + idx, dataLength));\n if (that.trigger('select', { item: that._focus() })) {\n that._select(oldFocusedItem);\n }\n if (!that.popup.visible()) {\n that._change();\n }\n }\n },\n _keypress: function (e) {\n var that = this;\n if (e.which === 0 || e.keyCode === kendo.keys.ENTER) {\n return;\n }\n var character = String.fromCharCode(e.charCode || e.keyCode);\n if (that.options.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === ' ') {\n e.preventDefault();\n }\n that._word += character;\n that._last = character;\n that._search();\n },\n _popupOpen: function () {\n var popup = this.popup;\n popup.wrapper = kendo.wrap(popup.element);\n if (popup.element.closest('.km-root')[0]) {\n popup.wrapper.addClass('km-popup km-widget');\n this.wrapper.addClass('km-widget');\n }\n },\n _popup: function () {\n Select.fn._popup.call(this);\n this.popup.one('open', proxy(this._popupOpen, this));\n },\n _click: function (e) {\n var item = e.item || $(e.currentTarget);\n e.preventDefault();\n if (this.trigger('select', { item: item })) {\n this.close();\n return;\n }\n this._userTriggered = true;\n this._select(item);\n this._focusElement(this.wrapper);\n this._blur();\n },\n _focusElement: function (element) {\n var active = activeElement();\n var wrapper = this.wrapper;\n var filterInput = this.filterInput;\n var compareElement = element === filterInput ? wrapper : filterInput;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n if (filterInput && filterInput[0] === element[0] && touchEnabled) {\n return;\n }\n if (filterInput && compareElement[0] === active) {\n this._prevent = true;\n this._focused = element.focus();\n }\n },\n _filter: function (word) {\n if (word) {\n var that = this;\n var ignoreCase = that.options.ignoreCase;\n if (ignoreCase) {\n word = word.toLowerCase();\n }\n that._select(function (dataItem) {\n return that._matchText(that._text(dataItem), word);\n });\n }\n },\n _search: function () {\n var that = this;\n var dataSource = that.dataSource;\n clearTimeout(that._typingTimeout);\n if (that._isFilterEnabled()) {\n that._typingTimeout = setTimeout(function () {\n var value = that.filterInput.val();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n }\n that._typingTimeout = null;\n }, that.options.delay);\n } else {\n that._typingTimeout = setTimeout(function () {\n that._word = '';\n }, that.options.delay);\n if (!that.listView.bound()) {\n dataSource.fetch().done(function () {\n that._selectNext();\n });\n return;\n }\n that._selectNext();\n }\n },\n _get: function (candidate) {\n var data, found, idx;\n var isFunction = typeof candidate === 'function';\n var jQueryCandidate = !isFunction ? $(candidate) : $();\n if (this.hasOptionLabel()) {\n if (typeof candidate === 'number') {\n if (candidate > -1) {\n candidate -= 1;\n }\n } else if (jQueryCandidate.hasClass('k-list-optionlabel')) {\n candidate = -1;\n }\n }\n if (isFunction) {\n data = this.dataSource.flatView();\n for (idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n candidate = idx;\n found = true;\n break;\n }\n }\n if (!found) {\n candidate = -1;\n }\n }\n return candidate;\n },\n _firstItem: function () {\n if (this.hasOptionLabel()) {\n this._focus(this.optionLabel);\n } else {\n this.listView.focusFirst();\n }\n },\n _lastItem: function () {\n this._resetOptionLabel();\n this.listView.focusLast();\n },\n _nextItem: function () {\n if (this.optionLabel.hasClass('k-state-focused')) {\n this._resetOptionLabel();\n this.listView.focusFirst();\n } else {\n this.listView.focusNext();\n }\n },\n _prevItem: function () {\n if (this.optionLabel.hasClass('k-state-focused')) {\n return;\n }\n this.listView.focusPrev();\n if (!this.listView.focus()) {\n this._focus(this.optionLabel);\n }\n },\n _focusItem: function () {\n var listView = this.listView;\n var focusedItem = listView.focus();\n var index = listView.select();\n index = index[index.length - 1];\n if (index === undefined && this.options.highlightFirst && !focusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else {\n if (this.options.optionLabel) {\n this._focus(this.optionLabel);\n this._select(this.optionLabel);\n } else {\n listView.scrollToIndex(0);\n }\n }\n },\n _resetOptionLabel: function (additionalClass) {\n this.optionLabel.removeClass('k-state-focused' + (additionalClass || '')).removeAttr('id');\n },\n _focus: function (candidate) {\n var listView = this.listView;\n var optionLabel = this.optionLabel;\n if (candidate === undefined) {\n candidate = listView.focus();\n if (!candidate && optionLabel.hasClass('k-state-focused')) {\n candidate = optionLabel;\n }\n return candidate;\n }\n this._resetOptionLabel();\n candidate = this._get(candidate);\n listView.focus(candidate);\n if (candidate === -1) {\n optionLabel.addClass('k-state-focused').attr('id', listView._optionID);\n this._focused.add(this.filterInput).removeAttr('aria-activedescendant').attr('aria-activedescendant', listView._optionID);\n }\n },\n _select: function (candidate, keepState) {\n var that = this;\n candidate = that._get(candidate);\n that.listView.select(candidate);\n if (!keepState && that._state === STATE_FILTER) {\n that._state = STATE_ACCEPT;\n }\n if (candidate === -1) {\n that._selectValue(null);\n }\n },\n _selectValue: function (dataItem) {\n var that = this;\n var optionLabel = that.options.optionLabel;\n var idx = that.listView.select();\n var value = '';\n var text = '';\n idx = idx[idx.length - 1];\n if (idx === undefined) {\n idx = -1;\n }\n this._resetOptionLabel(' k-state-selected');\n if (dataItem) {\n text = dataItem;\n value = that._dataValue(dataItem);\n if (optionLabel) {\n idx += 1;\n }\n } else if (optionLabel) {\n that._focus(that.optionLabel.addClass('k-state-selected'));\n text = that._optionLabelText();\n if (typeof optionLabel === 'string') {\n value = '';\n } else {\n value = that._value(optionLabel);\n }\n idx = 0;\n }\n that.selectedIndex = idx;\n if (value === null) {\n value = '';\n }\n that._textAccessor(text);\n that._accessor(value, idx);\n that._triggerCascade();\n },\n _mobile: function () {\n var that = this, popup = that.popup, mobileOS = support.mobileOS, root = popup.element.parents('.km-root').eq(0);\n if (root.length && mobileOS) {\n popup.options.animation.open.effects = mobileOS.android || mobileOS.meego ? 'fadeIn' : mobileOS.ios || mobileOS.wp ? 'slideIn:up' : popup.options.animation.open.effects;\n }\n },\n _filterHeader: function () {\n var icon;\n if (this.filterInput) {\n this.filterInput.off(ns).parent().remove();\n this.filterInput = null;\n }\n if (this._isFilterEnabled()) {\n icon = 'select';\n this.filterInput = $('').attr({\n placeholder: this.element.attr('placeholder'),\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n this.list.prepend($('').append(this.filterInput.add(icon)));\n }\n },\n _span: function () {\n var that = this, wrapper = that.wrapper, SELECTOR = 'span.k-input', span;\n span = wrapper.find(SELECTOR);\n if (!span[0]) {\n wrapper.append(' select').append(that.element);\n span = wrapper.find(SELECTOR);\n }\n that.span = span;\n that._inputWrapper = $(wrapper[0].firstChild);\n that._arrow = wrapper.find('.k-icon');\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('').parent();\n wrapper[0].style.cssText = DOMelement.style.cssText;\n wrapper[0].title = DOMelement.title;\n }\n element.hide();\n that._focused = that.wrapper = wrapper.addClass('k-widget k-dropdown k-header').addClass(DOMelement.className).css('display', '').attr({\n accesskey: element.attr('accesskey'),\n unselectable: 'on',\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n },\n _clearSelection: function (parent) {\n this.select(parent.value() ? 0 : -1);\n },\n _inputTemplate: function () {\n var that = this, template = that.options.valueTemplate;\n if (!template) {\n template = $.proxy(kendo.template('#:this._text(data)#', { useWithBlock: false }), that);\n } else {\n template = kendo.template(template);\n }\n that.valueTemplate = template;\n if (that.hasOptionLabel() && !that.options.optionLabelTemplate) {\n try {\n that.valueTemplate(that._optionLabelDataItem());\n } catch (e) {\n throw new Error(MSG_INVALID_OPTION_LABEL);\n }\n }\n },\n _textAccessor: function (text) {\n var dataItem = null;\n var template = this.valueTemplate;\n var options = this.options;\n var optionLabel = options.optionLabel;\n var span = this.span;\n if (text !== undefined) {\n if ($.isPlainObject(text) || text instanceof ObservableObject) {\n dataItem = text;\n } else if (optionLabel && this._optionLabelText() === text) {\n dataItem = optionLabel;\n template = this.optionLabelTemplate;\n }\n if (!dataItem) {\n dataItem = this._assignInstance(text, this._accessor());\n }\n var getElements = function () {\n return {\n elements: span.get(),\n data: [{ dataItem: dataItem }]\n };\n };\n this.angular('cleanup', getElements);\n try {\n span.html(template(dataItem));\n } catch (e) {\n span.html('');\n }\n this.angular('compile', getElements);\n } else {\n return span.text();\n }\n },\n _preselect: function (value, text) {\n if (!value && !text) {\n text = this._optionLabelText();\n }\n this._accessor(value);\n this._textAccessor(text);\n this._old = this._accessor();\n this._oldIndex = this.selectedIndex;\n this.listView.setValue(value);\n this._initialIndex = null;\n this._presetValue = true;\n },\n _assignInstance: function (text, value) {\n var dataTextField = this.options.dataTextField;\n var dataItem = {};\n if (dataTextField) {\n assign(dataItem, dataTextField.split('.'), text);\n assign(dataItem, this.options.dataValueField.split('.'), value);\n dataItem = new ObservableObject(dataItem);\n } else {\n dataItem = text;\n }\n return dataItem;\n }\n });\n function assign(instance, fields, value) {\n var idx = 0, lastIndex = fields.length - 1, field;\n for (; idx < lastIndex; ++idx) {\n field = fields[idx];\n if (!(field in instance)) {\n instance[field] = {};\n }\n instance = instance[field];\n }\n instance[fields[lastIndex]] = value;\n }\n function normalizeIndex(index, length) {\n if (index >= length) {\n index -= length;\n }\n return index;\n }\n function sameCharsOnly(word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n }\n ui.plugin(DropDownList);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.combobox', [\n 'kendo.list',\n 'kendo.mobile.scroller'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'combobox',\n name: 'ComboBox',\n category: 'web',\n description: 'The ComboBox widget allows the selection from pre-defined values or entering a new value.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, Select = ui.Select, caret = kendo.caret, support = kendo.support, placeholderSupported = support.placeholder, activeElement = kendo._activeElement, keys = kendo.keys, ns = '.kendoComboBox', CLICK = 'click' + ns, MOUSEDOWN = 'mousedown' + ns, DISABLED = 'disabled', READONLY = 'readonly', CHANGE = 'change', DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', STATE_FILTER = 'filter', STATE_ACCEPT = 'accept', STATE_REBIND = 'rebind', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, proxy = $.proxy;\n var ComboBox = Select.extend({\n init: function (element, options) {\n var that = this, text, disabled;\n that.ns = ns;\n options = $.isArray(options) ? { dataSource: options } : options;\n Select.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focus' + ns, proxy(that._focusHandler, that));\n options.placeholder = options.placeholder || element.attr('placeholder');\n that._reset();\n that._wrapper();\n that._input();\n that._tabindex(that.input);\n that._popup();\n that._dataSource();\n that._ignoreCase();\n that._enable();\n that._oldIndex = that.selectedIndex = -1;\n that._aria();\n that._initialIndex = options.index;\n that._initList();\n that._cascade();\n if (options.autoBind) {\n that._filterSource();\n } else {\n text = options.text;\n if (!text && that._isSelect) {\n text = element.children(':selected').text();\n }\n if (text) {\n that._setText(text);\n }\n }\n if (!text) {\n that._placeholder();\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n kendo.notify(that);\n },\n options: {\n name: 'ComboBox',\n enabled: true,\n index: -1,\n text: null,\n value: null,\n autoBind: true,\n delay: 200,\n dataTextField: '',\n dataValueField: '',\n minLength: 0,\n height: 200,\n highlightFirst: true,\n filter: 'none',\n placeholder: '',\n suggest: false,\n cascadeFrom: '',\n cascadeFromField: '',\n ignoreCase: true,\n animation: {},\n virtual: false,\n template: null,\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#'\n },\n events: [\n 'open',\n 'close',\n CHANGE,\n 'select',\n 'filtering',\n 'dataBinding',\n 'dataBound',\n 'cascade',\n 'set'\n ],\n setOptions: function (options) {\n Select.fn.setOptions.call(this, options);\n this.listView.setOptions(options);\n this._accessors();\n this._aria();\n },\n destroy: function () {\n var that = this;\n that.input.off(ns);\n that.element.off(ns);\n that._inputWrapper.off(ns);\n that._arrow.parent().off(CLICK + ' ' + MOUSEDOWN);\n Select.fn.destroy.call(that);\n },\n _focusHandler: function () {\n this.input.focus();\n },\n _arrowClick: function () {\n this._toggle();\n },\n _inputFocus: function () {\n this._inputWrapper.addClass(FOCUSED);\n this._placeholder(false);\n },\n _inputFocusout: function () {\n var that = this;\n var value = that.value();\n that._inputWrapper.removeClass(FOCUSED);\n clearTimeout(that._typingTimeout);\n that._typingTimeout = null;\n that.text(that.text());\n if (value !== that.value() && that.trigger('select', { item: that._focus() })) {\n that.value(value);\n return;\n }\n that._placeholder();\n that._blur();\n that.element.blur();\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that._inputWrapper.off(ns), input = that.element.add(that.input.off(ns)), arrow = that._arrow.parent().off(CLICK + ' ' + MOUSEDOWN);\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n arrow.on(CLICK, proxy(that._arrowClick, that)).on(MOUSEDOWN, function (e) {\n e.preventDefault();\n });\n that.input.on('keydown' + ns, proxy(that._keydown, that)).on('focus' + ns, proxy(that._inputFocus, that)).on('focusout' + ns, proxy(that._inputFocusout, that));\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n open: function () {\n var that = this;\n var state = that._state;\n if (that.popup.visible()) {\n return;\n }\n if (!that.listView.bound() && state !== STATE_FILTER || state === STATE_ACCEPT) {\n that._open = true;\n that._state = STATE_REBIND;\n that._filterSource();\n } else {\n that.popup.open();\n that._focusItem();\n }\n },\n _updateSelectionState: function () {\n var that = this;\n var text = that.options.text;\n var value = that.options.value;\n if (that.listView.isFiltered()) {\n return;\n }\n if (that.selectedIndex === -1) {\n if (text === undefined || text === null) {\n text = value;\n }\n that._accessor(value);\n that.input.val(text || that.input.val());\n that._placeholder();\n } else if (that._oldIndex === -1) {\n that._oldIndex = that.selectedIndex;\n }\n },\n _buildOptions: function (data) {\n var that = this;\n if (!that._isSelect) {\n return;\n }\n var custom = that._customOption;\n if (that._state === STATE_REBIND) {\n that._state = '';\n }\n that._customOption = undefined;\n that._options(data, '', that.value());\n if (custom && custom[0].selected) {\n that._custom(custom.val());\n }\n },\n _updateSelection: function () {\n var that = this;\n var listView = that.listView;\n var initialIndex = that._initialIndex;\n var hasInitialIndex = initialIndex !== null && initialIndex > -1;\n var filtered = that._state === STATE_FILTER;\n if (filtered) {\n $(listView.focus()).removeClass('k-state-selected');\n return;\n }\n if (that._fetch) {\n return;\n }\n if (!listView.value().length) {\n if (hasInitialIndex) {\n that.select(initialIndex);\n } else if (that._accessor()) {\n listView.value(that._accessor());\n }\n }\n that._initialIndex = null;\n var dataItem = listView.selectedDataItems()[0];\n if (!dataItem) {\n return;\n }\n if (that._value(dataItem) !== that.value()) {\n that._custom(that._value(dataItem));\n }\n if (that.text() && that.text() !== that._text(dataItem)) {\n that._selectValue(dataItem);\n }\n },\n _updateItemFocus: function () {\n var listView = this.listView;\n if (!this.options.highlightFirst) {\n listView.focus(-1);\n } else if (!listView.focus() && !listView.focusIndex()) {\n listView.focus(0);\n }\n },\n _listBound: function () {\n var that = this;\n var isActive = that.input[0] === activeElement();\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n var isFirstPage = skip === undefined || skip === 0;\n that._angularItems('compile');\n that._presetValue = false;\n that._resizePopup();\n that.popup.position();\n that._buildOptions(data);\n that._makeUnselectable();\n that._updateSelection();\n if (data.length && isFirstPage) {\n that._updateItemFocus();\n if (that.options.suggest && isActive && that.input.val()) {\n that.suggest(data[0]);\n }\n }\n if (that._open) {\n that._open = false;\n if (that._typingTimeout && !isActive) {\n that.popup.close();\n } else {\n that.toggle(!!data.length);\n }\n that._typingTimeout = null;\n }\n that._hideBusy();\n that.trigger('dataBound');\n },\n _listChange: function () {\n this._selectValue(this.listView.selectedDataItems()[0]);\n if (this._presetValue) {\n this._oldIndex = this.selectedIndex;\n }\n },\n _get: function (candidate) {\n var data, found, idx;\n if (typeof candidate === 'function') {\n data = this.dataSource.flatView();\n for (idx = 0; idx < data.length; idx++) {\n if (candidate(data[idx])) {\n candidate = idx;\n found = true;\n break;\n }\n }\n if (!found) {\n candidate = -1;\n }\n }\n return candidate;\n },\n _select: function (candidate, keepState) {\n candidate = this._get(candidate);\n if (candidate === -1) {\n this.input[0].value = '';\n this._accessor('');\n }\n this.listView.select(candidate);\n if (!keepState && this._state === STATE_FILTER) {\n this._state = STATE_ACCEPT;\n }\n },\n _selectValue: function (dataItem) {\n var idx = this.listView.select();\n var value = '';\n var text = '';\n idx = idx[idx.length - 1];\n if (idx === undefined) {\n idx = -1;\n }\n this.selectedIndex = idx;\n if (idx === -1) {\n value = text = this.input[0].value;\n this.listView.focus(-1);\n } else {\n if (dataItem) {\n value = this._dataValue(dataItem);\n text = this._text(dataItem);\n }\n if (value === null) {\n value = '';\n }\n }\n this._prev = this.input[0].value = text;\n this._accessor(value !== undefined ? value : text, idx);\n this._placeholder();\n this._triggerCascade();\n },\n refresh: function () {\n this.listView.refresh();\n },\n suggest: function (word) {\n var that = this;\n var element = that.input[0];\n var value = that.text();\n var caretIdx = caret(element)[0];\n var key = that._last;\n var idx;\n if (key == keys.BACKSPACE || key == keys.DELETE) {\n that._last = undefined;\n return;\n }\n word = word || '';\n if (typeof word !== 'string') {\n if (word[0]) {\n word = that.dataSource.view()[List.inArray(word[0], that.ul[0])];\n }\n word = word ? that._text(word) : '';\n }\n if (caretIdx <= 0) {\n caretIdx = value.toLowerCase().indexOf(word.toLowerCase()) + 1;\n }\n if (word) {\n word = word.toString();\n idx = word.toLowerCase().indexOf(value.toLowerCase());\n if (idx > -1) {\n value += word.substring(idx + value.length);\n }\n } else {\n value = value.substring(0, caretIdx);\n }\n if (value.length !== caretIdx || !word) {\n element.value = value;\n if (element === activeElement()) {\n caret(element, caretIdx, value.length);\n }\n }\n },\n text: function (text) {\n text = text === null ? '' : text;\n var that = this;\n var input = that.input[0];\n var ignoreCase = that.options.ignoreCase;\n var loweredText = text;\n var dataItem;\n var value;\n if (text === undefined) {\n return input.value;\n }\n if (that.options.autoBind === false && !that.listView.bound()) {\n that._setText(text);\n return;\n }\n dataItem = that.dataItem();\n if (dataItem && that._text(dataItem) === text) {\n value = that._value(dataItem);\n if (value === List.unifyType(that._old, typeof value)) {\n that._triggerCascade();\n return;\n }\n }\n if (ignoreCase) {\n loweredText = loweredText.toLowerCase();\n }\n that._select(function (data) {\n data = that._text(data);\n if (ignoreCase) {\n data = (data + '').toLowerCase();\n }\n return data === loweredText;\n });\n if (that.selectedIndex < 0) {\n that._accessor(text);\n input.value = text;\n that._triggerCascade();\n }\n that._prev = input.value;\n },\n toggle: function (toggle) {\n this._toggle(toggle, true);\n },\n value: function (value) {\n var that = this;\n var options = that.options;\n var listView = that.listView;\n if (value === undefined) {\n value = that._accessor() || that.listView.value()[0];\n return value === undefined || value === null ? '' : value;\n }\n that.trigger('set', { value: value });\n if (value === options.value && that.input.val() === options.text) {\n return;\n }\n that._accessor(value);\n if (that._isFilterEnabled() && listView.bound() && listView.isFiltered()) {\n that._clearFilter();\n } else {\n that._fetchData();\n }\n listView.value(value).done(function () {\n if (that.selectedIndex === -1) {\n that._accessor(value);\n that.input.val(value);\n that._placeholder(true);\n }\n that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n that._prev = that.input.val();\n if (that._state === STATE_FILTER) {\n that._state = STATE_ACCEPT;\n }\n });\n },\n _click: function (e) {\n var item = e.item;\n e.preventDefault();\n if (this.trigger('select', { item: item })) {\n this.close();\n return;\n }\n this._userTriggered = true;\n this._select(item);\n this._blur();\n },\n _filter: function (word) {\n var that = this;\n var options = that.options;\n var dataSource = that.dataSource;\n var ignoreCase = options.ignoreCase;\n var predicate = function (dataItem) {\n var text = that._text(dataItem);\n if (text !== undefined) {\n text = text + '';\n if (text !== '' && word === '') {\n return false;\n }\n if (ignoreCase) {\n text = text.toLowerCase();\n }\n return text.indexOf(word) === 0;\n }\n };\n if (ignoreCase) {\n word = word.toLowerCase();\n }\n if (!that.ul[0].firstChild) {\n dataSource.one(CHANGE, function () {\n if (dataSource.view()[0]) {\n that.search(word);\n }\n }).fetch();\n return;\n }\n this.listView.focus(this._get(predicate));\n var current = this.listView.focus();\n if (current) {\n if (options.suggest) {\n that.suggest(current);\n }\n this.open();\n }\n if (this.options.highlightFirst && !word) {\n this.listView.focusFirst();\n }\n },\n _input: function () {\n var that = this, element = that.element.removeClass('k-input')[0], accessKey = element.accessKey, wrapper = that.wrapper, SELECTOR = 'input.k-input', name = element.name || '', input;\n if (name) {\n name = 'name=\"' + name + '_input\" ';\n }\n input = wrapper.find(SELECTOR);\n if (!input[0]) {\n wrapper.append('select').append(that.element);\n input = wrapper.find(SELECTOR);\n }\n input[0].style.cssText = element.style.cssText;\n input[0].title = element.title;\n if (element.maxLength > -1) {\n input[0].maxLength = element.maxLength;\n }\n input.addClass(element.className).val(this.options.text || element.value).css({\n width: '100%',\n height: element.style.height\n }).attr({\n 'role': 'combobox',\n 'aria-expanded': false\n }).show();\n if (placeholderSupported) {\n input.attr('placeholder', that.options.placeholder);\n }\n if (accessKey) {\n element.accessKey = '';\n input[0].accessKey = accessKey;\n }\n that._focused = that.input = input;\n that._inputWrapper = $(wrapper[0].firstChild);\n that._arrow = wrapper.find('.k-icon').attr({\n 'role': 'button',\n 'tabIndex': -1\n });\n if (element.id) {\n that._arrow.attr('aria-controls', that.ul[0].id);\n }\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode;\n that._last = key;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = null;\n if (key != keys.TAB && !that._move(e)) {\n that._search();\n }\n },\n _placeholder: function (show) {\n if (placeholderSupported) {\n return;\n }\n var that = this, input = that.input, placeholder = that.options.placeholder, value;\n if (placeholder) {\n value = that.value();\n if (show === undefined) {\n show = !value;\n }\n input.toggleClass('k-readonly', show);\n if (!show) {\n if (!value) {\n placeholder = '';\n } else {\n return;\n }\n }\n input.val(placeholder);\n if (!placeholder && input[0] === activeElement()) {\n caret(input[0], 0, 0);\n }\n }\n },\n _search: function () {\n var that = this;\n that._typingTimeout = setTimeout(function () {\n var value = that.text();\n if (that._prev !== value) {\n that._prev = value;\n if (that.options.filter === 'none') {\n that.listView.select(-1);\n }\n that.search(value);\n }\n that._typingTimeout = null;\n }, that.options.delay);\n },\n _setText: function (text) {\n this.input.val(text);\n this._prev = text;\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.hide().wrap('').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n }\n that.wrapper = wrapper.addClass('k-widget k-combobox k-header').addClass(element[0].className).css('display', '');\n },\n _clearSelection: function (parent, isFiltered) {\n var that = this;\n var hasValue = parent.value();\n var custom = hasValue && parent.selectedIndex === -1;\n if (this.selectedIndex == -1 && this.value()) {\n return;\n }\n if (isFiltered || !hasValue || custom) {\n that.options.value = '';\n that.value('');\n }\n },\n _preselect: function (value, text) {\n this.input.val(text);\n this._accessor(value);\n this._old = this._accessor();\n this._oldIndex = this.selectedIndex;\n this.listView.setValue(value);\n this._placeholder();\n this._initialIndex = null;\n this._presetValue = true;\n }\n });\n ui.plugin(ComboBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.multiselect', [\n 'kendo.list',\n 'kendo.mobile.scroller'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'multiselect',\n name: 'MultiSelect',\n category: 'web',\n description: 'The MultiSelect widget allows the selection from pre-defined values.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, keys = kendo.keys, activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, proxy = $.proxy, ID = 'id', LI = 'li', ACCEPT = 'accept', FILTER = 'filter', REBIND = 'rebind', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', PROGRESS = 'progress', SELECT = 'select', ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', FOCUSEDCLASS = 'k-state-focused', HIDDENCLASS = 'k-loading-hidden', HOVERCLASS = 'k-state-hover', STATEDISABLED = 'k-state-disabled', DISABLED = 'disabled', READONLY = 'readonly', ns = '.kendoMultiSelect', CLICK = 'click' + ns, KEYDOWN = 'keydown' + ns, MOUSEENTER = 'mouseenter' + ns, MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = MOUSEENTER + ' ' + MOUSELEAVE, quotRegExp = /\"/g, isArray = $.isArray, styles = [\n 'font-family',\n 'font-size',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-transform',\n 'line-height'\n ];\n var MultiSelect = List.extend({\n init: function (element, options) {\n var that = this, id, disabled;\n that.ns = ns;\n List.fn.init.call(that, element, options);\n that._optionsMap = {};\n that._customOptions = {};\n that._wrapper();\n that._tagList();\n that._input();\n that._textContainer();\n that._loader();\n that._tabindex(that.input);\n element = that.element.attr('multiple', 'multiple').hide();\n options = that.options;\n if (!options.placeholder) {\n options.placeholder = element.data('placeholder');\n }\n id = element.attr(ID);\n if (id) {\n that._tagID = id + '_tag_active';\n id = id + '_taglist';\n that.tagList.attr(ID, id);\n }\n that._aria(id);\n that._dataSource();\n that._ignoreCase();\n that._popup();\n that._tagTemplate();\n that._initList();\n that._reset();\n that._enable();\n that._placeholder();\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (options.value) {\n that._preselect(options.value);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n kendo.notify(that);\n },\n options: {\n name: 'MultiSelect',\n tagMode: 'multiple',\n enabled: true,\n autoBind: true,\n autoClose: true,\n highlightFirst: true,\n dataTextField: '',\n dataValueField: '',\n filter: 'startswith',\n ignoreCase: true,\n minLength: 0,\n delay: 100,\n value: null,\n maxSelectedItems: null,\n placeholder: '',\n height: 200,\n animation: {},\n virtual: false,\n itemTemplate: '',\n tagTemplate: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#'\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE,\n SELECT,\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._state = '';\n this._dataSource();\n this.listView.setDataSource(this.dataSource);\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria(this.tagList.attr(ID));\n this._tagTemplate();\n },\n currentTag: function (candidate) {\n var that = this;\n if (candidate !== undefined) {\n if (that._currentTag) {\n that._currentTag.removeClass(FOCUSEDCLASS).removeAttr(ID);\n that.input.removeAttr('aria-activedescendant');\n }\n if (candidate) {\n candidate.addClass(FOCUSEDCLASS).attr(ID, that._tagID);\n that.input.attr('aria-activedescendant', that._tagID);\n }\n that._currentTag = candidate;\n } else {\n return that._currentTag;\n }\n },\n dataItems: function () {\n return this.listView.selectedDataItems();\n },\n destroy: function () {\n var that = this, ns = that.ns;\n clearTimeout(that._busy);\n clearTimeout(that._typingTimeout);\n that.wrapper.off(ns);\n that.tagList.off(ns);\n that.input.off(ns);\n List.fn.destroy.call(that);\n },\n _activateItem: function () {\n List.fn._activateItem.call(this);\n this.currentTag(null);\n },\n _listOptions: function (options) {\n var that = this;\n var listOptions = List.fn._listOptions.call(that, $.extend(options, {\n selectedItemChange: proxy(that._selectedItemChange, that),\n selectable: 'multiple'\n }));\n var itemTemplate = this.options.itemTemplate || this.options.template;\n var template = listOptions.itemTemplate || itemTemplate || listOptions.template;\n if (!template) {\n template = '#:' + kendo.expr(listOptions.dataTextField, 'data') + '#';\n }\n listOptions.template = template;\n return listOptions;\n },\n _setListValue: function () {\n List.fn._setListValue.call(this, this._initialValues.slice(0));\n },\n _listChange: function (e) {\n if (this._state === REBIND) {\n this._state = '';\n e.added = [];\n }\n this._selectValue(e.added, e.removed);\n },\n _selectedItemChange: function (e) {\n var items = e.items;\n var context;\n var idx;\n for (idx = 0; idx < items.length; idx++) {\n context = items[idx];\n this.tagList.children().eq(context.index).children('span:first').html(this.tagTextTemplate(context.item));\n }\n },\n _wrapperMousedown: function (e) {\n var that = this;\n var notInput = e.target.nodeName.toLowerCase() !== 'input';\n var target = $(e.target);\n var closeButton = target.hasClass('k-select') || target.hasClass('k-icon');\n if (closeButton) {\n closeButton = !target.closest('.k-select').children('.k-i-arrow-s').length;\n }\n if (notInput && !(closeButton && kendo.support.mobileOS)) {\n e.preventDefault();\n }\n if (!closeButton) {\n if (that.input[0] !== activeElement() && notInput) {\n that.input.focus();\n }\n if (that.options.minLength === 0) {\n that.open();\n }\n }\n },\n _inputFocus: function () {\n this._placeholder(false);\n this.wrapper.addClass(FOCUSEDCLASS);\n },\n _inputFocusout: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that.wrapper.removeClass(FOCUSEDCLASS);\n that._placeholder(!that.listView.selectedDataItems()[0], true);\n that.close();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n that.listView.skipUpdate(true);\n }\n that.element.blur();\n },\n _removeTag: function (tag) {\n var that = this;\n var state = that._state;\n var position = tag.index();\n var listView = that.listView;\n var value = listView.value()[position];\n var customIndex = that._customOptions[value];\n var option;\n if (customIndex === undefined && (state === ACCEPT || state === FILTER)) {\n customIndex = that._optionsMap[value];\n }\n if (customIndex !== undefined) {\n option = that.element[0].children[customIndex];\n option.removeAttribute('selected');\n option.selected = false;\n listView.removeAt(position);\n tag.remove();\n } else {\n listView.select(listView.select()[position]);\n }\n that.currentTag(null);\n that._change();\n that._close();\n },\n _tagListClick: function (e) {\n var target = $(e.currentTarget);\n if (!target.children('.k-i-arrow-s').length) {\n this._removeTag(target.closest(LI));\n }\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that.wrapper.off(ns), tagList = that.tagList.off(ns), input = that.element.add(that.input.off(ns));\n if (!readonly && !disable) {\n wrapper.removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover).on('mousedown' + ns + ' touchend' + ns, proxy(that._wrapperMousedown, that));\n that.input.on(KEYDOWN, proxy(that._keydown, that)).on('paste' + ns, proxy(that._search, that)).on('focus' + ns, proxy(that._inputFocus, that)).on('focusout' + ns, proxy(that._inputFocusout, that));\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n tagList.on(MOUSEENTER, LI, function () {\n $(this).addClass(HOVERCLASS);\n }).on(MOUSELEAVE, LI, function () {\n $(this).removeClass(HOVERCLASS);\n }).on(CLICK, 'li.k-button .k-select', proxy(that._tagListClick, that));\n } else {\n if (disable) {\n wrapper.addClass(STATEDISABLED);\n } else {\n wrapper.removeClass(STATEDISABLED);\n }\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n _close: function () {\n var that = this;\n if (that.options.autoClose) {\n that.close();\n } else {\n that.popup.position();\n }\n },\n _filterSource: function (filter, force) {\n if (!force) {\n force = this._retrieveData;\n }\n this._retrieveData = false;\n List.fn._filterSource.call(this, filter, force);\n },\n close: function () {\n this.popup.close();\n },\n open: function () {\n var that = this;\n if (that._request) {\n that._retrieveData = false;\n }\n if (that._retrieveData || !that.listView.bound() || that._state === ACCEPT) {\n that._open = true;\n that._state = REBIND;\n that.listView.skipUpdate(true);\n that._filterSource();\n } else if (that._allowSelection()) {\n that.popup.open();\n that._focusItem();\n }\n },\n toggle: function (toggle) {\n toggle = toggle !== undefined ? toggle : !this.popup.visible();\n this[toggle ? OPEN : CLOSE]();\n },\n refresh: function () {\n this.listView.refresh();\n },\n _angularItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.items(),\n data: $.map(that.dataSource.flatView(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n },\n _listBound: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n var length = data.length;\n that._angularItems('compile');\n that._render(data);\n that._resizePopup();\n if (that._open) {\n that._open = false;\n that.toggle(length);\n }\n that.popup.position();\n if (that.options.highlightFirst && (skip === undefined || skip === 0)) {\n that.listView.focusFirst();\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n search: function (word) {\n var that = this;\n var options = that.options;\n var ignoreCase = options.ignoreCase;\n var field = options.dataTextField;\n var inputValue = that.input.val();\n var expression;\n var length;\n if (options.placeholder === inputValue) {\n inputValue = '';\n }\n clearTimeout(that._typingTimeout);\n word = typeof word === 'string' ? word : inputValue;\n length = word.length;\n if (!length || length >= options.minLength) {\n that._state = FILTER;\n that._open = true;\n expression = {\n value: ignoreCase ? word.toLowerCase() : word,\n field: field,\n operator: options.filter,\n ignoreCase: ignoreCase\n };\n that._filterSource(expression);\n }\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var oldValue = listView.value().slice();\n var maxSelectedItems = that.options.maxSelectedItems;\n var clearFilters = listView.bound() && listView.isFiltered();\n if (value === undefined) {\n return oldValue;\n }\n value = that._normalizeValues(value);\n if (maxSelectedItems !== null && value.length > maxSelectedItems) {\n value = value.slice(0, maxSelectedItems);\n }\n if (clearFilters) {\n that._clearFilter();\n }\n listView.value(value);\n that._old = value;\n if (!clearFilters) {\n that._fetchData();\n }\n },\n _preselect: function (data, value) {\n var that = this;\n if (!isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !that.options.dataValueField) {\n that.dataSource.data(data);\n that.value(value || that._initialValues);\n that._retrieveData = true;\n }\n },\n _setOption: function (value, selected) {\n var option = this.element[0].children[this._optionsMap[value]];\n if (option) {\n if (selected) {\n option.setAttribute('selected', 'selected');\n } else {\n option.removeAttribute('selected');\n }\n option.selected = selected;\n }\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n var isEmptyArray = that.listView.value().length === 0;\n if (isEmptyArray || that._request) {\n return;\n }\n if (that._retrieveData || !that._fetch && !hasItems) {\n that._fetch = true;\n that._retrieveData = false;\n that.dataSource.read().done(function () {\n that._fetch = false;\n });\n }\n },\n _isBound: function () {\n return this.listView.bound() && !this._retrieveData;\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {};\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(PROGRESS, that._progressHandler).bind('error', that._errorHandler);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initialValues);\n that._placeholder();\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _initValue: function () {\n var value = this.options.value || this.element.val();\n this._old = this._initialValues = this._normalizeValues(value);\n },\n _normalizeValues: function (value) {\n var that = this;\n if (value === null) {\n value = [];\n } else if (value && $.isPlainObject(value)) {\n value = [that._value(value)];\n } else if (value && $.isPlainObject(value[0])) {\n value = $.map(value, function (dataItem) {\n return that._value(dataItem);\n });\n } else if (!isArray(value) && !(value instanceof ObservableArray)) {\n value = [value];\n }\n return value;\n },\n _change: function () {\n var that = this, value = that.value();\n if (!compare(value, that._old)) {\n that._old = value.slice();\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n },\n _click: function (e) {\n var item = e.item;\n e.preventDefault();\n if (this.trigger(SELECT, { item: item })) {\n this._close();\n return;\n }\n this._select(item);\n this._change();\n this._close();\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var tag = that._currentTag;\n var current = that.listView.focus();\n var hasValue = that.input.val();\n var isRtl = kendo.support.isRtl(that.wrapper);\n var visible = that.popup.visible();\n if (key === keys.DOWN) {\n e.preventDefault();\n if (!visible) {\n that.open();\n if (!current) {\n this.listView.focusFirst();\n }\n return;\n }\n if (current) {\n this.listView.focusNext();\n if (!this.listView.focus()) {\n this.listView.focusLast();\n }\n } else {\n this.listView.focusFirst();\n }\n } else if (key === keys.UP) {\n if (visible) {\n if (current) {\n this.listView.focusPrev();\n }\n if (!this.listView.focus()) {\n that.close();\n }\n }\n e.preventDefault();\n } else if (key === keys.LEFT && !isRtl || key === keys.RIGHT && isRtl) {\n if (!hasValue) {\n tag = tag ? tag.prev() : $(that.tagList[0].lastChild);\n if (tag[0]) {\n that.currentTag(tag);\n }\n }\n } else if (key === keys.RIGHT && !isRtl || key === keys.LEFT && isRtl) {\n if (!hasValue && tag) {\n tag = tag.next();\n that.currentTag(tag[0] ? tag : null);\n }\n } else if (key === keys.ENTER && visible) {\n if (current) {\n if (that.trigger(SELECT, { item: current })) {\n that._close();\n return;\n }\n that._select(current);\n }\n that._change();\n that._close();\n e.preventDefault();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n } else {\n that.currentTag(null);\n }\n that.close();\n } else if (key === keys.HOME) {\n if (visible) {\n this.listView.focusFirst();\n } else if (!hasValue) {\n tag = that.tagList[0].firstChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if (key === keys.END) {\n if (visible) {\n this.listView.focusLast();\n } else if (!hasValue) {\n tag = that.tagList[0].lastChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if ((key === keys.DELETE || key === keys.BACKSPACE) && !hasValue) {\n if (key === keys.BACKSPACE && !tag) {\n tag = $(that.tagList[0].lastChild);\n }\n if (tag && tag[0]) {\n that._removeTag(tag);\n }\n } else {\n clearTimeout(that._typingTimeout);\n setTimeout(function () {\n that._scale();\n });\n that._search();\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that.input.attr('aria-busy', false);\n that._loading.addClass(HIDDENCLASS);\n that._request = false;\n that._busy = null;\n },\n _showBusyHandler: function () {\n this.input.attr('aria-busy', true);\n this._loading.removeClass(HIDDENCLASS);\n },\n _showBusy: function () {\n var that = this;\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(proxy(that._showBusyHandler, that), 100);\n },\n _placeholder: function (show, skipCaret) {\n var that = this, input = that.input, active = activeElement();\n if (show === undefined) {\n show = false;\n if (input[0] !== active) {\n show = !that.listView.selectedDataItems()[0];\n }\n }\n that._prev = '';\n input.toggleClass('k-readonly', show).val(show ? that.options.placeholder : '');\n if (input[0] === active && !skipCaret) {\n kendo.caret(input[0], 0, 0);\n }\n that._scale();\n },\n _scale: function () {\n var that = this, wrapper = that.wrapper, wrapperWidth = wrapper.width(), span = that._span.text(that.input.val()), textWidth;\n if (!wrapper.is(':visible')) {\n span.appendTo(document.documentElement);\n wrapperWidth = textWidth = span.width() + 25;\n span.appendTo(wrapper);\n } else {\n textWidth = span.width() + 25;\n }\n that.input.width(textWidth > wrapperWidth ? wrapperWidth : textWidth);\n },\n _option: function (dataValue, dataText, selected) {\n var option = ' this.listView.value().length;\n },\n _angularTagItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.tagList[0].children,\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n },\n _selectValue: function (added, removed) {\n var that = this;\n var values = that.value();\n var total = that.dataSource.total();\n var tagList = that.tagList;\n var getter = that._value;\n var removedItem;\n var addedItem;\n var idx;\n that._angularTagItems('cleanup');\n if (that.options.tagMode === 'multiple') {\n for (idx = removed.length - 1; idx > -1; idx--) {\n removedItem = removed[idx];\n tagList[0].removeChild(tagList[0].children[removedItem.position]);\n that._setOption(getter(removedItem.dataItem), false);\n }\n for (idx = 0; idx < added.length; idx++) {\n addedItem = added[idx];\n tagList.append(that.tagTemplate(addedItem.dataItem));\n that._setOption(getter(addedItem.dataItem), true);\n }\n } else {\n if (!that._maxTotal || that._maxTotal < total) {\n that._maxTotal = total;\n }\n tagList.html('');\n if (values.length) {\n tagList.append(that.tagTemplate({\n values: values,\n dataItems: that.dataItems(),\n maxTotal: that._maxTotal,\n currentTotal: total\n }));\n }\n for (idx = removed.length - 1; idx > -1; idx--) {\n that._setOption(getter(removed[idx].dataItem), false);\n }\n for (idx = 0; idx < added.length; idx++) {\n that._setOption(getter(added[idx].dataItem), true);\n }\n }\n that._angularTagItems('compile');\n that._placeholder();\n },\n _select: function (candidate) {\n var that = this;\n if (that._state === REBIND) {\n that._state = '';\n }\n if (!that._allowSelection()) {\n return;\n }\n this.listView.select(candidate);\n that._placeholder();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n that.listView.skipUpdate(true);\n }\n },\n _input: function () {\n var that = this, accessKey = that.element[0].accessKey, input = that._innerWrapper.children('input.k-input');\n if (!input[0]) {\n input = $('').appendTo(that._innerWrapper);\n }\n that.element.removeAttr('accesskey');\n that._focused = that.input = input.attr({\n 'accesskey': accessKey,\n 'autocomplete': 'off',\n 'role': 'listbox',\n 'aria-expanded': false\n });\n },\n _tagList: function () {\n var that = this, tagList = that._innerWrapper.children('ul');\n if (!tagList[0]) {\n tagList = $('
              ').appendTo(that._innerWrapper);\n }\n that.tagList = tagList;\n },\n _tagTemplate: function () {\n var that = this;\n var options = that.options;\n var tagTemplate = options.tagTemplate;\n var hasDataSource = options.dataSource;\n var isMultiple = options.tagMode === 'multiple';\n var defaultTemplate;\n if (that.element[0].length && !hasDataSource) {\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n }\n defaultTemplate = isMultiple ? kendo.template('#:' + kendo.expr(options.dataTextField, 'data') + '#', { useWithBlock: false }) : kendo.template('#:values.length# item(s) selected');\n that.tagTextTemplate = tagTemplate = tagTemplate ? kendo.template(tagTemplate) : defaultTemplate;\n that.tagTemplate = function (data) {\n return '
            • ' + tagTemplate(data) + '' + (isMultiple ? 'delete' : 'open') + '
            • ';\n };\n },\n _loader: function () {\n this._loading = $('').insertAfter(this.input);\n },\n _textContainer: function () {\n var computedStyles = kendo.getComputedStyles(this.input[0], styles);\n computedStyles.position = 'absolute';\n computedStyles.visibility = 'hidden';\n computedStyles.top = -3333;\n computedStyles.left = -3333;\n this._span = $('').css(computedStyles).appendTo(this.wrapper);\n },\n _wrapper: function () {\n var that = this, element = that.element, wrapper = element.parent('span.k-multiselect');\n if (!wrapper[0]) {\n wrapper = element.wrap('
              ').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n wrapper[0].title = element[0].title;\n $('
              ').insertBefore(element);\n }\n that.wrapper = wrapper.addClass(element[0].className).css('display', '');\n that._innerWrapper = $(wrapper[0].firstChild);\n }\n });\n function compare(a, b) {\n var length;\n if (a === null && b !== null || a !== null && b === null) {\n return false;\n }\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n while (length--) {\n if (a[length] !== b[length]) {\n return false;\n }\n }\n return true;\n }\n ui.plugin(MultiSelect);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.color', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'color',\n name: 'Color utils',\n category: 'framework',\n advanced: true,\n description: 'Color utilities used across components',\n depends: ['core']\n };\n (function ($, parseFloat, parseInt) {\n var Color = function (value) {\n var color = this, formats = Color.formats, re, processor, parts, i, channels;\n if (arguments.length === 1) {\n value = color.resolveColor(value);\n for (i = 0; i < formats.length; i++) {\n re = formats[i].re;\n processor = formats[i].process;\n parts = re.exec(value);\n if (parts) {\n channels = processor(parts);\n color.r = channels[0];\n color.g = channels[1];\n color.b = channels[2];\n }\n }\n } else {\n color.r = arguments[0];\n color.g = arguments[1];\n color.b = arguments[2];\n }\n color.r = color.normalizeByte(color.r);\n color.g = color.normalizeByte(color.g);\n color.b = color.normalizeByte(color.b);\n };\n Color.prototype = {\n toHex: function () {\n var color = this, pad = color.padDigit, r = color.r.toString(16), g = color.g.toString(16), b = color.b.toString(16);\n return '#' + pad(r) + pad(g) + pad(b);\n },\n resolveColor: function (value) {\n value = value || 'black';\n if (value.charAt(0) == '#') {\n value = value.substr(1, 6);\n }\n value = value.replace(/ /g, '');\n value = value.toLowerCase();\n value = Color.namedColors[value] || value;\n return value;\n },\n normalizeByte: function (value) {\n return value < 0 || isNaN(value) ? 0 : value > 255 ? 255 : value;\n },\n padDigit: function (value) {\n return value.length === 1 ? '0' + value : value;\n },\n brightness: function (value) {\n var color = this, round = Math.round;\n color.r = round(color.normalizeByte(color.r * value));\n color.g = round(color.normalizeByte(color.g * value));\n color.b = round(color.normalizeByte(color.b * value));\n return color;\n },\n percBrightness: function () {\n var color = this;\n return Math.sqrt(0.241 * color.r * color.r + 0.691 * color.g * color.g + 0.068 * color.b * color.b);\n }\n };\n Color.formats = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 10),\n parseInt(parts[2], 10),\n parseInt(parts[3], 10)\n ];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function (parts) {\n return [\n parseInt(parts[1], 16),\n parseInt(parts[2], 16),\n parseInt(parts[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function (parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n }\n ];\n Color.namedColors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgrey: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n grey: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '778899',\n lightslategrey: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n var namedColorRegexp = ['transparent'];\n for (var i in Color.namedColors) {\n if (Color.namedColors.hasOwnProperty(i)) {\n namedColorRegexp.push(i);\n }\n }\n namedColorRegexp = new RegExp('^(' + namedColorRegexp.join('|') + ')(\\\\W|$)', 'i');\n function parseColor(color, nothrow) {\n var m, ret;\n if (color == null || color == 'none') {\n return null;\n }\n if (color instanceof _Color) {\n return color;\n }\n color = color.toLowerCase();\n if (m = namedColorRegexp.exec(color)) {\n if (m[1] == 'transparent') {\n color = new _RGB(1, 1, 1, 0);\n } else {\n color = parseColor(Color.namedColors[m[1]], nothrow);\n }\n color.match = [m[1]];\n return color;\n }\n if (m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color)) {\n ret = new _Bytes(parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 1);\n } else if (m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color)) {\n ret = new _Bytes(parseInt(m[1] + m[1], 16), parseInt(m[2] + m[2], 16), parseInt(m[3] + m[3], 16), 1);\n } else if (m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color)) {\n ret = new _Bytes(parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10), 1);\n } else if (m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color)) {\n ret = new _Bytes(parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10), parseFloat(m[4]));\n } else if (m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color)) {\n ret = new _RGB(parseFloat(m[1]) / 100, parseFloat(m[2]) / 100, parseFloat(m[3]) / 100, 1);\n } else if (m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color)) {\n ret = new _RGB(parseFloat(m[1]) / 100, parseFloat(m[2]) / 100, parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n if (ret) {\n ret.match = m;\n } else if (!nothrow) {\n throw new Error('Cannot parse color: ' + color);\n }\n return ret;\n }\n function hex(n, width, pad) {\n if (!pad) {\n pad = '0';\n }\n n = n.toString(16);\n while (width > n.length) {\n n = '0' + n;\n }\n return n;\n }\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n var _Color = kendo.Class.extend({\n toHSV: function () {\n return this;\n },\n toRGB: function () {\n return this;\n },\n toHex: function () {\n return this.toBytes().toHex();\n },\n toBytes: function () {\n return this;\n },\n toCss: function () {\n return '#' + this.toHex();\n },\n toCssRgba: function () {\n var rgb = this.toBytes();\n return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat((+this.a).toFixed(3)) + ')';\n },\n toDisplay: function () {\n if (kendo.support.browser.msie && kendo.support.browser.version < 9) {\n return this.toCss();\n }\n return this.toCssRgba();\n },\n equals: function (c) {\n return c === this || c !== null && this.toCssRgba() == parseColor(c).toCssRgba();\n },\n diff: function (c2) {\n if (c2 == null) {\n return NaN;\n }\n var c1 = this.toBytes();\n c2 = c2.toBytes();\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.3, 2) + Math.pow((c1.g - c2.g) * 0.59, 2) + Math.pow((c1.b - c2.b) * 0.11, 2));\n },\n clone: function () {\n var c = this.toBytes();\n if (c === this) {\n c = new _Bytes(c.r, c.g, c.b, c.a);\n }\n return c;\n }\n });\n var _RGB = _Color.extend({\n init: function (r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n },\n toHSV: function () {\n var min, max, delta, h, s, v;\n var r = this.r, g = this.g, b = this.b;\n min = Math.min(r, g, b);\n max = Math.max(r, g, b);\n v = max;\n delta = max - min;\n if (delta === 0) {\n return new _HSV(0, 0, v, this.a);\n }\n if (max !== 0) {\n s = delta / max;\n if (r == max) {\n h = (g - b) / delta;\n } else if (g == max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n return new _HSV(h, s, v, this.a);\n },\n toHSL: function () {\n var r = this.r, g = this.g, b = this.b;\n var max = Math.max(r, g, b), min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n if (max == min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h *= 60;\n s *= 100;\n l *= 100;\n }\n return new _HSL(h, s, l, this.a);\n },\n toBytes: function () {\n return new _Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n }\n });\n var _Bytes = _RGB.extend({\n init: function (r, g, b, a) {\n this.r = Math.round(r);\n this.g = Math.round(g);\n this.b = Math.round(b);\n this.a = a;\n },\n toRGB: function () {\n return new _RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n },\n toHSV: function () {\n return this.toRGB().toHSV();\n },\n toHSL: function () {\n return this.toRGB().toHSL();\n },\n toHex: function () {\n return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n },\n toBytes: function () {\n return this;\n }\n });\n var _HSV = _Color.extend({\n init: function (h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n },\n toRGB: function () {\n var h = this.h, s = this.s, v = this.v;\n var i, r, g, b, f, p, q, t;\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n i = Math.floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n break;\n }\n }\n return new _RGB(r, g, b, this.a);\n },\n toHSL: function () {\n return this.toRGB().toHSL();\n },\n toBytes: function () {\n return this.toRGB().toBytes();\n }\n });\n var _HSL = _Color.extend({\n init: function (h, s, l, a) {\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n },\n toRGB: function () {\n var h = this.h, s = this.s, l = this.l;\n var r, g, b;\n if (s === 0) {\n r = g = b = l;\n } else {\n h /= 360;\n s /= 100;\n l /= 100;\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return new _RGB(r, g, b, this.a);\n },\n toHSV: function () {\n return this.toRGB().toHSV();\n },\n toBytes: function () {\n return this.toRGB().toBytes();\n }\n });\n Color.fromBytes = function (r, g, b, a) {\n return new _Bytes(r, g, b, a != null ? a : 1);\n };\n Color.fromRGB = function (r, g, b, a) {\n return new _RGB(r, g, b, a != null ? a : 1);\n };\n Color.fromHSV = function (h, s, v, a) {\n return new _HSV(h, s, v, a != null ? a : 1);\n };\n Color.fromHSL = function (h, s, l, a) {\n return new _HSL(h, s, l, a != null ? a : 1);\n };\n kendo.Color = Color;\n kendo.parseColor = parseColor;\n }(window.kendo.jQuery, parseFloat, parseInt));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.slider', ['kendo.draganddrop'], f);\n}(function () {\n var __meta__ = {\n id: 'slider',\n name: 'Slider',\n category: 'web',\n description: 'The Slider widget provides a rich input for selecting values or ranges of values.',\n depends: ['draganddrop']\n };\n (function ($, undefined) {\n var kendo = window.kendo, Widget = kendo.ui.Widget, Draggable = kendo.ui.Draggable, extend = $.extend, format = kendo.format, parse = kendo.parseFloat, proxy = $.proxy, isArray = $.isArray, math = Math, support = kendo.support, pointers = support.pointers, msPointers = support.msPointers, CHANGE = 'change', SLIDE = 'slide', NS = '.slider', MOUSE_DOWN = 'touchstart' + NS + ' mousedown' + NS, TRACK_MOUSE_DOWN = pointers ? 'pointerdown' + NS : msPointers ? 'MSPointerDown' + NS : MOUSE_DOWN, MOUSE_UP = 'touchend' + NS + ' mouseup' + NS, TRACK_MOUSE_UP = pointers ? 'pointerup' : msPointers ? 'MSPointerUp' + NS : MOUSE_UP, MOVE_SELECTION = 'moveSelection', KEY_DOWN = 'keydown' + NS, CLICK = 'click' + NS, MOUSE_OVER = 'mouseover' + NS, FOCUS = 'focus' + NS, BLUR = 'blur' + NS, DRAG_HANDLE = '.k-draghandle', TRACK_SELECTOR = '.k-slider-track', TICK_SELECTOR = '.k-tick', STATE_SELECTED = 'k-state-selected', STATE_FOCUSED = 'k-state-focused', STATE_DEFAULT = 'k-state-default', STATE_DISABLED = 'k-state-disabled', DISABLED = 'disabled', UNDEFINED = 'undefined', TABINDEX = 'tabindex', getTouches = kendo.getTouches;\n var SliderBase = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that._distance = round(options.max - options.min);\n that._isHorizontal = options.orientation == 'horizontal';\n that._isRtl = that._isHorizontal && kendo.support.isRtl(element);\n that._position = that._isHorizontal ? 'left' : 'bottom';\n that._sizeFn = that._isHorizontal ? 'width' : 'height';\n that._outerSize = that._isHorizontal ? 'outerWidth' : 'outerHeight';\n options.tooltip.format = options.tooltip.enabled ? options.tooltip.format || '{0}' : '{0}';\n if (options.smallStep <= 0) {\n throw new Error('Kendo UI Slider smallStep must be a positive number.');\n }\n that._createHtml();\n that.wrapper = that.element.closest('.k-slider');\n that._trackDiv = that.wrapper.find(TRACK_SELECTOR);\n that._setTrackDivWidth();\n that._maxSelection = that._trackDiv[that._sizeFn]();\n that._sliderItemsInit();\n that._reset();\n that._tabindex(that.wrapper.find(DRAG_HANDLE));\n that[options.enabled ? 'enable' : 'disable']();\n var rtlDirectionSign = kendo.support.isRtl(that.wrapper) ? -1 : 1;\n that._keyMap = {\n 37: step(-1 * rtlDirectionSign * options.smallStep),\n 40: step(-options.smallStep),\n 39: step(+1 * rtlDirectionSign * options.smallStep),\n 38: step(+options.smallStep),\n 35: setValue(options.max),\n 36: setValue(options.min),\n 33: step(+options.largeStep),\n 34: step(-options.largeStep)\n };\n kendo.notify(that);\n },\n events: [\n CHANGE,\n SLIDE\n ],\n options: {\n enabled: true,\n min: 0,\n max: 10,\n smallStep: 1,\n largeStep: 5,\n orientation: 'horizontal',\n tickPlacement: 'both',\n tooltip: {\n enabled: true,\n format: '{0}'\n }\n },\n _resize: function () {\n this._setTrackDivWidth();\n this.wrapper.find('.k-slider-items').remove();\n this._maxSelection = this._trackDiv[this._sizeFn]();\n this._sliderItemsInit();\n this._refresh();\n if (this.options.enabled) {\n this.enable(true);\n }\n },\n _sliderItemsInit: function () {\n var that = this, options = that.options;\n var sizeBetweenTicks = that._maxSelection / ((options.max - options.min) / options.smallStep);\n var pixelWidths = that._calculateItemsWidth(math.floor(that._distance / options.smallStep));\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2) {\n that._trackDiv.before(createSliderItems(options, that._distance));\n that._setItemsWidth(pixelWidths);\n that._setItemsTitle();\n }\n that._calculateSteps(pixelWidths);\n if (options.tickPlacement != 'none' && sizeBetweenTicks >= 2 && options.largeStep >= options.smallStep) {\n that._setItemsLargeTick();\n }\n },\n getSize: function () {\n return kendo.dimensions(this.wrapper);\n },\n _setTrackDivWidth: function () {\n var that = this, trackDivPosition = parseFloat(that._trackDiv.css(that._isRtl ? 'right' : that._position), 10) * 2;\n that._trackDiv[that._sizeFn](that.wrapper[that._sizeFn]() - 2 - trackDivPosition);\n },\n _setItemsWidth: function (pixelWidths) {\n var that = this, options = that.options, first = 0, last = pixelWidths.length - 1, items = that.wrapper.find(TICK_SELECTOR), i, paddingTop = 0, bordersWidth = 2, count = items.length, selection = 0;\n for (i = 0; i < count - 2; i++) {\n $(items[i + 1])[that._sizeFn](pixelWidths[i]);\n }\n if (that._isHorizontal) {\n $(items[first]).addClass('k-first')[that._sizeFn](pixelWidths[last - 1]);\n $(items[last]).addClass('k-last')[that._sizeFn](pixelWidths[last]);\n } else {\n $(items[last]).addClass('k-first')[that._sizeFn](pixelWidths[last]);\n $(items[first]).addClass('k-last')[that._sizeFn](pixelWidths[last - 1]);\n }\n if (that._distance % options.smallStep !== 0 && !that._isHorizontal) {\n for (i = 0; i < pixelWidths.length; i++) {\n selection += pixelWidths[i];\n }\n paddingTop = that._maxSelection - selection;\n paddingTop += parseFloat(that._trackDiv.css(that._position), 10) + bordersWidth;\n that.wrapper.find('.k-slider-items').css('padding-top', paddingTop);\n }\n },\n _setItemsTitle: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), titleNumber = options.min, count = items.length, i = that._isHorizontal && !that._isRtl ? 0 : count - 1, limit = that._isHorizontal && !that._isRtl ? count : -1, increment = that._isHorizontal && !that._isRtl ? 1 : -1;\n for (; i - limit !== 0; i += increment) {\n $(items[i]).attr('title', format(options.tooltip.format, round(titleNumber)));\n titleNumber += options.smallStep;\n }\n },\n _setItemsLargeTick: function () {\n var that = this, options = that.options, items = that.wrapper.find(TICK_SELECTOR), i = 0, item, value;\n if (removeFraction(options.largeStep) % removeFraction(options.smallStep) === 0 || that._distance / options.largeStep >= 3) {\n if (!that._isHorizontal && !that._isRtl) {\n items = $.makeArray(items).reverse();\n }\n for (i = 0; i < items.length; i++) {\n item = $(items[i]);\n value = that._values[i];\n var valueWithoutFraction = round(removeFraction(value - this.options.min));\n if (valueWithoutFraction % removeFraction(options.smallStep) === 0 && valueWithoutFraction % removeFraction(options.largeStep) === 0) {\n item.addClass('k-tick-large').html('' + item.attr('title') + '');\n if (i !== 0 && i !== items.length - 1) {\n item.css('line-height', item[that._sizeFn]() + 'px');\n }\n }\n }\n }\n },\n _calculateItemsWidth: function (itemsCount) {\n var that = this, options = that.options, trackDivSize = parseFloat(that._trackDiv.css(that._sizeFn)) + 1, pixelStep = trackDivSize / that._distance, itemWidth, pixelWidths, i;\n if (that._distance / options.smallStep - math.floor(that._distance / options.smallStep) > 0) {\n trackDivSize -= that._distance % options.smallStep * pixelStep;\n }\n itemWidth = trackDivSize / itemsCount;\n pixelWidths = [];\n for (i = 0; i < itemsCount - 1; i++) {\n pixelWidths[i] = itemWidth;\n }\n pixelWidths[itemsCount - 1] = pixelWidths[itemsCount] = itemWidth / 2;\n return that._roundWidths(pixelWidths);\n },\n _roundWidths: function (pixelWidthsArray) {\n var balance = 0, count = pixelWidthsArray.length, i;\n for (i = 0; i < count; i++) {\n balance += pixelWidthsArray[i] - math.floor(pixelWidthsArray[i]);\n pixelWidthsArray[i] = math.floor(pixelWidthsArray[i]);\n }\n balance = math.round(balance);\n return this._addAdditionalSize(balance, pixelWidthsArray);\n },\n _addAdditionalSize: function (additionalSize, pixelWidthsArray) {\n if (additionalSize === 0) {\n return pixelWidthsArray;\n }\n var step = parseFloat(pixelWidthsArray.length - 1) / parseFloat(additionalSize == 1 ? additionalSize : additionalSize - 1), i;\n for (i = 0; i < additionalSize; i++) {\n pixelWidthsArray[parseInt(math.round(step * i), 10)] += 1;\n }\n return pixelWidthsArray;\n },\n _calculateSteps: function (pixelWidths) {\n var that = this, options = that.options, val = options.min, selection = 0, itemsCount = math.ceil(that._distance / options.smallStep), i = 1, lastItem;\n itemsCount += that._distance / options.smallStep % 1 === 0 ? 1 : 0;\n pixelWidths.splice(0, 0, pixelWidths[itemsCount - 2] * 2);\n pixelWidths.splice(itemsCount - 1, 1, pixelWidths.pop() * 2);\n that._pixelSteps = [selection];\n that._values = [val];\n if (itemsCount === 0) {\n return;\n }\n while (i < itemsCount) {\n selection += (pixelWidths[i - 1] + pixelWidths[i]) / 2;\n that._pixelSteps[i] = selection;\n val += options.smallStep;\n that._values[i] = round(val);\n i++;\n }\n lastItem = that._distance % options.smallStep === 0 ? itemsCount - 1 : itemsCount;\n that._pixelSteps[lastItem] = that._maxSelection;\n that._values[lastItem] = options.max;\n if (that._isRtl) {\n that._pixelSteps.reverse();\n that._values.reverse();\n }\n },\n _getValueFromPosition: function (mousePosition, dragableArea) {\n var that = this, options = that.options, step = math.max(options.smallStep * (that._maxSelection / that._distance), 0), position = 0, halfStep = step / 2, i;\n if (that._isHorizontal) {\n position = mousePosition - dragableArea.startPoint;\n if (that._isRtl) {\n position = that._maxSelection - position;\n }\n } else {\n position = dragableArea.startPoint - mousePosition;\n }\n if (that._maxSelection - (parseInt(that._maxSelection % step, 10) - 3) / 2 < position) {\n return options.max;\n }\n for (i = 0; i < that._pixelSteps.length; i++) {\n if (math.abs(that._pixelSteps[i] - position) - 1 <= halfStep) {\n return round(that._values[i]);\n }\n }\n },\n _getFormattedValue: function (val, drag) {\n var that = this, html = '', tooltip = that.options.tooltip, tooltipTemplate, selectionStart, selectionEnd;\n if (isArray(val)) {\n selectionStart = val[0];\n selectionEnd = val[1];\n } else if (drag && drag.type) {\n selectionStart = drag.selectionStart;\n selectionEnd = drag.selectionEnd;\n }\n if (drag) {\n tooltipTemplate = drag.tooltipTemplate;\n }\n if (!tooltipTemplate && tooltip.template) {\n tooltipTemplate = kendo.template(tooltip.template);\n }\n if (isArray(val) || drag && drag.type) {\n if (tooltipTemplate) {\n html = tooltipTemplate({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd\n });\n } else {\n selectionStart = format(tooltip.format, selectionStart);\n selectionEnd = format(tooltip.format, selectionEnd);\n html = selectionStart + ' - ' + selectionEnd;\n }\n } else {\n if (drag) {\n drag.val = val;\n }\n if (tooltipTemplate) {\n html = tooltipTemplate({ value: val });\n } else {\n html = format(tooltip.format, val);\n }\n }\n return html;\n },\n _getDraggableArea: function () {\n var that = this, offset = kendo.getOffset(that._trackDiv);\n return {\n startPoint: that._isHorizontal ? offset.left : offset.top + that._maxSelection,\n endPoint: that._isHorizontal ? offset.left + that._maxSelection : offset.top\n };\n },\n _createHtml: function () {\n var that = this, element = that.element, options = that.options, inputs = element.find('input');\n if (inputs.length == 2) {\n inputs.eq(0).prop('value', formatValue(options.selectionStart));\n inputs.eq(1).prop('value', formatValue(options.selectionEnd));\n } else {\n element.prop('value', formatValue(options.value));\n }\n element.wrap(createWrapper(options, element, that._isHorizontal)).hide();\n if (options.showButtons) {\n element.before(createButton(options, 'increase', that._isHorizontal)).before(createButton(options, 'decrease', that._isHorizontal));\n }\n element.before(createTrack(options, element));\n },\n _focus: function (e) {\n var that = this, target = e.target, val = that.value(), drag = that._drag;\n if (!drag) {\n if (target == that.wrapper.find(DRAG_HANDLE).eq(0)[0]) {\n drag = that._firstHandleDrag;\n that._activeHandle = 0;\n } else {\n drag = that._lastHandleDrag;\n that._activeHandle = 1;\n }\n val = val[that._activeHandle];\n }\n $(target).addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n that._activeHandleDrag = drag;\n drag.selectionStart = that.options.selectionStart;\n drag.selectionEnd = that.options.selectionEnd;\n drag._updateTooltip(val);\n }\n },\n _focusWithMouse: function (target) {\n target = $(target);\n var that = this, idx = target.is(DRAG_HANDLE) ? target.index() : 0;\n window.setTimeout(function () {\n that.wrapper.find(DRAG_HANDLE)[idx == 2 ? 1 : 0].focus();\n }, 1);\n that._setTooltipTimeout();\n },\n _blur: function (e) {\n var that = this, drag = that._activeHandleDrag;\n $(e.target).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n if (drag) {\n drag._removeTooltip();\n delete that._activeHandleDrag;\n delete that._activeHandle;\n }\n },\n _setTooltipTimeout: function () {\n var that = this;\n that._tooltipTimeout = window.setTimeout(function () {\n var drag = that._drag || that._activeHandleDrag;\n if (drag) {\n drag._removeTooltip();\n }\n }, 300);\n },\n _clearTooltipTimeout: function () {\n var that = this;\n window.clearTimeout(this._tooltipTimeout);\n var drag = that._drag || that._activeHandleDrag;\n if (drag && drag.tooltipDiv) {\n drag.tooltipDiv.stop(true, false).css('opacity', 1);\n }\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._form = form.on('reset', proxy(that._formResetHandler, that));\n }\n },\n destroy: function () {\n if (this._form) {\n this._form.off('reset', this._formResetHandler);\n }\n Widget.fn.destroy.call(this);\n }\n });\n function createWrapper(options, element, isHorizontal) {\n var orientationCssClass = isHorizontal ? ' k-slider-horizontal' : ' k-slider-vertical', style = options.style ? options.style : element.attr('style'), cssClasses = element.attr('class') ? ' ' + element.attr('class') : '', tickPlacementCssClass = '';\n if (options.tickPlacement == 'bottomRight') {\n tickPlacementCssClass = ' k-slider-bottomright';\n } else if (options.tickPlacement == 'topLeft') {\n tickPlacementCssClass = ' k-slider-topleft';\n }\n style = style ? ' style=\\'' + style + '\\'' : '';\n return '
              ' + '
              ';\n }\n function createButton(options, type, isHorizontal) {\n var buttonCssClass = '';\n if (type == 'increase') {\n buttonCssClass = isHorizontal ? 'k-i-arrow-e' : 'k-i-arrow-n';\n } else {\n buttonCssClass = isHorizontal ? 'k-i-arrow-w' : 'k-i-arrow-s';\n }\n return '' + options[type + 'ButtonTitle'] + '';\n }\n function createSliderItems(options, distance) {\n var result = '
                ', count = math.floor(round(distance / options.smallStep)) + 1, i;\n for (i = 0; i < count; i++) {\n result += '
              •  
              • ';\n }\n result += '
              ';\n return result;\n }\n function createTrack(options, element) {\n var dragHandleCount = element.is('input') ? 1 : 2, firstDragHandleTitle = dragHandleCount == 2 ? options.leftDragHandleTitle : options.dragHandleTitle;\n return '';\n }\n function step(stepValue) {\n return function (value) {\n return value + stepValue;\n };\n }\n function setValue(value) {\n return function () {\n return value;\n };\n }\n function formatValue(value) {\n return (value + '').replace('.', kendo.cultures.current.numberFormat['.']);\n }\n function calculatePrecision(value) {\n var number = value.toString();\n var precision = 0;\n number = number.split('.');\n if (number[1]) {\n precision = number[1].length;\n }\n precision = precision > 10 ? 10 : precision;\n return precision;\n }\n function round(value) {\n var precision, power;\n value = parseFloat(value, 10);\n precision = calculatePrecision(value);\n power = math.pow(10, precision || 0);\n return math.round(value * power) / power;\n }\n function parseAttr(element, name) {\n var value = parse(element.getAttribute(name));\n if (value === null) {\n value = undefined;\n }\n return value;\n }\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function removeFraction(value) {\n return value * 10000;\n }\n var Slider = SliderBase.extend({\n init: function (element, options) {\n var that = this, dragHandle;\n element.type = 'text';\n options = extend({}, {\n value: parseAttr(element, 'value'),\n min: parseAttr(element, 'min'),\n max: parseAttr(element, 'max'),\n smallStep: parseAttr(element, 'step')\n }, options);\n element = $(element);\n if (options && options.enabled === undefined) {\n options.enabled = !element.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.value) || options.value === null) {\n options.value = options.min;\n element.prop('value', formatValue(options.min));\n }\n options.value = math.max(math.min(options.value, options.max), options.min);\n dragHandle = that.wrapper.find(DRAG_HANDLE);\n this._selection = new Slider.Selection(dragHandle, that, options);\n that._drag = new Slider.Drag(dragHandle, '', that, options);\n },\n options: {\n name: 'Slider',\n showButtons: true,\n increaseButtonTitle: 'Increase',\n decreaseButtonTitle: 'Decrease',\n dragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n value: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler, move;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), target = $(e.target);\n if (target.hasClass('k-draghandle')) {\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n that._update(that._getValueFromPosition(mousePosition, dragableArea));\n that._focusWithMouse(e.target);\n that._drag.dragstart(e);\n e.preventDefault();\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n that._drag._end();\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n move = proxy(function (sign) {\n var newVal = that._nextValueByIndex(that._valueIndex + sign * 1);\n that._setValueInRange(newVal);\n that._drag._updateTooltip(newVal);\n }, that);\n if (options.showButtons) {\n var mouseDownHandler = proxy(function (e, sign) {\n this._clearTooltipTimeout();\n if (e.which === 1 || support.touch && e.which === 0) {\n move(sign);\n this.timeout = setTimeout(proxy(function () {\n this.timer = setInterval(function () {\n move(sign);\n }, 60);\n }, this), 200);\n }\n }, that);\n that.wrapper.find('.k-button').on(MOUSE_UP, proxy(function (e) {\n this._clearTimer();\n that._focusWithMouse(e.target);\n }, that)).on(MOUSE_OVER, function (e) {\n $(e.currentTarget).addClass('k-state-hover');\n }).on('mouseout' + NS, proxy(function (e) {\n $(e.currentTarget).removeClass('k-state-hover');\n this._clearTimer();\n }, that)).eq(0).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, 1);\n }, that)).click(false).end().eq(1).on(MOUSE_DOWN, proxy(function (e) {\n mouseDownHandler(e, -1);\n }, that)).click(kendo.preventDefault);\n }\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, false).on(KEY_DOWN, proxy(this._keydown, that));\n options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n $(that.element).prop(DISABLED, DISABLED);\n that.wrapper.find('.k-button').off(MOUSE_DOWN).on(MOUSE_DOWN, kendo.preventDefault).off(MOUSE_UP).on(MOUSE_UP, kendo.preventDefault).off('mouseleave' + NS).on('mouseleave' + NS, kendo.preventDefault).off(MOUSE_OVER).on(MOUSE_OVER, kendo.preventDefault);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _update: function (val) {\n var that = this, change = that.value() != val;\n that.value(val);\n if (change) {\n that.trigger(CHANGE, { value: that.options.value });\n }\n },\n value: function (value) {\n var that = this, options = that.options;\n value = round(value);\n if (isNaN(value)) {\n return options.value;\n }\n if (value >= options.min && value <= options.max) {\n if (options.value != value) {\n that.element.prop('value', formatValue(value));\n options.value = value;\n that._refreshAriaAttr(value);\n that._refresh();\n }\n }\n },\n _refresh: function () {\n this.trigger(MOVE_SELECTION, { value: this.options.value });\n },\n _refreshAriaAttr: function (value) {\n var that = this, drag = that._drag, formattedValue;\n if (drag && drag._tooltipDiv) {\n formattedValue = drag._tooltipDiv.text();\n } else {\n formattedValue = that._getFormattedValue(value, null);\n }\n this.wrapper.find(DRAG_HANDLE).attr('aria-valuenow', value).attr('aria-valuetext', formattedValue);\n },\n _clearTimer: function () {\n clearTimeout(this.timeout);\n clearInterval(this.timer);\n },\n _keydown: function (e) {\n var that = this;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n that._setValueInRange(that._keyMap[e.keyCode](that.options.value));\n that._drag._updateTooltip(that.value());\n e.preventDefault();\n }\n },\n _setValueInRange: function (val) {\n var that = this, options = that.options;\n val = round(val);\n if (isNaN(val)) {\n that._update(options.min);\n return;\n }\n val = math.max(math.min(val, options.max), options.min);\n that._update(val);\n },\n _nextValueByIndex: function (index) {\n var count = this._values.length;\n if (this._isRtl) {\n index = count - 1 - index;\n }\n return this._values[math.max(0, math.min(index, count - 1))];\n },\n _formResetHandler: function () {\n var that = this, min = that.options.min;\n setTimeout(function () {\n var value = that.element[0].value;\n that.value(value === '' || isNaN(value) ? min : value);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find('.k-button').off(NS).end().find(DRAG_HANDLE).off(NS).end().find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end();\n that._drag.draggable.destroy();\n that._drag._removeTooltip(true);\n }\n });\n Slider.Selection = function (dragHandle, that, options) {\n function moveSelection(val) {\n var selectionValue = val - options.min, index = that._valueIndex = math.ceil(round(selectionValue / options.smallStep)), selection = parseInt(that._pixelSteps[index], 10), selectionDiv = that._trackDiv.find('.k-slider-selection'), halfDragHanndle = parseInt(dragHandle[that._outerSize]() / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n selectionDiv[that._sizeFn](that._isRtl ? that._maxSelection - selection : selection);\n dragHandle.css(that._position, selection - halfDragHanndle - rtlCorrection);\n }\n moveSelection(options.value);\n that.bind([\n CHANGE,\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(parseFloat(e.value, 10));\n });\n };\n Slider.Drag = function (element, type, owner, options) {\n var that = this;\n that.owner = owner;\n that.options = options;\n that.element = element;\n that.type = type;\n that.draggable = new Draggable(element, {\n distance: 0,\n dragstart: proxy(that._dragstart, that),\n drag: proxy(that.drag, that),\n dragend: proxy(that.dragend, that),\n dragcancel: proxy(that.dragcancel, that)\n });\n element.click(false);\n };\n Slider.Drag.prototype = {\n dragstart: function (e) {\n this.owner._activeDragHandle = this;\n this.draggable.userEvents.cancel();\n this._dragstart(e);\n this.dragend();\n },\n _dragstart: function (e) {\n var that = this, owner = that.owner, options = that.options;\n if (!options.enabled) {\n e.preventDefault();\n return;\n }\n this.owner._activeDragHandle = this;\n owner.element.off(MOUSE_OVER);\n owner.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n that.element.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n $(document.documentElement).css('cursor', 'pointer');\n that.dragableArea = owner._getDraggableArea();\n that.step = math.max(options.smallStep * (owner._maxSelection / owner._distance), 0);\n if (that.type) {\n that.selectionStart = options.selectionStart;\n that.selectionEnd = options.selectionEnd;\n owner._setZIndex(that.type);\n } else {\n that.oldVal = that.val = options.value;\n }\n that._removeTooltip(true);\n that._createTooltip();\n },\n _createTooltip: function () {\n var that = this, owner = that.owner, tooltip = that.options.tooltip, html = '', wnd = $(window), tooltipTemplate, colloutCssClass;\n if (!tooltip.enabled) {\n return;\n }\n if (tooltip.template) {\n tooltipTemplate = that.tooltipTemplate = kendo.template(tooltip.template);\n }\n $('.k-slider-tooltip').remove();\n that.tooltipDiv = $('
              ').appendTo(document.body);\n html = owner._getFormattedValue(that.val || owner.value(), that);\n if (!that.type) {\n colloutCssClass = 'k-callout-' + (owner._isHorizontal ? 's' : 'e');\n that.tooltipInnerDiv = '
              ';\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that._scrollOffset = {\n top: wnd.scrollTop(),\n left: wnd.scrollLeft()\n };\n that.moveTooltip();\n },\n drag: function (e) {\n var that = this, owner = that.owner, x = e.x.location, y = e.y.location, startPoint = that.dragableArea.startPoint, endPoint = that.dragableArea.endPoint, slideParams;\n e.preventDefault();\n if (owner._isHorizontal) {\n if (owner._isRtl) {\n that.val = that.constrainValue(x, startPoint, endPoint, x < endPoint);\n } else {\n that.val = that.constrainValue(x, startPoint, endPoint, x >= endPoint);\n }\n } else {\n that.val = that.constrainValue(y, endPoint, startPoint, y <= endPoint);\n }\n if (that.oldVal != that.val) {\n that.oldVal = that.val;\n if (that.type) {\n if (that.type == 'firstHandle') {\n if (that.val < that.selectionEnd) {\n that.selectionStart = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n } else {\n if (that.val > that.selectionStart) {\n that.selectionEnd = that.val;\n } else {\n that.selectionStart = that.selectionEnd = that.val;\n }\n }\n slideParams = {\n values: [\n that.selectionStart,\n that.selectionEnd\n ],\n value: [\n that.selectionStart,\n that.selectionEnd\n ]\n };\n } else {\n slideParams = { value: that.val };\n }\n owner.trigger(SLIDE, slideParams);\n }\n that._updateTooltip(that.val);\n },\n _updateTooltip: function (val) {\n var that = this, options = that.options, tooltip = options.tooltip, html = '';\n if (!tooltip.enabled) {\n return;\n }\n if (!that.tooltipDiv) {\n that._createTooltip();\n }\n html = that.owner._getFormattedValue(round(val), that);\n if (!that.type) {\n html += that.tooltipInnerDiv;\n }\n that.tooltipDiv.html(html);\n that.moveTooltip();\n },\n dragcancel: function () {\n this.owner._refresh();\n $(document.documentElement).css('cursor', '');\n return this._end();\n },\n dragend: function () {\n var that = this, owner = that.owner;\n $(document.documentElement).css('cursor', '');\n if (that.type) {\n owner._update(that.selectionStart, that.selectionEnd);\n } else {\n owner._update(that.val);\n that.draggable.userEvents._disposeAll();\n }\n that.draggable.userEvents.cancel();\n return that._end();\n },\n _end: function () {\n var that = this, owner = that.owner;\n owner._focusWithMouse(that.element);\n owner.element.on(MOUSE_OVER);\n return false;\n },\n _removeTooltip: function (noAnimation) {\n var that = this, owner = that.owner;\n if (that.tooltipDiv && owner.options.tooltip.enabled && owner.options.enabled) {\n if (noAnimation) {\n that.tooltipDiv.remove();\n that.tooltipDiv = null;\n } else {\n that.tooltipDiv.fadeOut('slow', function () {\n $(this).remove();\n that.tooltipDiv = null;\n });\n }\n }\n },\n moveTooltip: function () {\n var that = this, owner = that.owner, top = 0, left = 0, element = that.element, offset = kendo.getOffset(element), margin = 8, viewport = $(window), callout = that.tooltipDiv.find('.k-callout'), width = that.tooltipDiv.outerWidth(), height = that.tooltipDiv.outerHeight(), dragHandles, sdhOffset, diff, anchorSize;\n if (that.type) {\n dragHandles = owner.wrapper.find(DRAG_HANDLE);\n offset = kendo.getOffset(dragHandles.eq(0));\n sdhOffset = kendo.getOffset(dragHandles.eq(1));\n if (owner._isHorizontal) {\n top = sdhOffset.top;\n left = offset.left + (sdhOffset.left - offset.left) / 2;\n } else {\n top = offset.top + (sdhOffset.top - offset.top) / 2;\n left = sdhOffset.left;\n }\n anchorSize = dragHandles.eq(0).outerWidth() + 2 * margin;\n } else {\n top = offset.top;\n left = offset.left;\n anchorSize = element.outerWidth() + 2 * margin;\n }\n if (owner._isHorizontal) {\n left -= parseInt((width - element[owner._outerSize]()) / 2, 10);\n top -= height + callout.height() + margin;\n } else {\n top -= parseInt((height - element[owner._outerSize]()) / 2, 10);\n left -= width + callout.width() + margin;\n }\n if (owner._isHorizontal) {\n diff = that._flip(top, height, anchorSize, viewport.outerHeight() + that._scrollOffset.top);\n top += diff;\n left += that._fit(left, width, viewport.outerWidth() + that._scrollOffset.left);\n } else {\n diff = that._flip(left, width, anchorSize, viewport.outerWidth() + that._scrollOffset.left);\n top += that._fit(top, height, viewport.outerHeight() + that._scrollOffset.top);\n left += diff;\n }\n if (diff > 0 && callout) {\n callout.removeClass();\n callout.addClass('k-callout k-callout-' + (owner._isHorizontal ? 'n' : 'w'));\n }\n that.tooltipDiv.css({\n top: top,\n left: left\n });\n },\n _fit: function (position, size, viewPortEnd) {\n var output = 0;\n if (position + size > viewPortEnd) {\n output = viewPortEnd - (position + size);\n }\n if (position < 0) {\n output = -position;\n }\n return output;\n },\n _flip: function (offset, size, anchorSize, viewPortEnd) {\n var output = 0;\n if (offset + size > viewPortEnd) {\n output += -(anchorSize + size);\n }\n if (offset + output < 0) {\n output += anchorSize + size;\n }\n return output;\n },\n constrainValue: function (position, min, max, maxOverflow) {\n var that = this, val = 0;\n if (min < position && position < max) {\n val = that.owner._getValueFromPosition(position, that.dragableArea);\n } else {\n if (maxOverflow) {\n val = that.options.max;\n } else {\n val = that.options.min;\n }\n }\n return val;\n }\n };\n kendo.ui.plugin(Slider);\n var RangeSlider = SliderBase.extend({\n init: function (element, options) {\n var that = this, inputs = $(element).find('input'), firstInput = inputs.eq(0)[0], secondInput = inputs.eq(1)[0];\n firstInput.type = 'text';\n secondInput.type = 'text';\n if (options && options.showButtons) {\n if (window.console) {\n window.console.warn('showbuttons option is not supported for the range slider, ignoring');\n }\n options.showButtons = false;\n }\n options = extend({}, {\n selectionStart: parseAttr(firstInput, 'value'),\n min: parseAttr(firstInput, 'min'),\n max: parseAttr(firstInput, 'max'),\n smallStep: parseAttr(firstInput, 'step')\n }, {\n selectionEnd: parseAttr(secondInput, 'value'),\n min: parseAttr(secondInput, 'min'),\n max: parseAttr(secondInput, 'max'),\n smallStep: parseAttr(secondInput, 'step')\n }, options);\n if (options && options.enabled === undefined) {\n options.enabled = !inputs.is('[disabled]');\n }\n SliderBase.fn.init.call(that, element, options);\n options = that.options;\n if (!defined(options.selectionStart) || options.selectionStart === null) {\n options.selectionStart = options.min;\n inputs.eq(0).prop('value', formatValue(options.min));\n }\n if (!defined(options.selectionEnd) || options.selectionEnd === null) {\n options.selectionEnd = options.max;\n inputs.eq(1).prop('value', formatValue(options.max));\n }\n var dragHandles = that.wrapper.find(DRAG_HANDLE);\n this._selection = new RangeSlider.Selection(dragHandles, that, options);\n that._firstHandleDrag = new Slider.Drag(dragHandles.eq(0), 'firstHandle', that, options);\n that._lastHandleDrag = new Slider.Drag(dragHandles.eq(1), 'lastHandle', that, options);\n },\n options: {\n name: 'RangeSlider',\n leftDragHandleTitle: 'drag',\n rightDragHandleTitle: 'drag',\n tooltip: { format: '{0:#,#.##}' },\n selectionStart: null,\n selectionEnd: null\n },\n enable: function (enable) {\n var that = this, options = that.options, clickHandler;\n that.disable();\n if (enable === false) {\n return;\n }\n that.wrapper.removeClass(STATE_DISABLED).addClass(STATE_DEFAULT);\n that.wrapper.find('input').removeAttr(DISABLED);\n clickHandler = function (e) {\n var touch = getTouches(e)[0];\n if (!touch) {\n return;\n }\n var mousePosition = that._isHorizontal ? touch.location.pageX : touch.location.pageY, dragableArea = that._getDraggableArea(), val = that._getValueFromPosition(mousePosition, dragableArea), target = $(e.target), from, to, drag;\n if (target.hasClass('k-draghandle')) {\n that.wrapper.find('.' + STATE_FOCUSED).removeClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n target.addClass(STATE_FOCUSED + ' ' + STATE_SELECTED);\n return;\n }\n if (val < options.selectionStart) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else if (val > that.selectionEnd) {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n } else {\n if (val - options.selectionStart <= options.selectionEnd - val) {\n from = val;\n to = options.selectionEnd;\n drag = that._firstHandleDrag;\n } else {\n from = options.selectionStart;\n to = val;\n drag = that._lastHandleDrag;\n }\n }\n drag.dragstart(e);\n that._setValueInRange(from, to);\n that._focusWithMouse(drag.element);\n };\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).on(TRACK_MOUSE_DOWN, clickHandler).end().on(TRACK_MOUSE_DOWN, function () {\n $(document.documentElement).one('selectstart', kendo.preventDefault);\n }).on(TRACK_MOUSE_UP, function () {\n if (that._activeDragHandle) {\n that._activeDragHandle._end();\n }\n });\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, 0).on(MOUSE_UP, function () {\n that._setTooltipTimeout();\n }).on(CLICK, function (e) {\n that._focusWithMouse(e.target);\n e.preventDefault();\n }).on(FOCUS, proxy(that._focus, that)).on(BLUR, proxy(that._blur, that));\n that.wrapper.find(DRAG_HANDLE).off(KEY_DOWN, kendo.preventDefault).eq(0).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'firstHandle');\n }, that)).end().eq(1).on(KEY_DOWN, proxy(function (e) {\n this._keydown(e, 'lastHandle');\n }, that));\n that.options.enabled = true;\n },\n disable: function () {\n var that = this;\n that.wrapper.removeClass(STATE_DEFAULT).addClass(STATE_DISABLED);\n that.wrapper.find('input').prop(DISABLED, DISABLED);\n that.wrapper.find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(TRACK_MOUSE_DOWN).off(TRACK_MOUSE_UP);\n that.wrapper.find(DRAG_HANDLE).attr(TABINDEX, -1).off(MOUSE_UP).off(KEY_DOWN).off(CLICK).off(FOCUS).off(BLUR);\n that.options.enabled = false;\n },\n _keydown: function (e, handle) {\n var that = this, selectionStartValue = that.options.selectionStart, selectionEndValue = that.options.selectionEnd, dragSelectionStart, dragSelectionEnd, activeHandleDrag;\n if (e.keyCode in that._keyMap) {\n that._clearTooltipTimeout();\n if (handle == 'firstHandle') {\n activeHandleDrag = that._activeHandleDrag = that._firstHandleDrag;\n selectionStartValue = that._keyMap[e.keyCode](selectionStartValue);\n if (selectionStartValue > selectionEndValue) {\n selectionEndValue = selectionStartValue;\n }\n } else {\n activeHandleDrag = that._activeHandleDrag = that._lastHandleDrag;\n selectionEndValue = that._keyMap[e.keyCode](selectionEndValue);\n if (selectionStartValue > selectionEndValue) {\n selectionStartValue = selectionEndValue;\n }\n }\n that._setValueInRange(round(selectionStartValue), round(selectionEndValue));\n dragSelectionStart = Math.max(selectionStartValue, that.options.selectionStart);\n dragSelectionEnd = Math.min(selectionEndValue, that.options.selectionEnd);\n activeHandleDrag.selectionEnd = Math.max(dragSelectionEnd, that.options.selectionStart);\n activeHandleDrag.selectionStart = Math.min(dragSelectionStart, that.options.selectionEnd);\n activeHandleDrag._updateTooltip(that.value()[that._activeHandle]);\n e.preventDefault();\n }\n },\n _update: function (selectionStart, selectionEnd) {\n var that = this, values = that.value();\n var change = values[0] != selectionStart || values[1] != selectionEnd;\n that.value([\n selectionStart,\n selectionEnd\n ]);\n if (change) {\n that.trigger(CHANGE, {\n values: [\n selectionStart,\n selectionEnd\n ],\n value: [\n selectionStart,\n selectionEnd\n ]\n });\n }\n },\n value: function (value) {\n if (value && value.length) {\n return this._value(value[0], value[1]);\n } else {\n return this._value();\n }\n },\n _value: function (start, end) {\n var that = this, options = that.options, selectionStart = options.selectionStart, selectionEnd = options.selectionEnd;\n if (isNaN(start) && isNaN(end)) {\n return [\n selectionStart,\n selectionEnd\n ];\n } else {\n start = round(start);\n end = round(end);\n }\n if (start >= options.min && start <= options.max && end >= options.min && end <= options.max && start <= end) {\n if (selectionStart != start || selectionEnd != end) {\n that.element.find('input').eq(0).prop('value', formatValue(start)).end().eq(1).prop('value', formatValue(end));\n options.selectionStart = start;\n options.selectionEnd = end;\n that._refresh();\n that._refreshAriaAttr(start, end);\n }\n }\n },\n values: function (start, end) {\n if (isArray(start)) {\n return this._value(start[0], start[1]);\n } else {\n return this._value(start, end);\n }\n },\n _refresh: function () {\n var that = this, options = that.options;\n that.trigger(MOVE_SELECTION, {\n values: [\n options.selectionStart,\n options.selectionEnd\n ],\n value: [\n options.selectionStart,\n options.selectionEnd\n ]\n });\n if (options.selectionStart == options.max && options.selectionEnd == options.max) {\n that._setZIndex('firstHandle');\n }\n },\n _refreshAriaAttr: function (start, end) {\n var that = this, dragHandles = that.wrapper.find(DRAG_HANDLE), drag = that._activeHandleDrag, formattedValue;\n formattedValue = that._getFormattedValue([\n start,\n end\n ], drag);\n dragHandles.eq(0).attr('aria-valuenow', start);\n dragHandles.eq(1).attr('aria-valuenow', end);\n dragHandles.attr('aria-valuetext', formattedValue);\n },\n _setValueInRange: function (selectionStart, selectionEnd) {\n var options = this.options;\n selectionStart = math.max(math.min(selectionStart, options.max), options.min);\n selectionEnd = math.max(math.min(selectionEnd, options.max), options.min);\n if (selectionStart == options.max && selectionEnd == options.max) {\n this._setZIndex('firstHandle');\n }\n this._update(math.min(selectionStart, selectionEnd), math.max(selectionStart, selectionEnd));\n },\n _setZIndex: function (type) {\n this.wrapper.find(DRAG_HANDLE).each(function (index) {\n $(this).css('z-index', type == 'firstHandle' ? 1 - index : index);\n });\n },\n _formResetHandler: function () {\n var that = this, options = that.options;\n setTimeout(function () {\n var inputs = that.element.find('input');\n var start = inputs[0].value;\n var end = inputs[1].value;\n that.values(start === '' || isNaN(start) ? options.min : start, end === '' || isNaN(end) ? options.max : end);\n });\n },\n destroy: function () {\n var that = this;\n SliderBase.fn.destroy.call(that);\n that.wrapper.off(NS).find(TICK_SELECTOR + ', ' + TRACK_SELECTOR).off(NS).end().find(DRAG_HANDLE).off(NS);\n that._firstHandleDrag.draggable.destroy();\n that._lastHandleDrag.draggable.destroy();\n }\n });\n RangeSlider.Selection = function (dragHandles, that, options) {\n function moveSelection(value) {\n value = value || [];\n var selectionStartValue = value[0] - options.min, selectionEndValue = value[1] - options.min, selectionStartIndex = math.ceil(round(selectionStartValue / options.smallStep)), selectionEndIndex = math.ceil(round(selectionEndValue / options.smallStep)), selectionStart = that._pixelSteps[selectionStartIndex], selectionEnd = that._pixelSteps[selectionEndIndex], halfHandle = parseInt(dragHandles.eq(0)[that._outerSize]() / 2, 10), rtlCorrection = that._isRtl ? 2 : 0;\n dragHandles.eq(0).css(that._position, selectionStart - halfHandle - rtlCorrection).end().eq(1).css(that._position, selectionEnd - halfHandle - rtlCorrection);\n makeSelection(selectionStart, selectionEnd);\n }\n function makeSelection(selectionStart, selectionEnd) {\n var selection, selectionPosition, selectionDiv = that._trackDiv.find('.k-slider-selection');\n selection = math.abs(selectionStart - selectionEnd);\n selectionDiv[that._sizeFn](selection);\n if (that._isRtl) {\n selectionPosition = math.max(selectionStart, selectionEnd);\n selectionDiv.css('right', that._maxSelection - selectionPosition - 1);\n } else {\n selectionPosition = math.min(selectionStart, selectionEnd);\n selectionDiv.css(that._position, selectionPosition - 1);\n }\n }\n moveSelection(that.value());\n that.bind([\n CHANGE,\n SLIDE,\n MOVE_SELECTION\n ], function (e) {\n moveSelection(e.values);\n });\n };\n kendo.ui.plugin(RangeSlider);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.colorpicker', [\n 'kendo.core',\n 'kendo.color',\n 'kendo.popup',\n 'kendo.slider',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'colorpicker',\n name: 'Color tools',\n category: 'web',\n description: 'Color selection widgets',\n depends: [\n 'core',\n 'color',\n 'popup',\n 'slider',\n 'userevents'\n ]\n };\n (function ($, parseInt, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, parseColor = kendo.parseColor, Color = kendo.Color, KEYS = kendo.keys, BACKGROUNDCOLOR = 'background-color', ITEMSELECTEDCLASS = 'k-state-selected', SIMPLEPALETTE = '000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7', WEBPALETTE = 'FFFFFF,FFCCFF,FF99FF,FF66FF,FF33FF,FF00FF,CCFFFF,CCCCFF,CC99FF,CC66FF,CC33FF,CC00FF,99FFFF,99CCFF,9999FF,9966FF,9933FF,9900FF,FFFFCC,FFCCCC,FF99CC,FF66CC,FF33CC,FF00CC,CCFFCC,CCCCCC,CC99CC,CC66CC,CC33CC,CC00CC,99FFCC,99CCCC,9999CC,9966CC,9933CC,9900CC,FFFF99,FFCC99,FF9999,FF6699,FF3399,FF0099,CCFF99,CCCC99,CC9999,CC6699,CC3399,CC0099,99FF99,99CC99,999999,996699,993399,990099,FFFF66,FFCC66,FF9966,FF6666,FF3366,FF0066,CCFF66,CCCC66,CC9966,CC6666,CC3366,CC0066,99FF66,99CC66,999966,996666,993366,990066,FFFF33,FFCC33,FF9933,FF6633,FF3333,FF0033,CCFF33,CCCC33,CC9933,CC6633,CC3333,CC0033,99FF33,99CC33,999933,996633,993333,990033,FFFF00,FFCC00,FF9900,FF6600,FF3300,FF0000,CCFF00,CCCC00,CC9900,CC6600,CC3300,CC0000,99FF00,99CC00,999900,996600,993300,990000,66FFFF,66CCFF,6699FF,6666FF,6633FF,6600FF,33FFFF,33CCFF,3399FF,3366FF,3333FF,3300FF,00FFFF,00CCFF,0099FF,0066FF,0033FF,0000FF,66FFCC,66CCCC,6699CC,6666CC,6633CC,6600CC,33FFCC,33CCCC,3399CC,3366CC,3333CC,3300CC,00FFCC,00CCCC,0099CC,0066CC,0033CC,0000CC,66FF99,66CC99,669999,666699,663399,660099,33FF99,33CC99,339999,336699,333399,330099,00FF99,00CC99,009999,006699,003399,000099,66FF66,66CC66,669966,666666,663366,660066,33FF66,33CC66,339966,336666,333366,330066,00FF66,00CC66,009966,006666,003366,000066,66FF33,66CC33,669933,666633,663333,660033,33FF33,33CC33,339933,336633,333333,330033,00FF33,00CC33,009933,006633,003333,000033,66FF00,66CC00,669900,666600,663300,660000,33FF00,33CC00,339900,336600,333300,330000,00FF00,00CC00,009900,006600,003300,000000', APPLY_CANCEL = {\n apply: 'Apply',\n cancel: 'Cancel'\n }, NS = '.kendoColorTools', CLICK_NS = 'click' + NS, KEYDOWN_NS = 'keydown' + NS, browser = kendo.support.browser, isIE8 = browser.msie && browser.version < 9;\n var ColorSelector = Widget.extend({\n init: function (element, options) {\n var that = this, ariaId;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._value = options.value = parseColor(options.value);\n that._tabIndex = element.attr('tabIndex') || 0;\n ariaId = that._ariaId = options.ariaId;\n if (ariaId) {\n element.attr('aria-labelledby', ariaId);\n }\n if (options._standalone) {\n that._triggerSelect = that._triggerChange;\n }\n },\n options: {\n name: 'ColorSelector',\n value: null,\n _standalone: true\n },\n events: [\n 'change',\n 'select',\n 'cancel'\n ],\n color: function (value) {\n if (value !== undefined) {\n this._value = parseColor(value);\n this._updateUI(this._value);\n }\n return this._value;\n },\n value: function (color) {\n color = this.color(color);\n if (color) {\n if (this.options.opacity) {\n color = color.toCssRgba();\n } else {\n color = color.toCss();\n }\n }\n return color || null;\n },\n enable: function (enable) {\n if (arguments.length === 0) {\n enable = true;\n }\n $('.k-disabled-overlay', this.wrapper).remove();\n if (!enable) {\n this.wrapper.append('
              ');\n }\n this._onEnable(enable);\n },\n _select: function (color, nohooks) {\n var prev = this._value;\n color = this.color(color);\n if (!nohooks) {\n this.element.trigger('change');\n if (!color.equals(prev)) {\n this.trigger('change', { value: this.value() });\n } else if (!this._standalone) {\n this.trigger('cancel');\n }\n }\n },\n _triggerSelect: function (color) {\n triggerEvent(this, 'select', color);\n },\n _triggerChange: function (color) {\n triggerEvent(this, 'change', color);\n },\n destroy: function () {\n if (this.element) {\n this.element.off(NS);\n }\n if (this.wrapper) {\n this.wrapper.off(NS).find('*').off(NS);\n }\n this.wrapper = null;\n Widget.fn.destroy.call(this);\n },\n _updateUI: $.noop,\n _selectOnHide: function () {\n return null;\n },\n _cancel: function () {\n this.trigger('cancel');\n }\n });\n function triggerEvent(self, type, color) {\n color = parseColor(color);\n if (color && !color.equals(self.color())) {\n if (type == 'change') {\n self._value = color;\n }\n if (color.a != 1) {\n color = color.toCssRgba();\n } else {\n color = color.toCss();\n }\n self.trigger(type, { value: color });\n }\n }\n var ColorPalette = ColorSelector.extend({\n init: function (element, options) {\n var that = this;\n ColorSelector.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n var colors = options.palette;\n if (colors == 'websafe') {\n colors = WEBPALETTE;\n options.columns = 18;\n } else if (colors == 'basic') {\n colors = SIMPLEPALETTE;\n }\n if (typeof colors == 'string') {\n colors = colors.split(',');\n }\n if ($.isArray(colors)) {\n colors = $.map(colors, function (x) {\n return parseColor(x);\n });\n }\n that._selectedID = (options.ariaId || kendo.guid()) + '_selected';\n element.addClass('k-widget k-colorpalette').attr('role', 'grid').attr('aria-readonly', 'true').append($(that._template({\n colors: colors,\n columns: options.columns,\n tileSize: options.tileSize,\n value: that._value,\n id: options.ariaId\n }))).on(CLICK_NS, '.k-item', function (ev) {\n that._select($(ev.currentTarget).css(BACKGROUNDCOLOR));\n }).attr('tabIndex', that._tabIndex).on(KEYDOWN_NS, bind(that._keydown, that));\n var tileSize = options.tileSize, width, height;\n if (tileSize) {\n if (/number|string/.test(typeof tileSize)) {\n width = height = parseFloat(tileSize);\n } else if (typeof tileSize == 'object') {\n width = parseFloat(tileSize.width);\n height = parseFloat(tileSize.height);\n } else {\n throw new Error('Unsupported value for the \\'tileSize\\' argument');\n }\n element.find('.k-item').css({\n width: width,\n height: height\n });\n }\n },\n focus: function () {\n this.wrapper.focus();\n },\n options: {\n name: 'ColorPalette',\n columns: 10,\n tileSize: null,\n palette: 'basic'\n },\n _onEnable: function (enable) {\n if (enable) {\n this.wrapper.attr('tabIndex', this._tabIndex);\n } else {\n this.wrapper.removeAttr('tabIndex');\n }\n },\n _keydown: function (e) {\n var selected, wrapper = this.wrapper, items = wrapper.find('.k-item'), current = items.filter('.' + ITEMSELECTEDCLASS).get(0), keyCode = e.keyCode;\n if (keyCode == KEYS.LEFT) {\n selected = relative(items, current, -1);\n } else if (keyCode == KEYS.RIGHT) {\n selected = relative(items, current, 1);\n } else if (keyCode == KEYS.DOWN) {\n selected = relative(items, current, this.options.columns);\n } else if (keyCode == KEYS.UP) {\n selected = relative(items, current, -this.options.columns);\n } else if (keyCode == KEYS.ENTER) {\n preventDefault(e);\n if (current) {\n this._select($(current).css(BACKGROUNDCOLOR));\n }\n } else if (keyCode == KEYS.ESC) {\n this._cancel();\n }\n if (selected) {\n preventDefault(e);\n this._current(selected);\n try {\n var color = parseColor(selected.css(BACKGROUNDCOLOR));\n this._triggerSelect(color);\n } catch (ex) {\n }\n }\n },\n _current: function (item) {\n this.wrapper.find('.' + ITEMSELECTEDCLASS).removeClass(ITEMSELECTEDCLASS).attr('aria-selected', false).removeAttr('id');\n $(item).addClass(ITEMSELECTEDCLASS).attr('aria-selected', true).attr('id', this._selectedID);\n this.element.removeAttr('aria-activedescendant').attr('aria-activedescendant', this._selectedID);\n },\n _updateUI: function (color) {\n var item = null;\n this.wrapper.find('.k-item').each(function () {\n var c = parseColor($(this).css(BACKGROUNDCOLOR));\n if (c && c.equals(color)) {\n item = this;\n return false;\n }\n });\n this._current(item);\n },\n _template: kendo.template('' + '# for (var i = 0; i < colors.length; ++i) { #' + '# var selected = colors[i].equals(value); #' + '# if (i && i % columns == 0) { # # } #' + '' + '# } #' + '
              ')\n });\n var FlatColorPicker = ColorSelector.extend({\n init: function (element, options) {\n var that = this;\n ColorSelector.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n that.wrapper = element.addClass('k-widget k-flatcolorpicker').append(that._template(options));\n that._hueElements = $('.k-hsv-rectangle, .k-transparency-slider .k-slider-track', element);\n that._selectedColor = $('.k-selected-color-display', element);\n that._colorAsText = $('input.k-color-value', element);\n that._sliders();\n that._hsvArea();\n that._updateUI(that._value || parseColor('#f00'));\n element.find('input.k-color-value').on(KEYDOWN_NS, function (ev) {\n var input = this;\n if (ev.keyCode == KEYS.ENTER) {\n try {\n var color = parseColor(input.value);\n var val = that.color();\n that._select(color, color.equals(val));\n } catch (ex) {\n $(input).addClass('k-state-error');\n }\n } else if (that.options.autoupdate) {\n setTimeout(function () {\n var color = parseColor(input.value, true);\n if (color) {\n that._updateUI(color, true);\n }\n }, 10);\n }\n }).end().on(CLICK_NS, '.k-controls button.apply', function () {\n that._select(that._getHSV());\n }).on(CLICK_NS, '.k-controls button.cancel', function () {\n that._updateUI(that.color());\n that._cancel();\n });\n if (isIE8) {\n that._applyIEFilter();\n }\n },\n destroy: function () {\n this._hueSlider.destroy();\n if (this._opacitySlider) {\n this._opacitySlider.destroy();\n }\n this._hueSlider = this._opacitySlider = this._hsvRect = this._hsvHandle = this._hueElements = this._selectedColor = this._colorAsText = null;\n ColorSelector.fn.destroy.call(this);\n },\n options: {\n name: 'FlatColorPicker',\n opacity: false,\n buttons: false,\n input: true,\n preview: true,\n autoupdate: true,\n messages: APPLY_CANCEL\n },\n _applyIEFilter: function () {\n var track = this.element.find('.k-hue-slider .k-slider-track')[0], url = track.currentStyle.backgroundImage;\n url = url.replace(/^url\\([\\'\\\"]?|[\\'\\\"]?\\)$/g, '');\n track.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\'' + url + '\\', sizingMethod=\\'scale\\')';\n },\n _sliders: function () {\n var that = this, element = that.element;\n function hueChange(e) {\n that._updateUI(that._getHSV(e.value, null, null, null));\n }\n that._hueSlider = element.find('.k-hue-slider').kendoSlider({\n min: 0,\n max: 359,\n tickPlacement: 'none',\n showButtons: false,\n slide: hueChange,\n change: hueChange\n }).data('kendoSlider');\n function opacityChange(e) {\n that._updateUI(that._getHSV(null, null, null, e.value / 100));\n }\n that._opacitySlider = element.find('.k-transparency-slider').kendoSlider({\n min: 0,\n max: 100,\n tickPlacement: 'none',\n showButtons: false,\n slide: opacityChange,\n change: opacityChange\n }).data('kendoSlider');\n },\n _hsvArea: function () {\n var that = this, element = that.element, hsvRect = element.find('.k-hsv-rectangle'), hsvHandle = hsvRect.find('.k-draghandle').attr('tabIndex', 0).on(KEYDOWN_NS, bind(that._keydown, that));\n function update(x, y) {\n var offset = this.offset, dx = x - offset.left, dy = y - offset.top, rw = this.width, rh = this.height;\n dx = dx < 0 ? 0 : dx > rw ? rw : dx;\n dy = dy < 0 ? 0 : dy > rh ? rh : dy;\n that._svChange(dx / rw, 1 - dy / rh);\n }\n that._hsvEvents = new kendo.UserEvents(hsvRect, {\n global: true,\n press: function (e) {\n this.offset = kendo.getOffset(hsvRect);\n this.width = hsvRect.width();\n this.height = hsvRect.height();\n hsvHandle.focus();\n update.call(this, e.x.location, e.y.location);\n },\n start: function () {\n hsvRect.addClass('k-dragging');\n hsvHandle.focus();\n },\n move: function (e) {\n e.preventDefault();\n update.call(this, e.x.location, e.y.location);\n },\n end: function () {\n hsvRect.removeClass('k-dragging');\n }\n });\n that._hsvRect = hsvRect;\n that._hsvHandle = hsvHandle;\n },\n _onEnable: function (enable) {\n this._hueSlider.enable(enable);\n if (this._opacitySlider) {\n this._opacitySlider.enable(enable);\n }\n this.wrapper.find('input').attr('disabled', !enable);\n var handle = this._hsvRect.find('.k-draghandle');\n if (enable) {\n handle.attr('tabIndex', this._tabIndex);\n } else {\n handle.removeAttr('tabIndex');\n }\n },\n _keydown: function (ev) {\n var that = this;\n function move(prop, d) {\n var c = that._getHSV();\n c[prop] += d * (ev.shiftKey ? 0.01 : 0.05);\n if (c[prop] < 0) {\n c[prop] = 0;\n }\n if (c[prop] > 1) {\n c[prop] = 1;\n }\n that._updateUI(c);\n preventDefault(ev);\n }\n function hue(d) {\n var c = that._getHSV();\n c.h += d * (ev.shiftKey ? 1 : 5);\n if (c.h < 0) {\n c.h = 0;\n }\n if (c.h > 359) {\n c.h = 359;\n }\n that._updateUI(c);\n preventDefault(ev);\n }\n switch (ev.keyCode) {\n case KEYS.LEFT:\n if (ev.ctrlKey) {\n hue(-1);\n } else {\n move('s', -1);\n }\n break;\n case KEYS.RIGHT:\n if (ev.ctrlKey) {\n hue(1);\n } else {\n move('s', 1);\n }\n break;\n case KEYS.UP:\n move(ev.ctrlKey && that._opacitySlider ? 'a' : 'v', 1);\n break;\n case KEYS.DOWN:\n move(ev.ctrlKey && that._opacitySlider ? 'a' : 'v', -1);\n break;\n case KEYS.ENTER:\n that._select(that._getHSV());\n break;\n case KEYS.F2:\n that.wrapper.find('input.k-color-value').focus().select();\n break;\n case KEYS.ESC:\n that._cancel();\n break;\n }\n },\n focus: function () {\n this._hsvHandle.focus();\n },\n _getHSV: function (h, s, v, a) {\n var rect = this._hsvRect, width = rect.width(), height = rect.height(), handlePosition = this._hsvHandle.position();\n if (h == null) {\n h = this._hueSlider.value();\n }\n if (s == null) {\n s = handlePosition.left / width;\n }\n if (v == null) {\n v = 1 - handlePosition.top / height;\n }\n if (a == null) {\n a = this._opacitySlider ? this._opacitySlider.value() / 100 : 1;\n }\n return Color.fromHSV(h, s, v, a);\n },\n _svChange: function (s, v) {\n var color = this._getHSV(null, s, v, null);\n this._updateUI(color);\n },\n _updateUI: function (color, dontChangeInput) {\n var that = this, rect = that._hsvRect;\n if (!color) {\n return;\n }\n this._colorAsText.removeClass('k-state-error');\n that._selectedColor.css(BACKGROUNDCOLOR, color.toDisplay());\n if (!dontChangeInput) {\n that._colorAsText.val(that._opacitySlider ? color.toCssRgba() : color.toCss());\n }\n that._triggerSelect(color);\n color = color.toHSV();\n that._hsvHandle.css({\n left: color.s * rect.width() + 'px',\n top: (1 - color.v) * rect.height() + 'px'\n });\n that._hueElements.css(BACKGROUNDCOLOR, Color.fromHSV(color.h, 1, 1, 1).toCss());\n that._hueSlider.value(color.h);\n if (that._opacitySlider) {\n that._opacitySlider.value(100 * color.a);\n }\n },\n _selectOnHide: function () {\n return this.options.buttons ? null : this._getHSV();\n },\n _template: kendo.template('# if (preview) { #' + '
              ' + '# } #' + '
              ' + '' + '# if (opacity) { #' + '' + '# } #' + '# if (buttons) { #' + '
              ' + '# } #')\n });\n function relative(array, element, delta) {\n array = Array.prototype.slice.call(array);\n var n = array.length;\n var pos = array.indexOf(element);\n if (pos < 0) {\n return delta < 0 ? array[n - 1] : array[0];\n }\n pos += delta;\n if (pos < 0) {\n pos += n;\n } else {\n pos %= n;\n }\n return array[pos];\n }\n var ColorPicker = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n var value = element.attr('value') || element.val();\n if (value) {\n value = parseColor(value, true);\n } else {\n value = parseColor(options.value, true);\n }\n that._value = options.value = value;\n var content = that.wrapper = $(that._template(options));\n element.hide().after(content);\n if (element.is('input')) {\n element.appendTo(content);\n var label = element.closest('label');\n var id = element.attr('id');\n if (id) {\n label = label.add('label[for=\"' + id + '\"]');\n }\n label.click(function (ev) {\n that.open();\n ev.preventDefault();\n });\n }\n that._tabIndex = element.attr('tabIndex') || 0;\n that.enable(!element.attr('disabled'));\n var accesskey = element.attr('accesskey');\n if (accesskey) {\n element.attr('accesskey', null);\n content.attr('accesskey', accesskey);\n }\n that.bind('activate', function (ev) {\n if (!ev.isDefaultPrevented()) {\n that.toggle();\n }\n });\n that._updateUI(value);\n },\n destroy: function () {\n this.wrapper.off(NS).find('*').off(NS);\n if (this._popup) {\n this._selector.destroy();\n this._popup.destroy();\n }\n this._selector = this._popup = this.wrapper = null;\n Widget.fn.destroy.call(this);\n },\n enable: function (enable) {\n var that = this, wrapper = that.wrapper, innerWrapper = wrapper.children('.k-picker-wrap'), icon = innerWrapper.find('.k-select');\n if (arguments.length === 0) {\n enable = true;\n }\n that.element.attr('disabled', !enable);\n wrapper.attr('aria-disabled', !enable);\n icon.off(NS).on('mousedown' + NS, preventDefault);\n wrapper.addClass('k-state-disabled').removeAttr('tabIndex').add('*', wrapper).off(NS);\n if (enable) {\n wrapper.removeClass('k-state-disabled').attr('tabIndex', that._tabIndex).on('mouseenter' + NS, function () {\n innerWrapper.addClass('k-state-hover');\n }).on('mouseleave' + NS, function () {\n innerWrapper.removeClass('k-state-hover');\n }).on('focus' + NS, function () {\n innerWrapper.addClass('k-state-focused');\n }).on('blur' + NS, function () {\n innerWrapper.removeClass('k-state-focused');\n }).on(KEYDOWN_NS, bind(that._keydown, that)).on(CLICK_NS, '.k-select', bind(that.toggle, that)).on(CLICK_NS, that.options.toolIcon ? '.k-tool-icon' : '.k-selected-color', function () {\n that.trigger('activate');\n });\n }\n },\n _template: kendo.template('' + '' + '# if (toolIcon) { #' + '' + '' + '' + '# } else { #' + '' + '# } #' + '' + '' + '' + '' + ''),\n options: {\n name: 'ColorPicker',\n palette: null,\n columns: 10,\n toolIcon: null,\n value: null,\n messages: APPLY_CANCEL,\n opacity: false,\n buttons: true,\n preview: true,\n ARIATemplate: 'Current selected color is #=data || \"\"#'\n },\n events: [\n 'activate',\n 'change',\n 'select',\n 'open',\n 'close'\n ],\n open: function () {\n this._getPopup().open();\n },\n close: function () {\n this._getPopup().close();\n },\n toggle: function () {\n this._getPopup().toggle();\n },\n color: ColorSelector.fn.color,\n value: ColorSelector.fn.value,\n _select: ColorSelector.fn._select,\n _triggerSelect: ColorSelector.fn._triggerSelect,\n _isInputTypeColor: function () {\n var el = this.element[0];\n return /^input$/i.test(el.tagName) && /^color$/i.test(el.type);\n },\n _updateUI: function (value) {\n var formattedValue = '';\n if (value) {\n if (this._isInputTypeColor() || value.a == 1) {\n formattedValue = value.toCss();\n } else {\n formattedValue = value.toCssRgba();\n }\n this.element.val(formattedValue);\n }\n if (!this._ariaTemplate) {\n this._ariaTemplate = kendo.template(this.options.ARIATemplate);\n }\n this.wrapper.attr('aria-label', this._ariaTemplate(formattedValue));\n this._triggerSelect(value);\n this.wrapper.find('.k-selected-color').css(BACKGROUNDCOLOR, value ? value.toDisplay() : 'transparent');\n },\n _keydown: function (ev) {\n var key = ev.keyCode;\n if (this._getPopup().visible()) {\n if (key == KEYS.ESC) {\n this._selector._cancel();\n } else {\n this._selector._keydown(ev);\n }\n preventDefault(ev);\n } else if (key == KEYS.ENTER || key == KEYS.DOWN) {\n this.open();\n preventDefault(ev);\n }\n },\n _getPopup: function () {\n var that = this, popup = that._popup;\n if (!popup) {\n var options = that.options;\n var selectorType;\n if (options.palette) {\n selectorType = ColorPalette;\n } else {\n selectorType = FlatColorPicker;\n }\n options._standalone = false;\n delete options.select;\n delete options.change;\n delete options.cancel;\n var id = kendo.guid();\n var selector = that._selector = new selectorType($('
              ').appendTo(document.body), options);\n that.wrapper.attr('aria-owns', id);\n that._popup = popup = selector.wrapper.kendoPopup({\n anchor: that.wrapper,\n adjustSize: {\n width: 5,\n height: 0\n }\n }).data('kendoPopup');\n selector.bind({\n select: function (ev) {\n that._updateUI(parseColor(ev.value));\n },\n change: function () {\n that._select(selector.color());\n that.close();\n },\n cancel: function () {\n that.close();\n }\n });\n popup.bind({\n close: function (ev) {\n if (that.trigger('close')) {\n ev.preventDefault();\n return;\n }\n that.wrapper.children('.k-picker-wrap').removeClass('k-state-focused');\n var color = selector._selectOnHide();\n if (!color) {\n that.wrapper.focus();\n that._updateUI(that.color());\n } else {\n that._select(color);\n }\n },\n open: function (ev) {\n if (that.trigger('open')) {\n ev.preventDefault();\n } else {\n that.wrapper.children('.k-picker-wrap').addClass('k-state-focused');\n }\n },\n activate: function () {\n selector._select(that.color(), true);\n selector.focus();\n that.wrapper.children('.k-picker-wrap').addClass('k-state-focused');\n }\n });\n }\n return popup;\n }\n });\n function preventDefault(ev) {\n ev.preventDefault();\n }\n function bind(callback, obj) {\n return function () {\n return callback.apply(obj, arguments);\n };\n }\n ui.plugin(ColorPalette);\n ui.plugin(FlatColorPicker);\n ui.plugin(ColorPicker);\n }(jQuery, parseInt));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.numerictextbox', [\n 'kendo.core',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'numerictextbox',\n name: 'NumericTextBox',\n category: 'web',\n description: 'The NumericTextBox widget can format and display numeric, percentage or currency textbox.',\n depends: [\n 'core',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, caret = kendo.caret, keys = kendo.keys, ui = kendo.ui, Widget = ui.Widget, activeElement = kendo._activeElement, extractFormat = kendo._extractFormat, parse = kendo.parseFloat, placeholderSupported = kendo.support.placeholder, getCulture = kendo.getCulture, round = kendo._round, CHANGE = 'change', DISABLED = 'disabled', READONLY = 'readonly', INPUT = 'k-input', SPIN = 'spin', ns = '.kendoNumericTextBox', TOUCHEND = 'touchend', MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = 'mouseenter' + ns + ' ' + MOUSELEAVE, DEFAULT = 'k-state-default', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', FOCUS = 'focus', POINT = '.', SELECTED = 'k-state-selected', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', ARIA_READONLY = 'aria-readonly', INTEGER_REGEXP = /^(-)?(\\d*)$/, NULL = null, proxy = $.proxy, extend = $.extend;\n var NumericTextBox = Widget.extend({\n init: function (element, options) {\n var that = this, isStep = options && options.step !== undefined, min, max, step, value, disabled;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element.on('focusout' + ns, proxy(that._focusout, that)).attr('role', 'spinbutton');\n options.placeholder = options.placeholder || element.attr('placeholder');\n that._initialOptions = extend({}, options);\n that._reset();\n that._wrapper();\n that._arrows();\n that._input();\n if (!kendo.support.mobileOS) {\n that._text.on(FOCUS + ns, proxy(that._click, that));\n } else {\n that._text.on(TOUCHEND + ns + ' ' + FOCUS + ns, function () {\n that._toggleText(false);\n element.focus();\n });\n }\n min = that.min(element.attr('min'));\n max = that.max(element.attr('max'));\n step = that._parse(element.attr('step'));\n if (options.min === NULL && min !== NULL) {\n options.min = min;\n }\n if (options.max === NULL && max !== NULL) {\n options.max = max;\n }\n if (!isStep && step !== NULL) {\n options.step = step;\n }\n element.attr('aria-valuemin', options.min).attr('aria-valuemax', options.max);\n options.format = extractFormat(options.format);\n value = options.value;\n that.value(value !== NULL ? value : element.val());\n disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n kendo.notify(that);\n },\n options: {\n name: 'NumericTextBox',\n decimals: NULL,\n min: NULL,\n max: NULL,\n value: NULL,\n step: 1,\n culture: '',\n format: 'n',\n spinners: true,\n placeholder: '',\n upArrowText: 'Increase value',\n downArrowText: 'Decrease value'\n },\n events: [\n CHANGE,\n SPIN\n ],\n _editable: function (options) {\n var that = this, element = that.element, disable = options.disable, readonly = options.readonly, text = that._text.add(element), wrapper = that._inputWrapper.off(HOVEREVENTS);\n that._toggleText(true);\n that._upArrowEventHandler.unbind('press');\n that._downArrowEventHandler.unbind('press');\n element.off('keydown' + ns).off('keypress' + ns).off('paste' + ns);\n if (!readonly && !disable) {\n wrapper.addClass(DEFAULT).removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n text.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false).attr(ARIA_READONLY, false);\n that._upArrowEventHandler.bind('press', function (e) {\n e.preventDefault();\n that._spin(1);\n that._upArrow.addClass(SELECTED);\n });\n that._downArrowEventHandler.bind('press', function (e) {\n e.preventDefault();\n that._spin(-1);\n that._downArrow.addClass(SELECTED);\n });\n that.element.on('keydown' + ns, proxy(that._keydown, that)).on('keypress' + ns, proxy(that._keypress, that)).on('paste' + ns, proxy(that._paste, that));\n } else {\n wrapper.addClass(disable ? STATEDISABLED : DEFAULT).removeClass(disable ? DEFAULT : STATEDISABLED);\n text.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable).attr(ARIA_READONLY, readonly);\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n destroy: function () {\n var that = this;\n that.element.add(that._text).add(that._upArrow).add(that._downArrow).add(that._inputWrapper).off(ns);\n that._upArrowEventHandler.destroy();\n that._downArrowEventHandler.destroy();\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n Widget.fn.destroy.call(that);\n },\n min: function (value) {\n return this._option('min', value);\n },\n max: function (value) {\n return this._option('max', value);\n },\n step: function (value) {\n return this._option('step', value);\n },\n value: function (value) {\n var that = this, adjusted;\n if (value === undefined) {\n return that._value;\n }\n value = that._parse(value);\n adjusted = that._adjust(value);\n if (value !== adjusted) {\n return;\n }\n that._update(value);\n that._old = that._value;\n },\n focus: function () {\n this._focusin();\n },\n _adjust: function (value) {\n var that = this, options = that.options, min = options.min, max = options.max;\n if (value === NULL) {\n return value;\n }\n if (min !== NULL && value < min) {\n value = min;\n } else if (max !== NULL && value > max) {\n value = max;\n }\n return value;\n },\n _arrows: function () {\n var that = this, arrows, _release = function () {\n clearTimeout(that._spinning);\n arrows.removeClass(SELECTED);\n }, options = that.options, spinners = options.spinners, element = that.element;\n arrows = element.siblings('.k-icon');\n if (!arrows[0]) {\n arrows = $(buttonHtml('n', options.upArrowText) + buttonHtml('s', options.downArrowText)).insertAfter(element);\n arrows.wrapAll('');\n }\n if (!spinners) {\n arrows.parent().toggle(spinners);\n that._inputWrapper.addClass('k-expand-padding');\n }\n that._upArrow = arrows.eq(0);\n that._upArrowEventHandler = new kendo.UserEvents(that._upArrow, { release: _release });\n that._downArrow = arrows.eq(1);\n that._downArrowEventHandler = new kendo.UserEvents(that._downArrow, { release: _release });\n },\n _blur: function () {\n var that = this;\n that._toggleText(true);\n that._change(that.element.val());\n },\n _click: function (e) {\n var that = this;\n clearTimeout(that._focusing);\n that._focusing = setTimeout(function () {\n var input = e.target, idx = caret(input)[0], value = input.value.substring(0, idx), format = that._format(that.options.format), group = format[','], result, groupRegExp, extractRegExp, caretPosition = 0;\n if (group) {\n groupRegExp = new RegExp('\\\\' + group, 'g');\n extractRegExp = new RegExp('([\\\\d\\\\' + group + ']+)(\\\\' + format[POINT] + ')?(\\\\d+)?');\n }\n if (extractRegExp) {\n result = extractRegExp.exec(value);\n }\n if (result) {\n caretPosition = result[0].replace(groupRegExp, '').length;\n if (value.indexOf('(') != -1 && that._value < 0) {\n caretPosition++;\n }\n }\n that._focusin();\n caret(that.element[0], caretPosition);\n });\n },\n _change: function (value) {\n var that = this;\n that._update(value);\n value = that._value;\n if (that._old != value) {\n that._old = value;\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n }\n that._typing = false;\n },\n _culture: function (culture) {\n return culture || getCulture(this.options.culture);\n },\n _focusin: function () {\n var that = this;\n that._inputWrapper.addClass(FOCUSED);\n that._toggleText(false);\n that.element[0].focus();\n },\n _focusout: function () {\n var that = this;\n clearTimeout(that._focusing);\n that._inputWrapper.removeClass(FOCUSED).removeClass(HOVER);\n that._blur();\n },\n _format: function (format, culture) {\n var numberFormat = this._culture(culture).numberFormat;\n format = format.toLowerCase();\n if (format.indexOf('c') > -1) {\n numberFormat = numberFormat.currency;\n } else if (format.indexOf('p') > -1) {\n numberFormat = numberFormat.percent;\n }\n return numberFormat;\n },\n _input: function () {\n var that = this, CLASSNAME = 'k-formatted-value', element = that.element.addClass(INPUT).show()[0], accessKey = element.accessKey, wrapper = that.wrapper, text;\n text = wrapper.find(POINT + CLASSNAME);\n if (!text[0]) {\n text = $('').insertBefore(element).addClass(CLASSNAME);\n }\n try {\n element.setAttribute('type', 'text');\n } catch (e) {\n element.type = 'text';\n }\n text[0].tabIndex = element.tabIndex;\n text[0].style.cssText = element.style.cssText;\n text[0].title = element.title;\n text.prop('placeholder', that.options.placeholder);\n if (accessKey) {\n text.attr('accesskey', accessKey);\n element.accessKey = '';\n }\n that._text = text.addClass(element.className);\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode;\n that._key = key;\n if (key == keys.DOWN) {\n that._step(-1);\n } else if (key == keys.UP) {\n that._step(1);\n } else if (key == keys.ENTER) {\n that._change(that.element.val());\n } else {\n that._typing = true;\n }\n },\n _keypress: function (e) {\n if (e.which === 0 || e.metaKey || e.ctrlKey || e.keyCode === keys.BACKSPACE || e.keyCode === keys.ENTER) {\n return;\n }\n var that = this;\n var min = that.options.min;\n var element = that.element;\n var selection = caret(element);\n var selectionStart = selection[0];\n var selectionEnd = selection[1];\n var character = String.fromCharCode(e.which);\n var numberFormat = that._format(that.options.format);\n var isNumPadDecimal = that._key === keys.NUMPAD_DOT;\n var value = element.val();\n var isValid;\n if (isNumPadDecimal) {\n character = numberFormat[POINT];\n }\n value = value.substring(0, selectionStart) + character + value.substring(selectionEnd);\n isValid = that._numericRegex(numberFormat).test(value);\n if (isValid && isNumPadDecimal) {\n element.val(value);\n caret(element, selectionStart + character.length);\n e.preventDefault();\n } else if (min !== null && min >= 0 && value.charAt(0) === '-' || !isValid) {\n e.preventDefault();\n }\n that._key = 0;\n },\n _numericRegex: function (numberFormat) {\n var that = this;\n var separator = numberFormat[POINT];\n var precision = that.options.decimals;\n if (separator === POINT) {\n separator = '\\\\' + separator;\n }\n if (precision === NULL) {\n precision = numberFormat.decimals;\n }\n if (precision === 0) {\n return INTEGER_REGEXP;\n }\n if (that._separator !== separator) {\n that._separator = separator;\n that._floatRegExp = new RegExp('^(-)?(((\\\\d+(' + separator + '\\\\d*)?)|(' + separator + '\\\\d*)))?$');\n }\n return that._floatRegExp;\n },\n _paste: function (e) {\n var that = this, element = e.target, value = element.value;\n setTimeout(function () {\n if (that._parse(element.value) === NULL) {\n that._update(value);\n }\n });\n },\n _option: function (option, value) {\n var that = this, options = that.options;\n if (value === undefined) {\n return options[option];\n }\n value = that._parse(value);\n if (!value && option === 'step') {\n return;\n }\n options[option] = value;\n that.element.attr('aria-value' + option, value).attr(option, value);\n },\n _spin: function (step, timeout) {\n var that = this;\n timeout = timeout || 500;\n clearTimeout(that._spinning);\n that._spinning = setTimeout(function () {\n that._spin(step, 50);\n }, timeout);\n that._step(step);\n },\n _step: function (step) {\n var that = this, element = that.element, value = that._parse(element.val()) || 0;\n if (activeElement() != element[0]) {\n that._focusin();\n }\n value += that.options.step * step;\n that._update(that._adjust(value));\n that._typing = false;\n that.trigger(SPIN);\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggleText: function (toggle) {\n var that = this;\n that._text.toggle(toggle);\n that.element.toggle(!toggle);\n },\n _parse: function (value, culture) {\n return parse(value, this._culture(culture), this.options.format);\n },\n _update: function (value) {\n var that = this, options = that.options, format = options.format, decimals = options.decimals, culture = that._culture(), numberFormat = that._format(format, culture), isNotNull;\n if (decimals === NULL) {\n decimals = numberFormat.decimals;\n }\n value = that._parse(value, culture);\n isNotNull = value !== NULL;\n if (isNotNull) {\n value = parseFloat(round(value, decimals));\n }\n that._value = value = that._adjust(value);\n that._placeholder(kendo.toString(value, format, culture));\n if (isNotNull) {\n value = value.toString();\n if (value.indexOf('e') !== -1) {\n value = round(+value, decimals);\n }\n value = value.replace(POINT, numberFormat[POINT]);\n } else {\n value = '';\n }\n that.element.val(value).attr('aria-valuenow', value);\n },\n _placeholder: function (value) {\n this._text.val(value);\n if (!placeholderSupported && !value) {\n this._text.val(this.options.placeholder);\n }\n },\n _wrapper: function () {\n var that = this, element = that.element, DOMElement = element[0], wrapper;\n wrapper = element.parents('.k-numerictextbox');\n if (!wrapper.is('span.k-numerictextbox')) {\n wrapper = element.hide().wrap('').parent();\n wrapper = wrapper.wrap('').parent();\n }\n wrapper[0].style.cssText = DOMElement.style.cssText;\n DOMElement.style.width = '';\n that.wrapper = wrapper.addClass('k-widget k-numerictextbox').addClass(DOMElement.className).css('display', '');\n that._inputWrapper = $(wrapper[0].firstChild);\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(element[0].value);\n that.max(that._initialOptions.max);\n that.min(that._initialOptions.min);\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n }\n });\n function buttonHtml(className, text) {\n return '' + text + '';\n }\n ui.plugin(NumericTextBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.editable', [\n 'kendo.datepicker',\n 'kendo.numerictextbox',\n 'kendo.validator',\n 'kendo.binder'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'editable',\n name: 'Editable',\n category: 'framework',\n depends: [\n 'datepicker',\n 'numerictextbox',\n 'validator',\n 'binder'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, extend = $.extend, oldIE = kendo.support.browser.msie && kendo.support.browser.version < 9, isFunction = kendo.isFunction, isPlainObject = $.isPlainObject, inArray = $.inArray, nameSpecialCharRegExp = /(\"|\\%|'|\\[|\\]|\\$|\\.|\\,|\\:|\\;|\\+|\\*|\\&|\\!|\\#|\\(|\\)|<|>|\\=|\\?|\\@|\\^|\\{|\\}|\\~|\\/|\\||`)/g, ERRORTEMPLATE = '
              ' + '#=message#
              ', CHANGE = 'change';\n var specialRules = [\n 'url',\n 'email',\n 'number',\n 'date',\n 'boolean'\n ];\n function fieldType(field) {\n field = field != null ? field : '';\n return field.type || $.type(field) || 'string';\n }\n function convertToValueBinding(container) {\n container.find(':input:not(:button, [' + kendo.attr('role') + '=upload], [' + kendo.attr('skip') + '], [type=file]), select').each(function () {\n var bindAttr = kendo.attr('bind'), binding = this.getAttribute(bindAttr) || '', bindingName = this.type === 'checkbox' || this.type === 'radio' ? 'checked:' : 'value:', fieldName = this.name;\n if (binding.indexOf(bindingName) === -1 && fieldName) {\n binding += (binding.length ? ',' : '') + bindingName + fieldName;\n $(this).attr(bindAttr, binding);\n }\n });\n }\n function createAttributes(options) {\n var field = (options.model.fields || options.model)[options.field], type = fieldType(field), validation = field ? field.validation : {}, ruleName, DATATYPE = kendo.attr('type'), BINDING = kendo.attr('bind'), rule, attr = { name: options.field };\n for (ruleName in validation) {\n rule = validation[ruleName];\n if (inArray(ruleName, specialRules) >= 0) {\n attr[DATATYPE] = ruleName;\n } else if (!isFunction(rule)) {\n attr[ruleName] = isPlainObject(rule) ? rule.value || ruleName : rule;\n }\n attr[kendo.attr(ruleName + '-msg')] = rule.message;\n }\n if (inArray(type, specialRules) >= 0) {\n attr[DATATYPE] = type;\n }\n attr[BINDING] = (type === 'boolean' ? 'checked:' : 'value:') + options.field;\n return attr;\n }\n function convertItems(items) {\n var idx, length, item, value, text, result;\n if (items && items.length) {\n result = [];\n for (idx = 0, length = items.length; idx < length; idx++) {\n item = items[idx];\n text = item.text || item.value || item;\n value = item.value == null ? item.text || item : item.value;\n result[idx] = {\n text: text,\n value: value\n };\n }\n }\n return result;\n }\n var editors = {\n 'number': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container).kendoNumericTextBox({ format: options.format });\n $('').hide().appendTo(container);\n },\n 'date': function (container, options) {\n var attr = createAttributes(options), format = options.format;\n if (format) {\n format = kendo._extractFormat(format);\n }\n attr[kendo.attr('format')] = format;\n $('').attr(attr).appendTo(container).kendoDatePicker({ format: options.format });\n $('').hide().appendTo(container);\n },\n 'string': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container);\n },\n 'boolean': function (container, options) {\n var attr = createAttributes(options);\n $('').attr(attr).appendTo(container);\n },\n 'values': function (container, options) {\n var attr = createAttributes(options);\n var items = kendo.stringify(convertItems(options.values));\n $('Clear
              '), NS = '.kendoMobileListView', STYLED = 'styled', DATABOUND = 'dataBound', DATABINDING = 'dataBinding', ITEM_CHANGE = 'itemChange', CLICK = 'click', CHANGE = 'change', PROGRESS = 'progress', FUNCTION = 'function', whitespaceRegExp = /^\\s+$/, buttonRegExp = /button/;\n function whitespace() {\n return this.nodeType === Node.TEXT_NODE && this.nodeValue.match(whitespaceRegExp);\n }\n function addIcon(item, icon) {\n if (icon && !item[0].querySelector('.km-icon')) {\n item.prepend('');\n }\n }\n function enhanceItem(item) {\n addIcon(item, attrValue(item, 'icon'));\n addIcon(item, attrValue(item.children(ICON_SELECTOR), 'icon'));\n }\n function enhanceLinkItem(item) {\n var parent = item.parent(), itemAndDetailButtons = item.add(parent.children(kendo.roleSelector('detailbutton'))), otherNodes = parent.contents().not(itemAndDetailButtons).not(whitespace);\n if (otherNodes.length) {\n return;\n }\n item.addClass('km-listview-link').attr(kendo.attr('role'), 'listview-link');\n addIcon(item, attrValue(parent, 'icon'));\n addIcon(item, attrValue(item, 'icon'));\n }\n function enhanceCheckBoxItem(label) {\n if (!label[0].querySelector('input[type=checkbox],input[type=radio]')) {\n return;\n }\n var item = label.parent();\n if (item.contents().not(label).not(function () {\n return this.nodeType == 3;\n })[0]) {\n return;\n }\n label.addClass('km-listview-label');\n label.children('[type=checkbox],[type=radio]').addClass('km-widget km-icon km-check');\n }\n function putAt(element, top) {\n $(element).css('transform', 'translate3d(0px, ' + top + 'px, 0px)');\n }\n var HeaderFixer = kendo.Class.extend({\n init: function (listView) {\n var scroller = listView.scroller();\n if (!scroller) {\n return;\n }\n this.options = listView.options;\n this.element = listView.element;\n this.scroller = listView.scroller();\n this._shouldFixHeaders();\n var headerFixer = this;\n var cacheHeaders = function () {\n headerFixer._cacheHeaders();\n };\n listView.bind('resize', cacheHeaders);\n listView.bind(STYLED, cacheHeaders);\n listView.bind(DATABOUND, cacheHeaders);\n scroller.bind('scroll', function (e) {\n headerFixer._fixHeader(e);\n });\n },\n _fixHeader: function (e) {\n if (!this.fixedHeaders) {\n return;\n }\n var i = 0, scroller = this.scroller, headers = this.headers, scrollTop = e.scrollTop, headerPair, offset, header;\n do {\n headerPair = headers[i++];\n if (!headerPair) {\n header = $('
              ');\n break;\n }\n offset = headerPair.offset;\n header = headerPair.header;\n } while (offset + 1 > scrollTop);\n if (this.currentHeader != i) {\n scroller.fixedContainer.html(header.clone());\n this.currentHeader = i;\n }\n },\n _shouldFixHeaders: function () {\n this.fixedHeaders = this.options.type === 'group' && this.options.fixedHeaders;\n },\n _cacheHeaders: function () {\n this._shouldFixHeaders();\n if (!this.fixedHeaders) {\n return;\n }\n var headers = [], offset = this.scroller.scrollTop;\n this.element.find('.' + GROUP_CLASS).each(function (_, header) {\n header = $(header);\n headers.unshift({\n offset: header.position().top + offset,\n header: header\n });\n });\n this.headers = headers;\n this._fixHeader({ scrollTop: offset });\n }\n });\n var DEFAULT_PULL_PARAMETERS = function () {\n return { page: 1 };\n };\n var RefreshHandler = kendo.Class.extend({\n init: function (listView) {\n var handler = this, options = listView.options, scroller = listView.scroller(), pullParameters = options.pullParameters || DEFAULT_PULL_PARAMETERS;\n this.listView = listView;\n this.scroller = scroller;\n listView.bind('_dataSource', function (e) {\n handler.setDataSource(e.dataSource);\n });\n scroller.setOptions({\n pullToRefresh: true,\n pull: function () {\n if (!handler._pulled) {\n handler._pulled = true;\n handler.dataSource.read(pullParameters.call(listView, handler._first));\n }\n },\n messages: {\n pullTemplate: options.messages.pullTemplate,\n releaseTemplate: options.messages.releaseTemplate,\n refreshTemplate: options.messages.refreshTemplate\n }\n });\n },\n setDataSource: function (dataSource) {\n var handler = this;\n this._first = dataSource.view()[0];\n this.dataSource = dataSource;\n dataSource.bind('change', function () {\n handler._change();\n });\n dataSource.bind('error', function () {\n handler._change();\n });\n },\n _change: function () {\n var scroller = this.scroller, dataSource = this.dataSource;\n if (this._pulled) {\n scroller.pullHandled();\n }\n if (this._pulled || !this._first) {\n var view = dataSource.view();\n if (view[0]) {\n this._first = view[0];\n }\n }\n this._pulled = false;\n }\n });\n var VirtualList = kendo.Observable.extend({\n init: function (options) {\n var list = this;\n kendo.Observable.fn.init.call(list);\n list.buffer = options.buffer;\n list.height = options.height;\n list.item = options.item;\n list.items = [];\n list.footer = options.footer;\n list.buffer.bind('reset', function () {\n list.refresh();\n });\n },\n refresh: function () {\n var buffer = this.buffer, items = this.items, endReached = false;\n while (items.length) {\n items.pop().destroy();\n }\n this.offset = buffer.offset;\n var itemConstructor = this.item, prevItem, item;\n for (var idx = 0; idx < buffer.viewSize; idx++) {\n if (idx === buffer.total()) {\n endReached = true;\n break;\n }\n item = itemConstructor(this.content(this.offset + items.length));\n item.below(prevItem);\n prevItem = item;\n items.push(item);\n }\n this.itemCount = items.length;\n this.trigger('reset');\n this._resize();\n if (endReached) {\n this.trigger('endReached');\n }\n },\n totalHeight: function () {\n if (!this.items[0]) {\n return 0;\n }\n var list = this, items = list.items, top = items[0].top, bottom = items[items.length - 1].bottom, averageItemHeight = (bottom - top) / list.itemCount, remainingItemsCount = list.buffer.length - list.offset - list.itemCount;\n return (this.footer ? this.footer.height : 0) + bottom + remainingItemsCount * averageItemHeight;\n },\n batchUpdate: function (top) {\n var height = this.height(), items = this.items, item, initialOffset = this.offset;\n if (!items[0]) {\n return;\n }\n if (this.lastDirection) {\n while (items[items.length - 1].bottom > top + height * 2) {\n if (this.offset === 0) {\n break;\n }\n this.offset--;\n item = items.pop();\n item.update(this.content(this.offset));\n item.above(items[0]);\n items.unshift(item);\n }\n } else {\n while (items[0].top < top - height) {\n var nextIndex = this.offset + this.itemCount;\n if (nextIndex === this.buffer.total()) {\n this.trigger('endReached');\n break;\n }\n if (nextIndex === this.buffer.length) {\n break;\n }\n item = items.shift();\n item.update(this.content(this.offset + this.itemCount));\n item.below(items[items.length - 1]);\n items.push(item);\n this.offset++;\n }\n }\n if (initialOffset !== this.offset) {\n this._resize();\n }\n },\n update: function (top) {\n var list = this, items = this.items, item, firstItem, lastItem, height = this.height(), itemCount = this.itemCount, padding = height / 2, up = (this.lastTop || 0) > top, topBorder = top - padding, bottomBorder = top + height + padding;\n if (!items[0]) {\n return;\n }\n this.lastTop = top;\n this.lastDirection = up;\n if (up) {\n if (items[0].top > topBorder && items[items.length - 1].bottom > bottomBorder + padding && this.offset > 0) {\n this.offset--;\n item = items.pop();\n firstItem = items[0];\n item.update(this.content(this.offset));\n items.unshift(item);\n item.above(firstItem);\n list._resize();\n }\n } else {\n if (items[items.length - 1].bottom < bottomBorder && items[0].top < topBorder - padding) {\n var nextIndex = this.offset + itemCount;\n if (nextIndex === this.buffer.total()) {\n this.trigger('endReached');\n } else if (nextIndex !== this.buffer.length) {\n item = items.shift();\n lastItem = items[items.length - 1];\n items.push(item);\n item.update(this.content(this.offset + this.itemCount));\n list.offset++;\n item.below(lastItem);\n list._resize();\n }\n }\n }\n },\n content: function (index) {\n return this.buffer.at(index);\n },\n destroy: function () {\n this.unbind();\n },\n _resize: function () {\n var items = this.items, top = 0, bottom = 0, firstItem = items[0], lastItem = items[items.length - 1];\n if (firstItem) {\n top = firstItem.top;\n bottom = lastItem.bottom;\n }\n this.trigger('resize', {\n top: top,\n bottom: bottom\n });\n if (this.footer) {\n this.footer.below(lastItem);\n }\n }\n });\n kendo.mobile.ui.VirtualList = VirtualList;\n var VirtualListViewItem = kendo.Class.extend({\n init: function (listView, dataItem) {\n var element = listView.append([dataItem], true)[0], height = element.offsetHeight;\n $.extend(this, {\n top: 0,\n element: element,\n listView: listView,\n height: height,\n bottom: height\n });\n },\n update: function (dataItem) {\n this.element = this.listView.setDataItem(this.element, dataItem);\n },\n above: function (item) {\n if (item) {\n this.height = this.element.offsetHeight;\n this.top = item.top - this.height;\n this.bottom = item.top;\n putAt(this.element, this.top);\n }\n },\n below: function (item) {\n if (item) {\n this.height = this.element.offsetHeight;\n this.top = item.bottom;\n this.bottom = this.top + this.height;\n putAt(this.element, this.top);\n }\n },\n destroy: function () {\n kendo.destroy(this.element);\n $(this.element).remove();\n }\n });\n var LOAD_ICON = '
              ';\n var VirtualListViewLoadingIndicator = kendo.Class.extend({\n init: function (listView) {\n this.element = $('
            • ').appendTo(listView.element);\n this._loadIcon = $(LOAD_ICON).appendTo(this.element);\n },\n enable: function () {\n this.element.show();\n this.height = this.element.outerHeight(true);\n },\n disable: function () {\n this.element.hide();\n this.height = 0;\n },\n below: function (item) {\n if (item) {\n this.top = item.bottom;\n this.bottom = this.height + this.top;\n putAt(this.element, this.top);\n }\n }\n });\n var VirtualListViewPressToLoadMore = VirtualListViewLoadingIndicator.extend({\n init: function (listView, buffer) {\n this._loadIcon = $(LOAD_ICON).hide();\n this._loadButton = $('' + listView.options.messages.loadMoreText + '').hide();\n this.element = $('
            • ').append(this._loadIcon).append(this._loadButton).appendTo(listView.element);\n var loadMore = this;\n this._loadButton.kendoMobileButton().data('kendoMobileButton').bind('click', function () {\n loadMore._hideShowButton();\n buffer.next();\n });\n buffer.bind('resize', function () {\n loadMore._showLoadButton();\n });\n this.height = this.element.outerHeight(true);\n this.disable();\n },\n _hideShowButton: function () {\n this._loadButton.hide();\n this.element.addClass('km-scroller-refresh');\n this._loadIcon.css('display', 'block');\n },\n _showLoadButton: function () {\n this._loadButton.show();\n this.element.removeClass('km-scroller-refresh');\n this._loadIcon.hide();\n }\n });\n var VirtualListViewItemBinder = kendo.Class.extend({\n init: function (listView) {\n var binder = this;\n this.chromeHeight = listView.wrapper.children().not(listView.element).outerHeight() || 0;\n this.listView = listView;\n this.scroller = listView.scroller();\n this.options = listView.options;\n listView.bind('_dataSource', function (e) {\n binder.setDataSource(e.dataSource, e.empty);\n });\n listView.bind('resize', function () {\n if (!binder.list.items.length) {\n return;\n }\n binder.scroller.reset();\n binder.buffer.range(0);\n binder.list.refresh();\n });\n this.scroller.makeVirtual();\n this.scroller.bind('scroll', function (e) {\n binder.list.update(e.scrollTop);\n });\n this.scroller.bind('scrollEnd', function (e) {\n binder.list.batchUpdate(e.scrollTop);\n });\n },\n destroy: function () {\n this.list.unbind();\n this.buffer.unbind();\n },\n setDataSource: function (dataSource, empty) {\n var binder = this, options = this.options, listView = this.listView, scroller = listView.scroller(), pressToLoadMore = options.loadMore, pageSize, buffer, footer;\n this.dataSource = dataSource;\n pageSize = dataSource.pageSize() || options.virtualViewSize;\n if (!pageSize && !empty) {\n throw new Error('the DataSource does not have page size configured. Page Size setting is mandatory for the mobile listview virtual scrolling to work as expected.');\n }\n if (this.buffer) {\n this.buffer.destroy();\n }\n buffer = new kendo.data.Buffer(dataSource, Math.floor(pageSize / 2), pressToLoadMore);\n if (pressToLoadMore) {\n footer = new VirtualListViewPressToLoadMore(listView, buffer);\n } else {\n footer = new VirtualListViewLoadingIndicator(listView);\n }\n if (this.list) {\n this.list.destroy();\n }\n var list = new VirtualList({\n buffer: buffer,\n footer: footer,\n item: function (dataItem) {\n return new VirtualListViewItem(listView, dataItem);\n },\n height: function () {\n return scroller.height();\n }\n });\n list.bind('resize', function () {\n binder.updateScrollerSize();\n listView.updateSize();\n });\n list.bind('reset', function () {\n binder.footer.enable();\n });\n list.bind('endReached', function () {\n footer.disable();\n binder.updateScrollerSize();\n });\n buffer.bind('expand', function () {\n list.lastDirection = false;\n list.batchUpdate(scroller.scrollTop);\n });\n $.extend(this, {\n buffer: buffer,\n scroller: scroller,\n list: list,\n footer: footer\n });\n },\n updateScrollerSize: function () {\n this.scroller.virtualSize(0, this.list.totalHeight() + this.chromeHeight);\n },\n refresh: function () {\n this.list.refresh();\n },\n reset: function () {\n this.buffer.range(0);\n this.list.refresh();\n }\n });\n var ListViewItemBinder = kendo.Class.extend({\n init: function (listView) {\n var binder = this;\n this.listView = listView;\n this.options = listView.options;\n var itemBinder = this;\n this._refreshHandler = function (e) {\n itemBinder.refresh(e);\n };\n this._progressHandler = function () {\n listView.showLoading();\n };\n listView.bind('_dataSource', function (e) {\n binder.setDataSource(e.dataSource);\n });\n },\n destroy: function () {\n this._unbindDataSource();\n },\n reset: function () {\n },\n refresh: function (e) {\n var action = e && e.action, dataItems = e && e.items, listView = this.listView, dataSource = this.dataSource, prependOnRefresh = this.options.appendOnRefresh, view = dataSource.view(), groups = dataSource.group(), groupedMode = groups && groups[0], item;\n if (action === 'itemchange') {\n if (!listView._hasBindingTarget()) {\n item = listView.findByDataItem(dataItems)[0];\n if (item) {\n listView.setDataItem(item, dataItems[0]);\n }\n }\n return;\n }\n var removedItems, addedItems, addedDataItems;\n var adding = action === 'add' && !groupedMode || prependOnRefresh && !listView._filter;\n var removing = action === 'remove' && !groupedMode;\n if (adding) {\n removedItems = [];\n } else if (removing) {\n removedItems = listView.findByDataItem(dataItems);\n }\n if (listView.trigger(DATABINDING, {\n action: action || 'rebind',\n items: dataItems,\n removedItems: removedItems,\n index: e && e.index\n })) {\n if (this._shouldShowLoading()) {\n listView.hideLoading();\n }\n return;\n }\n if (action === 'add' && !groupedMode) {\n var index = view.indexOf(dataItems[0]);\n if (index > -1) {\n addedItems = listView.insertAt(dataItems, index);\n addedDataItems = dataItems;\n }\n } else if (action === 'remove' && !groupedMode) {\n addedItems = [];\n listView.remove(dataItems);\n } else if (groupedMode) {\n listView.replaceGrouped(view);\n } else if (prependOnRefresh && !listView._filter) {\n addedItems = listView.prepend(view);\n addedDataItems = view;\n } else {\n listView.replace(view);\n }\n if (this._shouldShowLoading()) {\n listView.hideLoading();\n }\n listView.trigger(DATABOUND, {\n ns: ui,\n addedItems: addedItems,\n addedDataItems: addedDataItems\n });\n },\n setDataSource: function (dataSource) {\n if (this.dataSource) {\n this._unbindDataSource();\n }\n this.dataSource = dataSource;\n dataSource.bind(CHANGE, this._refreshHandler);\n if (this._shouldShowLoading()) {\n this.dataSource.bind(PROGRESS, this._progressHandler);\n }\n },\n _unbindDataSource: function () {\n this.dataSource.unbind(CHANGE, this._refreshHandler).unbind(PROGRESS, this._progressHandler);\n },\n _shouldShowLoading: function () {\n var options = this.options;\n return !options.pullToRefresh && !options.loadMore && !options.endlessScroll;\n }\n });\n var ListViewFilter = kendo.Class.extend({\n init: function (listView) {\n var filter = this, filterable = listView.options.filterable, events = 'change paste', that = this;\n this.listView = listView;\n this.options = filterable;\n listView.element.before(SEARCH_TEMPLATE({ placeholder: filterable.placeholder || 'Search...' }));\n if (filterable.autoFilter !== false) {\n events += ' keyup';\n }\n this.element = listView.wrapper.find('.km-search-form');\n this.searchInput = listView.wrapper.find('input[type=search]').closest('form').on('submit' + NS, function (e) {\n e.preventDefault();\n }).end().on('focus' + NS, function () {\n filter._oldFilter = filter.searchInput.val();\n }).on(events.split(' ').join(NS + ' ') + NS, proxy(this._filterChange, this));\n this.clearButton = listView.wrapper.find('.km-filter-reset').on(CLICK, proxy(this, '_clearFilter')).hide();\n this._dataSourceChange = $.proxy(this._refreshInput, this);\n listView.bind('_dataSource', function (e) {\n e.dataSource.bind('change', that._dataSourceChange);\n });\n },\n _refreshInput: function () {\n var appliedFilters = this.listView.dataSource.filter();\n var searchInput = this.listView._filter.searchInput;\n if (!appliedFilters || appliedFilters.filters[0].field !== this.listView.options.filterable.field) {\n searchInput.val('');\n } else {\n searchInput.val(appliedFilters.filters[0].value);\n }\n },\n _search: function (expr) {\n this._filter = true;\n this.clearButton[expr ? 'show' : 'hide']();\n this.listView.dataSource.filter(expr);\n },\n _filterChange: function (e) {\n var filter = this;\n if (e.type == 'paste' && this.options.autoFilter !== false) {\n setTimeout(function () {\n filter._applyFilter();\n }, 1);\n } else {\n this._applyFilter();\n }\n },\n _applyFilter: function () {\n var options = this.options, value = this.searchInput.val(), expr = value.length ? {\n field: options.field,\n operator: options.operator || 'startswith',\n ignoreCase: options.ignoreCase,\n value: value\n } : null;\n if (value === this._oldFilter) {\n return;\n }\n this._oldFilter = value;\n this._search(expr);\n },\n _clearFilter: function (e) {\n this.searchInput.val('');\n this._search(null);\n e.preventDefault();\n }\n });\n var ListView = Widget.extend({\n init: function (element, options) {\n var listView = this;\n Widget.fn.init.call(this, element, options);\n element = this.element;\n options = this.options;\n if (options.scrollTreshold) {\n options.scrollThreshold = options.scrollTreshold;\n }\n element.on('down', HIGHLIGHT_SELECTOR, '_highlight').on('move up cancel', HIGHLIGHT_SELECTOR, '_dim');\n this._userEvents = new kendo.UserEvents(element, {\n fastTap: true,\n filter: ITEM_SELECTOR,\n allowSelection: true,\n tap: function (e) {\n listView._click(e);\n }\n });\n element.css('-ms-touch-action', 'auto');\n element.wrap(WRAPPER);\n this.wrapper = this.element.parent();\n this._headerFixer = new HeaderFixer(this);\n this._itemsCache = {};\n this._templates();\n this.virtual = options.endlessScroll || options.loadMore;\n this._style();\n if (this.options.$angular && (this.virtual || this.options.pullToRefresh)) {\n setTimeout($.proxy(this, '_start'));\n } else {\n this._start();\n }\n },\n _start: function () {\n var options = this.options;\n if (this.options.filterable) {\n this._filter = new ListViewFilter(this);\n }\n if (this.virtual) {\n this._itemBinder = new VirtualListViewItemBinder(this);\n } else {\n this._itemBinder = new ListViewItemBinder(this);\n }\n if (this.options.pullToRefresh) {\n this._pullToRefreshHandler = new RefreshHandler(this);\n }\n this.setDataSource(options.dataSource);\n this._enhanceItems(this.items());\n kendo.notify(this, ui);\n },\n events: [\n CLICK,\n DATABINDING,\n DATABOUND,\n ITEM_CHANGE\n ],\n options: {\n name: 'ListView',\n style: '',\n type: 'flat',\n autoBind: true,\n fixedHeaders: false,\n template: '#:data#',\n headerTemplate: '#:value#',\n appendOnRefresh: false,\n loadMore: false,\n endlessScroll: false,\n scrollThreshold: 30,\n pullToRefresh: false,\n messages: {\n loadMoreText: 'Press to load more',\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n },\n pullOffset: 140,\n filterable: false,\n virtualViewSize: null\n },\n refresh: function () {\n this._itemBinder.refresh();\n },\n reset: function () {\n this._itemBinder.reset();\n },\n setDataSource: function (dataSource) {\n var emptyDataSource = !dataSource;\n this.dataSource = DataSource.create(dataSource);\n this.trigger('_dataSource', {\n dataSource: this.dataSource,\n empty: emptyDataSource\n });\n if (this.options.autoBind && !emptyDataSource) {\n this.items().remove();\n this.dataSource.fetch();\n }\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n kendo.destroy(this.element);\n this._userEvents.destroy();\n if (this._itemBinder) {\n this._itemBinder.destroy();\n }\n this.element.unwrap();\n delete this.element;\n delete this.wrapper;\n delete this._userEvents;\n },\n items: function () {\n if (this.options.type === 'group') {\n return this.element.find('.km-list').children();\n } else {\n return this.element.children().not('.km-load-more');\n }\n },\n scroller: function () {\n if (!this._scrollerInstance) {\n this._scrollerInstance = this.element.closest('.km-scroll-wrapper').data('kendoMobileScroller');\n }\n return this._scrollerInstance;\n },\n showLoading: function () {\n var view = this.view();\n if (view && view.loader) {\n view.loader.show();\n }\n },\n hideLoading: function () {\n var view = this.view();\n if (view && view.loader) {\n view.loader.hide();\n }\n },\n insertAt: function (dataItems, index, triggerChange) {\n var listView = this;\n return listView._renderItems(dataItems, function (items) {\n if (index === 0) {\n listView.element.prepend(items);\n } else if (index === -1) {\n listView.element.append(items);\n } else {\n listView.items().eq(index - 1).after(items);\n }\n if (triggerChange) {\n for (var i = 0; i < items.length; i++) {\n listView.trigger(ITEM_CHANGE, {\n item: items.eq(i),\n data: dataItems[i],\n ns: ui\n });\n }\n }\n });\n },\n append: function (dataItems, triggerChange) {\n return this.insertAt(dataItems, -1, triggerChange);\n },\n prepend: function (dataItems, triggerChange) {\n return this.insertAt(dataItems, 0, triggerChange);\n },\n replace: function (dataItems) {\n this.options.type = 'flat';\n this._angularItems('cleanup');\n this.element.empty();\n this._userEvents.cancel();\n this._style();\n return this.insertAt(dataItems, 0);\n },\n replaceGrouped: function (groups) {\n this.options.type = 'group';\n this._angularItems('cleanup');\n this.element.empty();\n var items = $(kendo.render(this.groupTemplate, groups));\n this._enhanceItems(items.children('ul').children('li'));\n this.element.append(items);\n mobile.init(items);\n this._style();\n this._angularItems('compile');\n },\n remove: function (dataItems) {\n var items = this.findByDataItem(dataItems);\n this.angular('cleanup', function () {\n return { elements: items };\n });\n kendo.destroy(items);\n items.remove();\n },\n findByDataItem: function (dataItems) {\n var selectors = [];\n for (var idx = 0, length = dataItems.length; idx < length; idx++) {\n selectors[idx] = '[data-' + kendo.ns + 'uid=' + dataItems[idx].uid + ']';\n }\n return this.element.find(selectors.join(','));\n },\n setDataItem: function (item, dataItem) {\n var listView = this, replaceItem = function (items) {\n var newItem = $(items[0]);\n kendo.destroy(item);\n listView.angular('cleanup', function () {\n return { elements: [$(item)] };\n });\n $(item).replaceWith(newItem);\n listView.trigger(ITEM_CHANGE, {\n item: newItem,\n data: dataItem,\n ns: ui\n });\n };\n return this._renderItems([dataItem], replaceItem)[0];\n },\n updateSize: function () {\n this._size = this.getSize();\n },\n _renderItems: function (dataItems, callback) {\n var items = $(kendo.render(this.template, dataItems));\n callback(items);\n this.angular('compile', function () {\n return {\n elements: items,\n data: dataItems.map(function (data) {\n return { dataItem: data };\n })\n };\n });\n mobile.init(items);\n this._enhanceItems(items);\n return items;\n },\n _dim: function (e) {\n this._toggle(e, false);\n },\n _highlight: function (e) {\n this._toggle(e, true);\n },\n _toggle: function (e, highlight) {\n if (e.which > 1) {\n return;\n }\n var clicked = $(e.currentTarget), item = clicked.parent(), role = attrValue(clicked, 'role') || '', plainItem = !role.match(buttonRegExp), prevented = e.isDefaultPrevented();\n if (plainItem) {\n item.toggleClass(ACTIVE_CLASS, highlight && !prevented);\n }\n },\n _templates: function () {\n var template = this.options.template, headerTemplate = this.options.headerTemplate, dataIDAttribute = ' data-uid=\"#=arguments[0].uid || \"\"#\"', templateProxy = {}, groupTemplateProxy = {};\n if (typeof template === FUNCTION) {\n templateProxy.template = template;\n template = '#=this.template(data)#';\n }\n this.template = proxy(kendo.template('' + template + ''), templateProxy);\n groupTemplateProxy.template = this.template;\n if (typeof headerTemplate === FUNCTION) {\n groupTemplateProxy._headerTemplate = headerTemplate;\n headerTemplate = '#=this._headerTemplate(data)#';\n }\n groupTemplateProxy.headerTemplate = kendo.template(headerTemplate);\n this.groupTemplate = proxy(GROUP_TEMPLATE, groupTemplateProxy);\n },\n _click: function (e) {\n if (e.event.which > 1 || e.event.isDefaultPrevented()) {\n return;\n }\n var dataItem, item = e.target, target = $(e.event.target), buttonElement = target.closest(kendo.roleSelector('button', 'detailbutton', 'backbutton')), button = kendo.widgetInstance(buttonElement, ui), id = item.attr(kendo.attr('uid'));\n if (id) {\n dataItem = this.dataSource.getByUid(id);\n }\n if (this.trigger(CLICK, {\n target: target,\n item: item,\n dataItem: dataItem,\n button: button\n })) {\n e.preventDefault();\n }\n },\n _styleGroups: function () {\n var rootItems = this.element.children();\n rootItems.children('ul').addClass('km-list');\n rootItems.each(function () {\n var li = $(this), groupHeader = li.contents().first();\n li.addClass('km-group-container');\n if (!groupHeader.is('ul') && !groupHeader.is('div.' + GROUP_CLASS)) {\n groupHeader.wrap(GROUP_WRAPPER);\n }\n });\n },\n _style: function () {\n var options = this.options, grouped = options.type === 'group', element = this.element, inset = options.style === 'inset';\n element.addClass('km-listview').toggleClass('km-list', !grouped).toggleClass('km-virtual-list', this.virtual).toggleClass('km-listinset', !grouped && inset).toggleClass('km-listgroup', grouped && !inset).toggleClass('km-listgroupinset', grouped && inset);\n if (!element.parents('.km-listview')[0]) {\n element.closest('.km-content').toggleClass('km-insetcontent', inset);\n }\n if (grouped) {\n this._styleGroups();\n }\n this.trigger(STYLED);\n },\n _enhanceItems: function (items) {\n items.each(function () {\n var item = $(this), child, enhanced = false;\n item.children().each(function () {\n child = $(this);\n if (child.is('a')) {\n enhanceLinkItem(child);\n enhanced = true;\n } else if (child.is('label')) {\n enhanceCheckBoxItem(child);\n enhanced = true;\n }\n });\n if (!enhanced) {\n enhanceItem(item);\n }\n });\n }\n });\n ui.plugin(ListView);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.navbar', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.navbar',\n name: 'NavBar',\n category: 'mobile',\n description: 'The Kendo mobile NavBar widget is used inside a mobile View or Layout Header element to display an application navigation bar.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, ui = mobile.ui, Widget = ui.Widget;\n function createContainer(align, element) {\n var items = element.find('[' + kendo.attr('align') + '=' + align + ']');\n if (items[0]) {\n return $('
              ').append(items).prependTo(element);\n }\n }\n function toggleTitle(centerElement) {\n var siblings = centerElement.siblings(), noTitle = !!centerElement.children('ul')[0], showTitle = !!siblings[0] && $.trim(centerElement.text()) === '', android = !!(kendo.mobile.application && kendo.mobile.application.element.is('.km-android'));\n centerElement.prevAll().toggleClass('km-absolute', noTitle);\n centerElement.toggleClass('km-show-title', showTitle);\n centerElement.toggleClass('km-fill-title', showTitle && !$.trim(centerElement.html()));\n centerElement.toggleClass('km-no-title', noTitle);\n centerElement.toggleClass('km-hide-title', android && !siblings.children().is(':visible'));\n }\n var NavBar = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n that.container().bind('show', $.proxy(this, 'refresh'));\n element.addClass('km-navbar').wrapInner($('
              '));\n that.leftElement = createContainer('left', element);\n that.rightElement = createContainer('right', element);\n that.centerElement = element.find('.km-view-title');\n },\n options: { name: 'NavBar' },\n title: function (value) {\n this.element.find(kendo.roleSelector('view-title')).text(value);\n toggleTitle(this.centerElement);\n },\n refresh: function (e) {\n var view = e.view;\n this.title(view.options.title);\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n kendo.destroy(this.element);\n }\n });\n ui.plugin(NavBar);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.scrollview', [\n 'kendo.fx',\n 'kendo.data',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.scrollview',\n name: 'ScrollView',\n category: 'mobile',\n description: 'The Kendo Mobile ScrollView widget is used to scroll content wider than the device screen.',\n depends: [\n 'fx',\n 'data',\n 'draganddrop'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, mobile = kendo.mobile, ui = mobile.ui, proxy = $.proxy, Transition = kendo.effects.Transition, Pane = kendo.ui.Pane, PaneDimensions = kendo.ui.PaneDimensions, Widget = ui.DataBoundWidget, DataSource = kendo.data.DataSource, Buffer = kendo.data.Buffer, BatchBuffer = kendo.data.BatchBuffer, math = Math, abs = math.abs, ceil = math.ceil, round = math.round, max = math.max, min = math.min, floor = math.floor, CHANGE = 'change', CHANGING = 'changing', REFRESH = 'refresh', CURRENT_PAGE_CLASS = 'km-current-page', VIRTUAL_PAGE_CLASS = 'km-virtual-page', FUNCTION = 'function', ITEM_CHANGE = 'itemChange', CLEANUP = 'cleanup', VIRTUAL_PAGE_COUNT = 3, LEFT_PAGE = -1, CETER_PAGE = 0, RIGHT_PAGE = 1, LEFT_SWIPE = -1, NUDGE = 0, RIGHT_SWIPE = 1;\n var Pager = kendo.Class.extend({\n init: function (scrollView) {\n var that = this, element = $('
                ');\n scrollView.element.append(element);\n this._changeProxy = proxy(that, '_change');\n this._refreshProxy = proxy(that, '_refresh');\n scrollView.bind(CHANGE, this._changeProxy);\n scrollView.bind(REFRESH, this._refreshProxy);\n $.extend(that, {\n element: element,\n scrollView: scrollView\n });\n },\n items: function () {\n return this.element.children();\n },\n _refresh: function (e) {\n var pageHTML = '';\n for (var idx = 0; idx < e.pageCount; idx++) {\n pageHTML += '
              1. ';\n }\n this.element.html(pageHTML);\n this.items().eq(e.page).addClass(CURRENT_PAGE_CLASS);\n },\n _change: function (e) {\n this.items().removeClass(CURRENT_PAGE_CLASS).eq(e.page).addClass(CURRENT_PAGE_CLASS);\n },\n destroy: function () {\n this.scrollView.unbind(CHANGE, this._changeProxy);\n this.scrollView.unbind(REFRESH, this._refreshProxy);\n this.element.remove();\n }\n });\n kendo.mobile.ui.ScrollViewPager = Pager;\n var TRANSITION_END = 'transitionEnd', DRAG_START = 'dragStart', DRAG_END = 'dragEnd';\n var ElasticPane = kendo.Observable.extend({\n init: function (element, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n this.element = element;\n this.container = element.parent();\n var movable, transition, userEvents, dimensions, dimension, pane;\n movable = new kendo.ui.Movable(that.element);\n transition = new Transition({\n axis: 'x',\n movable: movable,\n onEnd: function () {\n that.trigger(TRANSITION_END);\n }\n });\n userEvents = new kendo.UserEvents(element, {\n fastTap: true,\n start: function (e) {\n if (abs(e.x.velocity) * 2 >= abs(e.y.velocity)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n that.trigger(DRAG_START, e);\n transition.cancel();\n },\n allowSelection: true,\n end: function (e) {\n that.trigger(DRAG_END, e);\n }\n });\n dimensions = new PaneDimensions({\n element: that.element,\n container: that.container\n });\n dimension = dimensions.x;\n dimension.bind(CHANGE, function () {\n that.trigger(CHANGE);\n });\n pane = new Pane({\n dimensions: dimensions,\n userEvents: userEvents,\n movable: movable,\n elastic: true\n });\n $.extend(that, {\n duration: options && options.duration || 1,\n movable: movable,\n transition: transition,\n userEvents: userEvents,\n dimensions: dimensions,\n dimension: dimension,\n pane: pane\n });\n this.bind([\n TRANSITION_END,\n DRAG_START,\n DRAG_END,\n CHANGE\n ], options);\n },\n size: function () {\n return {\n width: this.dimensions.x.getSize(),\n height: this.dimensions.y.getSize()\n };\n },\n total: function () {\n return this.dimension.getTotal();\n },\n offset: function () {\n return -this.movable.x;\n },\n updateDimension: function () {\n this.dimension.update(true);\n },\n refresh: function () {\n this.dimensions.refresh();\n },\n moveTo: function (offset) {\n this.movable.moveAxis('x', -offset);\n },\n transitionTo: function (offset, ease, instant) {\n if (instant) {\n this.moveTo(-offset);\n } else {\n this.transition.moveTo({\n location: offset,\n duration: this.duration,\n ease: ease\n });\n }\n }\n });\n kendo.mobile.ui.ScrollViewElasticPane = ElasticPane;\n var ScrollViewContent = kendo.Observable.extend({\n init: function (element, pane, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n that.element = element;\n that.pane = pane;\n that._getPages();\n this.page = 0;\n this.pageSize = options.pageSize || 1;\n this.contentHeight = options.contentHeight;\n this.enablePager = options.enablePager;\n this.pagerOverlay = options.pagerOverlay;\n },\n scrollTo: function (page, instant) {\n this.page = page;\n this.pane.transitionTo(-page * this.pane.size().width, Transition.easeOutExpo, instant);\n },\n paneMoved: function (swipeType, bounce, callback, instant) {\n var that = this, pane = that.pane, width = pane.size().width * that.pageSize, approx = round, ease = bounce ? Transition.easeOutBack : Transition.easeOutExpo, snap, nextPage;\n if (swipeType === LEFT_SWIPE) {\n approx = ceil;\n } else if (swipeType === RIGHT_SWIPE) {\n approx = floor;\n }\n nextPage = approx(pane.offset() / width);\n snap = max(that.minSnap, min(-nextPage * width, that.maxSnap));\n if (nextPage != that.page) {\n if (callback && callback({\n currentPage: that.page,\n nextPage: nextPage\n })) {\n snap = -that.page * pane.size().width;\n }\n }\n pane.transitionTo(snap, ease, instant);\n },\n updatePage: function () {\n var pane = this.pane, page = round(pane.offset() / pane.size().width);\n if (page != this.page) {\n this.page = page;\n return true;\n }\n return false;\n },\n forcePageUpdate: function () {\n return this.updatePage();\n },\n resizeTo: function (size) {\n var pane = this.pane, width = size.width;\n this.pageElements.width(width);\n if (this.contentHeight === '100%') {\n var containerHeight = this.element.parent().height();\n if (this.enablePager === true) {\n var pager = this.element.parent().find('ol.km-pages');\n if (!this.pagerOverlay && pager.length) {\n containerHeight -= pager.outerHeight(true);\n }\n }\n this.element.css('height', containerHeight);\n this.pageElements.css('height', containerHeight);\n }\n pane.updateDimension();\n if (!this._paged) {\n this.page = floor(pane.offset() / width);\n }\n this.scrollTo(this.page, true);\n this.pageCount = ceil(pane.total() / width);\n this.minSnap = -(this.pageCount - 1) * width;\n this.maxSnap = 0;\n },\n _getPages: function () {\n this.pageElements = this.element.find(kendo.roleSelector('page'));\n this._paged = this.pageElements.length > 0;\n }\n });\n kendo.mobile.ui.ScrollViewContent = ScrollViewContent;\n var VirtualScrollViewContent = kendo.Observable.extend({\n init: function (element, pane, options) {\n var that = this;\n kendo.Observable.fn.init.call(this);\n that.element = element;\n that.pane = pane;\n that.options = options;\n that._templates();\n that.page = options.page || 0;\n that.pages = [];\n that._initPages();\n that.resizeTo(that.pane.size());\n that.pane.dimension.forceEnabled();\n },\n setDataSource: function (dataSource) {\n this.dataSource = DataSource.create(dataSource);\n this._buffer();\n this._pendingPageRefresh = false;\n this._pendingWidgetRefresh = false;\n },\n _viewShow: function () {\n var that = this;\n if (that._pendingWidgetRefresh) {\n setTimeout(function () {\n that._resetPages();\n }, 0);\n that._pendingWidgetRefresh = false;\n }\n },\n _buffer: function () {\n var itemsPerPage = this.options.itemsPerPage;\n if (this.buffer) {\n this.buffer.destroy();\n }\n if (itemsPerPage > 1) {\n this.buffer = new BatchBuffer(this.dataSource, itemsPerPage);\n } else {\n this.buffer = new Buffer(this.dataSource, itemsPerPage * 3);\n }\n this._resizeProxy = proxy(this, '_onResize');\n this._resetProxy = proxy(this, '_onReset');\n this._endReachedProxy = proxy(this, '_onEndReached');\n this.buffer.bind({\n 'resize': this._resizeProxy,\n 'reset': this._resetProxy,\n 'endreached': this._endReachedProxy\n });\n },\n _templates: function () {\n var template = this.options.template, emptyTemplate = this.options.emptyTemplate, templateProxy = {}, emptyTemplateProxy = {};\n if (typeof template === FUNCTION) {\n templateProxy.template = template;\n template = '#=this.template(data)#';\n }\n this.template = proxy(kendo.template(template), templateProxy);\n if (typeof emptyTemplate === FUNCTION) {\n emptyTemplateProxy.emptyTemplate = emptyTemplate;\n emptyTemplate = '#=this.emptyTemplate(data)#';\n }\n this.emptyTemplate = proxy(kendo.template(emptyTemplate), emptyTemplateProxy);\n },\n _initPages: function () {\n var pages = this.pages, element = this.element, page;\n for (var i = 0; i < VIRTUAL_PAGE_COUNT; i++) {\n page = new Page(element);\n pages.push(page);\n }\n this.pane.updateDimension();\n },\n resizeTo: function (size) {\n var pages = this.pages, pane = this.pane;\n for (var i = 0; i < pages.length; i++) {\n pages[i].setWidth(size.width);\n }\n if (this.options.contentHeight === 'auto') {\n this.element.css('height', this.pages[1].element.height());\n } else if (this.options.contentHeight === '100%') {\n var containerHeight = this.element.parent().height();\n if (this.options.enablePager === true) {\n var pager = this.element.parent().find('ol.km-pages');\n if (!this.options.pagerOverlay && pager.length) {\n containerHeight -= pager.outerHeight(true);\n }\n }\n this.element.css('height', containerHeight);\n pages[0].element.css('height', containerHeight);\n pages[1].element.css('height', containerHeight);\n pages[2].element.css('height', containerHeight);\n }\n pane.updateDimension();\n this._repositionPages();\n this.width = size.width;\n },\n scrollTo: function (page) {\n var buffer = this.buffer, dataItem;\n buffer.syncDataSource();\n dataItem = buffer.at(page);\n if (!dataItem) {\n return;\n }\n this._updatePagesContent(page);\n this.page = page;\n },\n paneMoved: function (swipeType, bounce, callback, instant) {\n var that = this, pane = that.pane, width = pane.size().width, offset = pane.offset(), thresholdPassed = Math.abs(offset) >= width / 3, ease = bounce ? kendo.effects.Transition.easeOutBack : kendo.effects.Transition.easeOutExpo, isEndReached = that.page + 2 > that.buffer.total(), nextPage, delta = 0;\n if (swipeType === RIGHT_SWIPE) {\n if (that.page !== 0) {\n delta = -1;\n }\n } else if (swipeType === LEFT_SWIPE && !isEndReached) {\n delta = 1;\n } else if (offset > 0 && (thresholdPassed && !isEndReached)) {\n delta = 1;\n } else if (offset < 0 && thresholdPassed) {\n if (that.page !== 0) {\n delta = -1;\n }\n }\n nextPage = that.page;\n if (delta) {\n nextPage = delta > 0 ? nextPage + 1 : nextPage - 1;\n }\n if (callback && callback({\n currentPage: that.page,\n nextPage: nextPage\n })) {\n delta = 0;\n }\n if (delta === 0) {\n that._cancelMove(ease, instant);\n } else if (delta === -1) {\n that._moveBackward(instant);\n } else if (delta === 1) {\n that._moveForward(instant);\n }\n },\n updatePage: function () {\n var pages = this.pages;\n if (this.pane.offset() === 0) {\n return false;\n }\n if (this.pane.offset() > 0) {\n pages.push(this.pages.shift());\n this.page++;\n this.setPageContent(pages[2], this.page + 1);\n } else {\n pages.unshift(this.pages.pop());\n this.page--;\n this.setPageContent(pages[0], this.page - 1);\n }\n this._repositionPages();\n this._resetMovable();\n return true;\n },\n forcePageUpdate: function () {\n var offset = this.pane.offset(), threshold = this.pane.size().width * 3 / 4;\n if (abs(offset) > threshold) {\n return this.updatePage();\n }\n return false;\n },\n _resetMovable: function () {\n this.pane.moveTo(0);\n },\n _moveForward: function (instant) {\n this.pane.transitionTo(-this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n _moveBackward: function (instant) {\n this.pane.transitionTo(this.width, kendo.effects.Transition.easeOutExpo, instant);\n },\n _cancelMove: function (ease, instant) {\n this.pane.transitionTo(0, ease, instant);\n },\n _resetPages: function () {\n this.page = this.options.page || 0;\n this._updatePagesContent(this.page);\n this._repositionPages();\n this.trigger('reset');\n },\n _onResize: function () {\n this.pageCount = ceil(this.dataSource.total() / this.options.itemsPerPage);\n if (this._pendingPageRefresh) {\n this._updatePagesContent(this.page);\n this._pendingPageRefresh = false;\n }\n this.trigger('resize');\n },\n _onReset: function () {\n this.pageCount = ceil(this.dataSource.total() / this.options.itemsPerPage);\n this._resetPages();\n },\n _onEndReached: function () {\n this._pendingPageRefresh = true;\n },\n _repositionPages: function () {\n var pages = this.pages;\n pages[0].position(LEFT_PAGE);\n pages[1].position(CETER_PAGE);\n pages[2].position(RIGHT_PAGE);\n },\n _updatePagesContent: function (offset) {\n var pages = this.pages, currentPage = offset || 0;\n this.setPageContent(pages[0], currentPage - 1);\n this.setPageContent(pages[1], currentPage);\n this.setPageContent(pages[2], currentPage + 1);\n },\n setPageContent: function (page, index) {\n var buffer = this.buffer, template = this.template, emptyTemplate = this.emptyTemplate, view = null;\n if (index >= 0) {\n view = buffer.at(index);\n if ($.isArray(view) && !view.length) {\n view = null;\n }\n }\n this.trigger(CLEANUP, { item: page.element });\n if (view !== null) {\n page.content(template(view));\n } else {\n page.content(emptyTemplate({}));\n }\n kendo.mobile.init(page.element);\n this.trigger(ITEM_CHANGE, {\n item: page.element,\n data: view,\n ns: kendo.mobile.ui\n });\n }\n });\n kendo.mobile.ui.VirtualScrollViewContent = VirtualScrollViewContent;\n var Page = kendo.Class.extend({\n init: function (container) {\n this.element = $('
                ');\n this.width = container.width();\n this.element.width(this.width);\n container.append(this.element);\n },\n content: function (theContent) {\n this.element.html(theContent);\n },\n position: function (position) {\n this.element.css('transform', 'translate3d(' + this.width * position + 'px, 0, 0)');\n },\n setWidth: function (width) {\n this.width = width;\n this.element.width(width);\n }\n });\n kendo.mobile.ui.VirtualPage = Page;\n var ScrollView = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n element = that.element;\n kendo.stripWhitespace(element[0]);\n element.wrapInner('
                ').addClass('km-scrollview');\n if (this.options.enablePager) {\n this.pager = new Pager(this);\n if (this.options.pagerOverlay) {\n element.addClass('km-scrollview-overlay');\n }\n }\n that.inner = element.children().first();\n that.page = 0;\n that.inner.css('height', options.contentHeight);\n that.pane = new ElasticPane(that.inner, {\n duration: this.options.duration,\n transitionEnd: proxy(this, '_transitionEnd'),\n dragStart: proxy(this, '_dragStart'),\n dragEnd: proxy(this, '_dragEnd'),\n change: proxy(this, REFRESH)\n });\n that.bind('resize', function () {\n that.pane.refresh();\n });\n that.page = options.page;\n var empty = this.inner.children().length === 0;\n var content = empty ? new VirtualScrollViewContent(that.inner, that.pane, options) : new ScrollViewContent(that.inner, that.pane, options);\n content.page = that.page;\n content.bind('reset', function () {\n this._pendingPageRefresh = false;\n that._syncWithContent();\n that.trigger(REFRESH, {\n pageCount: content.pageCount,\n page: content.page\n });\n });\n content.bind('resize', function () {\n that.trigger(REFRESH, {\n pageCount: content.pageCount,\n page: content.page\n });\n });\n content.bind(ITEM_CHANGE, function (e) {\n that.trigger(ITEM_CHANGE, e);\n that.angular('compile', function () {\n return {\n elements: e.item,\n data: [{ dataItem: e.data }]\n };\n });\n });\n content.bind(CLEANUP, function (e) {\n that.angular('cleanup', function () {\n return { elements: e.item };\n });\n });\n that._content = content;\n that.setDataSource(options.dataSource);\n var mobileContainer = that.container();\n if (mobileContainer.nullObject) {\n that.viewInit();\n that.viewShow();\n } else {\n mobileContainer.bind('show', proxy(this, 'viewShow')).bind('init', proxy(this, 'viewInit'));\n }\n },\n options: {\n name: 'ScrollView',\n page: 0,\n duration: 400,\n velocityThreshold: 0.8,\n contentHeight: 'auto',\n pageSize: 1,\n itemsPerPage: 1,\n bounceVelocityThreshold: 1.6,\n enablePager: true,\n pagerOverlay: false,\n autoBind: true,\n template: '',\n emptyTemplate: ''\n },\n events: [\n CHANGING,\n CHANGE,\n REFRESH\n ],\n destroy: function () {\n Widget.fn.destroy.call(this);\n kendo.destroy(this.element);\n },\n viewInit: function () {\n if (this.options.autoBind) {\n this._content.scrollTo(this._content.page, true);\n }\n },\n viewShow: function () {\n this.pane.refresh();\n },\n refresh: function () {\n var content = this._content;\n content.resizeTo(this.pane.size());\n this.page = content.page;\n this.trigger(REFRESH, {\n pageCount: content.pageCount,\n page: content.page\n });\n },\n content: function (html) {\n this.element.children().first().html(html);\n this._content._getPages();\n this.pane.refresh();\n },\n value: function (item) {\n var dataSource = this.dataSource;\n if (item) {\n this.scrollTo(dataSource.indexOf(item), true);\n } else {\n return dataSource.at(this.page);\n }\n },\n scrollTo: function (page, instant) {\n this._content.scrollTo(page, instant);\n this._syncWithContent();\n },\n prev: function () {\n var that = this, prevPage = that.page - 1;\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(RIGHT_SWIPE, undefined, function (eventData) {\n return that.trigger(CHANGING, eventData);\n });\n } else if (prevPage > -1) {\n that.scrollTo(prevPage);\n }\n },\n next: function () {\n var that = this, nextPage = that.page + 1;\n if (that._content instanceof VirtualScrollViewContent) {\n that._content.paneMoved(LEFT_SWIPE, undefined, function (eventData) {\n return that.trigger(CHANGING, eventData);\n });\n } else if (nextPage < that._content.pageCount) {\n that.scrollTo(nextPage);\n }\n },\n setDataSource: function (dataSource) {\n if (!(this._content instanceof VirtualScrollViewContent)) {\n return;\n }\n var emptyDataSource = !dataSource;\n this.dataSource = DataSource.create(dataSource);\n this._content.setDataSource(this.dataSource);\n if (this.options.autoBind && !emptyDataSource) {\n this.dataSource.fetch();\n }\n },\n items: function () {\n return this.element.find('.' + VIRTUAL_PAGE_CLASS);\n },\n _syncWithContent: function () {\n var pages = this._content.pages, buffer = this._content.buffer, data, element;\n this.page = this._content.page;\n data = buffer ? buffer.at(this.page) : undefined;\n if (!(data instanceof Array)) {\n data = [data];\n }\n element = pages ? pages[1].element : undefined;\n this.trigger(CHANGE, {\n page: this.page,\n element: element,\n data: data\n });\n },\n _dragStart: function () {\n if (this._content.forcePageUpdate()) {\n this._syncWithContent();\n }\n },\n _dragEnd: function (e) {\n var that = this, velocity = e.x.velocity, velocityThreshold = this.options.velocityThreshold, swipeType = NUDGE, bounce = abs(velocity) > this.options.bounceVelocityThreshold;\n if (velocity > velocityThreshold) {\n swipeType = RIGHT_SWIPE;\n } else if (velocity < -velocityThreshold) {\n swipeType = LEFT_SWIPE;\n }\n this._content.paneMoved(swipeType, bounce, function (eventData) {\n return that.trigger(CHANGING, eventData);\n });\n },\n _transitionEnd: function () {\n if (this._content.updatePage()) {\n this._syncWithContent();\n }\n }\n });\n ui.plugin(ScrollView);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.switch', [\n 'kendo.fx',\n 'kendo.userevents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.switch',\n name: 'Switch',\n category: 'mobile',\n description: 'The mobile Switch widget is used to display two exclusive choices.',\n depends: [\n 'fx',\n 'userevents'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.mobile.ui, Widget = ui.Widget, support = kendo.support, CHANGE = 'change', SWITCHON = 'km-switch-on', SWITCHOFF = 'km-switch-off', MARGINLEFT = 'margin-left', ACTIVE_STATE = 'km-state-active', DISABLED_STATE = 'km-state-disabled', DISABLED = 'disabled', TRANSFORMSTYLE = support.transitions.css + 'transform', proxy = $.proxy;\n function limitValue(value, minLimit, maxLimit) {\n return Math.max(minLimit, Math.min(maxLimit, value));\n }\n var SWITCH_MARKUP = ' {0} {1} ';\n var Switch = Widget.extend({\n init: function (element, options) {\n var that = this, checked;\n Widget.fn.init.call(that, element, options);\n options = that.options;\n that.wrapper = $(kendo.format(SWITCH_MARKUP, options.onLabel, options.offLabel));\n that.handle = that.wrapper.find('.km-switch-handle');\n that.background = that.wrapper.find('.km-switch-background');\n that.wrapper.insertBefore(that.element).prepend(that.element);\n that._drag();\n that.origin = parseInt(that.background.css(MARGINLEFT), 10);\n that.constrain = 0;\n that.snapPoint = 0;\n element = that.element[0];\n element.type = 'checkbox';\n that._animateBackground = true;\n checked = that.options.checked;\n if (checked === null) {\n checked = element.checked;\n }\n that.check(checked);\n that.options.enable = that.options.enable && !that.element.attr(DISABLED);\n that.enable(that.options.enable);\n that.refresh();\n kendo.notify(that, kendo.mobile.ui);\n },\n refresh: function () {\n var that = this, handleWidth = that.handle.outerWidth(true);\n that.width = that.wrapper.width();\n that.constrain = that.width - handleWidth;\n that.snapPoint = that.constrain / 2;\n if (typeof that.origin != 'number') {\n that.origin = parseInt(that.background.css(MARGINLEFT), 10);\n }\n that.background.data('origin', that.origin);\n that.check(that.element[0].checked);\n },\n events: [CHANGE],\n options: {\n name: 'Switch',\n onLabel: 'on',\n offLabel: 'off',\n checked: null,\n enable: true\n },\n check: function (check) {\n var that = this, element = that.element[0];\n if (check === undefined) {\n return element.checked;\n }\n that._position(check ? that.constrain : 0);\n element.checked = check;\n that.wrapper.toggleClass(SWITCHON, check).toggleClass(SWITCHOFF, !check);\n },\n value: function () {\n return this.check.apply(this, arguments);\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.userEvents.destroy();\n },\n toggle: function () {\n var that = this;\n that.check(!that.element[0].checked);\n },\n enable: function (enable) {\n var element = this.element, wrapper = this.wrapper;\n if (typeof enable == 'undefined') {\n enable = true;\n }\n this.options.enable = enable;\n if (enable) {\n element.removeAttr(DISABLED);\n } else {\n element.attr(DISABLED, DISABLED);\n }\n wrapper.toggleClass(DISABLED_STATE, !enable);\n },\n _resize: function () {\n this.refresh();\n },\n _move: function (e) {\n var that = this;\n e.preventDefault();\n that._position(limitValue(that.position + e.x.delta, 0, that.width - that.handle.outerWidth(true)));\n },\n _position: function (position) {\n var that = this;\n that.position = position;\n that.handle.css(TRANSFORMSTYLE, 'translatex(' + position + 'px)');\n if (that._animateBackground) {\n that.background.css(MARGINLEFT, that.origin + position);\n }\n },\n _start: function () {\n if (!this.options.enable) {\n this.userEvents.cancel();\n } else {\n this.userEvents.capture();\n this.handle.addClass(ACTIVE_STATE);\n }\n },\n _stop: function () {\n var that = this;\n that.handle.removeClass(ACTIVE_STATE);\n that._toggle(that.position > that.snapPoint);\n },\n _toggle: function (checked) {\n var that = this, handle = that.handle, element = that.element[0], value = element.checked, duration = kendo.mobile.application && kendo.mobile.application.os.wp ? 100 : 200, distance;\n that.wrapper.toggleClass(SWITCHON, checked).toggleClass(SWITCHOFF, !checked);\n that.position = distance = checked * that.constrain;\n if (that._animateBackground) {\n that.background.kendoStop(true, true).kendoAnimate({\n effects: 'slideMargin',\n offset: distance,\n reset: true,\n reverse: !checked,\n axis: 'left',\n duration: duration\n });\n }\n handle.kendoStop(true, true).kendoAnimate({\n effects: 'slideTo',\n duration: duration,\n offset: distance + 'px,0',\n reset: true,\n complete: function () {\n if (value !== checked) {\n element.checked = checked;\n that.trigger(CHANGE, { checked: checked });\n }\n }\n });\n },\n _drag: function () {\n var that = this;\n that.userEvents = new kendo.UserEvents(that.wrapper, {\n fastTap: true,\n tap: function () {\n if (that.options.enable) {\n that._toggle(!that.element[0].checked);\n }\n },\n start: proxy(that._start, that),\n move: proxy(that._move, that),\n end: proxy(that._stop, that)\n });\n }\n });\n ui.plugin(Switch);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.mobile.tabstrip', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'mobile.tabstrip',\n name: 'TabStrip',\n category: 'mobile',\n description: 'The mobile TabStrip widget is used inside a mobile view or layout footer element to display an application-wide group of navigation buttons.',\n depends: ['core']\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.mobile.ui, Widget = ui.Widget, ACTIVE_STATE_CLASS = 'km-state-active', SELECT = 'select';\n function createBadge(value) {\n return $('' + value + '');\n }\n var TabStrip = Widget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that.container().bind('show', $.proxy(this, 'refresh'));\n that.element.addClass('km-tabstrip').find('a').each(that._buildButton).eq(that.options.selectedIndex).addClass(ACTIVE_STATE_CLASS);\n that.element.on('down', 'a', '_release');\n },\n events: [SELECT],\n switchTo: function (url) {\n var tabs = this.element.find('a'), tab, path, idx = 0, length = tabs.length;\n if (isNaN(url)) {\n for (; idx < length; idx++) {\n tab = tabs[idx];\n path = tab.href.replace(/(\\#.+)(\\?.+)$/, '$1');\n if (path.indexOf(url, path.length - url.length) !== -1) {\n this._setActiveItem($(tab));\n return true;\n }\n }\n } else {\n this._setActiveItem(tabs.eq(url));\n return true;\n }\n return false;\n },\n switchByFullUrl: function (url) {\n var tab;\n tab = this.element.find('a[href$=\\'' + url + '\\']');\n this._setActiveItem(tab);\n },\n clear: function () {\n this.currentItem().removeClass(ACTIVE_STATE_CLASS);\n },\n currentItem: function () {\n return this.element.children('.' + ACTIVE_STATE_CLASS);\n },\n badge: function (item, value) {\n var tabstrip = this.element, badge;\n if (!isNaN(item)) {\n item = tabstrip.children().get(item);\n }\n item = tabstrip.find(item);\n badge = $(item.find('.km-badge')[0] || createBadge(value).insertAfter(item.children('.km-icon')));\n if (value || value === 0) {\n badge.html(value);\n return this;\n }\n if (value === false) {\n badge.empty().remove();\n return this;\n }\n return badge.html();\n },\n _release: function (e) {\n if (e.which > 1) {\n return;\n }\n var that = this, item = $(e.currentTarget);\n if (item[0] === that.currentItem()[0]) {\n return;\n }\n if (that.trigger(SELECT, { item: item })) {\n e.preventDefault();\n } else {\n that._setActiveItem(item);\n }\n },\n _setActiveItem: function (item) {\n if (!item[0]) {\n return;\n }\n this.clear();\n item.addClass(ACTIVE_STATE_CLASS);\n },\n _buildButton: function () {\n var button = $(this), icon = kendo.attrValue(button, 'icon'), badge = kendo.attrValue(button, 'badge'), image = button.find('img'), iconSpan = $('');\n button.addClass('km-button').attr(kendo.attr('role'), 'tab').contents().not(image).wrapAll('');\n if (image[0]) {\n image.addClass('km-image').prependTo(button);\n } else {\n button.prepend(iconSpan);\n if (icon) {\n iconSpan.addClass('km-' + icon);\n if (badge || badge === 0) {\n createBadge(badge).insertAfter(iconSpan);\n }\n }\n }\n },\n refresh: function (e) {\n var url = e.view.id;\n if (url && !this.switchTo(e.view.id)) {\n this.switchTo(url);\n }\n },\n options: {\n name: 'TabStrip',\n selectedIndex: 0,\n enable: true\n }\n });\n ui.plugin(TabStrip);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.angular', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'angular',\n name: 'AngularJS Directives',\n category: 'framework',\n description: 'Adds Kendo UI for AngularJS directives',\n depends: ['core'],\n defer: true\n };\n (function ($, angular, undefined) {\n 'use strict';\n if (!angular || !angular.injector) {\n return;\n }\n var module = angular.module('kendo.directives', []), $injector = angular.injector(['ng']), $parse = $injector.get('$parse'), $timeout = $injector.get('$timeout'), $defaultCompile, $log = $injector.get('$log');\n function withoutTimeout(f) {\n var save = $timeout;\n try {\n $timeout = function (f) {\n return f();\n };\n return f();\n } finally {\n $timeout = save;\n }\n }\n var OPTIONS_NOW;\n var createDataSource = function () {\n var types = {\n TreeList: 'TreeListDataSource',\n TreeView: 'HierarchicalDataSource',\n Scheduler: 'SchedulerDataSource',\n PanelBar: '$PLAIN',\n Menu: '$PLAIN',\n ContextMenu: '$PLAIN'\n };\n var toDataSource = function (dataSource, type) {\n if (type == '$PLAIN') {\n return dataSource;\n }\n return kendo.data[type].create(dataSource);\n };\n return function (scope, element, role, source) {\n var type = types[role] || 'DataSource';\n var current = scope.$eval(source);\n var ds = toDataSource(current, type);\n scope.$watch(source, function (mew) {\n var widget = kendoWidgetInstance(element);\n if (widget && typeof widget.setDataSource == 'function') {\n if (mew !== current) {\n var ds = toDataSource(mew, type);\n widget.setDataSource(ds);\n current = mew;\n }\n }\n });\n return ds;\n };\n }();\n var ignoredAttributes = {\n kDataSource: true,\n kOptions: true,\n kRebind: true,\n kNgModel: true,\n kNgDelay: true\n };\n var ignoredOwnProperties = {\n name: true,\n title: true,\n style: true\n };\n function createWidget(scope, element, attrs, widget, origAttr, controllers) {\n if (!(element instanceof jQuery)) {\n throw new Error('The Kendo UI directives require jQuery to be available before AngularJS. Please include jquery before angular in the document.');\n }\n var kNgDelay = attrs.kNgDelay, delayValue = scope.$eval(kNgDelay);\n controllers = controllers || [];\n var ngModel = controllers[0], ngForm = controllers[1];\n var ctor = $(element)[widget];\n if (!ctor) {\n window.console.error('Could not find: ' + widget);\n return null;\n }\n var parsed = parseOptions(scope, element, attrs, widget, ctor);\n var options = parsed.options;\n if (parsed.unresolved.length) {\n var promises = [];\n for (var i = 0, len = parsed.unresolved.length; i < len; i++) {\n var unresolved = parsed.unresolved[i];\n var promise = $.Deferred(function (d) {\n var unwatch = scope.$watch(unresolved.path, function (newValue) {\n if (newValue !== undefined) {\n unwatch();\n d.resolve();\n }\n });\n }).promise();\n promises.push(promise);\n }\n $.when.apply(null, promises).then(createIt);\n return;\n }\n if (kNgDelay && !delayValue) {\n var root = scope.$root || scope;\n var register = function () {\n var unregister = scope.$watch(kNgDelay, function (newValue) {\n if (newValue !== undefined) {\n unregister();\n element.removeAttr(attrs.$attr.kNgDelay);\n kNgDelay = null;\n $timeout(createIt);\n }\n });\n };\n if (/^\\$(digest|apply)$/.test(root.$$phase)) {\n register();\n } else {\n scope.$apply(register);\n }\n return;\n } else {\n return createIt();\n }\n function createIt() {\n var originalElement;\n if (attrs.kRebind) {\n originalElement = $($(element)[0].cloneNode(true));\n }\n options = parseOptions(scope, element, attrs, widget, ctor).options;\n if (element.is('select')) {\n (function (options) {\n if (options.length > 0) {\n var first = $(options[0]);\n if (!/\\S/.test(first.text()) && /^\\?/.test(first.val())) {\n first.remove();\n }\n }\n }(element[0].options));\n }\n var object = ctor.call(element, OPTIONS_NOW = options).data(widget);\n exposeWidget(object, scope, attrs, widget, origAttr);\n scope.$emit('kendoWidgetCreated', object);\n var destroyRegister = destroyWidgetOnScopeDestroy(scope, object);\n if (attrs.kRebind) {\n setupRebind(object, scope, element, originalElement, attrs.kRebind, destroyRegister, attrs);\n }\n if (attrs.kNgDisabled) {\n var kNgDisabled = attrs.kNgDisabled;\n var isDisabled = scope.$eval(kNgDisabled);\n if (isDisabled) {\n object.enable(!isDisabled);\n }\n bindToKNgDisabled(object, scope, element, kNgDisabled);\n }\n if (attrs.kNgReadonly) {\n var kNgReadonly = attrs.kNgReadonly;\n var isReadonly = scope.$eval(kNgReadonly);\n if (isReadonly) {\n object.readonly(isReadonly);\n }\n bindToKNgReadonly(object, scope, element, kNgReadonly);\n }\n if (attrs.kNgModel) {\n bindToKNgModel(object, scope, attrs.kNgModel);\n }\n if (ngModel) {\n bindToNgModel(object, scope, element, ngModel, ngForm);\n }\n if (object) {\n propagateClassToWidgetWrapper(object, element);\n }\n return object;\n }\n }\n function parseOptions(scope, element, attrs, widget, ctor) {\n var role = widget.replace(/^kendo/, '');\n var unresolved = [];\n var optionsPath = attrs.kOptions || attrs.options;\n var optionsValue = scope.$eval(optionsPath);\n if (optionsPath && optionsValue === undefined) {\n unresolved.push({\n option: 'options',\n path: optionsPath\n });\n }\n var options = angular.extend({}, attrs.defaultOptions, optionsValue);\n function addOption(name, value) {\n var scopeValue = angular.copy(scope.$eval(value));\n if (scopeValue === undefined) {\n unresolved.push({\n option: name,\n path: value\n });\n } else {\n options[name] = scopeValue;\n }\n }\n var widgetOptions = ctor.widget.prototype.options;\n var widgetEvents = ctor.widget.prototype.events;\n $.each(attrs, function (name, value) {\n if (name === 'source' || name === 'kDataSource' || name === 'kScopeField' || name === 'scopeField') {\n return;\n }\n var dataName = 'data' + name.charAt(0).toUpperCase() + name.slice(1);\n if (name.indexOf('on') === 0) {\n var eventKey = name.replace(/^on./, function (prefix) {\n return prefix.charAt(2).toLowerCase();\n });\n if (widgetEvents.indexOf(eventKey) > -1) {\n options[eventKey] = value;\n }\n }\n if (widgetOptions.hasOwnProperty(dataName)) {\n addOption(dataName, value);\n } else if (widgetOptions.hasOwnProperty(name) && !ignoredOwnProperties[name]) {\n addOption(name, value);\n } else if (!ignoredAttributes[name]) {\n var match = name.match(/^k(On)?([A-Z].*)/);\n if (match) {\n var optionName = match[2].charAt(0).toLowerCase() + match[2].slice(1);\n if (match[1] && name != 'kOnLabel') {\n options[optionName] = value;\n } else {\n if (name == 'kOnLabel') {\n optionName = 'onLabel';\n }\n addOption(optionName, value);\n }\n }\n }\n });\n var dataSource = attrs.kDataSource || attrs.source;\n if (dataSource) {\n options.dataSource = createDataSource(scope, element, role, dataSource);\n }\n options.$angular = [scope];\n return {\n options: options,\n unresolved: unresolved\n };\n }\n function bindToKNgDisabled(widget, scope, element, kNgDisabled) {\n if (kendo.ui.PanelBar && widget instanceof kendo.ui.PanelBar || kendo.ui.Menu && widget instanceof kendo.ui.Menu) {\n $log.warn('k-ng-disabled specified on a widget that does not have the enable() method: ' + widget.options.name);\n return;\n }\n scope.$watch(kNgDisabled, function (newValue, oldValue) {\n if (newValue != oldValue) {\n widget.enable(!newValue);\n }\n });\n }\n function bindToKNgReadonly(widget, scope, element, kNgReadonly) {\n if (typeof widget.readonly != 'function') {\n $log.warn('k-ng-readonly specified on a widget that does not have the readonly() method: ' + widget.options.name);\n return;\n }\n scope.$watch(kNgReadonly, function (newValue, oldValue) {\n if (newValue != oldValue) {\n widget.readonly(newValue);\n }\n });\n }\n function exposeWidget(widget, scope, attrs, kendoWidget, origAttr) {\n if (attrs[origAttr]) {\n var set = $parse(attrs[origAttr]).assign;\n if (set) {\n set(scope, widget);\n } else {\n throw new Error(origAttr + ' attribute used but expression in it is not assignable: ' + attrs[kendoWidget]);\n }\n }\n }\n function formValue(element) {\n if (/checkbox|radio/i.test(element.attr('type'))) {\n return element.prop('checked');\n }\n return element.val();\n }\n var formRegExp = /^(input|select|textarea)$/i;\n function isForm(element) {\n return formRegExp.test(element[0].tagName);\n }\n function bindToNgModel(widget, scope, element, ngModel, ngForm) {\n if (!widget.value) {\n return;\n }\n var value;\n var haveChangeOnElement = false;\n if (isForm(element)) {\n value = function () {\n return formValue(element);\n };\n } else {\n value = function () {\n return widget.value();\n };\n }\n ngModel.$render = function () {\n var val = ngModel.$viewValue;\n if (val === undefined) {\n val = ngModel.$modelValue;\n }\n if (val === undefined) {\n val = null;\n }\n haveChangeOnElement = true;\n setTimeout(function () {\n haveChangeOnElement = false;\n if (widget) {\n var kNgModel = scope[widget.element.attr('k-ng-model')];\n if (kNgModel) {\n val = kNgModel;\n }\n if (widget.options.autoBind === false && !widget.listView.bound()) {\n if (val) {\n widget.value(val);\n }\n } else {\n widget.value(val);\n }\n }\n }, 0);\n };\n if (isForm(element)) {\n element.on('change', function () {\n haveChangeOnElement = true;\n });\n }\n var onChange = function (pristine) {\n return function () {\n var formPristine;\n if (haveChangeOnElement) {\n return;\n }\n if (pristine && ngForm) {\n formPristine = ngForm.$pristine;\n }\n ngModel.$setViewValue(value());\n if (pristine) {\n ngModel.$setPristine();\n if (formPristine) {\n ngForm.$setPristine();\n }\n }\n digest(scope);\n };\n };\n widget.first('change', onChange(false));\n if (!(kendo.ui.AutoComplete && widget instanceof kendo.ui.AutoComplete)) {\n widget.first('dataBound', onChange(true));\n }\n var currentVal = value();\n if (!isNaN(ngModel.$viewValue) && currentVal != ngModel.$viewValue) {\n if (!ngModel.$isEmpty(ngModel.$viewValue)) {\n widget.value(ngModel.$viewValue);\n } else if (currentVal != null && currentVal !== '' && currentVal != ngModel.$viewValue) {\n ngModel.$setViewValue(currentVal);\n }\n }\n ngModel.$setPristine();\n }\n function bindToKNgModel(widget, scope, kNgModel) {\n if (typeof widget.value != 'function') {\n $log.warn('k-ng-model specified on a widget that does not have the value() method: ' + widget.options.name);\n return;\n }\n var form = $(widget.element).parents('form');\n var ngForm = scope[form.attr('name')];\n var getter = $parse(kNgModel);\n var setter = getter.assign;\n var updating = false;\n var valueIsCollection = kendo.ui.MultiSelect && widget instanceof kendo.ui.MultiSelect;\n var length = function (value) {\n return valueIsCollection ? value.length : 0;\n };\n var currentValueLength = length(getter(scope));\n widget.$angular_setLogicValue(getter(scope));\n var watchHandler = function (newValue, oldValue) {\n if (newValue === undefined) {\n newValue = null;\n }\n if (updating || newValue == oldValue && length(newValue) == currentValueLength) {\n return;\n }\n currentValueLength = length(newValue);\n widget.$angular_setLogicValue(newValue);\n };\n if (valueIsCollection) {\n scope.$watchCollection(kNgModel, watchHandler);\n } else {\n scope.$watch(kNgModel, watchHandler);\n }\n widget.first('change', function () {\n updating = true;\n if (ngForm && ngForm.$pristine) {\n ngForm.$setDirty();\n }\n digest(scope, function () {\n setter(scope, widget.$angular_getLogicValue());\n currentValueLength = length(getter(scope));\n });\n updating = false;\n });\n }\n function destroyWidgetOnScopeDestroy(scope, widget) {\n var deregister = scope.$on('$destroy', function () {\n deregister();\n if (widget) {\n kendo.destroy(widget.element);\n widget = null;\n }\n });\n return deregister;\n }\n function propagateClassToWidgetWrapper(widget, element) {\n if (!(window.MutationObserver && widget.wrapper)) {\n return;\n }\n var prevClassList = [].slice.call($(element)[0].classList);\n var mo = new MutationObserver(function (changes) {\n suspend();\n if (!widget) {\n return;\n }\n changes.forEach(function (chg) {\n var w = $(widget.wrapper)[0];\n switch (chg.attributeName) {\n case 'class':\n var currClassList = [].slice.call(chg.target.classList);\n currClassList.forEach(function (cls) {\n if (prevClassList.indexOf(cls) < 0) {\n w.classList.add(cls);\n if (kendo.ui.ComboBox && widget instanceof kendo.ui.ComboBox) {\n widget.input[0].classList.add(cls);\n }\n }\n });\n prevClassList.forEach(function (cls) {\n if (currClassList.indexOf(cls) < 0) {\n w.classList.remove(cls);\n if (kendo.ui.ComboBox && widget instanceof kendo.ui.ComboBox) {\n widget.input[0].classList.remove(cls);\n }\n }\n });\n prevClassList = currClassList;\n break;\n case 'disabled':\n if (typeof widget.enable == 'function' && !widget.element.attr('readonly')) {\n widget.enable(!$(chg.target).attr('disabled'));\n }\n break;\n case 'readonly':\n if (typeof widget.readonly == 'function' && !widget.element.attr('disabled')) {\n widget.readonly(!!$(chg.target).attr('readonly'));\n }\n break;\n }\n });\n resume();\n });\n function suspend() {\n mo.disconnect();\n }\n function resume() {\n mo.observe($(element)[0], { attributes: true });\n }\n resume();\n widget.first('destroy', suspend);\n }\n function setupRebind(widget, scope, element, originalElement, rebindAttr, destroyRegister, attrs) {\n var unregister = scope.$watch(rebindAttr, function (newValue, oldValue) {\n if (!widget._muteRebind && newValue !== oldValue) {\n unregister();\n if (attrs._cleanUp) {\n attrs._cleanUp();\n }\n var templateOptions = WIDGET_TEMPLATE_OPTIONS[widget.options.name];\n if (templateOptions) {\n templateOptions.forEach(function (name) {\n var templateContents = scope.$eval(attrs['k' + name]);\n if (templateContents) {\n originalElement.append($(templateContents).attr(kendo.toHyphens('k' + name), ''));\n }\n });\n }\n var _wrapper = $(widget.wrapper)[0];\n var _element = $(widget.element)[0];\n var isUpload = widget.options.name === 'Upload';\n if (isUpload) {\n element = $(_element);\n }\n var compile = element.injector().get('$compile');\n widget._destroy();\n if (destroyRegister) {\n destroyRegister();\n }\n widget = null;\n if (_element) {\n if (_wrapper) {\n _wrapper.parentNode.replaceChild(_element, _wrapper);\n }\n $(element).replaceWith(originalElement);\n }\n compile(originalElement)(scope);\n }\n }, true);\n digest(scope);\n }\n function bind(f, obj) {\n return function (a, b) {\n return f.call(obj, a, b);\n };\n }\n function setTemplate(key, value) {\n this[key] = kendo.stringify(value);\n }\n module.factory('directiveFactory', [\n '$compile',\n function (compile) {\n var kendoRenderedTimeout;\n var RENDERED = false;\n $defaultCompile = compile;\n var create = function (role, origAttr) {\n return {\n restrict: 'AC',\n require: [\n '?ngModel',\n '^?form'\n ],\n scope: false,\n controller: [\n '$scope',\n '$attrs',\n '$element',\n function ($scope, $attrs) {\n this.template = bind(setTemplate, $attrs);\n $attrs._cleanUp = bind(function () {\n this.template = null;\n $attrs._cleanUp = null;\n }, this);\n }\n ],\n link: function (scope, element, attrs, controllers) {\n var $element = $(element);\n var roleattr = role.replace(/([A-Z])/g, '-$1');\n $element.attr(roleattr, $element.attr('data-' + roleattr));\n $element[0].removeAttribute('data-' + roleattr);\n var widget = createWidget(scope, element, attrs, role, origAttr, controllers);\n if (!widget) {\n return;\n }\n if (kendoRenderedTimeout) {\n clearTimeout(kendoRenderedTimeout);\n }\n kendoRenderedTimeout = setTimeout(function () {\n scope.$emit('kendoRendered');\n if (!RENDERED) {\n RENDERED = true;\n $('form').each(function () {\n var form = $(this).controller('form');\n if (form) {\n form.$setPristine();\n }\n });\n }\n });\n }\n };\n };\n return { create: create };\n }\n ]);\n var TAGNAMES = {\n Editor: 'textarea',\n NumericTextBox: 'input',\n DatePicker: 'input',\n DateTimePicker: 'input',\n TimePicker: 'input',\n AutoComplete: 'input',\n ColorPicker: 'input',\n MaskedTextBox: 'input',\n MultiSelect: 'input',\n Upload: 'input',\n Validator: 'form',\n Button: 'button',\n MobileButton: 'a',\n MobileBackButton: 'a',\n MobileDetailButton: 'a',\n ListView: 'ul',\n MobileListView: 'ul',\n TreeView: 'ul',\n Menu: 'ul',\n ContextMenu: 'ul',\n ActionSheet: 'ul'\n };\n var SKIP_SHORTCUTS = [\n 'MobileView',\n 'MobileDrawer',\n 'MobileLayout',\n 'MobileSplitView',\n 'MobilePane',\n 'MobileModalView'\n ];\n var MANUAL_DIRECTIVES = [\n 'MobileApplication',\n 'MobileView',\n 'MobileModalView',\n 'MobileLayout',\n 'MobileActionSheet',\n 'MobileDrawer',\n 'MobileSplitView',\n 'MobilePane',\n 'MobileScrollView',\n 'MobilePopOver'\n ];\n angular.forEach([\n 'MobileNavBar',\n 'MobileButton',\n 'MobileBackButton',\n 'MobileDetailButton',\n 'MobileTabStrip',\n 'MobileScrollView',\n 'MobileScroller'\n ], function (widget) {\n MANUAL_DIRECTIVES.push(widget);\n widget = 'kendo' + widget;\n module.directive(widget, function () {\n return {\n restrict: 'A',\n link: function (scope, element, attrs) {\n createWidget(scope, element, attrs, widget, widget);\n }\n };\n });\n });\n function createDirectives(klass, isMobile) {\n function make(directiveName, widgetName) {\n module.directive(directiveName, [\n 'directiveFactory',\n function (directiveFactory) {\n return directiveFactory.create(widgetName, directiveName);\n }\n ]);\n }\n var name = isMobile ? 'Mobile' : '';\n name += klass.fn.options.name;\n var className = name;\n var shortcut = 'kendo' + name.charAt(0) + name.substr(1).toLowerCase();\n name = 'kendo' + name;\n var dashed = name.replace(/([A-Z])/g, '-$1');\n if (SKIP_SHORTCUTS.indexOf(name.replace('kendo', '')) == -1) {\n var names = name === shortcut ? [name] : [\n name,\n shortcut\n ];\n angular.forEach(names, function (directiveName) {\n module.directive(directiveName, function () {\n return {\n restrict: 'E',\n replace: true,\n template: function (element, attributes) {\n var tag = TAGNAMES[className] || 'div';\n var scopeField = attributes.kScopeField || attributes.scopeField;\n return '<' + tag + ' ' + dashed + (scopeField ? '=\"' + scopeField + '\"' : '') + '>' + element.html() + '';\n }\n };\n });\n });\n }\n if (MANUAL_DIRECTIVES.indexOf(name.replace('kendo', '')) > -1) {\n return;\n }\n make(name, name);\n if (shortcut != name) {\n make(shortcut, name);\n }\n }\n function kendoWidgetInstance(el) {\n el = $(el);\n return kendo.widgetInstance(el, kendo.ui) || kendo.widgetInstance(el, kendo.mobile.ui) || kendo.widgetInstance(el, kendo.dataviz.ui);\n }\n function digest(scope, func) {\n var root = scope.$root || scope;\n var isDigesting = /^\\$(digest|apply)$/.test(root.$$phase);\n if (func) {\n if (isDigesting) {\n func();\n } else {\n root.$apply(func);\n }\n } else if (!isDigesting) {\n root.$digest();\n }\n }\n function destroyScope(scope, el) {\n scope.$destroy();\n if (el) {\n $(el).removeData('$scope').removeData('$$kendoScope').removeData('$isolateScope').removeData('$isolateScopeNoTemplate').removeClass('ng-scope');\n }\n }\n var pendingPatches = [];\n function defadvice(klass, methodName, func) {\n if ($.isArray(klass)) {\n return angular.forEach(klass, function (klass) {\n defadvice(klass, methodName, func);\n });\n }\n if (typeof klass == 'string') {\n var a = klass.split('.');\n var x = kendo;\n while (x && a.length > 0) {\n x = x[a.shift()];\n }\n if (!x) {\n pendingPatches.push([\n klass,\n methodName,\n func\n ]);\n return false;\n }\n klass = x.prototype;\n }\n var origMethod = klass[methodName];\n klass[methodName] = function () {\n var self = this, args = arguments;\n return func.apply({\n self: self,\n next: function () {\n return origMethod.apply(self, arguments.length > 0 ? arguments : args);\n }\n }, args);\n };\n return true;\n }\n kendo.onWidgetRegistered(function (entry) {\n pendingPatches = $.grep(pendingPatches, function (args) {\n return !defadvice.apply(null, args);\n });\n createDirectives(entry.widget, entry.prefix == 'Mobile');\n });\n defadvice([\n 'ui.Widget',\n 'mobile.ui.Widget'\n ], 'angular', function (cmd, arg) {\n var self = this.self;\n if (cmd == 'init') {\n if (!arg && OPTIONS_NOW) {\n arg = OPTIONS_NOW;\n }\n OPTIONS_NOW = null;\n if (arg && arg.$angular) {\n self.$angular_scope = arg.$angular[0];\n self.$angular_init(self.element, arg);\n }\n return;\n }\n var scope = self.$angular_scope;\n if (scope) {\n withoutTimeout(function () {\n var x = arg(), elements = x.elements, data = x.data;\n if (elements.length > 0) {\n switch (cmd) {\n case 'cleanup':\n angular.forEach(elements, function (el) {\n var itemScope = $(el).data('$$kendoScope');\n if (itemScope && itemScope !== scope && itemScope.$$kendoScope) {\n destroyScope(itemScope, el);\n }\n });\n break;\n case 'compile':\n var injector = self.element.injector();\n var compile = injector ? injector.get('$compile') : $defaultCompile;\n angular.forEach(elements, function (el, i) {\n var itemScope;\n if (x.scopeFrom) {\n itemScope = x.scopeFrom;\n } else {\n var vars = data && data[i];\n if (vars !== undefined) {\n itemScope = $.extend(scope.$new(), vars);\n itemScope.$$kendoScope = true;\n } else {\n itemScope = scope;\n }\n }\n $(el).data('$$kendoScope', itemScope);\n compile(el)(itemScope);\n });\n digest(scope);\n break;\n }\n }\n });\n }\n });\n defadvice('ui.Widget', '$angular_getLogicValue', function () {\n return this.self.value();\n });\n defadvice('ui.Widget', '$angular_setLogicValue', function (val) {\n this.self.value(val);\n });\n defadvice('ui.Select', '$angular_getLogicValue', function () {\n var item = this.self.dataItem(), valueField = this.self.options.dataValueField;\n if (item) {\n if (this.self.options.valuePrimitive) {\n if (!!valueField) {\n return item[valueField];\n } else {\n return item;\n }\n } else {\n return item.toJSON();\n }\n } else {\n return null;\n }\n });\n defadvice('ui.Select', '$angular_setLogicValue', function (val) {\n var self = this.self;\n var options = self.options;\n var valueField = options.dataValueField;\n var text = options.text || '';\n if (val === undefined) {\n val = '';\n }\n if (valueField && !options.valuePrimitive && val) {\n text = val[options.dataTextField] || '';\n val = val[valueField || options.dataTextField];\n }\n if (self.options.autoBind === false && !self.listView.bound()) {\n if (!text && val && options.valuePrimitive) {\n self.value(val);\n } else {\n self._preselect(val, text);\n }\n } else {\n self.value(val);\n }\n });\n defadvice('ui.MultiSelect', '$angular_getLogicValue', function () {\n var value = this.self.dataItems().slice(0);\n var valueField = this.self.options.dataValueField;\n if (valueField && this.self.options.valuePrimitive) {\n value = $.map(value, function (item) {\n return item[valueField];\n });\n }\n return value;\n });\n defadvice('ui.MultiSelect', '$angular_setLogicValue', function (val) {\n if (val == null) {\n val = [];\n }\n var self = this.self;\n var options = self.options;\n var valueField = options.dataValueField;\n var data = val;\n if (valueField && !options.valuePrimitive) {\n val = $.map(val, function (item) {\n return item[valueField];\n });\n }\n if (options.autoBind === false && !options.valuePrimitive && !self.listView.bound()) {\n self._preselect(data, val);\n } else {\n self.value(val);\n }\n });\n defadvice('ui.AutoComplete', '$angular_getLogicValue', function () {\n var options = this.self.options;\n var values = this.self.value().split(options.separator);\n var valuePrimitive = options.valuePrimitive;\n var data = this.self.dataSource.data();\n var dataItems = [];\n for (var idx = 0, length = data.length; idx < length; idx++) {\n var item = data[idx];\n var dataValue = options.dataTextField ? item[options.dataTextField] : item;\n for (var j = 0; j < values.length; j++) {\n if (dataValue === values[j]) {\n if (valuePrimitive) {\n dataItems.push(dataValue);\n } else {\n dataItems.push(item.toJSON());\n }\n break;\n }\n }\n }\n return dataItems;\n });\n defadvice('ui.AutoComplete', '$angular_setLogicValue', function (value) {\n if (value == null) {\n value = [];\n }\n var self = this.self, dataTextField = self.options.dataTextField;\n if (dataTextField && !self.options.valuePrimitive) {\n if (value.length !== undefined) {\n value = $.map(value, function (item) {\n return item[dataTextField];\n });\n } else {\n value = value[dataTextField];\n }\n }\n self.value(value);\n });\n defadvice('ui.Widget', '$angular_init', function (element, options) {\n var self = this.self;\n if (options && !$.isArray(options)) {\n var scope = self.$angular_scope;\n for (var i = self.events.length; --i >= 0;) {\n var event = self.events[i];\n var handler = options[event];\n if (handler && typeof handler == 'string') {\n options[event] = self.$angular_makeEventHandler(event, scope, handler);\n }\n }\n }\n });\n defadvice('ui.Widget', '$angular_makeEventHandler', function (event, scope, handler) {\n handler = $parse(handler);\n return function (e) {\n digest(scope, function () {\n handler(scope, { kendoEvent: e });\n });\n };\n });\n defadvice([\n 'ui.Grid',\n 'ui.ListView',\n 'ui.TreeView'\n ], '$angular_makeEventHandler', function (event, scope, handler) {\n if (event != 'change') {\n return this.next();\n }\n handler = $parse(handler);\n return function (ev) {\n var widget = ev.sender;\n var options = widget.options;\n var cell, multiple, locals = { kendoEvent: ev }, elems, items, columns, colIdx;\n if (angular.isString(options.selectable)) {\n cell = options.selectable.indexOf('cell') !== -1;\n multiple = options.selectable.indexOf('multiple') !== -1;\n }\n elems = locals.selected = this.select();\n items = locals.data = [];\n columns = locals.columns = [];\n for (var i = 0; i < elems.length; i++) {\n var item = cell ? elems[i].parentNode : elems[i];\n var dataItem = widget.dataItem(item);\n if (cell) {\n if (angular.element.inArray(dataItem, items) < 0) {\n items.push(dataItem);\n }\n colIdx = angular.element(elems[i]).index();\n if (angular.element.inArray(colIdx, columns) < 0) {\n columns.push(colIdx);\n }\n } else {\n items.push(dataItem);\n }\n }\n if (!multiple) {\n locals.dataItem = locals.data = items[0];\n locals.angularDataItem = kendo.proxyModelSetters(locals.dataItem);\n locals.selected = elems[0];\n }\n digest(scope, function () {\n handler(scope, locals);\n });\n };\n });\n defadvice('ui.Grid', '$angular_init', function (element, options) {\n this.next();\n if (options.columns) {\n var settings = $.extend({}, kendo.Template, options.templateSettings);\n angular.forEach(options.columns, function (col) {\n if (col.field && !col.template && !col.format && !col.values && (col.encoded === undefined || col.encoded)) {\n col.template = '#: ' + kendo.expr(col.field, settings.paramName) + '#';\n }\n });\n }\n });\n {\n defadvice('mobile.ui.ButtonGroup', 'value', function (mew) {\n var self = this.self;\n if (mew != null) {\n self.select(self.element.children('li.km-button').eq(mew));\n self.trigger('change');\n self.trigger('select', { index: self.selectedIndex });\n }\n return self.selectedIndex;\n });\n defadvice('mobile.ui.ButtonGroup', '_select', function () {\n this.next();\n this.self.trigger('change');\n });\n }\n module.directive('kendoMobileApplication', function () {\n return {\n terminal: true,\n link: function (scope, element, attrs) {\n createWidget(scope, element, attrs, 'kendoMobileApplication', 'kendoMobileApplication');\n }\n };\n }).directive('kendoMobileView', function () {\n return {\n scope: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n attrs._instance = createWidget(scope, element, attrs, 'kendoMobileView', 'kendoMobileView');\n },\n post: function (scope, element, attrs) {\n attrs._instance._layout();\n attrs._instance._scroller();\n }\n }\n };\n }).directive('kendoMobileDrawer', function () {\n return {\n scope: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n attrs._instance = createWidget(scope, element, attrs, 'kendoMobileDrawer', 'kendoMobileDrawer');\n },\n post: function (scope, element, attrs) {\n attrs._instance._layout();\n attrs._instance._scroller();\n }\n }\n };\n }).directive('kendoMobileModalView', function () {\n return {\n scope: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n attrs._instance = createWidget(scope, element, attrs, 'kendoMobileModalView', 'kendoMobileModalView');\n },\n post: function (scope, element, attrs) {\n attrs._instance._layout();\n attrs._instance._scroller();\n }\n }\n };\n }).directive('kendoMobileSplitView', function () {\n return {\n terminal: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n attrs._instance = createWidget(scope, element, attrs, 'kendoMobileSplitView', 'kendoMobileSplitView');\n },\n post: function (scope, element, attrs) {\n attrs._instance._layout();\n }\n }\n };\n }).directive('kendoMobilePane', function () {\n return {\n terminal: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n createWidget(scope, element, attrs, 'kendoMobilePane', 'kendoMobilePane');\n }\n }\n };\n }).directive('kendoMobileLayout', function () {\n return {\n link: {\n pre: function (scope, element, attrs) {\n createWidget(scope, element, attrs, 'kendoMobileLayout', 'kendoMobileLayout');\n }\n }\n };\n }).directive('kendoMobileActionSheet', function () {\n return {\n restrict: 'A',\n link: function (scope, element, attrs) {\n element.find('a[k-action]').each(function () {\n $(this).attr('data-' + kendo.ns + 'action', $(this).attr('k-action'));\n });\n createWidget(scope, element, attrs, 'kendoMobileActionSheet', 'kendoMobileActionSheet');\n }\n };\n }).directive('kendoMobilePopOver', function () {\n return {\n terminal: true,\n link: {\n pre: function (scope, element, attrs) {\n attrs.defaultOptions = scope.viewOptions;\n createWidget(scope, element, attrs, 'kendoMobilePopOver', 'kendoMobilePopOver');\n }\n }\n };\n }).directive('kendoViewTitle', function () {\n return {\n restrict: 'E',\n replace: true,\n template: function (element) {\n return '' + element.html() + '';\n }\n };\n }).directive('kendoMobileHeader', function () {\n return {\n restrict: 'E',\n link: function (scope, element) {\n element.addClass('km-header').attr('data-role', 'header');\n }\n };\n }).directive('kendoMobileFooter', function () {\n return {\n restrict: 'E',\n link: function (scope, element) {\n element.addClass('km-footer').attr('data-role', 'footer');\n }\n };\n }).directive('kendoMobileScrollViewPage', function () {\n return {\n restrict: 'E',\n replace: true,\n template: function (element) {\n return '
                ' + element.html() + '
                ';\n }\n };\n });\n angular.forEach([\n 'align',\n 'icon',\n 'rel',\n 'transition',\n 'actionsheetContext'\n ], function (attr) {\n var kAttr = 'k' + attr.slice(0, 1).toUpperCase() + attr.slice(1);\n module.directive(kAttr, function () {\n return {\n restrict: 'A',\n priority: 2,\n link: function (scope, element, attrs) {\n element.attr(kendo.attr(kendo.toHyphens(attr)), scope.$eval(attrs[kAttr]));\n }\n };\n });\n });\n var WIDGET_TEMPLATE_OPTIONS = {\n 'TreeMap': ['Template'],\n 'MobileListView': [\n 'HeaderTemplate',\n 'Template'\n ],\n 'MobileScrollView': [\n 'EmptyTemplate',\n 'Template'\n ],\n 'Grid': [\n 'AltRowTemplate',\n 'DetailTemplate',\n 'RowTemplate'\n ],\n 'ListView': [\n 'EditTemplate',\n 'Template',\n 'AltTemplate'\n ],\n 'Pager': [\n 'SelectTemplate',\n 'LinkTemplate'\n ],\n 'PivotGrid': [\n 'ColumnHeaderTemplate',\n 'DataCellTemplate',\n 'RowHeaderTemplate'\n ],\n 'Scheduler': [\n 'AllDayEventTemplate',\n 'DateHeaderTemplate',\n 'EventTemplate',\n 'MajorTimeHeaderTemplate',\n 'MinorTimeHeaderTemplate'\n ],\n 'TreeView': ['Template'],\n 'Validator': ['ErrorTemplate']\n };\n (function () {\n var templateDirectives = {};\n angular.forEach(WIDGET_TEMPLATE_OPTIONS, function (templates, widget) {\n angular.forEach(templates, function (template) {\n if (!templateDirectives[template]) {\n templateDirectives[template] = [];\n }\n templateDirectives[template].push('?^^kendo' + widget);\n });\n });\n angular.forEach(templateDirectives, function (parents, directive) {\n var templateName = 'k' + directive;\n var attrName = kendo.toHyphens(templateName);\n module.directive(templateName, function () {\n return {\n restrict: 'A',\n require: parents,\n terminal: true,\n compile: function ($element, $attrs) {\n if ($attrs[templateName] !== '') {\n return;\n }\n $element.removeAttr(attrName);\n var template = $element[0].outerHTML;\n return function (scope, element, attrs, controllers) {\n var controller;\n while (!controller && controllers.length) {\n controller = controllers.shift();\n }\n if (!controller) {\n $log.warn(attrName + ' without a matching parent widget found. It can be one of the following: ' + parents.join(', '));\n } else {\n controller.template(templateName, template);\n element.remove();\n }\n };\n }\n };\n });\n });\n }());\n }(window.kendo.jQuery, window.angular));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.webcomponents', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'webcomponents',\n name: 'Web Components',\n category: 'framework',\n description: 'Adds Kendo UI custom elements for Web Components',\n depends: ['core']\n };\n (function ($, angular, undefined) {\n if (!kendo.support.customElements || kendo.webComponents.length) {\n return;\n }\n if (angular && (angular.version.major == 1 || angular.injector)) {\n return;\n }\n var TAGNAMES = {\n editor: 'textarea',\n numerictextbox: 'input',\n datepicker: 'input',\n datetimepicker: 'input',\n timepicker: 'input',\n autocomplete: 'input',\n colorpicker: 'input',\n maskedtextbox: 'input',\n dropdownlist: 'select',\n multiselect: 'select',\n upload: 'input',\n validator: 'form',\n button: 'button',\n mobilebutton: 'a',\n mobilebackbutton: 'a',\n mobiledetailbutton: 'a',\n listview: 'ul',\n mobilelistview: 'ul',\n treeview: 'ul',\n menu: 'ul',\n contextmenu: 'ul',\n actionsheet: 'ul'\n };\n var EVENT_PREFIX = 'on-';\n var registered = [];\n kendo.onWidgetRegistered(function (entry) {\n var elementName = entry.prefix + entry.widget.prototype.options.name.toLowerCase();\n if (registered.indexOf(elementName) === -1) {\n registered.push(elementName);\n registerElement(elementName, entry.widget);\n }\n });\n var jsonRegExp = /^\\s*(?:\\{(?:.|\\r\\n|\\n)*\\}|\\[(?:.|\\r\\n|\\n)*\\])\\s*$/;\n var jsonFormatRegExp = /^\\{(\\d+)(:[^\\}]+)?\\}|^\\[[A-Za-z_]*\\]$/;\n var numberRegExp = /^(\\+|-?)\\d+(\\.?)\\d*$/;\n function parseOption(element, option) {\n var value = element.getAttribute(option);\n if (value === null) {\n value = undefined;\n } else if (value === 'null') {\n value = null;\n } else if (value === 'true') {\n value = true;\n } else if (value === 'false') {\n value = false;\n } else if (numberRegExp.test(value)) {\n value = parseFloat(value);\n } else if (jsonRegExp.test(value) && !jsonFormatRegExp.test(value)) {\n value = new Function('return (' + value + ')')();\n }\n return value;\n }\n function parseOptions(element, options) {\n var result = {};\n Object.keys(options).concat('dataSource').forEach(function (name) {\n if (element.hasAttribute(kendo.toHyphens(name))) {\n result[name] = parseOption(element, kendo.toHyphens(name));\n }\n });\n return result;\n }\n function cloneEvent(e) {\n var result = {};\n Object.keys(e).forEach(function (key) {\n if (key[0] != '_') {\n result[key] = e[key];\n }\n });\n return result;\n }\n function eventHandler(eventName, e) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, false, true, cloneEvent(e));\n this.dispatchEvent(event);\n if (event.defaultPrevented) {\n e.preventDefault();\n }\n }\n function expose(component, obj) {\n var props = Object.keys(obj);\n for (var idx = 0; idx <= props.length; idx++) {\n if (typeof obj[props[idx]] === 'function') {\n if (!component[props[idx]]) {\n component[props[idx]] = obj[props[idx]].bind(component.widget);\n }\n } else {\n if (props[idx] === 'options') {\n continue;\n }\n component[props[idx]] = component[props[idx]] || obj[props[idx]];\n }\n }\n }\n function registerElement(name, widget) {\n var options = widget.prototype.options;\n var prototype = Object.create(HTMLElement.prototype);\n Object.defineProperty(prototype, 'options', {\n get: function () {\n return this.widget.options;\n },\n set: function (options) {\n var instance = this.widget;\n options = $.extend(true, {}, instance.options, options);\n var _wrapper = $(instance.wrapper)[0];\n var _element = $(instance.element)[0];\n instance._destroy();\n var newElement = document.createElement(TAGNAMES[name] || 'div');\n if (_wrapper && _element) {\n _wrapper.parentNode.replaceChild(_element, _wrapper);\n $(_element).replaceWith(newElement);\n }\n if (instance.value) {\n options.value = instance.value();\n }\n instance.init(newElement, options);\n this.bindEvents();\n }\n });\n prototype.bindEvents = function () {\n widget.prototype.events.forEach(function (eventName) {\n this.widget.bind(eventName, eventHandler.bind(this, eventName));\n if (this.hasAttribute(EVENT_PREFIX + eventName)) {\n this.bind(eventName, function (e) {\n window[this.getAttribute(EVENT_PREFIX + eventName)].call(this, e);\n }.bind(this));\n }\n }.bind(this));\n };\n prototype.attachedCallback = function () {\n var that = this;\n var element = document.createElement(TAGNAMES[name] || 'div');\n $(element).append(that.childNodes);\n $(element).attr('class', $(that).attr('class'));\n $(element).attr('style', $(that).attr('style'));\n that.appendChild(element);\n that.widget = new widget(element, parseOptions(that, options));\n var obj = that.widget;\n do {\n expose(that, obj);\n } while (obj = Object.getPrototypeOf(obj));\n this.bindEvents();\n };\n prototype.detachedCallback = function () {\n kendo.destroy(this.element);\n };\n kendo.webComponents.push('kendo-' + name);\n document.registerElement('kendo-' + name, { prototype: prototype });\n }\n }(window.kendo.jQuery, window.angular));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.angular2', [\n 'kendo.core',\n 'kendo.webcomponents'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'angular2',\n name: 'Angular 2',\n category: 'framework',\n description: 'Supports angular2 value accessors',\n depends: ['core']\n };\n (function (kendo, System) {\n if (!System || !System.register) {\n return;\n }\n var __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function') {\n return Reflect.decorate(decorators, target, key, desc);\n }\n switch (arguments.length) {\n case 2:\n return decorators.reduceRight(function (o, d) {\n return d && d(o) || o;\n }, target);\n case 3:\n return decorators.reduceRight(function (o, d) {\n return d && d(target, key), void 0;\n }, void 0);\n case 4:\n return decorators.reduceRight(function (o, d) {\n return d && d(target, key, o) || o;\n }, desc);\n }\n };\n var __metadata = this && this.__metadata || function (k, v) {\n if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function') {\n return Reflect.metadata(k, v);\n }\n };\n System.register('kendo/angular2', ['angular2/angular2'], function (exports_1) {\n var angular2_1;\n var KendoValueAccessor;\n return {\n setters: [function (_angular2_1) {\n angular2_1 = _angular2_1;\n }],\n execute: function () {\n KendoValueAccessor = function () {\n function KendoValueAccessor(cd, elementRef) {\n var _this = this;\n this.elementRef = elementRef;\n this.onChange = function (_) {\n };\n this.onTouched = function () {\n };\n this.element = elementRef.nativeElement;\n this.element.addEventListener('change', function () {\n _this.onChange(_this.element.value());\n });\n this.element.addEventListener('spin', function () {\n _this.onChange(_this.element.value());\n });\n cd.valueAccessor = this;\n this.cd = cd;\n cd.valueAccessor = this;\n }\n KendoValueAccessor.prototype.writeValue = function (value) {\n this.element.value(value);\n };\n KendoValueAccessor.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n KendoValueAccessor.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n KendoValueAccessor = __decorate([\n angular2_1.Directive({ selector: kendo.webComponents.join(',') }),\n __metadata('design:paramtypes', [\n angular2_1.NgControl,\n angular2_1.ElementRef\n ])\n ], KendoValueAccessor);\n return KendoValueAccessor;\n }();\n exports_1('KendoValueAccessor', KendoValueAccessor);\n }\n };\n });\n }(window.kendo, window.System));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.ui.core', [\n 'kendo.core',\n 'kendo.router',\n 'kendo.touch',\n 'kendo.view',\n 'kendo.fx',\n 'kendo.data.odata',\n 'kendo.data.xml',\n 'kendo.data',\n 'kendo.data.signalr',\n 'kendo.binder',\n 'kendo.validator',\n 'kendo.userevents',\n 'kendo.draganddrop',\n 'kendo.mobile.scroller',\n 'kendo.resizable',\n 'kendo.sortable',\n 'kendo.selectable',\n 'kendo.button',\n 'kendo.pager',\n 'kendo.popup',\n 'kendo.notification',\n 'kendo.tooltip',\n 'kendo.toolbar',\n 'kendo.list',\n 'kendo.calendar',\n 'kendo.datepicker',\n 'kendo.autocomplete',\n 'kendo.dropdownlist',\n 'kendo.combobox',\n 'kendo.multiselect',\n 'kendo.colorpicker',\n 'kendo.listview',\n 'kendo.numerictextbox',\n 'kendo.maskedtextbox',\n 'kendo.menu',\n 'kendo.editable',\n 'kendo.panelbar',\n 'kendo.progressbar',\n 'kendo.responsivepanel',\n 'kendo.tabstrip',\n 'kendo.timepicker',\n 'kendo.datetimepicker',\n 'kendo.slider',\n 'kendo.splitter',\n 'kendo.window',\n 'kendo.virtuallist',\n 'kendo.mobile.popover',\n 'kendo.mobile.loader',\n 'kendo.mobile.scroller',\n 'kendo.mobile.shim',\n 'kendo.mobile.view',\n 'kendo.mobile.modalview',\n 'kendo.mobile.drawer',\n 'kendo.mobile.splitview',\n 'kendo.mobile.pane',\n 'kendo.mobile.application',\n 'kendo.mobile.actionsheet',\n 'kendo.mobile.button',\n 'kendo.mobile.buttongroup',\n 'kendo.mobile.collapsible',\n 'kendo.mobile.listview',\n 'kendo.mobile.navbar',\n 'kendo.mobile.scrollview',\n 'kendo.mobile.switch',\n 'kendo.mobile.tabstrip',\n 'kendo.angular',\n 'kendo.webcomponents',\n 'kendo.angular2'\n ], f);\n}(function () {\n 'bundle all';\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}