(function(A){A.widget("ui.spinner",{_init:function(){this._trigger("init",null,this.ui(null));if(typeof this.options.items[0]=="object"&&!this.element.is("input")){var F=this.options.items;for(var D=0;D<F.length;D++){this._addItem(F[D])}}this._decimals=parseInt(this.options.decimals,10);if(this.options.stepping.toString().indexOf(".")!=-1){var E=this.options.stepping.toString();this._decimals=E.slice(E.indexOf(".")+1,E.length).length}var C=this;this.element.addClass("ui-spinner-box").attr("autocomplete","off");this._setValue(isNaN(this._getValue())?this.options.start:this._getValue());this.element.parent().find(".ui-spinner-up").unbind().bind("mousedown",function(G){A(this).addClass("ui-spinner-pressed");if(!C.counter){C.counter=1}C._mousedown(100,"_up",G)}).bind("mouseup",function(G){A(this).removeClass("ui-spinner-pressed");if(C.counter==1){C._up(G)}C._mouseup(G)}).bind("mouseout",function(G){A(this).removeClass("ui-spinner-pressed");if(C.timer){C._mouseup(G)}}).bind("dblclick",function(G){A(this).removeClass("ui-spinner-pressed")}).bind("keydown.spinner",function(H){var G=A.keyCode;if(H.keyCode==G.SPACE||H.keyCode==G.ENTER){A(this).addClass("ui-spinner-pressed");if(!C.counter){C.counter=1}C._up.call(C,H)}else{if(H.keyCode==G.DOWN||H.keyCode==G.RIGHT){C.element.siblings(".ui-spinner-down").focus()}else{if(H.keyCode==G.LEFT){C.element.focus()}}}}).bind("keyup.spinner",function(G){A(this).removeClass("ui-spinner-pressed");C.counter=0;C._propagate("change",G)}).css("font-size",YAHOO.env.ua.webkit>0?"9px":"6px").end().find(".ui-spinner-down").bind("mousedown",function(G){A(this).addClass("ui-spinner-pressed");if(!C.counter){C.counter=1}C._mousedown(100,"_down",G)}).bind("mouseup",function(G){A(this).removeClass("ui-spinner-pressed");if(C.counter==1){C._down()}C._mouseup(G)}).bind("mouseout",function(G){A(this).removeClass("ui-spinner-pressed");if(C.timer){C._mouseup(G)}}).bind("dblclick",function(G){A(this).removeClass("ui-spinner-pressed")}).bind("keydown.spinner",function(H){var G=A.keyCode;
if(H.keyCode==G.SPACE||H.keyCode==G.ENTER){A(this).addClass("ui-spinner-pressed");if(!C.counter){C.counter=1}C._down.call(C,H)}else{if(H.keyCode==G.UP||H.keyCode==G.LEFT){C.element.siblings(".ui-spinner-up").focus()}}}).bind("keyup.spinner",function(G){A(this).removeClass("ui-spinner-pressed");C.counter=0;C._propagate("change",G)}).css("font-size",YAHOO.env.ua.webkit>0?"9px":"6px").end();this._items=this.element.children().length;if(this._items>1){var B=this.element.outerHeight()/this._items;this.element.addClass("ui-spinner-list").height(B).children().addClass("ui-spinner-listitem").height(B).css("overflow","hidden").end().parent().height(B).end();this.options.stepping=1;this.options.min=0;this.options.max=this._items-1}this.element.bind("keydown.spinner",function(G){if(!C.counter){C.counter=1}return C._keydown.call(C,G)}).bind("keyup.spinner",function(G){C.counter=0;C._propagate("change",G)}).bind("blur.spinner",function(G){C._cleanUp()});if(A.fn.mousewheel){this.element.mousewheel(function(G,H){C._mousewheel(G,H)})}},_validate:function(B){if(this.options.min!=undefined&&B<this.options.min){return this.options.min}if(this.options.max!=undefined&&B>this.options.max){return this.options.max}return B},_constrain:function(){var B=this._getValue();B=this._validate(B);this._setValue(B)},_cleanUp:function(){this._setValue(this._getValue());this._constrain()},_spin:function(D,B){if(this.disabled){return }if(isNaN(this._getValue())){this._setValue(this.options.start)}var C=this._getValue()+(D=="up"?1:-1)*(this.options.incremental&&this.counter>100?(this.counter>200?100:10):1)*this.options.stepping;this._setValue(C);this._animate(D);this._constrain();if(this.counter){this.counter++}this._propagate("spin",B)},_down:function(B){this._spin("down",B);this._propagate("down",B)},_up:function(B){this._spin("up",B);this._propagate("up",B)},_mousedown:function(C,E,D){var B=this;C=C||100;if(this.timer){window.clearInterval(this.timer);this.timer=0}this.timer=window.setInterval(function(){B[E](D);
if(B.counter>20){B._mousedown(20,E,D)}},C)},_mouseup:function(B){this.counter=0;if(this.timer){window.clearInterval(this.timer);this.timer=0}this.element[0].focus();this._propagate("change",B)},_keydown:function(C){var B=A.keyCode;if(C.keyCode==B.UP){this._up(C)}if(C.keyCode==B.DOWN){this._down(C)}if(C.keyCode==B.HOME){this._setValue(this.options.min||this.options.start)}if(C.keyCode==B.END&&this.options.max!=undefined){this._setValue(this.options.max)}return(C.keyCode==B.TAB||C.keyCode==B.BACKSPACE||C.keyCode==B.LEFT||C.keyCode==B.RIGHT||C.keyCode==B.PERIOD||C.keyCode==B.NUMPAD_DECIMAL||C.keyCode==B.NUMPAD_SUBTRACT||(C.keyCode>=96&&C.keyCode<=105)||(/[0-9\-\.]/).test(String.fromCharCode(C.keyCode)))?true:false},_mousewheel:function(C,D){var B=this;D=(A.browser.opera?-D/Math.abs(D):D);(D>0?B._up(C):B._down(C));if(B.timeout){window.clearTimeout(B.timeout);B.timeout=0}B.timeout=window.setTimeout(function(){B._propagate("change",C)},400);C.preventDefault()},_getValue:function(){return parseFloat(this.element.val().replace(/[^0-9\-\.]/g,""))},_setValue:function(B){B=this._validate(B);if(isNaN(B)){B=this.options.start}this.element.val(this.options.currency?A.ui.spinner.format.currency(B,this.options.currency):A.ui.spinner.format.number(B,this._decimals));if(this.element[0].widgetobj){this.element[0].widgetobj.setValue(B,this.element.attr("pc"))}},_animate:function(B){if(this.element.hasClass("ui-spinner-list")&&((B=="up"&&this._getValue()<=this.options.max)||(B=="down"&&this._getValue()>=this.options.min))){this.element.animate({marginTop:"-"+this._getValue()*this.element.parent().height()},{duration:"fast",queue:false})}},_addItem:function(E,B){if(!this.element.is("input")){var F="div";if(this.element.is("ol")||this.element.is("ul")){F="li"}var C=E;if(typeof E=="object"){var D=(B!==undefined?B:this.options.format);C=D.replace(/%(\(([^)]+)\))?/g,(function(G){return function(I,H,J){if(!J){for(var K in G){return G[K]}}else{return G[J]}}})(E))}this.element.append("<"+F+' class="ui-spinner-dyn">'+C+"</"+F+">")
}},plugins:{},ui:function(B){return{options:this.options,element:this.element,value:this._getValue(),add:this._addItem}},_propagate:function(C,B){A.ui.plugin.call(this,C,[B,this.ui()]);return this.element.triggerHandler(C=="spin"?C:"spin"+C,[B,this.ui()],this.options[C])},destroy:function(){if(!A.data(this.element[0],"spinner")){return }if(A.fn.mousewheel){this.element.unmousewheel()}this.element.removeClass("ui-spinner-box ui-spinner-list").removeAttr("disabled").removeAttr("autocomplete").removeData("spinner").unbind(".spinner").siblings().remove().end().children().removeClass("ui-spinner-listitem").remove(".ui-spinner-dyn").end().parent().removeClass("ui-spinner ui-spinner-disabled").before(this.element.clone()).remove().end()},enable:function(){this.element.removeAttr("disabled").siblings().removeAttr("disabled").parent().removeClass("ui-spinner-disabled");this.disabled=false},disable:function(){this.element.attr("disabled",true).siblings().attr("disabled",true).parent().addClass("ui-spinner-disabled");this.disabled=true}});A.extend(A.ui.spinner,{defaults:{decimals:0,stepping:1,start:0,incremental:true,currency:false,format:"%",items:[]},format:{currency:function(C,B){C=isNaN(C)?0:C;return(C!==Math.abs(C)?"-":"")+B+this.number(Math.abs(C),2)},number:function(B,D){var C=/(\d+)(\d{3})/;for(B=isNaN(B)?0:parseFloat(B,10).toFixed(D);C.test(B);B=B.replace(C,"$1,$2")){}return B}}})})(jQuery);
