	
	
//=============================================================================
// Image Preloader
function ImagePreloader(images)
{
	// initialize internal state.
	this.nLoaded	= 0;
	this.nProcessed = 0;
	this.aImages	= new Array;

	// record the number of images.
	this.nImages	= images.length;

	// for each image, call preload()
	for ( var i = 1; i < images.length; i++ ) 
	{
		this.preload(images[i]);
	}
}
ImagePreloader.prototype.preload = function(image)
{
	// create new Image object and add to array
	var oImage = new Image;
	this.aImages.push(oImage);
	
	// set up event handlers for the Image object
	oImage.onload			= ImagePreloader.prototype.onload;
	oImage.onerror			= ImagePreloader.prototype.onerror;
	oImage.onabort			= ImagePreloader.prototype.onabort;
	
	// assign pointer back to this.
	oImage.oImagePreloader	= this;
	oImage.bLoaded			= false;
	oImage.source			= image;
	
	// assign the .src property of the Image object
	oImage.src				= image.src;
	oImage.tdid				= image.tdid;
	oImage.big				= image.big;
	oImage.delay			= image.delay;
	oImage.descrp			= image.descrp;
}
ImagePreloader.prototype.onComplete = function()
{
	this.nProcessed++;
	this.bLoaded			= true;
	top.window.status		= this.nProcessed + " images loaded";
}
ImagePreloader.prototype.onload = function()
{
	this.bLoaded			= true;
	this.oImagePreloader.nLoaded++;
	this.oImagePreloader.onComplete();
	// Feature Delay
	var dly;
	if(this.source.delay)
		dly = this.source.delay;
	else
		dly = 100;	// Default delay = 100ms
		
	
	// The Div in whitch the Thumbnail will be displayed
	imgDiv					= document.createElement("div");
	imgDiv.style.position	= "relative";
	imgDiv.style.top		= "0px";														// Top Position of Thumbnail
	imgDiv.style.left		= "0px";														// Left Position of Thumbnail
	imgDiv.style.zIndex		= "99";
	
	// Add thumbnail to document
	newImage				= document.createElement("img");
	newImage.src			= this.source.src;
	newImage.style.cursor	= "pointer";
	newImage.tdid			= this.source.tdid;
	newImage.big			= this.source.big;
	newImage.delay			= this.source.delay;
	newImage.id				= this.source.tdid + "_icon";
	newImage.descrp			= this.source.descrp;
	
	newImage.onclick		= gl_ImageClicked;

	tdobj					= document.getElementById(this.source.tdid);
	tdobj.big				= this.source.big;
	tdobj.icon				= this.source.tdid + "_icon";
	imgDiv.appendChild(newImage);
	
	
	document.getElementById(this.source.tdid).appendChild(imgDiv);

	gl_fadeIn(this.source.tdid,0, dly);														// Fading of Thumbnail

}
ImagePreloader.prototype.onerror = function()
{
	this.bError				= true;
	this.oImagePreloader.onComplete();
	top.window.status= "Bild konnte nicht geladen werden!";
}
ImagePreloader.prototype.onabort = function()
{
	this.bAbort				= true;
	this.oImagePreloader.onComplete();
	top.window.status= "Abgebrochen";
}



// Methods
function gl_ImageClicked()
{
	itemid = this.id.split("_");
	fs					= document.getElementById("fullscreen");
	imgFs					= document.getElementById("fullscreenimage");
	icon					= document.getElementById(this.id);
	bck					= document.getElementById("back");
	fwd					= document.getElementById("forward");
	desc					= document.getElementById("fullscreenDescription");
	
	icon.style.visibility = "hidden";

	var tmp = new Date();
	var suffix = tmp.getTime();
	imgFs.src				= this.big + "?" + suffix;
	imgFs.icon				= this.id
	imgFs.onload			= gl_onLoad_Big;
	imgFs.onerror			= gl_onLoad_Big_error;
	
	//gl_fadeIn("fullscreenimage",0, 20);

	descTxt					= document.createTextNode(this.descrp);
	if(desc.childNodes[0])
		desc.removeChild(desc.childNodes[0]);	// To remove old Descriptions
	desc.appendChild(descTxt);
	
	bck.image				= this.id;
	fwd.image				= this.id;
	bck.direction			= "prev";
	fwd.direction			= "next";
	bck.style.cursor		= "pointer";
	fwd.style.cursor		= "pointer";
	bck.onclick				= gl_Page;
	fwd.onclick				= gl_Page;
}

function gl_onLoad_Big()
{
	fs			= document.getElementById("fullscreen");
	icon			= document.getElementById(this.icon);

	icon.style.visibility	= "visible";
	fs.style.visibility		= "visible";
}
function gl_onLoad_Big_error()
{
	icon			= document.getElementById(this.icon);
	icon.style.visibility	= "visible";
	alert("Dokument konnte nicht gefunden werden!")
}


function gl_HideFullscreen()
{
	fs				= document.getElementById("fullscreen");
	fs.style.visibility		= "hidden";
	for(i=1; i<pics.length; i++)
	{
		icon		      = document.getElementById(pics[i].tdid + "_icon");
		icon.style.visibility = "visible";
	}
}


function gl_Page()
{
	imgFs					= document.getElementById("fullscreenimage");
	bck					= document.getElementById("back");
	fws					= document.getElementById("forward");
	desc					= document.getElementById("fullscreenDescription");
	itemid = imgFs.icon.split("_");
	presentImgID = itemid[0].substring(3,5);
	picsAmmount = pics.length-1;	// -1 because we start at one
	var dirX;

	if(this.direction == "next")
		dirX = 1;
	else
		dirX = -1;
		
	newImageID = parseInt(presentImgID)+ parseInt(dirX)
	
	if(newImageID > picsAmmount)
	{
		newImageID = 1;
		top.window.status= "From beginning";
	}
	else if(newImageID < 1)
	{
		newImageID = picsAmmount;
		top.window.status= "From end";
	}
	imgFs.src				= pics[newImageID].big;
	imgFs.icon				= "tmb" + newImageID + "_icon";
	
	// Description
	descTxt					= document.createTextNode(pics[newImageID].descrp);
	if(desc.childNodes[0])
		desc.removeChild(desc.childNodes[0]);	// To remove old Descriptions
	desc.appendChild(descTxt);
	
}

// Helper
function gl_fadeIn(objId,opacity, delay) 
{

	if (document.getElementById) {
		obj = document.getElementById(objId);
		if (opacity <= 100) {
			gl_setOpacity(obj, opacity);
			opacity += 3;
			window.setTimeout("gl_fadeIn('"+objId+"',"+opacity+")", delay);
		}
	}
}
function gl_setOpacity(obj, opacity) 
{
	opacity					= (opacity == 100)?99.999:opacity;
	// IE/Win
	obj.style.filter		= "alpha(opacity:"+opacity+")";
	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity	= opacity/100;
	// Older Mozilla and Firefox
	obj.style.MozOpacity	= opacity/100;
	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity		= opacity/100;
}

function findPosX(obj)
{
	var curleft				= 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop				= 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
