/* Original from: http://brainerror.net/scripts/javascript/blendtrans/demo.html
 */

function nextImage(o) {
    do o = o.nextSibling;
    while (o && o.tagName != 'IMG');
    return o;
}

// Hämtar ut första bilden från ett element
function firstChildImage(o) {
    o = o.firstChild;
    while (o && o.tagName != 'IMG') {
        o = o.nextSibling;
    }
    return o;
}

// Sätter graden av genomskinlighet för ett element
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 + ')';
}

// Gör bild osynlig och sätter nästa bild som nuvarande
function getNextImage(image) {	
    if (next = nextImage(image)) {
	image.style.display = 'none';
	image.style.zIndex = 0;
	next.style.display = 'block';
	next.style.zIndex = 100;
    } else {
	// Om det inte finns någon nästa bild, så hämta den första igen
	next = firstChildImage(image.parentNode);
    }
    return next;
}

// Sätter default-värden för parametrar och startbild
function blendImages(id, speed, pause, caption) {
    if (speed == null) {
        speed = 30;
    }
    if (pause == null) {
        pause = 5000;       //MILLISEKUNDER - 5000 = 5 sekunder
    }
    var blend = document.getElementById(id);
    var image = firstChildImage(blend);
    startBlending(image, speed, pause, caption);
}

// Gör bild till ett blockelement och sätter bildtext
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);
} 

// Sätter en ökning av genomskinligheten och kollar om bilden har gått över
function continueFadeImage(image, opacity, speed, pause, caption) {
    opacity = opacity + 3;
    if (opacity < 103) {
	setTimeout(function() {
           fadeImage(image, opacity, speed, pause, caption)
           }, speed);
    } 
    else {
	// Om bilden är klar, så sätt den som bakgrund och gör den genomskinlig
	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);
	//Hämta nästa bild och börja blanda igen
	image = getNextImage(image);
	setTimeout(function() {startBlending(image, speed, pause, caption)}, paws);		
    }
}

// Sätter graden av genomskinlighet till ett nytt värde och fortsätter fade:a
function fadeImage(image, opacity, speed, pause, caption) {
    setOpacity(image,opacity);
    continueFadeImage(image, opacity, speed, pause, caption);
}
