/****************************************************************
 * imagefader.js
 *
 * The Absolute Agency Ltd
 * 
 * Fades images in and out of one three squares.
 * foreground image is gradually faded to reveal background image
 ****************************************************************/

var gblCelebArray = new Array("AAD", "ACR", "AJE", "BGS", "BKS", "CWN", "DBM", "DCG", "DCI", "FCN", "GAD", "GCY", "GRY", "JCN", "JDE", "JTE", "MDN", "RBD", "RBR", "TMD");

var gblNameArray = new Array("Ant & Dec", "Alan Carr", "Angelina Jolie", "Bear Grylls", "Beonce Knowles", "Clive Owen", "David Beckham", "Daniel Craig", "Danny Cipriani", "Fearne Cotton", "Girls Aloud", "George Clooney", "Gordon Ramsey", "Jeremy Clarkson", "Jack Dee", "Justin Timberlake", "Matt Damon", "Russell Brand", "Rory Bremner", "Trevor MacDonald");

var gblPrevCelebArray = new Array();
var gblDivIdArray = new Array("square1", "square2", "square3");
var gblImgIdArray = new Array("photo1", "photo2", "photo3");

var gblRandom;
var gblCeleb;
var gblName;

var gblImgFilePath = "images/celebs/";
var gblImgFileExtn = ".jpg";

var gblDeckSize = gblCelebArray.length;
var gblOpacity = 100;
var gblOnDeck = 0;
var gblRotations = 1;
var gblImageRotations = gblDeckSize * (gblRotations+1);
var gblPauseSeconds = 2.5;
var gblFadeSeconds = 1.5;

var theDiv;
var theImg;

function imageFaderInitialise(start)
    {
     gblCelebArray = sortArray(gblCelebArray, start);
     gblNameArray = sortArray(gblNameArray, start);

    for (var i = 0; i < 3; i++)
        {
        gblPrevCelebArray[i] = document.getElementById(gblImgIdArray[i]).className;
        }
       
    imageFaderRandomise();
    setTimeout("imageFaderFade()",gblPauseSeconds*1000);
    }


function imageFaderRandomise()
    {
    gblRandom = Math.round(Math.random()*2);

    theDiv = document.getElementById(gblDivIdArray[gblRandom]);
    theImg = document.getElementById(gblImgIdArray[gblRandom]);

    gblPrevCelebArray[gblRandom] = theImg.className;

    gblCeleb = gblCelebArray[gblOnDeck];
    gblName = gblNameArray[gblOnDeck];
    theDiv.className = 'pic' + gblCeleb;
    }



function imageFaderFade()
    {
    var fadeDelta = 100 / (30 * gblFadeSeconds);

    if (gblOpacity < 2*fadeDelta )
        {

        gblOpacity = 100;

        if (gblImageRotations < 1) return;

        imageFaderShuffle();

        setTimeout("imageFaderFade()",gblPauseSeconds*1000);  
    }
    else
        {
        gblOpacity -= fadeDelta;
        setOpacity(theImg,gblOpacity); 
        setTimeout("imageFaderFade()",30);
        }
    }


function imageFaderShuffle()
    {
    theImg.src = gblImgFilePath + gblCeleb + gblImgFileExtn;
    theImg.className = gblCeleb;

    var prevCeleb = gblPrevCelebArray[gblRandom];
    var prevName = getCelebName(prevCeleb);

    var oldStatus = window.status;
    if (oldStatus != '')
        {
        var newStatus = oldStatus.replace(prevName,gblName);
        window.status = newStatus;
        }

    setOpacity(theImg,100);

    gblOnDeck = ++gblOnDeck % gblDeckSize;

    imageFaderRandomise();
    }


function setOpacity(obj, opacity)
    {
    opacity = (opacity == 100)?99.999:opacity;

    // IE/Win
    obj.style.filter = "alpha(opacity:"+opacity+")";

    // Safari<1.2, Konqueror
    obj.style.KHTMLOpacity = opacity/100;

    // Older Mozilla and Firefox
    obj.style.MozOpacity = opacity/100;

    // Safari 1.2, newer Firefox and Mozilla, CSS3
    obj.style.opacity = opacity/100;
    }


function sortArray (theArray, startPosn)
    {
    var startArray = new Array();
    var endArray = new Array();

    startArray = theArray.slice(startPosn);
    endArray = theArray.slice(0, startPosn);    
    theArray = startArray.concat(endArray);

    return theArray;
    }


function getCelebName(celebId)
    {
    for (var i=0; i<gblCelebArray.length; i++)
        {
        if (gblCelebArray[i] == celebId)
            {
            return gblNameArray[i];
            }
        }
    }

