﻿/*
 * Original from: http://brainerror.net/scripts/javascript/blendtrans/demo.html
 *
 * Edits by ASC:
 *   - Removed unnecessary OO code that caused MSIE to choke
 *   - Added pause between setting bg image and setting opacity to zero to
 *     prevent MSIE image flash
 *   - Increased opacity check argument to 103 for completely smooth fade
 *
 */
 
var stopBlender = false;
var curImage = false;

//find next image
function nextImage(o) {
	var nextImgId = 0;
	var imgId = o.id;
	var Regex = /.*(\d)/;
	Regex.exec(imgId);
	
	switch (RegExp.$1) {
		case '1': nextImgId = 'blendimg2'; break;
		case '2': nextImgId = 'blendimg3'; break;
		case '3': nextImgId = 'blendimg1'; break;
	}

	return document.getElementById(nextImgId);
}

//find first image inside an element
function firstChildImage() {
	return document.getElementById('blendimg1');
}

//set the opacity of an element to a specified value
function setOpacity(obj, o) {
	obj.style.opacity = (o / 100);
	obj.style.MozOpacity = (o / 100);
	obj.style.KhtmlOpacity = (o / 100);
	obj.style.filter = 'alpha(opacity=' + o + ')';
}

//make image invisible and set next one as current image
function getNextImage(image) {

	if (next = nextImage(image)) {
		image.style.display = 'none';
		image.style.zIndex = 0;

		next.style.display = 'block';
		next.style.zIndex = 100;
	} else {
		//if there is not a next image, get the first image again
		next = firstChildImage();
	}

	return next;
}

//set default values for parameters and starting image
function blendImages(id, speed, pause, caption) {

	if(speed == null) speed = 30;
	if(pause == null) pause = 1500;

	var blend = document.getElementById(id);
	var image = firstChildImage(blend);
	document.getElementById('flashreplace').style.backgroundImage = "url("+image.src+")";
	//curImage = document.getElementById(image.id);

	startBlending(image, speed, pause, caption);
}

//make image a block-element and set the caption
function startBlending(image, speed, pause, caption) {
	image.style.display = 'block';

	if(caption != null) {
		document.getElementById(caption).innerHTML = image.alt;
	}

	if (! stopBlender) continueFadeImage(image, 0, speed, pause, caption);
}

// ASC: copied from http://www.sean.co.uk/a/webdesign/javascriptdelay.shtm
function pausecomp(millis) {
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); }
	while(curDate-date < millis);
} 

//set an increased opacity and check if the image is done blending
function continueFadeImage(image, opacity, speed, pause, caption) {

	opacity = opacity + 3;

	if (opacity < 103) {
		setTimeout(function() {fadeImage(image, opacity, speed, pause, caption)}, speed);
	} else {
		//if the image is done, set it to the background and make it transparent
		document.getElementById('flashreplace').style.backgroundImage = "url("+image.src+")";
		
		// ASC: pause 1sec here to prevent MSIE image flash ...
		var paws=pause-1000;
		if (paws < 0 ) paws = 0;
		pausecomp(1000);

		setOpacity(image,0);
	
		curImage = document.getElementById(image.id);

		//get the next image and start blending it again
		image = getNextImage(image);
		setTimeout(function() {startBlending(image, speed, pause, caption)}, paws);		
	}
}

//set the opacity to a new value and continue the fading
function fadeImage(image, opacity, speed, pause, caption) {
	setOpacity(image,opacity);
	continueFadeImage(image, opacity, speed, pause, caption);
}

// redirects to choosen value (form on)
function formJump(form) {
	var zielseite=form.zielwahl.selectedIndex
	if (form.zielwahl.options[zielseite].value != "0") location=form.zielwahl.options[zielseite].value;
}

