(function(f){f.tools=f.tools||{version:"1.2.5"};var d;d=f.tools.rangeinput={conf:{min:0,max:100,step:"any",steps:0,value:0,precision:undefined,vertical:0,keyboard:true,progress:false,speed:100,css:{input:"range",slider:"slider",progress:"progress",handle:"handle"}}};var h,a;f.fn.drag=function(i){i=f.extend({x:true,y:true,drag:true},i);h=h||f(document).bind("mousedown mouseup",function(m){var k=f(m.target);if(m.type=="mousedown"&&k.data("drag")){var n=k.position(),j=m.pageX-n.left,l=m.pageY-n.top,o=true;h.bind("mousemove.drag",function(r){var p=r.pageX-j,s=r.pageY-l,q={};if(i.x){q.left=p}if(i.y){q.top=s}if(o){k.trigger("dragStart");o=false}if(i.drag){k.css(q)}k.trigger("drag",[s,p]);a=k});m.preventDefault()}else{try{if(a){a.trigger("dragEnd")}}finally{h.unbind("mousemove.drag");a=null}}});return this.data("drag",true)};function b(j,i){var k=Math.pow(10,i);return Math.round(j*k)/k}function g(l,j){var i=parseInt(l.css(j),10);if(i){return i}var k=l[0].currentStyle;return k&&k.width&&parseInt(k.width,10)}function c(i){var j=i.data("events");return j&&j.onSlide}function e(s,q){var u=this,r=q.css,w=f("<div><div/><a href='#'/></div>").data("rangeinput",u),k,v,l,y,n;s.before(w);var B=w.addClass(r.slider).find("a").addClass(r.handle),p=w.find("div").addClass(r.progress);f.each("min,max,step,value".split(","),function(F,E){var G=s.attr(E);if(parseFloat(G)){q[E]=parseFloat(G,10)}});var t=q.max-q.min,o=q.step=="any"?0:q.step,z=q.precision;if(z===undefined){try{z=o.toString().split(".")[1].length}catch(m){z=0}}if(s.attr("type")=="range"){var C=f("<input/>");f.each("class,disabled,id,maxlength,name,readonly,required,size,style,tabindex,title,value".split(","),function(F,E){C.attr(E,s.attr(E))});C.val(q.value);s.replaceWith(C);s=C}s.addClass(r.input);var D=f(u).add(s),j=true;function i(F,E,J,H){if(J===undefined){J=E/y*t}else{if(H){J-=q.min}}if(o){J=Math.round(J/o)*o}if(E===undefined||o){E=J*y/t}if(isNaN(J)){return u}E=Math.max(0,Math.min(E,y));J=E/y*t;if(H||!k){J+=q.min}if(k){if(H){E=y-E}else{J=q.max-J}}J=b(J,z);var I=F.type=="click";if(j&&v!==undefined&&!I){F.type="onSlide";D.trigger(F,[J,E]);if(F.isDefaultPrevented()){return u}}var G=I?q.speed:0,K=I?function(){F.type="change";D.trigger(F,[J])}:null;if(k){B.animate({top:E},G,K);if(q.progress){p.animate({height:y-E+B.width()/2},G)}}else{B.animate({left:E},G,K);if(q.progress){p.animate({width:E+B.width()/2},G)}}v=J;n=E;s.val(J);return u}f.extend(u,{getValue:function(){return v},setValue:function(F,E){x();return i(E||f.Event("api"),undefined,F,true)},getConf:function(){return q},getProgress:function(){return p},getHandle:function(){return B},getInput:function(){return s},step:function(F,G){G=G||f.Event();var E=q.step=="any"?1:q.step;u.setValue(v+E*(F||1),G)},stepUp:function(E){return u.step(E||1)},stepDown:function(E){return u.step(-E||-1)}});f.each("onSlide,change".split(","),function(F,E){if(f.isFunction(q[E])){f(u).bind(E,q[E])}u[E]=function(G){if(G){f(u).bind(E,G)}return u}});B.drag({drag:false}).bind("dragStart",function(){x();j=c(f(u))||c(s)}).bind("drag",function(F,G,E){if(s.is(":disabled")){return false}i(F,k?G:E)}).bind("dragEnd",function(E){if(!E.isDefaultPrevented()){E.type="change";D.trigger(E,[v])}}).click(function(E){return E.preventDefault()});w.click(function(F){if(s.is(":disabled")||F.target==B[0]){return F.preventDefault()}x();var E=B.width()/2;i(F,k?y-l-E+F.pageY:F.pageX-l-E)});if(q.keyboard){s.keydown(function(G){if(s.attr("readonly")){return}var F=G.keyCode,E=f([75,76,38,33,39]).index(F)!=-1,H=f([74,72,40,34,37]).index(F)!=-1;if((E||H)&&!(G.shiftKey||G.altKey||G.ctrlKey)){if(E){u.step(F==33?10:1,G)}else{if(H){u.step(F==34?-10:-1,G)}}return G.preventDefault()}})}s.blur(function(E){var F=f(this).val();if(F!==v){u.setValue(F,E)}});f.extend(s[0],{stepUp:u.stepUp,stepDown:u.stepDown});function x(){k=q.vertical||g(w,"height")>g(w,"width");if(k){y=g(w,"height")-g(B,"height");l=w.offset().top+y}else{y=g(w,"width")-g(B,"width");l=w.offset().left}}function A(){x();u.setValue(q.value!==undefined?q.value:q.min)}A();if(!y){f(window).load(A)}}f.expr[":"].range=function(j){var i=j.getAttribute("type");return i&&i=="range"||!!f(j).filter("input").data("rangeinput")};f.fn.rangeinput=function(i){if(this.data("rangeinput")){return this}i=f.extend(true,{},d.conf,i);var j;this.each(function(){var l=new e(f(this),f.extend(true,{},i));var k=l.getInput().data("rangeinput",l);j=j?j.add(k):k});return j?j:this}})(jQuery);
