// use a div with overflow hidden and an inner div containing text that is the full height of the text?

// get the height of the content

var footer_content_height = null;
var container_content_height = null;
var auto_scroll_enabled = true;

var div_main_content = null;
var div_main_content_outer = null;
var div_scroll_marker = null;

var scroll_area_height = null;
var scroll_bar_width = 10;
var scroll_interval = 270;
var scroll_amount = 10;
var initial_start_scroll_delay = 3000;

var use_scroll_bar = false;

function init_auto_scroll() {
	div_main_content = document.getElementById("div_scroll_content");
	footer_content_height = div_main_content.clientHeight;

	div_main_content_outer = document.getElementById("div_scroll_content_outer");

	if (ie)
		div_main_content_outer.style.height = "409px";

	container_content_height = parseInt(div_main_content_outer.style.height);

	// show scroll bar if there is enough content to do so
	if (footer_content_height > container_content_height) {
		document.getElementById("scroll_bar_container").style.display = "inline";
		use_scroll_bar = true;
	}


	div_scroll_marker = document.getElementById("div_scroll_marker");

	//scroll_area_height = div_scroll_marker.parentNode.clientWidth;
	if (!scroll_area_height)
		scroll_area_height = 399;

	// use "snap" parameter to keep scroll marker in appropriate boundaries
	new Draggable("div_scroll_marker", { constraint: 'vertical', onDrag: function() { observe_drag(); }, snap: function (x, y, draggable_obj) { if (y < 0) return [x, 0]; else if (y > scroll_area_height) return [x, scroll_area_height]; else return [x, y]; }});

	//setTimeout("scroll_content();", initial_start_scroll_delay);
}

function observe_drag() {
	//auto_scroll_enabled = false;

	// scroll text to appropriate position
	var percent_distance_to_scroll = parseInt(div_scroll_marker.style.top) / scroll_area_height;
	div_main_content.style.top = (percent_distance_to_scroll * (container_content_height - footer_content_height )) + "px";
}

var drag_enabled = false;
function start_text_scroll() {
	drag_enabled = true;
}

// TODO: SET THESE TO BETTER VALUES
var min_y_scroll = 320;
var max_y_scroll = 660;
function scroll_text(e) {

	if (drag_enabled) {
		if (ie) { // grab the x-y pos.s if browser is IE
			tempX = event.clientX + document.body.scrollLeft;
			tempY = event.clientY + document.body.scrollTop;
		}
		else {  // grab the x-y pos.s if browser is NS
			tempX = e.pageX;
			tempY = e.pageY;
		}  

		if (tempY >= max_y_scroll) {
			handle(-1);
		}
		else if (tempY <= min_y_scroll) {
			handle(1);
		}
	}
}

function stop_text_scroll() {
	drag_enabled = false;
}

/*
function scroll_content() {
	if (!auto_scroll_enabled)
		return false;

	var div_main_content_top = parseInt(div_main_content.style.top);

	if (div_main_content_top + footer_content_height > container_content_height) {
		div_main_content.style.top = (div_main_content_top - scroll_amount) + "px";

		div_main_content_top = parseInt(div_main_content.style.top);

		// don't scroll beyond bottom of content
		if (div_main_content_top + footer_content_height < container_content_height)
			div_main_content.style.top = (0 - footer_content_height + container_content_height) + "px";


		// position scroll marker 
		div_main_content_top = parseInt(div_main_content.style.top);

		// get percent distance scrolled
		// 0% = when div_main_content_top == 0
		// 100% = when div_main_content_top == (0 - footer_content_height + container_content_height)
		var distance_scrolled = div_main_content_top;
		var total_distance_to_scroll = container_content_height - footer_content_height;

		var percent_distance_scrolled = distance_scrolled / total_distance_to_scroll;

		div_scroll_marker.style.left = (scroll_area_width * percent_distance_scrolled) + "px";
	}
	else
		auto_scroll_enabled = false;

	if (auto_scroll_enabled)
		setTimeout("scroll_content();", scroll_interval);
}
*/

// source: http://adomas.org/javascript-mouse-wheel/
/** This is high-level function; REPLACE IT WITH YOUR CODE.
 * It must react to delta being more/less than zero.
 */
function handle(delta) {
	// return if content doesn't require a scroll bar
	if (!use_scroll_bar)
		return false;

	//if (delta < 0)
		/* something. */;
	//else
		/* something. */;

	var div_main_content_top = parseInt(div_main_content.style.top);

	div_main_content.style.top = (div_main_content_top + (delta * scroll_amount)) + "px";


	div_main_content_top = parseInt(div_main_content.style.top);

	//document.getElementById("debug").innerHTML = div_main_content_top + "|" + footer_content_height + "|" +container_content_height;

	// don't scroll beyond bottom of content
	// delta: -1 = down, 1 = up
	if (delta < 0)
		if (div_main_content_top + footer_content_height < container_content_height)
			div_main_content.style.top = (0 - footer_content_height + container_content_height) + "px";

	// don't scroll beyond top of content
	//if (div_main_content_top > 0 && footer_content_height > div_main_content.clientHeight)
	if (div_main_content_top > 0)
		div_main_content.style.top = "0px";


	// position scroll marker 
	div_main_content_top = parseInt(div_main_content.style.top);

	// get percent distance scrolled
	// 0% = when div_main_content_top == 0
	// 100% = when div_main_content_top == (0 - footer_content_height + container_content_height)
	var distance_scrolled = div_main_content_top;
	var total_distance_to_scroll = container_content_height - footer_content_height;

	var percent_distance_scrolled = distance_scrolled / total_distance_to_scroll;

	div_scroll_marker.style.top = (scroll_area_height * percent_distance_scrolled) + "px";
}

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;
}

/* Initialization code. */
if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;

