{"version":3,"sources":["kendo.slider.js"],"names":["f","define","$","undefined","createWrapper","options","element","isHorizontal","orientationCssClass","style","attr","cssClasses","tickPlacementCssClass","tickPlacement","showButtons","createButton","type","buttonCssClass","createSliderItems","distance","i","result","count","math","floor","round","smallStep","createTrack","dragHandleCount","is","firstDragHandleTitle","leftDragHandleTitle","dragHandleTitle","min","max","selectionStart","value","rightDragHandleTitle","selectionEnd","step","stepValue","setValue","formatValue","replace","kendo","cultures","current","numberFormat","calculatePrecision","number","precision","split","length","power","parseFloat","pow","parseAttr","name","parse","getAttribute","defined","UNDEFINED","removeFraction","RangeSlider","window","Widget","ui","Draggable","extend","format","proxy","isArray","Math","support","pointers","msPointers","CHANGE","SLIDE","NS","MOUSE_DOWN","TRACK_MOUSE_DOWN","MOUSE_UP","TRACK_MOUSE_UP","MOVE_SELECTION","KEY_DOWN","CLICK","MOUSE_OVER","FOCUS","BLUR","DRAG_HANDLE","TRACK_SELECTOR","TICK_SELECTOR","STATE_SELECTED","STATE_FOCUSED","STATE_DEFAULT","STATE_DISABLED","DISABLED","TABINDEX","getTouches","SliderBase","init","rtlDirectionSign","that","this","fn","call","_distance","_isHorizontal","orientation","_isRtl","isRtl","_position","_sizeFn","_outerSize","tooltip","enabled","Error","_createHtml","wrapper","closest","_trackDiv","find","_setTrackDivWidth","_maxSelection","_sliderItemsInit","_reset","_tabindex","_keyMap",37,40,39,38,35,36,33,"largeStep",34,"notify","events","_resize","remove","_refresh","enable","sizeBetweenTicks","pixelWidths","_calculateItemsWidth","before","_setItemsWidth","_setItemsTitle","_calculateSteps","_setItemsLargeTick","getSize","dimensions","trackDivPosition","css","first","last","items","paddingTop","bordersWidth","selection","addClass","titleNumber","limit","increment","item","valueWithoutFraction","makeArray","reverse","_values","html","itemsCount","itemWidth","trackDivSize","pixelStep","_roundWidths","pixelWidthsArray","balance","_addAdditionalSize","additionalSize","parseInt","lastItem","val","ceil","splice","pop","_pixelSteps","_getValueFromPosition","mousePosition","dragableArea","position","halfStep","startPoint","abs","_getFormattedValue","drag","tooltipTemplate","template","_getDraggableArea","offset","getOffset","left","top","endPoint","inputs","eq","prop","wrap","hide","_focus","e","target","_drag","_firstHandleDrag","_activeHandle","_lastHandleDrag","_activeHandleDrag","_updateTooltip","_focusWithMouse","idx","index","setTimeout","focus","_setTooltipTimeout","_blur","removeClass","_removeTooltip","_tooltipTimeout","_clearTooltipTimeout","clearTimeout","tooltipDiv","stop","formId","form","_form","on","_formResetHandler","destroy","off","Slider","dragHandle","_selection","Selection","Drag","increaseButtonTitle","decreaseButtonTitle","clickHandler","move","mouseDownHandler","disable","removeAttr","touch","location","pageX","pageY","hasClass","_update","dragstart","preventDefault","end","document","documentElement","one","_end","sign","newVal","_nextValueByIndex","_valueIndex","_setValueInRange","which","timeout","timer","setInterval","_clearTimer","currentTarget","click","_keydown","change","trigger","isNaN","_refreshAriaAttr","formattedValue","_tooltipDiv","text","clearInterval","keyCode","draggable","moveSelection","selectionValue","selectionDiv","halfDragHanndle","rtlCorrection","bind","owner","_dragstart","dragend","dragcancel","prototype","_activeDragHandle","userEvents","cancel","_setZIndex","oldVal","_createTooltip","colloutCssClass","wnd","appendTo","body","tooltipInnerDiv","_scrollOffset","scrollTop","scrollLeft","moveTooltip","slideParams","x","y","constrainValue","values","_disposeAll","noAnimation","fadeOut","dragHandles","sdhOffset","diff","anchorSize","margin","viewport","callout","width","outerWidth","height","outerHeight","_flip","_fit","size","viewPortEnd","output","maxOverflow","plugin","firstInput","secondInput","console","warn","from","to","handle","dragSelectionStart","dragSelectionEnd","activeHandleDrag","selectionStartValue","selectionEndValue","_value","start","each","selectionStartIndex","selectionEndIndex","halfHandle","makeSelection","selectionPosition","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.slider.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.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 = '';\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 '
' + ' 1 ? options.selectionStart || options.min : options.value || options.min) + '\\'>Drag' + (dragHandleCount > 1 ? 'Drag' : '') + '
';\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}));"],"sourceRoot":"/source/"}