// ---------------------------------------------------------------------------------------	
// scripte fuer www.umbruch.tv
// author michael schulze, www.ju-mi.com, 2009
// ---------------------------------------------------------------------------------------	

//---------------------------------------------------------------------------------------	
//Bilder tauschen, sperren
	function swapImage(where, to) { 
		if (eval('document.getElementById("'+ where + '")')) { eval('document.getElementById("' + where +'").src=' + to + '.src'); }
	}
	
		
//---------------------------------------------------------------------------------------	
// Ebenenfunktionen
	// Layer zeigen - verbergen
	function showLayer(layerName) {
		if (eval('document.getElementById("'+ layerName + '")')) {eval('document.getElementById("'+layerName+'").style.visibility="visible"');}
	}
	function hideLayer(layerName) {
		if (eval('document.getElementById("'+ layerName + '")')) {eval('document.getElementById("'+layerName+'").style.visibility="hidden"');}
	}
	function dispLayer(layerName) {
		if (eval('document.getElementById("'+ layerName + '")')) {eval('document.getElementById("'+layerName+'").style.display="block"');}
	}
	function nodispLayer(layerName) {
		if (eval('document.getElementById("'+ layerName + '")')) {eval('document.getElementById("'+layerName+'").style.display="none"');}
	}
	
	//alle Layer einer Gruppe verbergen
	function hideAll(bereich,anzahl) {
		for(count=1; count <= anzahl; count++){
			eval('nodispLayer("' + bereich + count + '");');
		}	
	}
	
	function showAll(bereich,anzahl) {
		for(count=1; count <= anzahl; count++){
			eval('dispLayer("' + bereich + count + '");');
		}	
	}
	
	// Style setzen
	function setStyle(layerName,stil,wert) {
		if (eval('document.getElementById("'+ layerName + '")')) {eval('document.getElementById("'+layerName+'").style.' + stil + '="' + wert + '"');}
	}
	
	
// Fade-In / Fade-Out
	function opacity(id, opacStart, opacEnd, millisec) {
	    // speed for each frame
	    var speed = Math.round(millisec / 100);
	    var timer = 0;
	
	    //determine the direction for the blending, if start and end are the same nothing happens
	    if(opacStart > opacEnd) {
	        for(i = opacStart; i >= opacEnd; i--) {
	            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
	            timer++;
	        }
	    } else if(opacStart < opacEnd) {
	        for(i = opacStart; i <= opacEnd; i++)
	            {
	            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
	            timer++;
	        }
	    }
	}
	
	//change the opacity for different browsers
	function changeOpac(opacity, id) {
	    var object = document.getElementById(id).style;
	    object.opacity = (opacity / 100);
	    object.MozOpacity = (opacity / 100);
	    object.KhtmlOpacity = (opacity / 100);
	    object.filter = "alpha(opacity=" + opacity + ")";
	} 
	
	
//---------------------------------------------------------------------------------------	
// Schutzfunktionen
	// E-Mail-Adresse sichern
	var domains = new Array();
	domains[0] = 'umbruch.tv';
	
	function writeMail(dom,pre,klasse){
		document.write("<a ");
		if (klasse!='') document.write("class='" + klasse + "' ");
		document.write("href='mailto:" + pre + "@" + domains[dom] + "'>" + pre + "@" + domains[dom] + "</a>");
	}
	
	
//---------------------------------------------------------------------------------------	
// Seitenspezifische Funktionen
	
	// Zoomfunktion ---------------------------------------------------------------------
	
	// init
		var bildzahl = 5;     // Anzahl der Bilder auf der Seite
		var endReached = 0;   // Abbruch des Zooms wenn alle Endstadien erreicht
		var nachAktuell = 1;  // aktuelles Bild, das vergrößert wird
		var zoomstop = 0;	  // Abbruch der Time-Schleife (bei Änderung Zoomfelder)
		var sizeSmallX = 208; // Breite Bild klein
		var sizeSmallY = 117; // Höhe Bild klein
		var sizeBigX = 512;	  // Breite Bild groß
		var sizeBigY = 288;   // Höhe Bild groß

		// Größenprotokoll
		fieldSizesX = new Array();
		fieldSizesY = new Array();
		fieldSizesX[0] = sizeBigX;
		fieldSizesY[0] = sizeBigY;
		
		// Step-Protokoll
		stepX = new Array();
		stepY = new Array();
		
		// Laufrichtung
		direction = new Array('v');
		for (x = 1; x < bildzahl; x++){
			fieldSizesX[x]=sizeSmallX;
			fieldSizesY[x]=sizeSmallY;
			direction[x]='0';
		}
		
		
	// Funktion
		function startZoom(nach,start){
			
			// Sperre wenn: 
			// 1. Erneuter Aufruf des selben Frames wenn bereits gestartet
			// 2. Zoom-Abbruch, wenn Felder geändert
			// 3. Lock bei spielendem Film
			if (((nach == nachAktuell) && (start != 0) && (start != 9)) || ((zoomstop == 1) && (start == 0)) || ((isplaying ==1) && (start == 1))){}
			
			else if (start==9){
				zoomstop = 0;
				setTimeout("startZoom(" + nach + ",0)",20);
			}
			
			else {
				
				// init --------------------------------------
				if (start!=0){
					zoomstop = 1;
					endReached = 0;
					nachAktuell = nach;
					for (x = 1; x <= bildzahl; x++){
						if (x != nach){
							if ((fieldSizesX[(x-1)]!=sizeSmallX) || (fieldSizesY[(x-1)]!=sizeSmallY)){
								direction[(x-1)]='v';
								eval('opacity("text' + nachAktuell + '", 100, 0, 1);');
								eval('opacity("stills' + nachAktuell + '", 100, 0, 1);');
								nodispLayer('text' + x);
								nodispLayer('stills' + x);
								nodispLayer('video' + x);
							}
							else { 
								direction[(x-1)]='0'; 
								endReached = endReached + 2;
							}
						}
						else { direction[(x-1)]='n'; }
					}
					isplaying = 0;
					unfade();
					setTimeout("startZoom(" + nach + ",9)",20);
				}
				
				else {
					
					// Groessen neu berechnen ----------------------
					
					// dynamische Schritte berechnen
						stepXganz = 0;
						stepYganz = 0;
						
						for (x=0; x<bildzahl; x++){
							if (direction[x]=='v'){
								stepX[x] = Math.ceil((fieldSizesX[x] - sizeSmallX) / 8);
								stepY[x] = Math.ceil((fieldSizesY[x] - sizeSmallY) / 8);
								stepXganz = stepXganz + stepX[x];
								stepYganz = stepYganz + stepY[x];
							}
						}
												
					// Bewegung
					for (x=0; x<bildzahl; x++){
					
						if (direction[x]=='n'){
							// vergroessern
							// -> Breite
								if (fieldSizesX[x] != sizeBigX){
									if (fieldSizesX[x] < (sizeBigX - stepXganz)){ fieldSizesX[x] = fieldSizesX[x] + stepXganz; }
									else 										{ fieldSizesX[x] = sizeBigX; endReached++; }
									setStyle('bild' + (x+1),'width',fieldSizesX[x] + 'px');
									setStyle('zbild' + (x+1),'width',fieldSizesX[x] + 'px');
								}
								
							// -> Hoehe
								if (fieldSizesY[x] != sizeBigY){
									if (fieldSizesY[x] < (sizeBigY - stepYganz)){ fieldSizesY[x] = fieldSizesY[x] + stepYganz; }
									else 										{ fieldSizesY[x] = sizeBigY; endReached++; }
									setStyle('bild' + (x+1),'height',fieldSizesY[x] + 'px');
									setStyle('zbild' + (x+1),'height',fieldSizesY[x] + 'px');
								}
						}	
						
						else if	(direction[x]=='v'){		
								
							// verkleinern
							// -> Breite
								if (fieldSizesX[x] != sizeSmallX){
									if (fieldSizesX[x] > (sizeSmallX + stepX[x]))	{ fieldSizesX[x] = fieldSizesX[x] - stepX[x]; }
									else 											{ fieldSizesX[x] = sizeSmallX; endReached++; }
									setStyle('bild' + (x+1),'width',fieldSizesX[x] + 'px');
									setStyle('zbild' + (x+1),'width',fieldSizesX[x] + 'px');
								}
								
							// -> Hoehe
								if (fieldSizesY[x] != sizeSmallY){
									if (fieldSizesY[x] > (sizeSmallY + stepY[x]))	{ fieldSizesY[x] = fieldSizesY[x] - stepY[x]; }
									else 											{ fieldSizesY[x] = sizeSmallY; endReached++; }
									setStyle('bild' + (x+1),'height',fieldSizesY[x] + 'px');
									setStyle('zbild' + (x+1),'height',fieldSizesY[x] + 'px');
								}
						}
					}
						
					
					// Abschluss --------------------------------
					if (endReached == (bildzahl * 2)){
						dispLayer('text' + nachAktuell);
						dispLayer('stills' + nachAktuell);
						eval('opacity("text' + nachAktuell + '", 0, 100, 500);');
						eval('opacity("stills' + nachAktuell + '", 0, 100, 500);');
						dispLayer('video' + nachAktuell);
					}
					
					// Schleife ----------------------------------
					else { setTimeout("startZoom(" + nach + ",0)",20); }
				}
			}
		}
			
		// Ausblenden bei Play ---------------------------------------------------------------------
		var isfaded = 0;
		var isplaying = 0;
		
		function fadePrev(notthis){
			if (isfaded != 1){
				for(x=1; x <= bildzahl; x++){
					// alle einblenden bis auf aktiven
					if (x!=notthis){
						if (eval('document.getElementById("fade' + x + '")')) {  eval('opacity("fade' + x + '", 0, 70, 500);'); }
					}
					// aktiven ausaschalten
					else { eval('opacity("fade' + x + '", 10, 0, 1);'); }
				}	
				isfaded = 1;
				isplaying = 1;
			}
		}
		
		function unfade() {
			if (isfaded == 1){
				// Fades ausblenden
				for (x=0; x <= bildzahl; x++){
					// alle ausblenden bis auf aktiven und neuen
					if (direction[x]=='0'){
						if (eval('document.getElementById("fade' + (x+1) + '")')) {  eval('opacity("fade' + (x+1) + '", 70, 0, 1000);'); }
					}
					// aktiven bzw. neuen ausschalten
					else { eval('opacity("fade' + (x+1) + '", 5, 0, 10);'); }
				}	
				isfaded = 0;
			}
		}	
		
		function movieStopped(){
			isplaying = 0;
		}
		
		function movieResumed(){
			isplaying = 1;
		}
		
		
		// Wechsel bei Stills ---------------------------------------------------------------------
		function swapStill(still,eintrag){
			fadePrev(eintrag);
			eval("swapBild = stillBelegung" + eintrag + "[" + still + "]");
			eval("swapImage('zbild" + eintrag + "','st" + eintrag + swapBild + "_g');");
			eval("stillBelegung" + eintrag + "[0]=" + swapBild);
		 	position = 1; // init Positions-Zaehler
			for (motiv=1; motiv<5; motiv++){
				if (swapBild != motiv){
					eval("swapImage('st" + eintrag + position + "','st" + eintrag + motiv + "_k');");
					eval("stillBelegung" + eintrag + "[" + position + "]=" + motiv);
					position++;
				}	
			}
		}
