/*
 * Copyright (c) 2008 Maximilian Antoni. All rights reserved.
 */
window.image = {

change: function(link) {
	image.loader = new Image();
	image.loader.src = link.href;
	var bildunterschrift = document.getElementById("bildunterschrift");
	while(bildunterschrift.hasChildNodes()) {
		bildunterschrift.removeChild(bildunterschrift.lastChild);
	}
	bildunterschrift.appendChild(document.createTextNode(link.firstChild.title));
	image.opacity = 1.0;
	image.animateHide();
	return false;
},

animateHide: function() {
	image.opacity -= 0.1;
	image.applyOpacity();
	if(image.opacity > 0) {
		setTimeout("image.animateHide()", 40);
	}
	else {
		setTimeout("image.waitLoad()", 1);
	}
},

waitLoad: function() {
	if(image.loader.complete) {
		document.getElementById("bild").src = image.loader.src;
		image.loader = null;
		setTimeout("image.animateShow()", 1);
	}
	else {
		setTimeout("image.waitLoad()", 40);
	}
},

animateShow: function() {
	image.opacity += 0.1;
	image.applyOpacity();
	if(image.opacity < 1) {
		setTimeout("image.animateShow()", 40);
	}
	else {
		image.opacity = 1;
		image.applyOpacity();
	}
},

applyOpacity: function() {
	var node = document.getElementById("bild");
	node.style.filter = "alpha(opacity=" + (image.opacity * 100) + ")";
	node.style.opacity = String(image.opacity);
},

initMosaik: function() {
	var node = document.getElementById("mosaik");
	var nodes = image.childElements(node);
	var x = Math.ceil(nodes.length / 9) * 225;
	node.style.width = x + "px";
	document.getElementById("scroll-left").style.visibility = "hidden";
	if(x - 225 <= 0) {
		document.getElementById("scroll-right").style.visibility = "hidden";
	}
	if(nodes.length <= 9) {
		return;
	}
	var count = Math.floor(nodes.length / 9);
	var m = nodes.length % 9;
	while(m < 3) {
		var p = count * 3 + m;
		var n = image.insertBlank(node, nodes[p]);
		nodes.splice(p, 0, n);
		m++;
	}
	while(m < 6) {
		var p = count * 6 + m;
		var n = image.insertBlank(node, nodes[p]);
		nodes.splice(p, 0, n);
		m++;
	}
},

childElements: function(node) {
	var nodes = [];
	var childNodes = node.childNodes;
	for(var i = 0; i < childNodes.length; i++) {
		if(childNodes[i].nodeType == 1) {
			nodes.push(childNodes[i]);
		}
	}
	return nodes;
},

insertBlank: function(parent, before) {
	var li = document.createElement("li");
	li.appendChild(document.createTextNode(" "));
	parent.insertBefore(li, before);
	return li;
},

scrollRight: function() {
	var node = document.getElementById("mosaik-scrolling");
	image.scroll = node.scrollLeft;
	image.scrollTo = image.scroll + 225;
	if(image.scroll == 0) {
		document.getElementById("scroll-left").style.visibility = "visible";
	}
	if(image.scrollTo >= node.scrollWidth - 225) {
		document.getElementById("scroll-right").style.visibility = "hidden";
	}
	image.animateScroll();
	return false;
},

scrollLeft: function() {
	var node = document.getElementById("mosaik-scrolling");
	image.scroll = node.scrollLeft;
	image.scrollTo = image.scroll - 225;
	if(image.scroll >= node.scrollWidth - 225) {
		document.getElementById("scroll-right").style.visibility = "visible";
	}
	if(image.scrollTo == 0) {
		document.getElementById("scroll-left").style.visibility = "hidden";
	}
	image.animateScroll();
	return false;
},

animateScroll: function() {
	var x = (image.scrollTo - image.scroll) / 2;
	if(x > 0 && x < 1) {
		x = 0;
		image.scroll = image.scrollTo;
	}
	else if(x < 0 && x > -1) {
		x = 0;
		image.scroll = image.scrollTo;
	}
	else {
		image.scroll += x;
	}
	var node = document.getElementById("mosaik-scrolling");
	node.scrollLeft = image.scroll;
	if(x != 0) {
		setTimeout("image.animateScroll()", 40);
	}
}

}
