﻿// JavaScript Document

// --------------------------------------------- 
// Class: omoImageStacker 
// --------------------------------------------- 
// Description 
// --------------------------------------------- 
// Author: Moritz Zimmer 
// Version: 1.0 
// Last Changed: 10.01.2006 
// --------------------------------------------- 
// Version History 
// 1.0   Added "Loading..." layer feature 
// Further Steps 
// - None so far. 
// ---------------------------------------------

function omoImageStacker(stageID /* String */, stackID /* String */, navID /* String */, loadingID /* String */) {

	// private props
	
	var myStage = document.getElementById(stageID);
	var myStack = document.getElementById(stackID);
	var myNav = document.getElementById(navID);	
	var myLod = document.getElementById(loadingID);	

	// public props
	
	/* none so far */
	
	// construction
	
	removeAllButElements(myStage);
	removeAllButElements(myStack);
	myStack.style.display = "none";
	
	myLod.style.display = "none";	
	myLod.style.visibility = "hidden";
	myNav.style.display = "block";
	myNav.style.visibility = "visible";
	
	// public methods registry
	
	this.nextImage = nextImage;
	this.prevImage = prevImage;
	
	// description
	
	function nextImage() {
		
		if (myStack.hasChildNodes()) {
			
			if (myStage.hasChildNodes()) {
				
				myStack.appendChild(myStage.firstChild);
				
			}
			
			myStage.appendChild(myStack.firstChild);
			
		}
		
	}
	
	function prevImage() {
		
		if (myStack.hasChildNodes()) {
			
			if (myStage.hasChildNodes()) {
				
				myStack.insertBefore(myStage.firstChild, myStack.firstChild);
				
			}
			
			myStage.appendChild(myStack.lastChild);
			
		}
		
	}
	
	// private methods
	
	function removeAllButElements(parentElement) {
	
		var removeAfter = new Array();
	
		for (var i = 0 ; i < parentElement.childNodes.length; i++) {
			
			if (parentElement.childNodes[i].nodeType != 1 /* ELEMENT NODES */)  {
				removeAfter.push(parentElement.childNodes[i]); }
		
		}
		
		while(removeAfter.length > 0) {
			
			parentElement.removeChild(removeAfter.pop());
			
		}
		
	}

}

