// info@bildwerkberlin.de | malte kreutzfeldt | 
// 2005, 2006 - rewritten 2007

// var 'aktuell' im mainscript setzen
// bildbreite und -hoehe müssen im img-tag definiert sein
// array bi mit original src der bilder
// array w und array h für dimensionen der bilder



function userAgent()
{ 	
	var ua = navigator.userAgent;
	this.isWinIE = this.isMacIE = false;
	this.isGecko  = ua.match(/Gecko\//);
	this.isSafari = ua.match(/AppleWebKit/);
	this.isOpera  = window.opera;
	if (document.all && !this.isGecko && !this.isSafari && !this.isOpera) {
		this.isWinIE = ua.match(/Win/);
		this.isMacIE = ua.match(/Mac/);
		this.isNewIE = (ua.match(/MSIE 5\.5/) || ua.match(/MSIE 6\.0/));
	}
	return this;
}

userAgent();
visibilityFlagIE = false;


if(window.addEventListener)
{
	window.addEventListener("load",bw_init,false)
	window.addEventListener("resize",resize,false);
	window.addEventListener("mouseup",checkScrollY,false);
	//window.addEventListener("mouseup",checkSelect,false);
	
}

if(window.attachEvent)
{	
	window.attachEvent("onload",bw_init);
	window.attachEvent("onresize",resize);
	window.attachEvent("onmouseup",checkScrollY);
	//window.attachEvent("onmouseup",checkSelect);
}


//------------------------------------------------------

var currentOpacity = 1, nextOpacity = 0, d = document;
var defaultTransTime = 20;
var step = .21; // Einzelschritte Überblendung

var glideDivBorderSize = 100;
var glideDivMaxSize    = 1000;

var fensterbreite = 650;
var fensterhoehe  = 400;
var links  = screen.width - 500;
var oben   = screen.height/2 - 280;

// falls click während laufender überblendung
var preventClick = false; 

// Abkürzungen
function E(ID) { return d.getElementById(ID); }
function T(TagName) { return d.getElementsByTagName(TagName); }

function bw_init()
{
	resize();
	
	// loading abschalten; ebenen anschalten
	// muss im Haupttext in init-array definiert sein
	
	hideLoadAnim();
	if(init)
	{
		for(i=0;i<=init.length;i++)
		{
			obj = init[i];
			if(E(obj))
			{ E(obj).style.visibility = "visible"; }
		}
	}
}

function openLink(addr) 
{
nFenster=window.open(addr,"mainwindow","width="+fensterbreite+",height="+fensterhoehe+",top=50,left=50,scrollbars=yes,toolbar=yes,resizable=yes");
nFenster.focus();
}


function checkScrollY()
{
	// noch anpassen für IE

	if(d.body.scrollLeft)
	{
	
	if(d.body.scrollLeft > 0)
	{ window.scrollTo(0,0); }

	}

}

function hideLoadAnim()
{
	if(E("loading"))
	{  E("loading").style.display="none"; }
}

function showLoadAnim()
{
	if(E("loading"))
	{  E("loading").style.display="block"; }
}

function showPreloadProgress()
{

}

function loadThumbs()
{

}



function showMovie(nr)
{

	if(isWinIE)
	{ 
var newHTML = "<object id=\"movie\" ";


newHTML += "classid=\"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b\" ";
newHTML += "width=\"360\" height=\"270\" ";
newHTML += "codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\">";
newHTML += "<param name=\"controller\" value=\"true\">";	
newHTML += "<param name=\"type\" value=\"video/quicktime\">";
newHTML += "<param name=\"autoplay\" value=\"false\">";
newHTML += "<param name=\"target\" value=\"myself\">";
newHTML += "<param name=\"src\" value=\""+mov[nr]+"\">";
newHTML += "<param name=\"pluginspage\" "; 
newHTML += "value=\"http://www.apple.com/quicktime/download/indext.html\">";
newHTML += "</object>";
		
	}

	
	else
	{
var newHTML = "<embed name=\"movie\" width=\"360\" height=\"270\" ";
newHTML += "controller=\"true\" enablejavascript=\"true\" src=\""+mov[nr]+"\" ";
newHTML += "type=\"video/quicktime\" target=\"myself\" bgcolor=\"#000000\" ";
newHTML += "border=\"0\" pluginspage=\"http://www.apple.com/quicktime/download/indext.html\">";
newHTML += "</embed>";

	}

	E("container").innerHTML = newHTML;

	// Abdeckung anzeigen oder einblenden:
	E('movdiv').style.display = "block";
	url = mov[nr];
	resize();
	//setTimeout(setUrl,100);
	
}

/*

function setUrl() 
{	

	alert(url);
	d.movie.SetURL(url);
}

*/

function hideMovie()
{
	d.movie.Stop();
	d.movie.SetURL("");
	E("container").innerHTML = "";
	E("movdiv").style.display = "none";
}


// folgende 2 funktionen speziell für bellwinkel.de


function fadeInAktuell(index)
{


	showLoadAnim();
	id = "img-akt-"+index;
	div= "aktuell-"+index;
	// Abdeckung anzeigen oder einblenden:
	E(div).style.display = "block";
	E(id).style.display = "none";
	E(id).src = ba[index];

	if(window.addEventListener)
	{ E(id).addEventListener("load",complete,false) }

	if(window.attachEvent)
	{ E(id).attachEvent("onload",complete); }

}

function complete()
{	
	hideLoadAnim();
	resizeImage(id);
	E(id).style.display = "block";
	
	if(window.removeEventListener)
	{ E(id).removeEventListener("load") }

	if(window.releaseEvent)
	{ E(id).releaseEvent("onload"); }
}

function fadeOutAktuell(index)
{
	id = "img-akt-"+index;
	div= "aktuell-"+index;
	E(div).style.display = "none";
	E(id).src="default.gif";
}

function resize()
{
	
	resizeGlideDivs();
	position();
}

	function resizeGlideDivs()
	{
		if(d.getElementById)
		{		
			var h,w;
				if (self.innerHeight) // all except Explorer
				{ w = self.innerWidth; h = self.innerHeight; }
			
				else if (d.documentElement && d.documentElement.clientHeight)
				{ 	
					w = d.documentElement.clientWidth;
					h = d.documentElement.clientHeight;
				}
					
				else if (document.body) // other Explorers
				{
					w = document.body.clientWidth;
					h = document.body.clientHeight;
				}
					

			if (w > glideDivMaxSize) w = glideDivMaxSize;
			
			countGlideLayer = 6; // Anzahl der Glide-Divs
			
			for(i=0;i<=countGlideLayer;i++)
			{	z = 0;
				y = w-glideDivBorderSize;
				
				if(glidemax[i] && glidemax[i] < y) y = glidemax[i]+70;
				if(y > w) { y = y/2; z = E(lyrID).style.height; }
				layrID = "glideDiv"+i;
				if (E(layrID))
				{	E(layrID).style.width = y+"px"; 
					if(z) E(layrID).style.height = z*2+"px";
				}
			}
			
		
			
			initGlideLyr();
			
			if(E("abblende"))
			{ 
				var shouldScroll = E("abblende").style.display; 
				
				if(shouldScroll != "none")
				 { initScrollLayer(); }
				
			}
				
			}
			
			
		}
	
	

		function resizeImage(imgID)
		{
			if(E(imgID))
			{
				randH = 120;
				randV = 100;
				
				var h,w;
				if (self.innerHeight) // all except Explorer
				{ w = self.innerWidth; h = self.innerHeight; }
			
				else if (d.documentElement && d.documentElement.clientHeight)
				{ 	
					w = d.documentElement.clientWidth;
					h = d.documentElement.clientHeight;
				}
					
				else if (document.body) // other Explorers
				{
					w = document.body.clientWidth;
					h = document.body.clientHeight;
				}
					
				
				
				eHoehe  = E(imgID).height;
				eBreite = E(imgID).width;
				
				if(eHoehe == 0)
				{
					eHoehe = E(imgID).style.height;
					eBreite= E(imgID).style.width;
				}
				
				
				if (!E(imgID).originalWidth)
				{
					E(imgID).originalWidth  = eBreite;
					E(imgID).originalHeight = eHoehe;
				}

	
				if (eBreite > eHoehe)
				{ 
					neueBreite = w-randH;
					neueHoehe  = Math.round(eHoehe/eBreite*neueBreite);
					
					if(neueHoehe > h-randV)				
					{
						neueHoehe  = h-randV;
						neueBreite = Math.round(eBreite/eHoehe*neueHoehe);
					}
				}
				else
				{						
					neueHoehe  = h-randV;
					neueBreite = Math.round(eBreite/eHoehe*neueHoehe);
	
					if(neueBreite > w-randH)
					{
						neueBreite = w-randH;
						neueHoehe  = Math.round(eHoehe/eBreite*neueBreite);
					}
				}
			
				// resize darf die Bilder nicht vergrößern (zu pixelig)
			
				oW = E(imgID).originalWidth;
				oH = E(imgID).originalHeight;
							
				if (neueBreite > oW || neueHoehe > oH)
				{
					neueBreite = oW;
					neueHoehe  = oH;
				}
				
				E(imgID).style.position = "absolute";
				E(imgID).style.left  = w/2-(neueBreite/2)+"px";
				E(imgID).style.top   = h/2-(neueHoehe/2)+"px";
				E(imgID).style.width = neueBreite+"px";
				E(imgID).style.height= neueHoehe+"px";	
			}
		}


function setAutoTrans()
{
	if(d.blend.auto.checked)
	{ 
		auto = setInterval('toNext()',7000);
		d.cookie = "autoTransition=TRUE";
		toNext(); }
	
	else
	{ 	
		clearInterval(auto); 
		d.cookie = "autoTransition=FALSE";
		
	}
}

function toNext(transitionMethod,trnstnTime)
{
	if (preventClick == true) return; 
	preventClick = true;
	
	d.blend.cut.checked ? transitionMethod = "fade" : transitionMethod = "cut";	
	aktuell == bi.length-1 ? next = 0 : next = aktuell + 1;
	E("abblende").style.display = "none";
	E("thumbs").style.display = "none";
	newHTMLforA = "&nbsp;&nbsp;("+(next+1)+"|"+(bi.length)+")&nbsp;&nbsp;";
	E("zaehler").innerHTML = newHTMLforA;
	
	
	trnstnTime ? transTime = trnstnTime : transTime = defaultTransTime;
	
	if(transitionMethod == "fade") fadeTo(next);
	if(transitionMethod == "dip")  dipTo(next);
	if(transitionMethod == "cut")  cutTo(next);
	
	preloadNeighbors();	
}

function toPrev(transitionMethod,trnstnTime)
{
	if (preventClick == true) return; 
	preventClick = true;

	d.blend.cut.checked ? transitionMethod = "fade" : transitionMethod = "cut";
	aktuell == 0 ? prev = bi.length-1 : prev = aktuell - 1;
	E("abblende").style.display = "none";
	E("thumbs").style.display = "none";
	newHTMLforA = "&nbsp;&nbsp;("+(prev+1)+"|"+(bi.length)+")&nbsp;&nbsp;";
	
	E("zaehler").innerHTML = newHTMLforA;
	
	trnstnTime ? transTime = trnstnTime : transTime = defaultTransTime;
	
	if(transitionMethod == "fade") fadeTo(prev);
	if(transitionMethod == "dip")  dipTo(prev);
	if(transitionMethod == "cut")  cutTo(prev);

	preloadNeighbors();
}

function dipTo(neuesBild,transitionTime)
{
	aktuelleId = "img-"+aktuell;
	naechsteId = "img-"+neuesBild;
	aktuell    = neuesBild;
	
	resizeActualImage();
	transitionTime ? transTime = transitionTime : transTime = defaultTransTime;
	dip();
}

	function dip()
	{
		a = E(aktuelleId);
		b = E(naechsteId);
		
		to = setTimeout(dip,transTime);
	
		currentOpacity -= step;
		
		setOpacity(a,currentOpacity);
		
		if(currentOpacity <= 0)
		{
			clearTimeout(to);
			to = false;
			currentOpacity = 1;
			a.style.display = "none";
		
			fadeIn(naechsteId);
			
			return;
		}

	}

function cutTo(neuesBild)
{
	aktuelleId = "img-"+aktuell;
	naechsteId = "img-"+neuesBild;
	aktuell    = neuesBild;
	
	resizeActualImage();
	
	setOpacity(E(naechsteId),1);
	E(naechsteId).style.display = "block";
	E(aktuelleId).style.display = "none";
	
	preventClick = false;
}

function fadeTo(neuesBild,transitionTime)
{
	aktuelleId = "img-"+aktuell;
	naechsteId = "img-"+neuesBild;
	aktuell    = neuesBild;
	
	resizeActualImage();
	transitionTime ? transTime = transitionTime : transTime = defaultTransTime;
	fadeOver();
}

		function fadeOver()
		{
			to = setTimeout(fadeOver,transTime);
	
			a = E(aktuelleId);
			b = E(naechsteId);
	
			currentOpacity-=step;
			nextOpacity+=step;
	
			b.style.display = "block";

			if (currentOpacity <= 0)
			{
				clearTimeout(to);
				to = false;
				currentOpacity = 1;
				nextOpacity = 0;
				// jetzt ein kleiner Trick, um am Schluss garantierte 1/0
				// zu bekommen, unabhängig vom in 'step' eingestellten Wert
				
				a.style.display = "none";
				
				setOpacity(b,currentOpacity); 
				setOpacity(a,nextOpacity);
				
				preventClick = false;		
				return;
			}
		
		setOpacity(a,currentOpacity);
		setOpacity(b,nextOpacity);

		}

function setOpacity(objID,opcty)
{
	objID.style.opacity = opcty;
	objID.style.MozOpacity = opcty;
	objID.style.filter = "alpha(opacity=" + (opcty*100) + ")";
}

function fadeIn(elementId,transitionTime) 
{
	obj= elementId;
	transitionTime ? transTime = transitionTime : transTime = defaultTransTime;
	doFadeIn();
}

		function doFadeIn()
		{
			to = setTimeout(doFadeIn,transTime);	
			
			a = E(obj);
			a.style.display = "block";
			nextOpacity += step;
			
			if (nextOpacity > 1)
			{
				clearTimeout(to);
				to = false;
				nextOpacity = 0;
				setOpacity(a,1);
				preventClick = false;
				return;
			}	
		
			setOpacity(a,nextOpacity);

		}


function fadeOut(elementId,transitionTime)
{
	obj = elementId;
	transitionTime ? transTime = transitionTime : transTime = defaultTransTime;
	doFadeOut();
}

		function doFadeOut()
		{
			to = setTimeout(doFadeOut,transTime);

			a = E(obj);
			currentOpacity -= step;
			
			if (currentOpacity <= 0)
			{
				clearTimeout(to);
				to = false;
				currentOpacity = 1;
				a.style.display = "none";
				preventClick = false;
				return;
			}	
		
			setOpacity(a,currentOpacity);
		
		}

function toggle(ebene) 
{
	if(d.getElementById) 
	{
		if(E(ebene).style.display == "block") 
		{  E(ebene).style.display =  "none"; }
	
		else { E(ebene).style.display = "block"; }
	}
}
		
function toggleFade(elementId,transitionTime)
{
	a = E(elementId);
	
	if(a.style.display == "none")
	{ fadeIn(elementId,transitionTime); }
	
	else
	{ fadeOut(elementId,transitionTime); }
}


function bildinfo(ebene)
{
	for (i=0;i<T("div").length; i++) 
	{
		if(T("div").item(i).className == "binfo")
		{ T("div").item(i).style.display = "none"; }
	}	
	toggle(ebene);
}


function position()
{
	// nach dem Muster class='center 0 0'

	var h,w;
				if (self.innerHeight) // all except Explorer
				{ w = self.innerWidth; h = self.innerHeight; }
			
				else if (d.documentElement && d.documentElement.clientHeight)
				{ 	
					w = d.documentElement.clientWidth;
					h = d.documentElement.clientHeight;
				}
					
				else if (document.body) // other Explorers
				{
					w = document.body.clientWidth;
					h = document.body.clientHeight;
				}
					


	for (i=0;i<T("div").length; i++) 
	{
		data=T("div").item(i).className.split(" ");
		klasse=data[0];
		horizontal_prozent=data[1];
		vertical_prozent=data[2];
		
		if (klasse == "center")
		{	
			var elB = T("div").item(i).offsetWidth;
			var elH = T("div").item(i).offsetHeight;
			pLinks=Math.round(((w/2)*(horizontal_prozent)/100));
			pTop  =Math.round(((h/2)*(vertical_prozent)/100));
			
			T("div").item(i).style.position="absolute";
			T("div").item(i).style.top=h/2-elH/2+pTop+"px";
			T("div").item(i).style.left=w/2-elB/2+pLinks+"px";
			
		}
	}
	
	if(d.images)
	{

	for (i=0;i<d.images.length; i++) 
	{
		var data=d.images.item(i).className.split(" ");
		var klasse=data[0];
		var horizontal_prozent=data[1];
		var vertical_prozent=data[2];
	
		if (klasse == "center")
		{
		
			var elB = d.images.item(i).width;
			var elH = d.images.item(i).height;
			var pLinks=Math.round(((w/2)*(horizontal_prozent)/100));
			var pTop  =Math.round(((h/2)*(vertical_prozent)/100));
			
			var id = d.images.item(i).id;
	
		
	
			E(id).style.position = "absolute";
		
		
			var eTop = Math.floor((h/2)-(elH/2)+pTop)+"px";
			var eLeft = Math.floor((w/2)-(elB/2)+pLinks)+"px";
			
			E(id).style.top = eTop;
			E(id).style.left = eLeft;
		
			d.images.item(i).style.visibility="visible";	
			
		
		}
	}
	
	}
}
