﻿
var fadeObjects = new Array();
var fadeCounter = 0;

function clearFade()
{
    for (i=0; i<fadeObjects.length; i++)
    {
        var element = document.getElementById(fadeObjects[i].name);
        
        if (fadeObjects[i].type == "border")
            element.style.borderColor="rgb("+fadeObjects[i].colR+","+fadeObjects[i].colG+","+fadeObjects[i].colB+")";
        else if (fadeObjects[i].type == "background")
            element.style.backgroundColor="rgb("+fadeObjects[i].colR+","+fadeObjects[i].colG+","+fadeObjects[i].colB+")";
        else
            element.style.color="rgb("+fadeObjects[i].colR+","+fadeObjects[i].colG+","+fadeObjects[i].colB+")";
    }

    fadeObjects.splice(0, fadeObjects.length);
}


function fade(element, type, origR, origG, origB, colR, colG, colB, speed, steps, pause, fadeout)
{
    if (document.getElementById(element) == null)
        return;

    var index = -1;
    for (i=0; i<fadeObjects.length; i++)
    {
        if (fadeObjects[i].name == element)
            index = i;
    }
    
    if (index != -1)
        fadeObjects.splice(index,1);

    fadeCounter++;
    
    var fadeObject = new Object;
    fadeObject.name = element;
    fadeObject.type = type;
    fadeObject.origR = origR;
    fadeObject.origG = origG;
    fadeObject.origB = origB;
    fadeObject.colR = colR;
    fadeObject.colG = colG;
    fadeObject.colB = colB;
    fadeObject.speed = speed;
    fadeObject.pause = pause;
    fadeObject.fadeout = fadeout;
    fadeObject.count = 0;
    fadeObject.steps = steps;
    fadeObject.fadingOut = false;
    fadeObject.uniqueId = fadeCounter;

    fadeObjects.splice(0,0,fadeObject);

    fadeInOut(fadeCounter);
}

function fadeInOut(uniqueId)
{
    var origR, origG, origB;
    var colR, colG, colB;
    var count;
    var speed;
    var pause;
    var steps;
    var fadeout;
    var fadingOut;
    var type;
    var r, g, b;
    var index = -1;
    var element;

    for (i=0; i<fadeObjects.length; i++)
    {
        if (fadeObjects[i].uniqueId == uniqueId)
        {
            origR = parseInt(fadeObjects[i].origR);
            origG = parseInt(fadeObjects[i].origG);
            origB = parseInt(fadeObjects[i].origB);
            colR = parseInt(fadeObjects[i].colR);
            colG = parseInt(fadeObjects[i].colG);
            colB = parseInt(fadeObjects[i].colB);

            count = parseInt(fadeObjects[i].count);
            speed = parseInt(fadeObjects[i].speed);
            pause = parseInt(fadeObjects[i].pause);
            steps = parseInt(fadeObjects[i].steps);
            fadeout = fadeObjects[i].fadeout;
            fadingOut = fadeObjects[i].fadingOut;
            type = fadeObjects[i].type;

            element = fadeObjects[i].name;

            index = i;
        }
    }

    if ( index == -1)
        return;

    if (count < steps)
    {
        count++;
        fadeObjects[index].count++;
        
        r = origR - ((count/steps)*(origR - colR));
        g = origG - ((count/steps)*(origG - colG));
        b = origB - ((count/steps)*(origB - colB));
        
        if (type == "border")
            document.getElementById(element).style.borderColor="rgb("+r+","+g+","+b+")";
        else if (type == "background")
            document.getElementById(element).style.backgroundColor="rgb("+r+","+g+","+b+")";
        else
            document.getElementById(element).style.color="rgb("+r+","+g+","+b+")";
        
        setTimeout("fadeInOut(" + uniqueId + ");",speed);
    }
    else if (count == steps)
    {
        fadeObjects[index].count++;
        setTimeout("fadeInOut(" + uniqueId + ");",pause);
    }
    else if (count == steps+1)
    {
        if (fadeout == true && fadingOut == false)
        {
            fadeObjects[index].fadingOut = true;
            fadeObjects[index].count = 0;
            fadeObjects[index].origR = colR;
            fadeObjects[index].origG = colG;
            fadeObjects[index].origB = colB;
            fadeObjects[index].colR = origR;
            fadeObjects[index].colG = origG;
            fadeObjects[index].colB = origB;
            setTimeout("fadeInOut(" + uniqueId + ");",speed);
        }
        else
            fadeObjects.splice(index, 1);
    }
}




