;(function($){ // secure $ jQuery alias

$.fn.dragscrollable = function( options ){
   
	var settings = $.extend(
		{   
			dragSelector:'>:first',
			acceptPropagatedEvent: true,
            preventDefault: true
		},options || {});
	 
	
	var dragscroll= {
		mouseDownHandler : function(event) {
			// mousedown, left click, check propagation
			if (event.which!=1 ||
				(!event.data.acceptPropagatedEvent && event.target != this)){ 
				return false; 
			}
			
			// Initial coordinates will be the last when dragging
			event.data.lastCoord = {left: event.clientX, top: event.clientY}; 
		
			$.event.add( document, "mouseup", 
						 dragscroll.mouseUpHandler, event.data );
			$.event.add( document, "mousemove", 
						 dragscroll.mouseMoveHandler, event.data );
			if (event.data.preventDefault) {
                event.preventDefault();
                return false;
            }
		},
		mouseMoveHandler : function(event) { // User is dragging
			// How much did the mouse move?
			var delta = {left: (event.clientX - event.data.lastCoord.left),
						 top: (event.clientY - event.data.lastCoord.top)};
			
			// Set the scroll position relative to what ever the scroll is now
			event.data.scrollable.scrollLeft(
							event.data.scrollable.scrollLeft() - delta.left);
			event.data.scrollable.scrollTop(
							event.data.scrollable.scrollTop() - delta.top);
			
			// Save where the cursor is
			event.data.lastCoord={left: event.clientX, top: event.clientY}
			if (event.data.preventDefault) {
                event.preventDefault();
                return false;
            }

		},
		mouseUpHandler : function(event) { // Stop scrolling
			$.event.remove( document, "mousemove", dragscroll.mouseMoveHandler);
			$.event.remove( document, "mouseup", dragscroll.mouseUpHandler);
			if (event.data.preventDefault) {
                event.preventDefault();
                return false;
            }
		}
	}
	
	// set up the initial events
	this.each(function() {
		// closure object data for each scrollable element
		var data = {scrollable : $(this),
					acceptPropagatedEvent : settings.acceptPropagatedEvent,
                    preventDefault : settings.preventDefault }
		// Set mouse initiating event on the desired descendant
		$(this).find(settings.dragSelector).
						bind('mousedown', data, dragscroll.mouseDownHandler);
	});
}; //end plugin dragscrollable

})( jQuery ); // confine scope


(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
        setup: function() {
                if ( this.addEventListener )
                        for ( var i=types.length; i; )
                                this.addEventListener( types[--i], handler, false );
                else
                        this.onmousewheel = handler;
        },
        
        teardown: function() {
                if ( this.removeEventListener )
                        for ( var i=types.length; i; )
                                this.removeEventListener( types[--i], handler, false );
                else
                        this.onmousewheel = null;
        }
};

$.fn.extend({
        mousewheel: function(fn) {
                return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
        },
        
        unmousewheel: function(fn) {
                return this.unbind("mousewheel", fn);
        }
});


function handler(event) {
        var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
        
        event = $.event.fix(event || window.event);
        event.type = "mousewheel";
        
        if ( event.wheelDelta ) delta = event.wheelDelta/120;
        if ( event.detail     ) delta = -event.detail/3;
        
        // Add events and delta to the front of the arguments
        args.unshift(event, delta);

        return $.event.handle.apply(this, args);
}

})(jQuery);



$(document).ready(function(){

if($("div.maincontent div.innercontent").height() >= 512) {

  $('div.maincontent').addClass("nooverflow");
  $('div.maincontent').dragscrollable({preventDefault: false});
  $('#scrollcol').show();

  $('div.maincontent').bind('mousewheel', function(event, delta) {
    var dir = delta > 0 ? 'Up' : 'Down',
        vel = Math.abs(delta);
    var top = $("div.maincontent").scrollTop() - 50 * delta;
    $("div.maincontent").scrollTop(top);
    return false;
  });


  $('#upbut').click( function() { 
    var top = $("div.maincontent").scrollTop() - 350;
    $("div.maincontent").animate({scrollTop: top}, 200);
  });

  $('#downbut').click( function() { 
    var top = $("div.maincontent").scrollTop() + 350;
    $("div.maincontent").animate({scrollTop: top}, 200);
  });

}

});

