/*
 * 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
 *
 */

//find next image
function nextImage(o) {
    do o = o.nextSibling;
    while(o && o.tagName != 'IMG');
    return o;
}

//find first image inside an element
function firstChildImage(o) {

    o = o.firstChild;

    while(o && o.tagName != 'IMG') {
        o = o.nextSibling;
    }

    return o;
}

//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(image.parentNode);
    }

    return next;
}

//set default values for parameters and starting image
function blendImages(id, speed, pause, caption) {

    if(speed == null) {
        speed = 50;
    }

    if(pause == null) {
        pause = 3000;
    }

    var blend = document.getElementById(id);

    var image = firstChildImage(blend);

    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;
    }

    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 + 5;

    if (opacity < 108) {

		setTimeout(function() {fadeImage(image, opacity, speed, pause, caption)}, speed);

    } else {
		//if the image is done, set it to the background and make it transparent
		image.parentNode.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);
		//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);
}


function loaded() {
    blendImages('blendme');
}


/*
var sampleNum = 2;

function loaded() {
	sample = document.getElementById( 'sample');
	setOpacity( sample, 0);
	sample.style.background = 'transparent url(home-sample-2.jpg) no-repeat left top';
	fadeIn( 0);
}

function setOpacity( obj, opacity) {
	opacity = (opacity == 100) ? 99.999 : opacity;

	//	obj.style.opacity = (opacity / 100);
	//	object.style.MozOpacity = (opacity / 100);
	//	object.style.KhtmlOpacity = (opacity / 100);
	obj.style.filter = "alpha(opacity=" + opacity + ")";
}

function fadeIn( opacity) {
	if( document.getElementById) {
		sample = document.getElementById( 'sample');

		if( opacity <= 100) {
			setOpacity( sample, opacity);
			opacity += 5;
			window.setTimeout( "fadeIn( " + opacity + ")", 50);

		} else {
			containerObj = document.getElementById( 'current_sample');
			containerObj.style.background = "transparent url(home-sample-" + sampleNum + ".jpg) no-repeat left top";
			setOpacity( sample, 0);
			if( sampleNum < 5) {
				sampleNum += 1;
			} else {
				sampleNum = 1;
			}
			sample.style.background = "transparent url(home-sample-" + sampleNum + ".jpg) no-repeat left top";
			window.setTimeout( "fadeIn( 0)", 5000);
		}
	}
}
*/
