(function(a){a.widget("ui.iScroll",{options:{height:null},_init:function(){var b=this;if(!this.options.height){this.height=this.element.outerHeight()}else{this.height=this.options.height}this.element.addClass("iphoneui");this.element.wrap(a("<div />").addClass("iscrollui"));this.element.after('<div class="iscrollbar"><div></div></div>');this.container=this.element.parent(".iscrollui");this.container.css({height:this.height,overflow:"hidden"});this.element.css({height:"auto"});this.difference=this.element.height()-this.height;if(this.difference<=0){return}this.ratio=this.height/this.element.height();this.marginTop=0;this.oldY=0;this.newY=0;this.move=false;this.TO=null;this.scrollbar=this.container.find(".iscrollbar");this.scroller=this.container.find(".iscrollbar div");this.scrollbar.height(this.height);this.scroller.height(this.ratio*this.container.height());if(typeof a.fn.disableTextSelect=="function"){this.container.disableTextSelect()}if(typeof a.fn.mousewheel!="function"){console.error("Mousewheel jQuery plugin is required for iPhone.iScroll widget. More information on http://iphone.hohli.com");return}this.container.mousewheel(function(c,d){if(b.marginTop<=0&&(b.marginTop+b.difference>=0)){b.element.stop();if(d<0){b.marginTop-=60;b.element.animate({marginTop:b.marginTop},function(){if(b.difference+b.marginTop<0){b.marginTop=-b.difference;b.element.animate({marginTop:b.marginTop})}})}else{b.marginTop+=60;b.element.animate({marginTop:b.marginTop},function(){if(b.marginTop>0){b.marginTop=0;b.element.animate({marginTop:b.marginTop})}})}b._scroll()}c.stopPropagation();c.preventDefault()});this.container.mousedown(function(c){b.element.stop();b.oldY=c.pageY;b.move=true});a(document).mouseup(function(c){b.move=false;b.oldY=0;if(b.marginTop>0){b.marginTop=0;b.element.animate({marginTop:b.marginTop})}else{if(b.difference+b.marginTop<0){b.marginTop=-b.difference;b.element.animate({marginTop:b.marginTop})}}});a(document).mousemove(function(c){if(b.move&&b.oldY!=0){b.newY=c.pageY;b.marginTop=b.marginTop+b.newY-b.oldY;b.element.css({marginTop:b.marginTop});b.oldY=b.newY;b._scroll()}})},_scroll:function(){this._showScroll();this.scroller.stop(true,true);if(this.marginTop<=0&&(this.marginTop+this.difference>=0)){this.scroller.animate({marginTop:Math.abs(this.ratio*this.marginTop)},100)}else{if(this.marginTop>0){this.scroller.animate({marginTop:0},100)}else{if(this.marginTop+this.difference<=0){this.scroller.animate({marginTop:Math.abs(this.ratio*this.difference)},100)}}}},_showScroll:function(){var b=this;clearTimeout(this.TO);this.scrollbar.show();this.TO=setTimeout(function(){b._hideScroll()},1000)},_hideScroll:function(){this.scrollbar.hide()}})})(jQuery);
