(function($){$.fn.dragscroll=create;$.fn.removedragscroll=remove;$.fn.dragscroll.options={draggedClassName:'dragged',draggableSelector:null};var draggedKey='ds.dragged';var draggableKey='ds.draggable';function create(options){var settings=$.extend({},$.fn.dragscroll.options,options);return this.each(function(){var container=$(this);var draggable=settings.draggableSelector?container.find(settings.draggableSelector):container.children();draggable.bind('mousedown.ds',{container:container},onMouseDown);container.bind('mouseup.ds',onMouseUp).bind('mouseleave.ds',onMouseLeave).bind('scroll.ds',{left:this.scrollLeft,top:this.scrollTop},onScroll);if(settings.draggedClassName)container.bind('dragstart.ds',{className:settings.draggedClassName},onDragStart).bind('dragend.ds',{className:settings.draggedClassName},onDragEnd)})}function remove(){return this.each(function(){var x=$(this).find('*').andSelf().unbind('.ds')})}function onMouseDown(e){e.preventDefault();e.data.container.data(draggedKey,true).trigger('dragstart').bind('mousemove.ds',{prevX:e.screenX,prevY:e.screenY},onMouseMove)}function onMouseMove(e){e.preventDefault();var container=$(this);var xVector=e.data.prevX-e.screenX;var yVector=e.data.prevY-e.screenY;var newX=container.scrollLeft()+xVector;var newY=container.scrollTop()+yVector;container.scrollLeft(newX).scrollTop(newY);e.data.prevY=e.screenY;e.data.prevX=e.screenX}function onMouseLeave(e){$(this).trigger('mouseup.ds')}function onMouseUp(){var container=$(this);if(container.data(draggedKey)){container.unbind('mousemove.ds');container.data(draggedKey,false).trigger('dragend')}}function onScroll(e){var newLeft=this.scrollLeft;var newTop=this.scrollTop;var xVector=newLeft-e.data.left;var yVector=newTop-e.data.top;if(xVector)$(this).trigger('scrollx',xVector);if(yVector)$(this).trigger('scrolly',yVector);e.data.left=newLeft;e.data.top=newTop};function onDragStart(e){$(this).addClass(e.data.className)};function onDragEnd(e){$(this).removeClass(e.data.className)}})(jQuery);
