var maxSpeed = 10; // pixels per 20ms

function showreel(id) {
	var container = document.getElementById(id);
	if (!container) return;
	
	container.speed = 0;
	
	var html = document.getElementsByTagName('HTML')[0];
	
	var handler =
		function(e) {
			if (!e) e = event;
			
			var current = container;
			var left = html.clientLeft;
			
			while (current) {
				left += current.offsetLeft;
				current = current.offsetParent;
				
				if (current) {
					left -= current.scrollLeft;
				}
			}
			
			if (container.offsetWidth) {
				container.speed = Math.round((e.clientX - left) * maxSpeed * 2 / container.offsetWidth) - maxSpeed;
			}
		}
	
	container.onmouseover = handler;
	container.onmousemove = handler;
	container.onmouseout = function() { container.speed = 0; }
	
	var move =
		function() {
			var pos = Math.max(0, Math.min(container.scrollWidth - container.offsetWidth, container.scrollLeft + container.speed));
			
			if (pos != container.scrollLeft) {
				container.scrollLeft = pos;
			}
		}
	
	setInterval(move, 20);
}

function setOpacity(element, opacity) {
	element.style.opacity = opacity / 100;
	element.style.filter = (opacity < 100) ? 'alpha(opacity=' + opacity + ')' : '';
}

function rotate(columnCssClass) {
	var container = document.getElementById('showreel');
	var cc = null;
	var ic = null;
	
	for (var i = 0; i < container.childNodes.length; i++) {
		var node = container.childNodes[i];
		
		if (node.className) {
			if (node.className == columnCssClass) {
				cc = node;
			}
			
			if (node.className == 'other') {
				ic = node;
			}
		}
	}
	
	if (cc && !cc.next && ic && (ic.childNodes.length > 0)) {
		var i = Math.round(Math.random() * (ic.childNodes.length - 1));
		cc.opacity = -100;
		cc.next = ic.childNodes[i];
		ic.removeChild(ic.childNodes[i]);
		
		var handler =
			function() {
				cc.opacity += 5;
				setOpacity(cc.childNodes[0], Math.abs(cc.opacity));
				
				if (cc.opacity == 0) {
					setOpacity(cc.next, 0);
					ic.appendChild(cc.childNodes[0]);
					cc.appendChild(cc.next);
				}
				
				if (cc.opacity >= 100) {
					clearInterval(cc.timer);
					cc.timer = null;
					cc.next = null;
				}
			}
		
		handler();
		cc.timer = setInterval(handler, 25);
	}
}

function correctSpaces() {
	var header = document.getElementById('header-marker');
	var menu = document.getElementById('menu-marker');
	var footer = document.getElementById('footer-marker');
	
	var height = document.getElementsByTagName('HTML')[0].offsetHeight - 304;
	if (header) height -= header.offsetHeight;
	if (menu) height -= menu.offsetHeight;
	if (footer) height -= footer.offsetHeight;
	
	height = Math.floor(Math.max(0, height) / 4);
	
	for (var i = 1; i <= 4; i++) {
		var space = document.getElementById('space' + i);
		if (space) space.style.height = height + 'px';
	}
}

