(function(n){"use strict";function r(n,t){return n+".touchspin_"+t}function i(t,i){return n.map(t,function(n){return r(n,i)})}var t=0;n.fn.TouchSpin=function(r){if(r==="destroy"){this.each(function(){var t=n(this),r=t.data();n(document).off(i(["mouseup","touchend","touchcancel","mousemove","touchmove","scroll","scrollstart"],r.spinnerid).join(" "))});return}var u={min:0,max:100,initval:"",step:1,decimals:0,stepinterval:100,forcestepdivisibility:"round",stepintervaldelay:500,prefix:"",postfix:"",prefix_extraclass:"",postfix_extraclass:"",booster:!0,boostat:10,maxboostedstep:!1,mousewheel:!0,buttondown_class:"btn btn-default",buttonup_class:"btn btn-default",buttondown_txt:'<span class="bpayicon icon-remove"><\/span><span class="sr-only">down<\/span>',buttonup_txt:'<span class="bpayicon icon-add"><\/span><span class="sr-only">up<\/span>'},f={min:"min",max:"max",initval:"init-val",step:"step",decimals:"decimals",stepinterval:"step-interval",forcestepdivisibility:"force-step-divisibility",stepintervaldelay:"step-interval-delay",prefix:"prefix",postfix:"postfix",prefix_extraclass:"prefix-extra-class",postfix_extraclass:"postfix-extra-class",booster:"booster",boostat:"boostat",maxboostedstep:"max-boosted-step",mousewheel:"mouse-wheel",buttondown_class:"button-down-class",buttonup_class:"button-up-class"};return this.each(function(){function ut(){o.data("alreadyinitialized")||(o.data("alreadyinitialized",!0),t+=1,o.data("spinnerid",t),o.is("input"))&&(ot(),ft(),w(),ct(),vt(),yt(),pt(),wt(),h.input.css("display","block"))}function ft(){e.initval!==""&&o.val()===""&&o.val(e.initval)}function et(n){ht(n);w();var t=h.input.val();t!==""&&(t=Number(h.input.val()),h.input.val(t.toFixed(e.decimals)))}function ot(){e=n.extend({},u,rt,st(),r)}function st(){var t={};return n.each(f,function(n,i){var r="bts-"+i+"";o.is("[data-"+r+"]")&&(t[n]=o.data(r))}),t}function ht(t){e=n.extend({},e,t)}function ct(){var n=o.val(),t=o.parent();n!==""&&(n=Number(n).toFixed(e.decimals));o.data("initvalue",n).val(n);o.addClass("form-control");t.hasClass("input-group")?lt(t):at()}function lt(t){t.addClass("bootstrap-touchspin");var u=o.prev(),f=o.next(),i,r,s='<span class="input-group-addon bootstrap-touchspin-prefix">'+e.prefix+"<\/span>",h='<span class="input-group-addon bootstrap-touchspin-postfix">'+e.postfix+"<\/span>";u.hasClass("input-group-btn")?(i='<button class="'+e.buttondown_class+' bootstrap-touchspin-down" type="button">'+buttondown_txt+"<\/button>",u.append(i)):(i='<span class="input-group-btn"><button class="'+e.buttondown_class+' bootstrap-touchspin-down" type="button">'+buttondown_txt+"<\/span><\/button><\/span>",n(i).insertBefore(o));f.hasClass("input-group-btn")?(r='<button class="'+e.buttonup_class+' bootstrap-touchspin-up" type="button">'+buttonup_txt+"<\/button>",f.prepend(r)):(r='<span class="input-group-btn"><button class="'+e.buttonup_class+' bootstrap-touchspin-up" type="button">'+buttonup_txt+"<\/button><\/span>",n(r).insertAfter(o));n(s).insertBefore(o);n(h).insertAfter(o);a=t}function at(){var t='<div class="input-group bootstrap-touchspin"><span class="input-group-btn"><button class="'+e.buttondown_class+' bootstrap-touchspin-down" type="button">'+e.buttondown_txt+'<\/button><\/span><span class="input-group-addon bootstrap-touchspin-prefix">'+e.prefix+'<\/span><span class="input-group-addon bootstrap-touchspin-postfix">'+e.postfix+'<\/span><span class="input-group-btn"><button class="'+e.buttonup_class+' bootstrap-touchspin-up" type="button">'+e.buttonup_txt+"<\/button><\/span><\/div>";a=n(t).insertBefore(o);n(".bootstrap-touchspin-prefix",a).after(o);o.hasClass("input-sm")?a.addClass("input-group-sm"):o.hasClass("input-lg")&&a.addClass("input-group-lg")}function vt(){h={down:n(".bootstrap-touchspin-down",a),up:n(".bootstrap-touchspin-up",a),input:n("input",a),prefix:n(".bootstrap-touchspin-prefix",a).addClass(e.prefix_extraclass),postfix:n(".bootstrap-touchspin-postfix",a).addClass(e.postfix_extraclass)}}function yt(){e.prefix==""&&h.prefix.hide();e.postfix==""&&h.postfix.hide()}function pt(){o.on("keydown",function(n){var t=n.keyCode||n.which;t===38?(l!=="up"&&(y(),k()),n.preventDefault()):t===40&&(l!=="down"&&(p(),b()),n.preventDefault())});o.on("keyup",function(n){var t=n.keyCode||n.which;t===38?c():t===40&&c()});o.on("blur",function(){w()});h.down.on("keydown",function(n){var t=n.keyCode||n.which;(t===32||t===13)&&(l!=="down"&&(p(),b()),n.preventDefault())});h.down.on("keyup",function(n){var t=n.keyCode||n.which;(t===32||t===13)&&c()});h.up.on("keydown",function(n){var t=n.keyCode||n.which;(t===32||t===13)&&(l!=="up"&&(y(),k()),n.preventDefault())});h.up.on("keyup",function(n){var t=n.keyCode||n.which;(t===32||t===13)&&c()});h.down.on("mousedown touchstart",function(n){p();b();n.preventDefault();n.stopPropagation()});h.up.on("mousedown touchstart",function(n){y();k();n.preventDefault();n.stopPropagation()});h.up.on("mouseout touchleave touchend touchcancel",function(n){l&&(n.stopPropagation(),c())});h.down.on("mouseout touchleave touchend touchcancel",function(n){l&&(n.stopPropagation(),c())});h.down.on("mousemove touchmove",function(n){l&&(n.stopPropagation(),n.preventDefault())});h.up.on("mousemove touchmove",function(n){l&&(n.stopPropagation(),n.preventDefault())});n(document).on(i(["mouseup","touchend","touchcancel"],t).join(" "),function(n){l&&(n.preventDefault(),c())});n(document).on(i(["mousemove","touchmove","scroll","scrollstart"],t).join(" "),function(n){l&&(n.preventDefault(),c())});if(e.mousewheel)o.on("mousewheel DOMMouseScroll",function(n){var t=n.deltaY;n.stopPropagation();n.preventDefault();t<0?p():y()})}function wt(){o.on("touchspin.uponce",function(){c();y()});o.on("touchspin.downonce",function(){c();p()});o.on("touchspin.startupspin",function(){k()});o.on("touchspin.startdownspin",function(){b()});o.on("touchspin.stopspin",function(){c()});o.on("touchspin.updatesettings",function(n,t){et(t)})}function bt(n){switch(e.forcestepdivisibility){case"round":return(Math.round(n/e.step)*e.step).toFixed(e.decimals);case"floor":return(Math.floor(n/e.step)*e.step).toFixed(e.decimals);case"ceil":return(Math.ceil(n/e.step)*e.step).toFixed(e.decimals);default:return n}}function w(){var i,n,t;(i=o.val(),i!=="")&&(e.decimals>0&&i==="."||(n=parseFloat(i),isNaN(n)&&(n=0),t=n,n.toString()!==i&&(t=n),n<e.min&&(t=e.min),n>e.max&&(t=e.max),t=bt(t),Number(i).toString()!==t.toString()&&(o.val(t),o.trigger("change"))))}function it(){if(e.booster){var n=Math.pow(2,Math.floor(v/e.boostat))*e.step;return e.maxboostedstep&&n>e.maxboostedstep&&(n=e.maxboostedstep,s=Math.round(s/n*n)),Math.max(e.step,n)}return e.step}function y(){w();s=parseFloat(h.input.val());isNaN(s)&&(s=0);var n=s,t=it();s=s+t;s>e.max&&(s=e.max,o.trigger("touchspin.on.max"),c());h.input.val(Number(s).toFixed(e.decimals));n!==s&&o.trigger("change")}function p(){w();s=parseFloat(h.input.val());isNaN(s)&&(s=0);var n=s,t=it();s=s-t;s<e.min&&(s=e.min,o.trigger("touchspin.on.min"),c());h.input.val(s.toFixed(e.decimals));n!==s&&o.trigger("change")}function b(){c();v=0;l="down";o.trigger("touchspin.on.startspin");o.trigger("touchspin.on.startdownspin");nt=setTimeout(function(){d=setInterval(function(){v++;p()},e.stepinterval)},e.stepintervaldelay)}function k(){c();v=0;l="up";o.trigger("touchspin.on.startspin");o.trigger("touchspin.on.startupspin");tt=setTimeout(function(){g=setInterval(function(){v++;y()},e.stepinterval)},e.stepintervaldelay)}function c(){clearTimeout(nt);clearTimeout(tt);clearInterval(d);clearInterval(g);switch(l){case"up":o.trigger("touchspin.on.stopupspin");o.trigger("touchspin.on.stopspin");break;case"down":o.trigger("touchspin.on.stopdownspin");o.trigger("touchspin.on.stopspin")}v=0;l=!1}var e,o=n(this),rt=o.data(),a,h,s,d,g,nt,tt,v=0,l=!1;ut()})}})(jQuery)