/*******************************************************************************************\
**						Gargoyle CMS von AM-Webdesign.eu								   **
**	Copyright: 		© by AM-Webdesign 2002-2010 All Rights Reserved						   **
**	Entwicklung:	Andy Müller												   **
**	Lizenz:			www.AM-Webdesign.eu													   **
**	Kontakt:		www.AM-Webdesign.eu		|	andy@AM-Webdesign.eu					   **
\*******************************************************************************************/

var iTimer = 15;		  // Sek. bis zum nächsten Fade
var bLoop = true;		  // Sek. bis zum nächsten Fade
var Doc = document;
var ArrImages = new Array();
var baseURL = document.getElementsByTagName('head')[0].getElementsByTagName('script')[0].src.replace(/include\/(.*?)$/, '');
var Intervall = new Array();
var NR, Old_NR, Action, Hover;


var $$ = function(objID) {
	return Doc.getElementById(objID);
}

function addImage(Img, Alt, Url) {
	// Disallow Pictures from other servers
	if (Img.indexOf(baseURL) == -1) {
		alert("Bilder von anderen Servern als " + baseURL + " sind aus Sicherheitsgründen nicht erlaubt!\n\rDer Ladevorgang wurde abgebrochen!\n\r\n\rPictures of other servers as " + baseURL + " are not permitted for safety reasons!\n\rThe loading procedure was broken off!");
		return;
	}
	var length = ArrImages.length;
	ArrImages[length] = new Array();
	ArrImages[length]["Img"] = Img;
	ArrImages[length]["Alt"] = Alt;
	ArrImages[length]["Url"] = Url;
}

function initSlideshow(ID, Shuffel, ShowControl, Timer, Loop) {
	if (typeof (Timer) != 'undefined')
		iTimer = Timer;
	if (typeof (Loop) != 'undefined')
		bLoop = Loop;

	if (Shuffel == true)
		ArrImages.shuffle();

	document.writeln('<div id="' + ID + '"><div id="Controls"></div></div>');

	if (ShowControl == true) {
		setOpacity('Controls', 80);
		$$('Controls').innerHTML += '<div id="Last" onclick="Control(\'' + ID + '\', \'Last\')">&lt;&lt;</div>'
			   + '<div id="Play" onclick="Control(\'' + ID + '\', \'Play\')">Start</div>'
			   + '<div id="Stop" onclick="Control(\'' + ID + '\', \'Stop\')">Stop</div>'
			   + '<div id="Next" onclick="Control(\'' + ID + '\', \'Next\')">&gt;&gt;</div>';
	}

	for (var i = 0; i < ArrImages.length; i++) {
		$$(ID).innerHTML += '<div id="Item_' + i + '" title="' + ArrImages[i]["Alt"] + '" class="SS_Item">'
						 + (!Empty(ArrImages[i]["Url"]) ? '  <a  id="SS_A_' + i + '" href="' + ArrImages[i]["Url"] + '">' : '')
						 + '	<img id="SS_Img_' + i + '" src="' + ArrImages[i]["Img"] + '"'
						 + ' alt="' + ArrImages[i]["Alt"] + '" />'
						 + (!Empty(ArrImages[i]["Url"]) ? '  </a>' : '')
						 + '</div>';

		if (i > 0)
			setOpacity("Item_" + i, 0);
		else
			setOpacity("Item_" + i, 100);
	}
	$$("Item_0").style.visibility = "visible";
	Intervall[ID] = window.setInterval('Slide(\'' + ID + '\', \'' + ArrImages.length + '\')', iTimer * 1000);
	ArrImages = "";
}

function setOpacity(objID, opacity) {
	var obj = $$(objID);
	obj.style.filter = "alpha(opacity:" + opacity + ")";
	obj.style.KHTMLOpacity = opacity / 100;
	obj.style.MozOpacity = opacity / 100;
	obj.style.opacity = opacity / 100;
}

function getOpacity(objID) {
	var obj = $$(objID);
	if (obj.filters) return !obj.filters.alpha.opacity ? 0 : obj.filters.alpha.opacity / 100;
	else if (obj.style.KHTMLOpacity) return !obj.style.KHTMLOpacity ? 0 : obj.style.KHTMLOpacity;
	else if (obj.style.MozOpacity) return !obj.style.MozOpacity ? 0 : obj.style.MozOpacity;
	else return !obj.style.opacity ? 0 : obj.style.opacity;
}

function Fade(objID1, objID2) {
	if (!this.proc) {
		Action = true;
		setOpacity(objID1, parseInt(100));
		$$(objID1).style.visibility = "visible";
		setOpacity(objID2, parseInt(0));
		$$(objID2).style.visibility = "visible";
		this.proc = window.setInterval('Fade(\'' + objID1 + '\', \'' + objID2 + '\')', 90);
	}
	else {
		var opacity1 = parseFloat(getOpacity(objID1));
		var opacity2 = parseFloat(getOpacity(objID2));
		var opacity = parseInt(getOpacity(objID2));

		if (opacity < 1) {
			if (objID1.slice(5, 6) > objID2.slice(5, 6)) {
				opacity1 -= 0.05;
				setOpacity(objID1, parseInt(opacity1 * 100));
			}
			opacity2 += 0.05;
			setOpacity(objID2, parseInt(opacity2 * 100));
		} else {
			setOpacity(objID2, parseInt(opacity2 * 100));
			setOpacity(objID1, parseInt(opacity1 * 100));
			$$(objID1).style.visibility = "hidden";
			window.clearInterval(this.proc);
			this.proc = null;
			Action = false;
		}
	}
}

function Empty(str) {
	if (typeof (str) == 'undefined')
		return true;
	else
		return false;
}

function Slide(ID, Images, i) {
	if (typeof (Images) == 'undefined')
		Images = document.getElementById(ID).getElementsByTagName("div").length - 5;
	if (Action != true) {
		if (typeof (NR) == 'undefined') {
			Old_NR = 0;
			NR = 1;
		}
		else if (NR == 'undefined')
			NR = 0;
		else {
			Old_NR = NR;
			NR++;
		}
		if (i == 'Last') {
			NR = NR == 1 ? Images - 1 : NR - 2;
			Old_NR = Old_NR == 0 ? 0 : Old_NR--;
		}
		if (NR == Images && bLoop)
			NR = 0;
		if (!bLoop && NR == Images) {
			window.clearInterval(Intervall[ID]);
			Intervall[ID] = false;
		}			
		if (NR != Old_NR) {
			Fade('Item_' + Old_NR, 'Item_' + NR);
		}
	}
}

function Control(ID, Action) {
	if (Action != true || typeof (Action) == 'undefined') {
		switch (Action) {
			case 'Last':
				Slide(ID, '', "Last");
				break;
			case 'Play':
				if (Intervall[ID] === false) {
					Slide(ID);
					Intervall[ID] = window.setInterval('Slide(\'' + ID + '\')', iTimer * 1000);
				}
				break;
			case 'Stop':
				if (Intervall[ID] !== false) {
					window.clearInterval(Intervall[ID]);
					Intervall[ID] = false;
				}
				break;
			case 'Next':
				Slide(ID);
				break;
		}
	}
}
