//******************************************************************************************************
//				Image Fader V0.2 - k²bytes http://www.webdesigns-rosenheim.de
//
//   Dieses Javaskript darf frei verwendet werden. Verwendung in eigener Verantwortung.
//******************************************************************************************************

var GlobalImgFades = new Array();
var GlobalImgFadesCount = 0;

function CreateImgFadeObj(){
	this.ImgArray = new Array();  	//Array der Bilder
	this.LinkArray = new Array();   //Array der Links
	this.ImgElemName = "";
	this.ImgChangeTime = 4; //Sekunden
	this.DoImgPreloading = true; 
	this.ImgWidth = -1;
	this.ImgHeight = -1;
	
	var NewImg = null;				//Neues Bild private
	var NewLink = null; 			//Wenn Links eingeschalten sind
	var OldImg = null; 				//Zuvor angezeigtes Bild
	var OldLink = null; 			//Wenn Links...
	var CurImgArrPos = 1;			//Aktuelle Arrayposition der Bilder
	var TimerVal = 0;
	var CurOpacity = 0;
	var ImgDiv = null;
	
	//Für setTimeout globalen Verweis hinterlegen
	var GlobalIdx = GlobalImgFadesCount;
	GlobalImgFades[GlobalImgFadesCount] = this;
	GlobalImgFadesCount++;
	
	/**
	 * Hinzufügen von Bilder mit Alt-Attribut
	 */
	this.AddImage = function(imgPath, imgAlt){
		if(imgAlt == null){
			imgAlt = "";
		}
		this.ImgArray[this.ImgArray.length] = new Array(imgPath, imgAlt);
	}
	/**
	* Links mit Target-Attribute, default = _self (Target = _blank, _self, _parent, _top)
	* Wird ein Link hinzugefügt, gilt dieser für alle Bilder.
	*Werden weniger Links als Bilder hinzugefügt, wird der letzte Link für den Rest der Bilder verwendet.
	*
	*/
	this.AddLink = function(imgLink, linkTarget){
		if(linkTarget == "" || linkTarget == null){
			linkTarget = "_self";
		}
		this.LinkArray[this.LinkArray.length] = new Array(imgLink, linkTarget);
	}
	
	this.Start = function() {
		if (document.getElementById(this.ImgElemName)) {
			ImgDiv = document.getElementById(this.ImgElemName);
			if(this.LinkArray.length > 0){
				NewLink = ImgDiv.getElementsByTagName("a")[0];
				//ist die Länge des Link-Array kleiner der Länge des Image-Arrays, muss das Link-Array aufgefüllt werden
				if(this.LinkArray.length < this.ImgArray.length){
					for (var i=this.LinkArray.length-1; i<this.ImgArray.length; i++) {
						this.LinkArray[this.LinkArray.length] = new Array(this.LinkArray[i][0], this.LinkArray[i][1]);
					}
				}
			}
			
			NewImg = ImgDiv.getElementsByTagName("img")[0];
			
			if(this.DoImgPreloading){
				var tmpDoLoad;
				for (var j=0; j<this.ImgArray.length; j++) {
					tmpDoLoad = new Image();
					tmpDoLoad.src = this.ImgArray[j][0];
				}
			}
			setTimeout("GlobalImgFades[" + GlobalIdx + "].DoFade();", this.ImgChangeTime * 1000);
		}
	}
	
	this.DoFade = function() {
		if(this.ImgArray.length <= 0 || ImgDiv == null) {
			return;
		}
		OldImg = NewImg;   //Altes Bild übergeben
		OldLink = NewLink;
		NewImg = document.createElement("img");
		NewImg.src = this.ImgArray[CurImgArrPos][0];
		NewImg.alt = this.ImgArray[CurImgArrPos][1];
		NewImg.style.opacity = "0";
		NewImg.style.filter = "alpha(opacity=0)";
		
		//Wenn Breite und/oder Höhe vorgegeben sind, dann setzen
		if(this.ImgWidth > -1) {
			NewImg.width = this.ImgWidth;
			NewImg.style.width = this.ImgWidth;
		}
		if(this.ImgHeight > -1) {
			NewImg.height = this.ImgHeight;
			NewImg.style.height = this.ImgHeight;
		}
		
		if(this.LinkArray.length > 0){
			NewLink = document.createElement("a");
			NewLink.href = this.LinkArray[CurImgArrPos][0];
			NewLink.target = this.LinkArray[CurImgArrPos][1];
			NewLink.appendChild(NewImg);
			ImgDiv.appendChild(NewLink);
		}
		else{
			ImgDiv.appendChild(NewImg);
		}
		if (CurImgArrPos == (this.ImgArray.length-1)) {
			CurImgArrPos = 0;
		} else {
			CurImgArrPos++;
		}
		TimerVal = setInterval("GlobalImgFades[" + GlobalIdx + "].DoOpacity();", 20);	
	}
	
	this.DoOpacity = function() {
		if (CurOpacity >= 100) {
			clearTimeout(TimerVal);
			TimerVal = 0;
			CurOpacity = 0;
			
			//ImgDiv.removeChild(ImgDiv.getElementsByTagName("img")[0]);
			if(this.LinkArray.length > 0){
				if(OldLink != null){
					ImgDiv.removeChild(OldLink);
					OldLink = null;
				}
			}
			else{
				if(OldImg != null){
					ImgDiv.removeChild(OldImg);		
					OldImg = null;
				}
			}
			setTimeout("GlobalImgFades[" + GlobalIdx + "].DoFade();", this.ImgChangeTime * 1000);
			return false;
		}
	
		NewImg.style.opacity = CurOpacity/100;
		NewImg.style.filter = "alpha(opacity=" + CurOpacity + ")";
		CurOpacity = CurOpacity+2;
	
	}
}

