var selecteditem = Array();
var isFF = document.getElementById&&!document.all;

window.onload = function() {
	var str = "";
	var scrollcontrols = _("scrollcontrol");
	for(n in scrollcontrols) {
		var scrollcontrol = scrollcontrols[n];
		if(elementHasClass(scrollcontrol, "left")) {
			scrollcontrol.onmouseover = function() {
				initScroll(this.attributes.rel.value, -10);
			}
			scrollcontrol.onmouseout = function() {
				clearInterval(scrollTimer);
				scrollTimer = 0;
			}
		} else if(elementHasClass(scrollcontrol, "right")) {
			scrollcontrol.onmouseover = function() {
				initScroll(this.attributes.rel.value, 10);
			}
			scrollcontrol.onmouseout = function() {
				clearInterval(scrollTimer);
				scrollTimer = 0;
			}
		} else if(elementHasClass(scrollcontrol, "updown")) {
			//alert(getTop(scrollcontrol));
			scrollcontrol.vtop = getTop(scrollcontrol);
			scrollcontrol.vheight = parseInt($(scrollcontrol.attributes.rel.value).style.height);

			scrollcontrol.onmousemove = function(e) {
				if(!isFF) e = event;
				var scroll = (this.vheight/2 - ((mouseY(e) - this.vtop))) / (this.vheight/2) * -20;

				if(!scrollTimer) {
					initScroll(this.attributes.rel.value, scroll);
				} else {
					scrollAmount = scroll;
				}
			}
			scrollcontrol.onmouseout = function() {
				clearInterval(scrollTimer);
				scrollTimer = 0;
			}
		}
	}

	var scrollers = _('scrolldata_hider');
	for(var i=0; i<scrollers.length; i++) {
		var scroller = scrollers[i];
		var scrolldatas = getChildNodesWithClass(scroller, "scrolldata");
		if(scrolldatas.length != 1) {
			alert("Invalid number of scrolldata in " + scroller.id + ": " + scrolldatas.length);
			return;
		}
		var thumbs = getChildNodesWithClass(scrolldatas[0], "scrollthumb");
		for(var j=0; j<thumbs.length; j++) {
			if(elementHasClass(thumbs[j], "selected")) {
				selecteditem[scroller.id] = thumbs[j];
			}
		}
	}

	initScrollWheel($('scroll_cartoons'));
	initScrollWheel($('scroll_opdrachten'));
}

function initScrollWheel(clb) {
	if(!clb) return;

	if(isFF && window.addEventListener) {
		/** DOMMouseScroll is for mozilla. */
		clb.addEventListener('DOMMouseScroll', MouseWheel, false);
	} else {
		clb.onmousewheel = MouseWheel;
	}
}

function MouseWheel(event) {
	var delta = 0;
	if(!event)
		event = window.event;

	if(event.wheelDelta) { // IE/Opera
		delta = event.wheelDelta/-120;
	} else if(event.detail) { // Mozilla
		delta = event.detail/3;
	}

	if(event.preventDefault)
		event.preventDefault();
	event.returnValue = false;

	if(delta) {
		var scrollparent = findParentWithClass('scrolldata_hider', isFF?event.target:event.srcElement);
		scrollObjectVertically(scrollparent, delta * 56);
	}

	return false;
}

var scrollTarget;
var scrollAmount;
var scrollTimer;
var scrollStart;

function initScroll(targetId, amount) {
	scrollTarget = $(targetId);
	scrollAmount = amount;
	scrollStart = new Date();
	if(!scrollTarget) {
		alert("Scroll target not found: " + targetId);
		return;
	}
	
	scrollTimer = setInterval('scrollObjectVertically(scrollTarget, scrollAmount)', 50);
}

//function scrollTo(target) {
	//setScrollObjectVertically($('scroll_cartoons'), -target.offsetLeft);
//}

function setScrollObjectVertically(target, value) {
	for(n=0; n<target.childNodes.length; n++) {
		node = target.childNodes[n];
		if(elementHasClass(node, "scrolldata")) {
			ttop = value;
			if(ttop > 0) ttop = 0;
			if(ttop < -(node.offsetHeight - target.offsetHeight)) ttop = -(node.offsetHeight - target.offsetHeight);

			node.style.top = ttop + "px";
		}
	}
}

function scrollObjectVertically(target, amount) {
	for(n=0; n<target.childNodes.length; n++) {
		node = target.childNodes[n];
		if(elementHasClass(node, "scrolldata")) {
			ttop = node.style.top?parseInt(node.style.top):0;
			ttop -= amount;
			if(ttop > 0) ttop = 0;
			if(ttop < -(node.offsetHeight - target.offsetHeight)) ttop = -(node.offsetHeight - target.offsetHeight);

			node.style.top = ttop + "px";
		}
	}
}
