forked from DWMiller/UNMAINTAINED-Grouped-Sliders
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroupedSliders.0.2.5.jquery.min.js
1 lines (1 loc) · 2.06 KB
/
groupedSliders.0.2.5.jquery.min.js
1
!function(a){a.fn.groupedSliders=function(b){function e(){function g(){b.on("slide slidechange",".slider",t)}function h(){b.off("slide slidechange",".slider")}function i(){e=0,c.each(function(){var b=a(this).slider("option","value");e+=b})}function j(){f=0,c.filter(".locked").each(function(){var b=a(this).slider("option","value");f+=b})}function k(){j(),i();var a;a=c.filter(".unlocked").not(".clicked");var b=c.filter(".clicked"),k=b.slider("option","value");h(),0===a.length?b.slider("value",d.total-f):k>d.total-f&&(a.slider("value",0),b.slider("value",d.total-f),e=d.total),b.removeClass("clicked"),l(a),p(),g()}function l(a){for(var b=a.length;e!=d.total&&0!==a.length;){var c=Math.floor(Math.random()*a.length),f=a.eq(c),g=f.slider("option","value"),h=Math.ceil(Math.abs(e-d.total)/b);e>d.total&&(Math.abs(h)>g&&(h=g,a.splice(c,1)),h*=-1),g+h>=0&&g+h<=d.total&&(g+=h,e+=h,f.slider("value",g))}}function m(b){var c=a(b);c.toggleClass("ui-icon-unlocked ui-icon-locked");var e=c.prev(".slider");e.toggleClass("unlocked locked"),e.hasClass("unlocked")?(e.slider("enable"),a(e).prev("input").removeAttr("readonly")):e.slider("disable"),j(),f>=d.total&&n()}function n(){c.slider("disable").prev("input").attr("readonly","readonly"),c.removeClass("unlocked").addClass("locked"),c.next(".slider-lock").addClass("ui-icon-locked").removeClass("ui-icon-unlocked"),j()}function p(){b.find(".slider-text").val(function(){var b=a(this).next(".slider").slider("option","value");return b})}function q(b){b.preventDefault();var c=a(this).next(".slider"),d=this.value;c.slider("value",d),c.trigger("slide")}function r(a){a.preventDefault(),m(this)}function s(){var b=a(this).val();a(this).next(".slider").slider("value",b)}function t(){var c=a(this);c.addClass("clicked"),k()}var e,f,b=a(this),c=b.find(".slider");c.addClass(d.startState),c.slider({range:"min",min:0,max:d.total,value:Math.floor(d.total/c.length),animate:"fast"}),b.on("change",".slider-text",q),b.on("click",".slider-lock",r),b.on("change",".slider-lock",s),g(),k()}var c={startState:"unlocked",total:100},d=a.extend({},c,b);return this.each(e)}}(jQuery);