/*
 * scrollpane 0.1 - jQuery plugin
 * Travis Beck / Gary Evans - Whole Wheat Creative
 */

(function($) {
	$.fn.scrollPane = function(options) {
		
	var defaults = {			
      scrollSpeed: 75
	};
		
	this.each(function() {
		
		var obj = $(this);
		var o = $.extend(defaults, options);
		var scrollObj = $(obj.children(':first-child'));
		var maxScroll = -(Math.ceil(scrollObj.height() - obj.height()));
      var scrollIntervalId = null;

		$('.link-bottom',obj).click(function(e){
		   e.preventDefault();
	   });	
	   $('.link-top',obj).click(function(e){
   		e.preventDefault();
   	});

		$('.link-bottom',obj).mousedown(function(){
		   if(!($(this).hasClass('disabled'))){
            scrollIntervalId = setInterval(function(){
               doScroll('up');
            }, o.scrollSpeed);
         }
		});

		$('.link-bottom',obj).mouseup(function(){
			clearInterval(scrollIntervalId);
		});
		
		$('.link-top',obj).mousedown(function(){
		   if(!($(this).hasClass('disabled'))){
            scrollIntervalId = setInterval(function(){
               doScroll('down');
            }, o.scrollSpeed);
         }
		});
		
		$('.link-top',obj).mouseup(function(){
			clearInterval(scrollIntervalId);
		});
		
		obj.mousewheel(function(evt, delta){
		   var dir = delta > 0 ? 'down' : 'up';
		   evt.preventDefault();
		   doScroll(dir);
		});

		
		function doScroll(dir){
		  	switch(dir){
				case 'up':
			      if(parseInt(scrollObj.css('top'))  > maxScroll){
					   scrollObj.animate({'top':'-=10'},0);
				   }else{
				      clearInterval(scrollIntervalId);
				      $('.link-bottom',obj).addClass('disabled');
				   }
				   $('.link-top',obj).removeClass('disabled');
					break; 
				case 'down':
   				if(parseInt(scrollObj.css('top'))  < 0){
   				   scrollObj.animate({'top':'+=10'},0);
   			   }else{
   			      clearInterval(scrollIntervalId);
   			      $('.link-top',obj).addClass('disabled');
   			   }
   			   $('.link-bottom',obj).removeClass('disabled');
					break;
				default:
					break;
			};					
		}; 
		
	});
};
})(jQuery);
