// Ion.RangeSlider | version 2.0.6 | https://github.com/IonDen/ion.rangeSlider (function (g, q, h, r, u) { var t = 0, n = (function () { var a = r.userAgent, b = /msie\s\d+/i; return 0 < a.search(b) && ((a = b.exec(a).toString()), (a = a.split(" ")[1]), 9 > a) ? (g("html").addClass("lt-ie9"), !0) : !1; })(); Function.prototype.bind || (Function.prototype.bind = function (a) { var b = this, c = [].slice; if ("function" != typeof b) throw new TypeError(); var d = c.call(arguments, 1), e = function () { if (this instanceof e) { var f = function () {}; f.prototype = b.prototype; var f = new f(), k = b.apply(f, d.concat(c.call(arguments))); return Object(k) === k ? k : f; } return b.apply(a, d.concat(c.call(arguments))); }; return e; }); Array.prototype.indexOf || (Array.prototype.indexOf = function (a, b) { var c; if (null == this) throw new TypeError('"this" is null or not defined'); var d = Object(this), e = d.length >>> 0; if (0 === e) return -1; c = +b || 0; Infinity === Math.abs(c) && (c = 0); if (c >= e) return -1; for (c = Math.max(0 <= c ? c : e - Math.abs(c), 0); c < e; ) { if (c in d && d[c] === a) return c; c++; } return -1; }); var p = function (a, b, c) { this.VERSION = "2.0.6"; this.input = a; this.plugin_count = c; this.old_to = this.old_from = this.calc_count = this.current_plugin = 0; this.raf_id = null; this.is_update = this.is_key = this.force_redraw = this.dragging = !1; this.is_start = !0; this.is_click = this.is_resize = this.is_active = !1; this.$cache = { win: g(h), body: g(q.body), input: g(a), cont: null, rs: null, min: null, max: null, from: null, to: null, single: null, bar: null, line: null, s_single: null, s_from: null, s_to: null, shad_single: null, shad_from: null, shad_to: null, grid: null, grid_labels: [], }; c = this.$cache.input; a = { type: c.data("type"), min: c.data("min"), max: c.data("max"), from: c.data("from"), to: c.data("to"), step: c.data("step"), min_interval: c.data("minInterval"), max_interval: c.data("maxInterval"), drag_interval: c.data("dragInterval"), values: c.data("values"), from_fixed: c.data("fromFixed"), from_min: c.data("fromMin"), from_max: c.data("fromMax"), from_shadow: c.data("fromShadow"), to_fixed: c.data("toFixed"), to_min: c.data("toMin"), to_max: c.data("toMax"), to_shadow: c.data("toShadow"), prettify_enabled: c.data("prettifyEnabled"), prettify_separator: c.data("prettifySeparator"), force_edges: c.data("forceEdges"), keyboard: c.data("keyboard"), keyboard_step: c.data("keyboardStep"), grid: c.data("grid"), grid_margin: c.data("gridMargin"), grid_num: c.data("gridNum"), grid_snap: c.data("gridSnap"), hide_min_max: c.data("hideMinMax"), hide_from_to: c.data("hideFromTo"), prefix: c.data("prefix"), postfix: c.data("postfix"), max_postfix: c.data("maxPostfix"), decorate_both: c.data("decorateBoth"), values_separator: c.data("valuesSeparator"), disable: c.data("disable"), }; a.values = a.values && a.values.split(","); b = g.extend(a, b); if ((c = c.prop("value"))) (c = c.split(";")), c[0] && c[0] == +c[0] && (c[0] = +c[0]), c[1] && c[1] == +c[1] && (c[1] = +c[1]), b.values && b.values.length ? ((a.from = c[0] && b.values.indexOf(c[0])), (a.to = c[1] && b.values.indexOf(c[1]))) : ((a.from = c[0] && +c[0]), (a.to = c[1] && +c[1])); this.options = g.extend( { type: "single", min: 10, max: 100, from: null, to: null, step: 1, min_interval: 0, max_interval: 0, drag_interval: !1, values: [], p_values: [], from_fixed: !1, from_min: null, from_max: null, from_shadow: !1, to_fixed: !1, to_min: null, to_max: null, to_shadow: !1, prettify_enabled: !0, prettify_separator: " ", prettify: null, force_edges: !1, keyboard: !1, keyboard_step: 5, grid: !1, grid_margin: !0, grid_num: 4, grid_snap: !1, hide_min_max: !1, hide_from_to: !1, prefix: "", postfix: "", max_postfix: "", decorate_both: !0, values_separator: " \u2014 ", disable: !1, onStart: null, onChange: null, onFinish: null, onUpdate: null, }, b ); this.validate(); this.result = { input: this.$cache.input, slider: null, min: this.options.min, max: this.options.max, from: this.options.from, from_percent: 0, from_value: null, to: this.options.to, to_percent: 0, to_value: null, }; this.coords = { x_gap: 0, x_pointer: 0, w_rs: 0, w_rs_old: 0, w_handle: 0, p_gap: 0, p_gap_left: 0, p_gap_right: 0, p_step: 0, p_pointer: 0, p_handle: 0, p_single: 0, p_single_real: 0, p_from: 0, p_from_real: 0, p_to: 0, p_to_real: 0, p_bar_x: 0, p_bar_w: 0, grid_gap: 0, big_num: 0, big: [], big_w: [], big_p: [], big_x: [], }; this.labels = { w_min: 0, w_max: 0, w_from: 0, w_to: 0, w_single: 0, p_min: 0, p_max: 0, p_from: 0, p_from_left: 0, p_to: 0, p_to_left: 0, p_single: 0, p_single_left: 0, }; this.init(); }; p.prototype = { init: function (a) { this.coords.p_step = this.options.step / ((this.options.max - this.options.min) / 100); this.target = "base"; this.toggleInput(); this.append(); this.setMinMax(); if (a) { if ( ((this.force_redraw = !0), this.calc(!0), this.options.onUpdate && "function" === typeof this.options.onUpdate) ) this.options.onUpdate(this.result); } else if ( ((this.force_redraw = !0), this.calc(!0), this.options.onStart && "function" === typeof this.options.onStart) ) this.options.onStart(this.result); this.updateScene(); this.raf_id = requestAnimationFrame(this.updateScene.bind(this)); }, append: function () { this.$cache.input.before( '' ); this.$cache.input.prop("readonly", !0); this.$cache.cont = this.$cache.input.prev(); this.result.slider = this.$cache.cont; this.$cache.cont.html( '01000' ); this.$cache.rs = this.$cache.cont.find(".irs"); this.$cache.min = this.$cache.cont.find(".irs-min"); this.$cache.max = this.$cache.cont.find(".irs-max"); this.$cache.from = this.$cache.cont.find(".irs-from"); this.$cache.to = this.$cache.cont.find(".irs-to"); this.$cache.single = this.$cache.cont.find(".irs-single"); this.$cache.bar = this.$cache.cont.find(".irs-bar"); this.$cache.line = this.$cache.cont.find(".irs-line"); this.$cache.grid = this.$cache.cont.find(".irs-grid"); "single" === this.options.type ? (this.$cache.cont.append( '' ), (this.$cache.s_single = this.$cache.cont.find(".single")), (this.$cache.from[0].style.visibility = "hidden"), (this.$cache.to[0].style.visibility = "hidden"), (this.$cache.shad_single = this.$cache.cont.find(".shadow-single"))) : (this.$cache.cont.append( '' ), (this.$cache.s_from = this.$cache.cont.find(".from")), (this.$cache.s_to = this.$cache.cont.find(".to")), (this.$cache.shad_from = this.$cache.cont.find(".shadow-from")), (this.$cache.shad_to = this.$cache.cont.find(".shadow-to"))); this.options.hide_from_to && ((this.$cache.from[0].style.display = "none"), (this.$cache.to[0].style.display = "none"), (this.$cache.single[0].style.display = "none")); this.appendGrid(); this.options.disable ? (this.appendDisableMask(), (this.$cache.input[0].disabled = !0)) : (this.$cache.cont.removeClass("irs-disabled"), (this.$cache.input[0].disabled = !1), this.bindEvents()); }, appendDisableMask: function () { this.$cache.cont.append(''); this.$cache.cont.addClass("irs-disabled"); }, remove: function () { this.$cache.cont.remove(); this.$cache.cont = null; this.$cache.line.off("keydown.irs_" + this.plugin_count); this.$cache.body.off("touchmove.irs_" + this.plugin_count); this.$cache.body.off("mousemove.irs_" + this.plugin_count); this.$cache.win.off("touchend.irs_" + this.plugin_count); this.$cache.win.off("mouseup.irs_" + this.plugin_count); n && (this.$cache.body.off("mouseup.irs_" + this.plugin_count), this.$cache.body.off("mouseleave.irs_" + this.plugin_count)); this.$cache.grid_labels = []; this.coords.big = []; this.coords.big_w = []; this.coords.big_p = []; this.coords.big_x = []; cancelAnimationFrame(this.raf_id); }, bindEvents: function () { this.$cache.body.on( "touchmove.irs_" + this.plugin_count, this.pointerMove.bind(this) ); this.$cache.body.on( "mousemove.irs_" + this.plugin_count, this.pointerMove.bind(this) ); this.$cache.win.on( "touchend.irs_" + this.plugin_count, this.pointerUp.bind(this) ); this.$cache.win.on( "mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this) ); this.$cache.line.on( "touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ); this.$cache.line.on( "mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ); this.options.drag_interval && "double" === this.options.type ? (this.$cache.bar.on( "touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "both") ), this.$cache.bar.on( "mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "both") )) : (this.$cache.bar.on( "touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ), this.$cache.bar.on( "mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") )); "single" === this.options.type ? (this.$cache.s_single.on( "touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "single") ), this.$cache.shad_single.on( "touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ), this.$cache.s_single.on( "mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "single") ), this.$cache.shad_single.on( "mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") )) : (this.$cache.s_from.on( "touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "from") ), this.$cache.s_to.on( "touchstart.irs_" + this.plugin_count, this.pointerDown.bind(this, "to") ), this.$cache.shad_from.on( "touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ), this.$cache.shad_to.on( "touchstart.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ), this.$cache.s_from.on( "mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "from") ), this.$cache.s_to.on( "mousedown.irs_" + this.plugin_count, this.pointerDown.bind(this, "to") ), this.$cache.shad_from.on( "mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") ), this.$cache.shad_to.on( "mousedown.irs_" + this.plugin_count, this.pointerClick.bind(this, "click") )); if (this.options.keyboard) this.$cache.line.on( "keydown.irs_" + this.plugin_count, this.key.bind(this, "keyboard") ); n && (this.$cache.body.on( "mouseup.irs_" + this.plugin_count, this.pointerUp.bind(this) ), this.$cache.body.on( "mouseleave.irs_" + this.plugin_count, this.pointerUp.bind(this) )); }, pointerMove: function (a) { this.dragging && ((this.coords.x_pointer = (a.pageX || (a.originalEvent.touches && a.originalEvent.touches[0].pageX)) - this.coords.x_gap), this.calc()); }, pointerUp: function (a) { if (this.current_plugin === this.plugin_count && this.is_active) { this.is_active = !1; var b = this.options.onFinish && "function" === typeof this.options.onFinish; a = g.contains(this.$cache.cont[0], a.target) || this.dragging; if (b && a) this.options.onFinish(this.result); this.$cache.cont.find(".state_hover").removeClass("state_hover"); this.force_redraw = !0; this.dragging = !1; n && g("*").prop("unselectable", !1); } }, pointerDown: function (a, b) { b.preventDefault(); var c = b.pageX || (b.originalEvent.touches && b.originalEvent.touches[0].pageX); if (2 !== b.button) { this.current_plugin = this.plugin_count; this.target = a; this.dragging = this.is_active = !0; this.coords.x_gap = this.$cache.rs.offset().left; this.coords.x_pointer = c - this.coords.x_gap; this.calcPointer(); switch (a) { case "single": this.coords.p_gap = this.toFixed( this.coords.p_pointer - this.coords.p_single ); break; case "from": this.coords.p_gap = this.toFixed( this.coords.p_pointer - this.coords.p_from ); this.$cache.s_from.addClass("state_hover"); this.$cache.s_from.addClass("type_last"); this.$cache.s_to.removeClass("type_last"); break; case "to": this.coords.p_gap = this.toFixed( this.coords.p_pointer - this.coords.p_to ); this.$cache.s_to.addClass("state_hover"); this.$cache.s_to.addClass("type_last"); this.$cache.s_from.removeClass("type_last"); break; case "both": (this.coords.p_gap_left = this.toFixed( this.coords.p_pointer - this.coords.p_from )), (this.coords.p_gap_right = this.toFixed( this.coords.p_to - this.coords.p_pointer )), this.$cache.s_to.removeClass("type_last"), this.$cache.s_from.removeClass("type_last"); } n && g("*").prop("unselectable", !0); this.$cache.line.trigger("focus"); } }, pointerClick: function (a, b) { b.preventDefault(); var c = b.pageX || (b.originalEvent.touches && b.originalEvent.touches[0].pageX); 2 !== b.button && ((this.current_plugin = this.plugin_count), (this.target = a), (this.is_click = !0), (this.coords.x_gap = this.$cache.rs.offset().left), (this.coords.x_pointer = +(c - this.coords.x_gap).toFixed()), (this.force_redraw = !0), this.calc(), this.$cache.line.trigger("focus")); }, key: function (a, b) { if ( !( this.current_plugin !== this.plugin_count || b.altKey || b.ctrlKey || b.shiftKey || b.metaKey ) ) { switch (b.which) { case 83: case 65: case 40: case 37: b.preventDefault(); this.moveByKey(!1); break; case 87: case 68: case 38: case 39: b.preventDefault(), this.moveByKey(!0); } return !0; } }, moveByKey: function (a) { var b = this.coords.p_pointer, b = a ? b + this.options.keyboard_step : b - this.options.keyboard_step; this.coords.x_pointer = this.toFixed((this.coords.w_rs / 100) * b); this.is_key = !0; this.calc(); }, setMinMax: function () { this.options && (this.options.hide_min_max ? ((this.$cache.min[0].style.display = "none"), (this.$cache.max[0].style.display = "none")) : (this.options.values.length ? (this.$cache.min.html( this.decorate(this.options.p_values[this.options.min]) ), this.$cache.max.html( this.decorate(this.options.p_values[this.options.max]) )) : (this.$cache.min.html( this.decorate( this._prettify(this.options.min), this.options.min ) ), this.$cache.max.html( this.decorate( this._prettify(this.options.max), this.options.max ) )), (this.labels.w_min = this.$cache.min.outerWidth(!1)), (this.labels.w_max = this.$cache.max.outerWidth(!1)))); }, calc: function (a) { if (this.options) { this.calc_count++; if (10 === this.calc_count || a) (this.calc_count = 0), (this.coords.w_rs = this.$cache.rs.outerWidth(!1)), (this.coords.w_handle = "single" === this.options.type ? this.$cache.s_single.outerWidth(!1) : this.$cache.s_from.outerWidth(!1)); if (this.coords.w_rs) { this.calcPointer(); this.coords.p_handle = this.toFixed( (this.coords.w_handle / this.coords.w_rs) * 100 ); a = 100 - this.coords.p_handle; var b = this.toFixed(this.coords.p_pointer - this.coords.p_gap); "click" === this.target && ((b = this.toFixed( this.coords.p_pointer - this.coords.p_handle / 2 )), (this.target = this.chooseHandle(b))); 0 > b ? (b = 0) : b > a && (b = a); switch (this.target) { case "base": b = (this.options.max - this.options.min) / 100; a = (this.result.from - this.options.min) / b; b = (this.result.to - this.options.min) / b; this.coords.p_single_real = this.toFixed(a); this.coords.p_from_real = this.toFixed(a); this.coords.p_to_real = this.toFixed(b); this.coords.p_single_real = this.checkDiapason( this.coords.p_single_real, this.options.from_min, this.options.from_max ); this.coords.p_from_real = this.checkDiapason( this.coords.p_from_real, this.options.from_min, this.options.from_max ); this.coords.p_to_real = this.checkDiapason( this.coords.p_to_real, this.options.to_min, this.options.to_max ); this.coords.p_single = this.toFixed( a - (this.coords.p_handle / 100) * a ); this.coords.p_from = this.toFixed( a - (this.coords.p_handle / 100) * a ); this.coords.p_to = this.toFixed( b - (this.coords.p_handle / 100) * b ); this.target = null; break; case "single": if (this.options.from_fixed) break; this.coords.p_single_real = this.calcWithStep((b / a) * 100); this.coords.p_single_real = this.checkDiapason( this.coords.p_single_real, this.options.from_min, this.options.from_max ); this.coords.p_single = this.toFixed( (this.coords.p_single_real / 100) * a ); break; case "from": if (this.options.from_fixed) break; this.coords.p_from_real = this.calcWithStep((b / a) * 100); this.coords.p_from_real > this.coords.p_to_real && (this.coords.p_from_real = this.coords.p_to_real); this.coords.p_from_real = this.checkDiapason( this.coords.p_from_real, this.options.from_min, this.options.from_max ); this.coords.p_from_real = this.checkMinInterval( this.coords.p_from_real, this.coords.p_to_real, "from" ); this.coords.p_from_real = this.checkMaxInterval( this.coords.p_from_real, this.coords.p_to_real, "from" ); this.coords.p_from = this.toFixed( (this.coords.p_from_real / 100) * a ); break; case "to": if (this.options.to_fixed) break; this.coords.p_to_real = this.calcWithStep((b / a) * 100); this.coords.p_to_real < this.coords.p_from_real && (this.coords.p_to_real = this.coords.p_from_real); this.coords.p_to_real = this.checkDiapason( this.coords.p_to_real, this.options.to_min, this.options.to_max ); this.coords.p_to_real = this.checkMinInterval( this.coords.p_to_real, this.coords.p_from_real, "to" ); this.coords.p_to_real = this.checkMaxInterval( this.coords.p_to_real, this.coords.p_from_real, "to" ); this.coords.p_to = this.toFixed( (this.coords.p_to_real / 100) * a ); break; case "both": (b = this.toFixed(b + 0.1 * this.coords.p_handle)), (this.coords.p_from_real = this.calcWithStep( ((b - this.coords.p_gap_left) / a) * 100 )), (this.coords.p_from_real = this.checkDiapason( this.coords.p_from_real, this.options.from_min, this.options.from_max )), (this.coords.p_from_real = this.checkMinInterval( this.coords.p_from_real, this.coords.p_to_real, "from" )), (this.coords.p_from = this.toFixed( (this.coords.p_from_real / 100) * a )), (this.coords.p_to_real = this.calcWithStep( ((b + this.coords.p_gap_right) / a) * 100 )), (this.coords.p_to_real = this.checkDiapason( this.coords.p_to_real, this.options.to_min, this.options.to_max )), (this.coords.p_to_real = this.checkMinInterval( this.coords.p_to_real, this.coords.p_from_real, "to" )), (this.coords.p_to = this.toFixed( (this.coords.p_to_real / 100) * a )); } "single" === this.options.type ? ((this.coords.p_bar_x = this.coords.p_handle / 2), (this.coords.p_bar_w = this.coords.p_single), (this.result.from_percent = this.coords.p_single_real), (this.result.from = this.calcReal(this.coords.p_single_real)), this.options.values.length && (this.result.from_value = this.options.values[this.result.from])) : ((this.coords.p_bar_x = this.toFixed( this.coords.p_from + this.coords.p_handle / 2 )), (this.coords.p_bar_w = this.toFixed( this.coords.p_to - this.coords.p_from )), (this.result.from_percent = this.coords.p_from_real), (this.result.from = this.calcReal(this.coords.p_from_real)), (this.result.to_percent = this.coords.p_to_real), (this.result.to = this.calcReal(this.coords.p_to_real)), this.options.values.length && ((this.result.from_value = this.options.values[this.result.from]), (this.result.to_value = this.options.values[this.result.to]))); this.calcMinMax(); this.calcLabels(); } } }, calcPointer: function () { this.coords.w_rs ? (0 > this.coords.x_pointer || isNaN(this.coords.x_pointer) ? (this.coords.x_pointer = 0) : this.coords.x_pointer > this.coords.w_rs && (this.coords.x_pointer = this.coords.w_rs), (this.coords.p_pointer = this.toFixed( (this.coords.x_pointer / this.coords.w_rs) * 100 ))) : (this.coords.p_pointer = 0); }, chooseHandle: function (a) { return "single" === this.options.type ? "single" : a >= this.coords.p_from_real + (this.coords.p_to_real - this.coords.p_from_real) / 2 ? "to" : "from"; }, calcMinMax: function () { this.coords.w_rs && ((this.labels.p_min = (this.labels.w_min / this.coords.w_rs) * 100), (this.labels.p_max = (this.labels.w_max / this.coords.w_rs) * 100)); }, calcLabels: function () { this.coords.w_rs && !this.options.hide_from_to && ("single" === this.options.type ? ((this.labels.w_single = this.$cache.single.outerWidth(!1)), (this.labels.p_single = (this.labels.w_single / this.coords.w_rs) * 100), (this.labels.p_single_left = this.coords.p_single + this.coords.p_handle / 2 - this.labels.p_single / 2)) : ((this.labels.w_from = this.$cache.from.outerWidth(!1)), (this.labels.p_from = (this.labels.w_from / this.coords.w_rs) * 100), (this.labels.p_from_left = this.coords.p_from + this.coords.p_handle / 2 - this.labels.p_from / 2), (this.labels.p_from_left = this.toFixed(this.labels.p_from_left)), (this.labels.p_from_left = this.checkEdges( this.labels.p_from_left, this.labels.p_from )), (this.labels.w_to = this.$cache.to.outerWidth(!1)), (this.labels.p_to = (this.labels.w_to / this.coords.w_rs) * 100), (this.labels.p_to_left = this.coords.p_to + this.coords.p_handle / 2 - this.labels.p_to / 2), (this.labels.p_to_left = this.toFixed(this.labels.p_to_left)), (this.labels.p_to_left = this.checkEdges( this.labels.p_to_left, this.labels.p_to )), (this.labels.w_single = this.$cache.single.outerWidth(!1)), (this.labels.p_single = (this.labels.w_single / this.coords.w_rs) * 100), (this.labels.p_single_left = (this.labels.p_from_left + this.labels.p_to_left + this.labels.p_to) / 2 - this.labels.p_single / 2), (this.labels.p_single_left = this.toFixed( this.labels.p_single_left ))), (this.labels.p_single_left = this.checkEdges( this.labels.p_single_left, this.labels.p_single ))); }, updateScene: function () { this.options && (this.drawHandles(), (this.raf_id = requestAnimationFrame(this.updateScene.bind(this)))); }, drawHandles: function () { this.coords.w_rs = this.$cache.rs.outerWidth(!1); if (this.coords.w_rs) { this.coords.w_rs !== this.coords.w_rs_old && ((this.target = "base"), (this.is_resize = !0)); if (this.coords.w_rs !== this.coords.w_rs_old || this.force_redraw) this.setMinMax(), this.calc(!0), this.drawLabels(), this.options.grid && (this.calcGridMargin(), this.calcGridLabels()), (this.force_redraw = !0), (this.coords.w_rs_old = this.coords.w_rs), this.drawShadow(); if ( this.coords.w_rs && (this.dragging || this.force_redraw || this.is_key) ) { if ( this.old_from !== this.result.from || this.old_to !== this.result.to || this.force_redraw || this.is_key ) { this.drawLabels(); this.$cache.bar[0].style.left = this.coords.p_bar_x + "%"; this.$cache.bar[0].style.width = this.coords.p_bar_w + "%"; if ("single" === this.options.type) (this.$cache.s_single[0].style.left = this.coords.p_single + "%"), (this.$cache.single[0].style.left = this.labels.p_single_left + "%"), this.options.values.length ? (this.$cache.input.prop("value", this.result.from_value), this.$cache.input.data("from", this.result.from_value)) : (this.$cache.input.prop("value", this.result.from), this.$cache.input.data("from", this.result.from)); else { this.$cache.s_from[0].style.left = this.coords.p_from + "%"; this.$cache.s_to[0].style.left = this.coords.p_to + "%"; if (this.old_from !== this.result.from || this.force_redraw) this.$cache.from[0].style.left = this.labels.p_from_left + "%"; if (this.old_to !== this.result.to || this.force_redraw) this.$cache.to[0].style.left = this.labels.p_to_left + "%"; this.$cache.single[0].style.left = this.labels.p_single_left + "%"; this.options.values.length ? (this.$cache.input.prop( "value", this.result.from_value + ";" + this.result.to_value ), this.$cache.input.data("from", this.result.from_value), this.$cache.input.data("to", this.result.to_value)) : (this.$cache.input.prop( "value", this.result.from + ";" + this.result.to ), this.$cache.input.data("from", this.result.from), this.$cache.input.data("to", this.result.to)); } (this.old_from === this.result.from && this.old_to === this.result.to) || this.is_start || this.$cache.input.trigger("change"); this.old_from = this.result.from; this.old_to = this.result.to; if ( this.options.onChange && "function" === typeof this.options.onChange && !this.is_resize && !this.is_update && !this.is_start ) this.options.onChange(this.result); if ( this.options.onFinish && "function" === typeof this.options.onFinish && (this.is_key || this.is_click) ) this.options.onFinish(this.result); this.is_resize = this.is_update = !1; } this.force_redraw = this.is_click = this.is_key = this.is_start = !1; } } }, drawLabels: function () { if (this.options) { var a = this.options.values.length, b = this.options.p_values, c; if (!this.options.hide_from_to) if ("single" === this.options.type) (a = a ? this.decorate(b[this.result.from]) : this.decorate( this._prettify(this.result.from), this.result.from )), this.$cache.single.html(a), this.calcLabels(), (this.$cache.min[0].style.visibility = this.labels.p_single_left < this.labels.p_min + 1 ? "hidden" : "visible"), (this.$cache.max[0].style.visibility = this.labels.p_single_left + this.labels.p_single > 100 - this.labels.p_max - 1 ? "hidden" : "visible"); else { a ? (this.options.decorate_both ? ((a = this.decorate(b[this.result.from])), (a += this.options.values_separator), (a += this.decorate(b[this.result.to]))) : (a = this.decorate( b[this.result.from] + this.options.values_separator + b[this.result.to] )), (c = this.decorate(b[this.result.from])), (b = this.decorate(b[this.result.to]))) : (this.options.decorate_both ? ((a = this.decorate(this._prettify(this.result.from))), (a += this.options.values_separator), (a += this.decorate(this._prettify(this.result.to)))) : (a = this.decorate( this._prettify(this.result.from) + this.options.values_separator + this._prettify(this.result.to), this.result.from )), (c = this.decorate( this._prettify(this.result.from), this.result.from )), (b = this.decorate( this._prettify(this.result.to), this.result.to ))); this.$cache.single.html(a); this.$cache.from.html(c); this.$cache.to.html(b); this.calcLabels(); b = Math.min(this.labels.p_single_left, this.labels.p_from_left); a = this.labels.p_single_left + this.labels.p_single; c = this.labels.p_to_left + this.labels.p_to; var d = Math.max(a, c); this.labels.p_from_left + this.labels.p_from >= this.labels.p_to_left ? ((this.$cache.from[0].style.visibility = "hidden"), (this.$cache.to[0].style.visibility = "hidden"), (this.$cache.single[0].style.visibility = "visible"), this.result.from === this.result.to ? ((this.$cache.from[0].style.visibility = "visible"), (this.$cache.single[0].style.visibility = "hidden"), (d = c)) : ((this.$cache.from[0].style.visibility = "hidden"), (this.$cache.single[0].style.visibility = "visible"), (d = Math.max(a, c)))) : ((this.$cache.from[0].style.visibility = "visible"), (this.$cache.to[0].style.visibility = "visible"), (this.$cache.single[0].style.visibility = "hidden")); this.$cache.min[0].style.visibility = b < this.labels.p_min + 1 ? "hidden" : "visible"; this.$cache.max[0].style.visibility = d > 100 - this.labels.p_max - 1 ? "hidden" : "visible"; } } }, drawShadow: function () { var a = this.options, b = this.$cache, c = "number" === typeof a.from_min && !isNaN(a.from_min), d = "number" === typeof a.from_max && !isNaN(a.from_max), e = "number" === typeof a.to_min && !isNaN(a.to_min), f = "number" === typeof a.to_max && !isNaN(a.to_max); "single" === a.type ? a.from_shadow && (c || d) ? ((c = this.calcPercent(a.from_min || a.min)), (d = this.calcPercent(a.from_max || a.max) - c), (c = this.toFixed(c - (this.coords.p_handle / 100) * c)), (d = this.toFixed(d - (this.coords.p_handle / 100) * d)), (c += this.coords.p_handle / 2), (b.shad_single[0].style.display = "block"), (b.shad_single[0].style.left = c + "%"), (b.shad_single[0].style.width = d + "%")) : (b.shad_single[0].style.display = "none") : (a.from_shadow && (c || d) ? ((c = this.calcPercent(a.from_min || a.min)), (d = this.calcPercent(a.from_max || a.max) - c), (c = this.toFixed(c - (this.coords.p_handle / 100) * c)), (d = this.toFixed(d - (this.coords.p_handle / 100) * d)), (c += this.coords.p_handle / 2), (b.shad_from[0].style.display = "block"), (b.shad_from[0].style.left = c + "%"), (b.shad_from[0].style.width = d + "%")) : (b.shad_from[0].style.display = "none"), a.to_shadow && (e || f) ? ((e = this.calcPercent(a.to_min || a.min)), (a = this.calcPercent(a.to_max || a.max) - e), (e = this.toFixed(e - (this.coords.p_handle / 100) * e)), (a = this.toFixed(a - (this.coords.p_handle / 100) * a)), (e += this.coords.p_handle / 2), (b.shad_to[0].style.display = "block"), (b.shad_to[0].style.left = e + "%"), (b.shad_to[0].style.width = a + "%")) : (b.shad_to[0].style.display = "none")); }, toggleInput: function () { this.$cache.input.toggleClass("irs-hidden-input"); }, calcPercent: function (a) { return this.toFixed( (a - this.options.min) / ((this.options.max - this.options.min) / 100) ); }, calcReal: function (a) { var b = this.options.min, c = this.options.max, d = 0; 0 > b && ((d = Math.abs(b)), (b += d), (c += d)); a = ((c - b) / 100) * a + b; (b = this.options.step.toString().split(".")[1]) ? (a = +a.toFixed(b.length)) : ((a /= this.options.step), (a *= this.options.step), (a = +a.toFixed(0))); d && (a -= d); a < this.options.min ? (a = this.options.min) : a > this.options.max && (a = this.options.max); return b ? +a.toFixed(b.length) : this.toFixed(a); }, calcWithStep: function (a) { var b = Math.round(a / this.coords.p_step) * this.coords.p_step; 100 < b && (b = 100); 100 === a && (b = 100); return this.toFixed(b); }, checkMinInterval: function (a, b, c) { var d = this.options; if (!d.min_interval) return a; a = this.calcReal(a); b = this.calcReal(b); "from" === c ? b - a < d.min_interval && (a = b - d.min_interval) : a - b < d.min_interval && (a = b + d.min_interval); return this.calcPercent(a); }, checkMaxInterval: function (a, b, c) { var d = this.options; if (!d.max_interval) return a; a = this.calcReal(a); b = this.calcReal(b); "from" === c ? b - a > d.max_interval && (a = b - d.max_interval) : a - b > d.max_interval && (a = b + d.max_interval); return this.calcPercent(a); }, checkDiapason: function (a, b, c) { a = this.calcReal(a); var d = this.options; (b && "number" === typeof b) || (b = d.min); (c && "number" === typeof c) || (c = d.max); a < b && (a = b); a > c && (a = c); return this.calcPercent(a); }, toFixed: function (a) { a = a.toFixed(5); return +a; }, _prettify: function (a) { return this.options.prettify_enabled ? this.options.prettify && "function" === typeof this.options.prettify ? this.options.prettify(a) : this.prettify(a) : a; }, prettify: function (a) { return a .toString() .replace( /(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g, "$1" + this.options.prettify_separator ); }, checkEdges: function (a, b) { if (!this.options.force_edges) return this.toFixed(a); 0 > a ? (a = 0) : a > 100 - b && (a = 100 - b); return this.toFixed(a); }, validate: function () { var a = this.options, b = this.result, c = a.values, d = c.length, e, f; "string" === typeof a.min && (a.min = +a.min); "string" === typeof a.max && (a.max = +a.max); "string" === typeof a.from && (a.from = +a.from); "string" === typeof a.to && (a.to = +a.to); "string" === typeof a.step && (a.step = +a.step); "string" === typeof a.from_min && (a.from_min = +a.from_min); "string" === typeof a.from_max && (a.from_max = +a.from_max); "string" === typeof a.to_min && (a.to_min = +a.to_min); "string" === typeof a.to_max && (a.to_max = +a.to_max); "string" === typeof a.keyboard_step && (a.keyboard_step = +a.keyboard_step); "string" === typeof a.grid_num && (a.grid_num = +a.grid_num); a.max <= a.min && ((a.max = a.min ? 2 * a.min : a.min + 1), (a.step = 1)); if (d) for ( a.p_values = [], a.min = 0, a.max = d - 1, a.step = 1, a.grid_num = a.max, a.grid_snap = !0, f = 0; f < d; f++ ) (e = +c[f]), isNaN(e) ? (e = c[f]) : ((c[f] = e), (e = this._prettify(e))), a.p_values.push(e); if ("number" !== typeof a.from || isNaN(a.from)) a.from = a.min; if ("number" !== typeof a.to || isNaN(a.from)) a.to = a.max; if (a.from < a.min || a.from > a.max) a.from = a.min; if (a.to > a.max || a.to < a.min) a.to = a.max; "double" === a.type && a.from > a.to && (a.from = a.to); if ("number" !== typeof a.step || isNaN(a.step) || !a.step || 0 > a.step) a.step = 1; if ( "number" !== typeof a.keyboard_step || isNaN(a.keyboard_step) || !a.keyboard_step || 0 > a.keyboard_step ) a.keyboard_step = 5; a.from_min && a.from < a.from_min && (a.from = a.from_min); a.from_max && a.from > a.from_max && (a.from = a.from_max); a.to_min && a.to < a.to_min && (a.to = a.to_min); a.to_max && a.from > a.to_max && (a.to = a.to_max); if (b) { b.min !== a.min && (b.min = a.min); b.max !== a.max && (b.max = a.max); if (b.from < b.min || b.from > b.max) b.from = a.from; if (b.to < b.min || b.to > b.max) b.to = a.to; } if ( "number" !== typeof a.min_interval || isNaN(a.min_interval) || !a.min_interval || 0 > a.min_interval ) a.min_interval = 0; if ( "number" !== typeof a.max_interval || isNaN(a.max_interval) || !a.max_interval || 0 > a.max_interval ) a.max_interval = 0; a.min_interval && a.min_interval > a.max - a.min && (a.min_interval = a.max - a.min); a.max_interval && a.max_interval > a.max - a.min && (a.max_interval = a.max - a.min); }, decorate: function (a, b) { var c = "", d = this.options; d.prefix && (c += d.prefix); c += a; d.max_postfix && (d.values.length && a === d.p_values[d.max] ? ((c += d.max_postfix), d.postfix && (c += " ")) : b === d.max && ((c += d.max_postfix), d.postfix && (c += " "))); d.postfix && (c += d.postfix); return c; }, updateFrom: function () { this.result.from = this.options.from; this.result.from_percent = this.calcPercent(this.result.from); this.options.values && (this.result.from_value = this.options.values[this.result.from]); }, updateTo: function () { this.result.to = this.options.to; this.result.to_percent = this.calcPercent(this.result.to); this.options.values && (this.result.to_value = this.options.values[this.result.to]); }, updateResult: function () { this.result.min = this.options.min; this.result.max = this.options.max; this.updateFrom(); this.updateTo(); }, appendGrid: function () { if (this.options.grid) { var a = this.options, b, c; b = a.max - a.min; var d = a.grid_num, e = 0, f = 0, k = 4, g, h, l = 0, m = ""; this.calcGridMargin(); a.grid_snap ? ((d = b / a.step), (e = this.toFixed(a.step / (b / 100)))) : (e = this.toFixed(100 / d)); 4 < d && (k = 3); 7 < d && (k = 2); 14 < d && (k = 1); 28 < d && (k = 0); for (b = 0; b < d + 1; b++) { g = k; f = this.toFixed(e * b); 100 < f && ((f = 100), (g -= 2), 0 > g && (g = 0)); this.coords.big[b] = f; h = (f - e * (b - 1)) / (g + 1); for (c = 1; c <= g && 0 !== f; c++) (l = this.toFixed(f - h * c)), (m += ''); m += ''; l = this.calcReal(f); l = a.values.length ? a.p_values[l] : this._prettify(l); m += '' + l + ""; } this.coords.big_num = Math.ceil(d + 1); this.$cache.cont.addClass("irs-with-grid"); this.$cache.grid.html(m); this.cacheGridLabels(); } }, cacheGridLabels: function () { var a, b, c = this.coords.big_num; for (b = 0; b < c; b++) (a = this.$cache.grid.find(".js-grid-text-" + b)), this.$cache.grid_labels.push(a); this.calcGridLabels(); }, calcGridLabels: function () { var a, b; b = []; var c = [], d = this.coords.big_num; for (a = 0; a < d; a++) (this.coords.big_w[a] = this.$cache.grid_labels[a].outerWidth(!1)), (this.coords.big_p[a] = this.toFixed( (this.coords.big_w[a] / this.coords.w_rs) * 100 )), (this.coords.big_x[a] = this.toFixed(this.coords.big_p[a] / 2)), (b[a] = this.toFixed(this.coords.big[a] - this.coords.big_x[a])), (c[a] = this.toFixed(b[a] + this.coords.big_p[a])); this.options.force_edges && (b[0] < this.coords.grid_gap && ((b[0] = this.coords.grid_gap), (c[0] = this.toFixed(b[0] + this.coords.big_p[0])), (this.coords.big_x[0] = this.coords.grid_gap)), c[d - 1] > 100 - this.coords.grid_gap && ((c[d - 1] = 100 - this.coords.grid_gap), (b[d - 1] = this.toFixed(c[d - 1] - this.coords.big_p[d - 1])), (this.coords.big_x[d - 1] = this.toFixed( this.coords.big_p[d - 1] - this.coords.grid_gap )))); this.calcGridCollision(2, b, c); this.calcGridCollision(4, b, c); for (a = 0; a < d; a++) (b = this.$cache.grid_labels[a][0]), (b.style.marginLeft = -this.coords.big_x[a] + "%"); }, calcGridCollision: function (a, b, c) { var d, e, f, g = this.coords.big_num; for (d = 0; d < g; d += a) { e = d + a / 2; if (e >= g) break; f = this.$cache.grid_labels[e][0]; f.style.visibility = c[d] <= b[e] ? "visible" : "hidden"; } }, calcGridMargin: function () { this.options.grid_margin && ((this.coords.w_rs = this.$cache.rs.outerWidth(!1)), this.coords.w_rs && ((this.coords.w_handle = "single" === this.options.type ? this.$cache.s_single.outerWidth(!1) : this.$cache.s_from.outerWidth(!1)), (this.coords.p_handle = this.toFixed( (this.coords.w_handle / this.coords.w_rs) * 100 )), (this.coords.grid_gap = this.toFixed(this.coords.p_handle / 2 - 0.1)), (this.$cache.grid[0].style.width = this.toFixed(100 - this.coords.p_handle) + "%"), (this.$cache.grid[0].style.left = this.coords.grid_gap + "%"))); }, update: function (a) { this.input && ((this.is_update = !0), (this.options.from = this.result.from), (this.options.to = this.result.to), (this.options = g.extend(this.options, a)), this.validate(), this.updateResult(a), this.toggleInput(), this.remove(), this.init(!0)); }, reset: function () { this.input && (this.updateResult(), this.update()); }, destroy: function () { this.input && (this.toggleInput(), this.$cache.input.prop("readonly", !1), g.data(this.input, "ionRangeSlider", null), this.remove(), (this.options = this.input = null)); }, }; g.fn.ionRangeSlider = function (a) { return this.each(function () { g.data(this, "ionRangeSlider") || g.data(this, "ionRangeSlider", new p(this, a, t++)); }); }; (function () { for ( var a = 0, b = ["ms", "moz", "webkit", "o"], c = 0; c < b.length && !h.requestAnimationFrame; ++c ) (h.requestAnimationFrame = h[b[c] + "RequestAnimationFrame"]), (h.cancelAnimationFrame = h[b[c] + "CancelAnimationFrame"] || h[b[c] + "CancelRequestAnimationFrame"]); h.requestAnimationFrame || (h.requestAnimationFrame = function (b, c) { var f = new Date().getTime(), g = Math.max(0, 16 - (f - a)), n = h.setTimeout(function () { b(f + g); }, g); a = f + g; return n; }); h.cancelAnimationFrame || (h.cancelAnimationFrame = function (a) { clearTimeout(a); }); })(); })(jQuery, document, window, navigator);