var scrolling = false;
//We wrap all the code in an object so that it doesn't interfere with any other code
var scroller = {
  init:   function() {

	//collect the variables
	scroller.docH = document.getElementById("scrollcontent").offsetHeight;
	scroller.contH = document.getElementById("scrollport").offsetHeight;
	scroller.scrollAreaH = document.getElementById("scrollarea").offsetHeight;
	  
	//calculate height of scroller and resize the scroller div
	//(however, we make sure that it isn't to small for long pages)
	scroller.scrollH = (scroller.contH * scroller.scrollAreaH) / scroller.docH;
	if(scroller.scrollH < 15) scroller.scrollH = 15;
	document.getElementById("scroller").style.height = Math.round(scroller.scrollH) + "px";
	 
	//what is the effective scroll distance once the scoller's height has been taken into account
	scroller.scrollDist = Math.round(scroller.scrollAreaH-scroller.scrollH);
	
	//make the scroller div draggable
	// Drag.init(document.getElementById("scroller"),null,0,0,-1,scroller.scrollDist);
	
	//add ondrag function
//	document.getElementById("scroller").onDrag = function (x,y) {
//	  var scrollY = parseInt(document.getElementById("scroller").style.top);
//	  var docY = 0 - (scrollY * (scroller.docH - scroller.contH) / scroller.scrollDist);
//	  document.getElementById("scrollcontent").style.top = docY + "px";
//	};
  }
};

function scrollDown(amt) {
	if(parseInt($('#scroller').css('top')) >= (parseInt($('#scrollarea').height()) - parseInt($('#scroller').height()))) {
		$('#scroller').css('top',(parseInt($('#scrollarea').height()) - parseInt($('#scroller').height())));
		stopScrolling();
		return false;
	}
	$('#scroller').css('top', (parseInt($('#scroller').css('top')) + parseInt(amt)));
	var scrollY = parseInt($('#scroller').css('top'));
	var docY = 0 - (scrollY * (scroller.docH - scroller.contH) / scroller.scrollDist);
	$('#scrollcontent').css('top', docY + 'px');
	return true;
}
function scrollUp(amt) {
	if(parseInt($('#scroller').css('top')) <= 0) {
		$('#scroller').css('top',0);
		stopScrolling();
		return false;
	}
	$('#scroller').css('top', parseInt($('#scroller').css('top')) - amt);
	var scrollY = parseInt($('#scroller').css('top'));
	var docY = 0 - (scrollY * (scroller.docH - scroller.contH) / scroller.scrollDist);
	$('#scrollcontent').css('top', docY + 'px');
	return true;
}
function stopScrolling() {
	clearInterval(scrolling);
}

function handle(delta) {
	if(delta < 0) {
		scrollDown(3);
	} else {
		scrollUp(3);
	}
}

function wheel(event) {
    var delta = 0;
    
    if(!event)
		event = window.event;
    
    if(event.wheelDelta) {
    	delta = event.wheelDelta/120;
         
        if(window.opera)
        	delta = -delta;
    } else if(event.detail) {
      	delta = -event.detail/3;
    }
        
    if(delta)
       	handle(delta);
        
   	if(event.preventDefault) {
    	event.preventDefault();
    	event.returnValue = false;
    }
}


$(function() {
	if(document.getElementById('scrollcontent')) {
		if(parseInt($('#scrollcontent').height()) <= parseInt($('#scrollport').innerHeight())) {
			$('#scrollbar').hide();
			$(window).unbind();
		} else {
			if($('#scroller').css('top') == 'auto') {
				$('#scroller').css('top', 0);
			}
			$('#btnScrollUp').hover(function() {
				scrollUp(1);
				scrolling = setInterval(function() { scrollUp(1); },30);
			}, function() {
				stopScrolling();
			});
			$('#btnScrollDown').hover(function() {
				scrollDown(1);
				scrolling = setInterval(function() { scrollDown(1); },30);
			}, function() {
				stopScrolling();
			});
			if(window.addEventListener)
				window.addEventListener('DOMMouseScroll', wheel, false);
			window.onmousewheel = document.onmousewheel = wheel;
			scroller.init();
		}
	}
});
