var faderboxobjs = [];
faderbox = {
};

faderbox.do_fade = function (fbid, crate) {
    var tobj = faderboxobjs[fbid];
    crate = crate - tobj.ratechange;
    if (crate < 0) {
        crate = 0;
    }
    var irate = (100 - crate);
    var dcfb = document.getElementById(tobj.fbname + tobj.currentbox);
    var dnfb = document.getElementById(tobj.fbname + tobj.newbox);
    dcfb.style.opacity = (crate / 100);    
    dcfb.style.filter = 'alpha(opacity=' + crate * 1 + ')';
    dnfb.style.opacity = (irate / 100);    
    dnfb.style.filter = 'alpha(opacity=' + irate * 1 + ')';
    if (crate > 0) {
        var tname = 'faderbox.do_fade(\'' + fbid + '\', ' + crate + ')';
        setTimeout(tname, tobj.speedchange);
    } else {
        dcfb.style.visibility = 'hidden';
        tobj.currentbox = tobj.newbox;
        tobj.to = setTimeout('faderbox.start_fader(\'' + fbid + '\')', tobj.delaychange);
    }
};

faderbox.start_fader = function (fbid) {
    var tobj = faderboxobjs[fbid];
    if (!tobj.paused) {
    if (tobj.tempboxarray.length < 1) {
        tobj.tempboxarray = tobj.boxarray.slice();
    }
    tobj.newbox = (3 - tobj.currentbox);
    var boxname = tobj.tempboxarray.pop();
    var tbox = tobj.tempboxarray.pop();
    tobj.tempboxarray.push(tbox);
    
    if (faderconts[tbox]) {
        var preload_image = new Image(); 
        preload_image.src = faderconts[tbox]['image']; 
    }
    var dnfb = document.getElementById(tobj.fbname + tobj.newbox);
    dnfb.style.opacity = 0;    
    dnfb.style.filter = 'alpha(opacity=0)';

//    alert(boxname);
    var tname = tobj.fbname + tobj.newbox + '_title';
//    alert(tname);
    document.getElementById(tobj.fbname + tobj.newbox + '_link').href = faderconts[boxname]['link'];
    document.getElementById(tobj.fbname + tobj.newbox + '_title').innerHTML = faderconts[boxname]['title'];
    document.getElementById(tobj.fbname + tobj.newbox + '_desc').innerHTML = faderconts[boxname]['blurb'];
    document.getElementById(tobj.fbname + tobj.newbox + '_img').src = faderconts[boxname]['image'];
//    dnfb.innerHTML = document.getElementById(boxname).innerHTML;

    dnfb.style.visibility = "visible";
    faderbox.do_fade(fbid, 100);
    } else {     
    clearTimeout(tobj.to);
    tobj.to = setTimeout('faderbox.start_fader(\'' + fbid + '\')', tobj.delaychange);
    }
};

faderbox.pause = function (fbid) {
    var tobj = faderboxobjs[fbid];
    if (tobj) {
       tobj.paused = true;
    }
//    clearTimeout(tobj.to);
};

faderbox.resume = function (fbid) {
    var tobj = faderboxobjs[fbid];
    if (tobj) {
        tobj.paused = false;
    }
};

faderbox.init_faderbox = function (fbid, tbasebox, tboxarraystr, fbname, ratechange, speedchange, delaychange) {
    var tobj = new Object();
    tobj.currentbox = 0;
    tobj.newbox = 0;
    tobj.paused = false;
    tobj.fbname = fbname;
    tobj.ratechange = ratechange;
    tobj.speedchange = speedchange;
    tobj.delaychange = delaychange;
    tobj.tempboxarray = [];
    tobj.basebox = tbasebox;
    tobj.boxarray = [];
    tobj.boxarray.push(tobj.basebox);
    var tboxarray = tboxarraystr.split('|');
    var tnum = tboxarray.length;
    var i, j, count, rn1, rn2;
    count = tnum;
    while (count > 0) {
        rn1 = Math.floor(Math.random() * 3);
        for (i = 0; i < 2 + rn1; i++) {
            rn2 = Math.floor(Math.random() * tnum);
            while (tboxarray[rn2] == '--') {
                rn2 = Math.floor(Math.random() * tnum);
            }
            tobj.boxarray.push(tboxarray[rn2]);
            tboxarray[rn2] = '--';
            count--;
            if (count === 0) {
                break;
            }
        }
        if (count > 0) {
            tobj.boxarray.push(tobj.basebox);
        }
    }
    tobj.currentbox = 1;
    faderboxobjs[fbid] = tobj;

    tobj.tempboxarray = tobj.boxarray.slice();
    
    var tbox = tobj.tempboxarray.pop();
    tobj.tempboxarray.push(tbox);
    
    var preload_image = new Image(); 
    preload_image.src = faderconts[tbox]['image']; 
    
    tobj.to = setTimeout('faderbox.start_fader(\'' + fbid + '\')', tobj.delaychange);
};

