//
// Image Rotater
//
document.write('<script type="text/javascript" src="getElementsByClassName-1.0.1.js"></script>');

var Rotaters = new Array();

function Rotater(sID) {
    this.Name = sID;
    this.Counter = 1;
    // Maximum number of refreshes.
    this.MaxCount = 10;
    // Time between image refreshes in milliseconds. To disable, set to 0.
    this.IntervalTime = 10000;
    this.TransitionTime = 1000;
    this.Interval = setInterval("Rotate('" + sID + "')", this.IntervalTime);
}

function Rotate(sID) {
    // Find our Interval by name...
    var aRotater;
    for (var i = 0; i <= Rotaters.length - 1; i++) {
        if (Rotaters[i].Name == sID) {
            aRotater = Rotaters[i];
            break;
        }
    }
    if (aRotater != null) {
        Transition(sID, aRotater.TransitionTime);
        aRotater.Counter++;
        if ((aRotater.Counter == aRotater.MaxCount) || aRotater.IntervalTime < 1) {
            clearInterval(aRotater.Interval);
        }
    }
}

function ImageRotate(sID, nDelayMs) {
    if (nDelayMs != null) {
        setTimeout("AddRotater('" + sID + "');", nDelayMs);
    }
    else {
        AddRotater(sID);
    }
}
function AddRotater(sID) {
    Rotaters[Rotaters.length] = new Rotater(sID);
}

////////////////////////////////////////////////////////////////////////////////////////////////

function Transition(sID, nFadeTime) {
    FadeOldOut(sID, nFadeTime);
    setTimeout("FadeNewIn(\"" + sID + "\", " + nFadeTime + ");", nFadeTime);
}
function FadeOldOut(sID, nFadeTime) {
    var c = 0;
    var getImage = document.getElementById(sID).getElementsByTagName('li');
    var img = getImage.length - 1;
    // Get last "current" item
    for (var a = 0; a < getImage.length; a++) {
        if (getImage[a].className.indexOf("current") == 0) {
            c = a;
        }
    }
    c++;
    if (c > img) { c = 0; }
    opacity(sID, 100, 0, nFadeTime);
}
function FadeNewIn(sID, nFadeTime) {
    var c = 0;
    var getImage = document.getElementById(sID).getElementsByTagName('li');
    var img = getImage.length - 1;
    // Get last "current" item
    for (var a = 0; a < getImage.length; a++) {
        if (getImage[a].className.indexOf("current") == 0) {
            c = a;
        }
        // Clear all "current" attributes
        getImage[a].className = '';
    }
    c++;
    if (c > img) { c = 0; }
    // Set new "current"
    getImage[c].className = 'current';
    opacity(sID, 0, 100, nFadeTime);
}

function FadeIn(sID, nFadeInMs, nDelayMs) {
    changeOpac(0, sID)
    if (nDelayMs != null) {
        setTimeout("opacity('" + sID + "', 0, 100, " + nFadeInMs + ");", nDelayMs);
    }
    else {
        opacity(sID, 0, 100, nFadeInMs);
    }
}

function Flash(sClassname, nOpacity, nDelayMs) {
    var e = document.getElementsByClassName(sClassname);

    for (var i = 0; i < e.length; i++) {
        changeOpac(0, e[i].id);
        setTimeout("DoFlash('" + e[i].id + "', " + nOpacity + ", 200)", nDelayMs);
    }
}
function DoFlash(sID, nOpacity, nDurationMs) {
    opacity(sID, 0, nOpacity, nDurationMs);
    setTimeout("opacity('" + sID + "', " + nOpacity + ", 0, " + nDurationMs + ");", nDurationMs + 50);
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    var jump = 1;
    if (Math.abs(opacStart - opacEnd) > 20) {
        jump = Math.round(Math.abs(opacStart - opacEnd) / 20);
    }

    //determine the direction for the blending, if start and end are the same nothing happens
    if (opacStart > opacEnd) {
        for (var i = opacStart; i >= opacEnd; i = i - jump) {
            if (i < 0) {
                i = 0;
            }
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed * jump));
            timer++;
        }
    } else if (opacStart < opacEnd) {
        for (i = opacStart; i <= opacEnd; i = i + jump) {
            if (i > 100) {
                i = 100;
            }
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed * jump));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

document.getElementsByClassName = function(cl) {
    var retnode = [];
    var myclass = new RegExp('\\b' + cl + '\\b');
    var elem = this.getElementsByTagName('*');
    for (var i = 0; i < elem.length; i++) {
        var classes = elem[i].className;
        if (myclass.test(classes)) retnode.push(elem[i]);
    }
    return retnode;
}; 