/*
BASIC USAGE

cross_dissolve.js?<PARAMETER=VALUE>&<PARAMETER=VALUE>...

-> available parameters:

    interval = (milliseconds)

*/

cd_interval = 5000;             // default interval value (05 sec) if the parameter isn't defined

var cd_scripts = document.getElementsByTagName('script');
for(i=0;i<cd_scripts.length;i++){
    if (cd_scripts[i].getAttribute('src')){
        var q=cd_scripts[i].getAttribute('src');
        if(q.match('cross_dissolve.js')){
            var url = q.split('cross_dissolve.js');
            var path = url[0];
            var query = url[1].substring(1);
            var pars = query.split('&');
            for(j=0; j<pars.length; j++) {
                par = pars[j].split('=');
                switch(par[0]) {
                    case 'interval': {
                        cd_interval = par[1];
                        break;
                    }
                }
            }
        }
    }
}

window.addEventListener?window.addEventListener("load",cd_init,false):window.attachEvent("onload",cd_init);

var d = document;
var imgs = new Array();
var curIndex = 0;
var cd_timer;
var is_playing = false;


function cd_init() {
    imgs = d.getElementById('cross_dissolve').getElementsByTagName('img');
	for (i=0;i<imgs.length;i++) imgs[i].imgOpacity = 0;

    imgs[0].style.display = "block";
    imgs[0].imgOpacity = 100;

    cd_timer = setTimeout(cd_dissolve,cd_interval);
    is_playing = true;
}


function cd_dissolve(par) {

    if (par == 'play'){
        if (is_playing == true) return; else is_playing = true;
    }

	var curOpacity = imgs[curIndex].imgOpacity;
	var nxtIndex = imgs[curIndex+1]?curIndex+1:0;
	var nxtOpacity = imgs[nxtIndex].imgOpacity;

    if (par == 'stop') {
        if (curOpacity == 100) {
            clearTimeout(cd_timer);
            is_playing = false;
            return;
        }
        else {
            cd_timer = setTimeout("cd_dissolve('stop')",50);
            return;
        }
    }
	
	curOpacity -= 5; if (curOpacity<0) curOpacity = 0;
	nxtOpacity += 5; if (nxtOpacity>100) nxtOpacity = 100;

    imgs[curIndex].imgOpacity = curOpacity;
	imgs[nxtIndex].imgOpacity = nxtOpacity;

    cd_setOpacity(imgs[curIndex]); 
    cd_setOpacity(imgs[nxtIndex]);

    if (nxtOpacity == 5) imgs[nxtIndex].style.display = "block";

    if(curOpacity == 0) {
        imgs[curIndex].style.display = "none";
        curIndex = nxtIndex;
        cd_timer = setTimeout(cd_dissolve,cd_interval);
    }
    else {
        cd_timer = setTimeout(cd_dissolve,50);
    }
}


function cd_setOpacity(obj) {
    obj.style.opacity = (obj.imgOpacity/100);
    obj.style.MozOpacity = (obj.imgOpacity/100);
    obj.style.filter = "alpha(opacity=" + obj.imgOpacity + ")";
}

