// Menu Effect Script - Tibetan Trom Website

var width1 = 150;       // width of link
var width2 = 150;
var bgcolor1 = [228,228,228]; // background-color
var bgcolor2 = [0,0,0];
var fgcolor1 = [82,91,83]; // foreground-color
var fgcolor2 = [255,255,255];
var bordercolor1 = [41,41,41]; // border-color
var bordercolor2 = [41,41,41];
var margin1 = 0;       // margin-left of link (used for centered resize)
var margin2 = 0;
var fadeintime = 50; // time to fade in if mouse hovers (milliseconds)
var fadeouttime = 500;// time to fade out
var fps = 80.0;         // frames per second (30.0 seems to be a good value)


/* Program code */
var buttons = new Array();
/*
0:  element "pointer"
1:  active? -> processing a fading (true/false)
2:  interval object
3:  current fading status (0...1)
4:  direction (-1/+1)
*/
var log = "";
function applyfading (i, time) 
{
    buttons[i][3] += buttons[i][4]*(1000.0/fps) / time;
    if (buttons[i][3] < 0)
    {
        buttons[i][3] = 0;
        deactivatebutton (i);
    }
    else if (buttons[i][3] > 1)
    {
        buttons[i][3] = 1;
        deactivatebutton (i);
    }
    var x = buttons[i][3];
    
    buttons[i][0].style["backgroundColor"] = "rgb(" +
                    (Math.floor (bgcolor1[0]*(1-x) + bgcolor2[0]*x)) + "," +
                    (Math.floor (bgcolor1[1]*(1-x) + bgcolor2[1]*x)) + "," +
                    (Math.floor (bgcolor1[2]*(1-x) + bgcolor2[2]*x)) +")";
    buttons[i][0].style["color"] = "rgb(" +
                    (Math.floor (fgcolor1[0]*(1-x) + fgcolor2[0]*x)) + "," +
                    (Math.floor (fgcolor1[1]*(1-x) + fgcolor2[1]*x)) + "," +
                    (Math.floor (fgcolor1[2]*(1-x) + fgcolor2[2]*x)) +")";
    buttons[i][0].style["borderColor"] = "rgb(" +
                    (Math.floor (bordercolor1[0]*(1-x) + bordercolor2[0]*x)) + "," +
                    (Math.floor (bordercolor1[1]*(1-x) + bordercolor2[1]*x)) + "," +
                    (Math.floor (bordercolor1[2]*(1-x) + bordercolor2[2]*x)) +")";

    if (width1 != width2)
        buttons[i][0].style["width"] = (Math.floor(width1*(1-x) + width2*x)) + "px";
    if (margin1 != margin2)
        buttons[i][0].style["marginLeft"] = (Math.floor(margin1*(1-x) + margin2*x)) + "px";
}

function get_button (element)
{
    for (var i=0; i < buttons.length; i++)
    {
        if (buttons[i][0] == element)
            return i;
    }
    i = buttons.length;
    buttons[i] = new Array (element, false, 0, 0.0, 0);
    return i;
}

function deactivatebutton (i) {
    if (buttons[i][1])
    {
        buttons[i][1] = false;
        clearInterval (buttons[i][2]);
    }
}

function fade (element, direction, time)
{
    var i = get_button (element);
    deactivatebutton (i);
    buttons[i][1] = true;
    buttons[i][4] = direction;
    buttons[i][2] = window.setInterval ("applyfading("+i+","+time+")",1000.0/fps);
}


// called by user (a call could be "fadein (this)")
function fadein (element)
{
    fade (element, +1, fadeintime);
}

function fadeout (element)
{
    fade (element, -1, fadeouttime);
}
