if(!window.PaNELSLinksFX)PaNELSLinksFX=new Object();

var LinkFadeInStep=20;
var LinkFadeOutStep=5;
var LinkEndColor="ffffff"

var LinkStartColor="2020D6";
var LinkFadeRunning=false;

document.onmouseover = theOnOver;
document.onmouseout  = theOnOut;
if(document.captureEvents)
    document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
function hex2dec(hex){return(parseInt(hex,16));}
function dec2hex(dec){return (dec < 16 ? "0" : "") + dec.toString(16);} 
function getColor(start, end, percent)
{

	var r1=hex2dec(start.slice(0,2));
	var g1=hex2dec(start.slice(2,4));
	var b1=hex2dec(start.slice(4,6));

	var r2=hex2dec(end.slice(0,2));
	var g2=hex2dec(end.slice(2,4));
	var b2=hex2dec(end.slice(4,6));

	var pc=percent/100;

	var r=Math.floor(r1+(pc*(r2-r1)) + .5);
	var g=Math.floor(g1+(pc*(g2-g1)) + .5);
	var b=Math.floor(b1+(pc*(b2-b1)) + .5);

	return("#" + dec2hex(r) + dec2hex(g) + dec2hex(b));
}
PaNELSLinksFX.getCurrentElementColor = function (el) {
    var result = LinkStartColor;

    if (el.currentStyle) {
        if (el.tagName == 'A')
            result = (el.currentStyle.color);
        else
            result = (el.currentStyle.borderColor);
    }
    else if (document.defaultView) {
            result = (document.defaultView.getComputedStyle(el, '').getPropertyValue('color'));
    }
    else if (el.style.color) { //Opera
        if (el.tagName == 'A')
            result = el.style.color;
        else
            result = el.style.borderColor;
    }

    if (result.charAt(0) == "#")      //color is of type #rrggbb
        result = result.slice(1, 8);
    else if (result.charAt(0) == "r") //color is of type rgb(r, g, b)
    {
        var v1 = result.slice(result.indexOf("(") + 1, result.indexOf(")"));
        var v2 = v1.split(",");
        result = (dec2hex(parseInt(v2[0])) + dec2hex(parseInt(v2[1])) + dec2hex(parseInt(v2[2])));
    }

    return result;
}
PaNELSLinksFX.findTagIE = function (el) {
    while (el && (el.tagName != 'A' && el.tagName != 'IMG'))
        el = el.parentElement;
    if (el && el.tagName == 'IMG' && el.parentElement.tagName != 'A')
        return null;
    return (el);
}
PaNELSLinksFX.findTagNS= function(el)
{
    while (el && (el.nodeName != 'A' && el.nodeName != 'IMG'))
        el = el.parentNode;
    return (el);
}

function theOnOver(e)
{
	var lnk;
	if(window.event)
		lnk=PaNELSLinksFX.findTagIE(event.srcElement);
	else
		lnk=PaNELSLinksFX.findTagNS(e.target);

	if(lnk)
		PaNELSLinksFX.linkFadeUp(lnk);
}

PaNELSLinksFX.linkFadeUp = function(lnk)
{
	if(lnk.state == null)
	{
		lnk.state = "OFF";
		lnk.index = 0;
		lnk.startColor = PaNELSLinksFX.getCurrentElementColor(lnk);
		lnk.endColor = LinkEndColor;
	}

	if(lnk.state == "OFF")
	{
		lnk.state = "FADE_UP";
		PaNELSLinksFX.startLinkFader();
	}
	else if( lnk.state == "FADE_UP_DOWN"
		|| lnk.state == "FADE_DOWN")
	{
		lnk.state = "FADE_UP";
	}
}
function theOnOut(e)
{
	var lnk;
	if(window.event)
		lnk=PaNELSLinksFX.findTagIE(event.srcElement);
	else
		lnk=PaNELSLinksFX.findTagNS(e.target);

	if(lnk)
		PaNELSLinksFX.linkFadeDown(lnk);
}
PaNELSLinksFX.linkFadeDown = function(lnk)
{
	if(lnk.state=="ON")
	{
		lnk.state="FADE_DOWN";
		PaNELSLinksFX.startLinkFader();
	}
	else if(lnk.state == "FADE_UP")
	{
		lnk.state="FADE_UP_DOWN";
	}
}
PaNELSLinksFX.startLinkFader = function()
{
	if(!LinkFadeRunning)
		PaNELSLinksFX.LinkFadeAnimation();
}

PaNELSLinksFX.LinkFadeAnimation = function()
{
	LinkFadeRunning = false;

	for (i = 0; i < document.links.length; i++) {
	    var lnk = document.links[i];
	    if (lnk.state) {
	        if (lnk.state == "FADE_UP") {
	            lnk.index += LinkFadeInStep;
	            if (lnk.index > 100)
	                lnk.index = 100;
	            lnk.style.color = getColor(lnk.startColor, lnk.endColor, lnk.index);

	            if (lnk.index == 100)
	                lnk.state = "ON";
	            else
	                LinkFadeRunning = true;
	        }
	        else if (lnk.state == "FADE_UP_DOWN") {
	            lnk.index += LinkFadeOutStep;
	            if (lnk.index > 100)
	                lnk.index = 100;
	            lnk.style.color = getColor(lnk.startColor, lnk.endColor, lnk.index);

	            if (lnk.index == 100)
	                lnk.state = "FADE_DOWN";
	            LinkFadeRunning = true;
	        }
	        else if (lnk.state == "FADE_DOWN") {
	            lnk.index -= LinkFadeOutStep;
	            if (lnk.index < 0)
	                lnk.index = 0;
	            lnk.style.color = getColor(lnk.startColor, lnk.endColor, lnk.index);

	            if (lnk.index == 0)
	                lnk.state = "OFF";
	            else
	                LinkFadeRunning = true;
	        }
	    }
	}
	for (i = 0; i < document.images.length; i++) {
	    var lnk = document.images[i];
	    if (lnk.state) {
	        if (lnk.state == "FADE_UP") {
	            lnk.index += LinkFadeInStep;
	            if (lnk.index > 100)
	                lnk.index = 100;
                var linkcolor = getColor(lnk.startColor, lnk.endColor, lnk.index);
	            lnk.style.borderColor = linkcolor;

	            if (lnk.index == 100)
	                lnk.state = "ON";
	            else
	                LinkFadeRunning = true;
	        }
	        else if (lnk.state == "FADE_UP_DOWN") {
	            lnk.index += LinkFadeOutStep;
	            if (lnk.index > 100)
	                lnk.index = 100;
	            lnk.style.borderColor = getColor(lnk.startColor, lnk.endColor, lnk.index);

	            if (lnk.index == 100)
	                lnk.state = "FADE_DOWN";
	            LinkFadeRunning = true;
	        }
	        else if (lnk.state == "FADE_DOWN") {
	            lnk.index -= LinkFadeOutStep;
	            if (lnk.index < 0)
	                lnk.index = 0;
	            lnk.style.borderColor = getColor(lnk.startColor, lnk.endColor, lnk.index);

	            if (lnk.index == 0)
	                lnk.state = "OFF";
	            else
	                LinkFadeRunning = true;
	        }
	    }
	}
	if (LinkFadeRunning)
	    setTimeout("PaNELSLinksFX.LinkFadeAnimation()", 60);
}
