/* ----------------------------
fader.js
ver 1.1
---------------------------- */


// var fadeTo = "FF00FF";

// Fade in colour increment/decrement by
var fiBy = 6;

// Fade out colour increment/decrement by
var foBy = 4;

// Speed - milliseconds between each colour change in the fade
// Less than 10ms doesn't really make all that much difference, so
// 10 is the minimum effective value.
var speed = 35;

// Class name of links to NOT fade (i.e. ignore)
// var ignoreClass = "somebogusvalue" if you don't want to
// use this feature. Alternatively, add onmouseover="clearFade()"
// to the link you do not wish to fade.
var ignoreClass = "ignore";

// No more changes required (unless you know what you are doing)
// Enjoy... and email me and let me know what site(s) you are using it on :)
var opera, ie, dom, x = 0, oc, fader, ocs = new Array();

if (navigator.userAgent.indexOf("Opera") != -1)
{
	opera = true;
}

else if (document.all && !opera)
{
	ie = true;
}

else if (!document.all && document.getElementById)
{
	dom = true;
}

function convertRGB (z)
{
	var newfcS = "", splitter = "";
	splitter = z.split(",");
	splitter[0] = parseInt(splitter[0].substring(4, splitter[0].length));
	splitter[1] = parseInt(splitter[1]);
	splitter[2] = parseInt(splitter[2].substring(0, splitter[2].length - 1));

	for (var q = 0; q < 3; q++)
	{
		splitter[q] = splitter[q].toString(16);

		if (splitter[q].length == 1)
		{
			splitter[q] = "0" + splitter[q];
		}
		newfcS += splitter[q];
	}
	return newfcS;
}

function currentColour (index)
{
	var temp, cc;

	if (opera)
	{
		cc = document.links[index].style.color;
	}

	else if (ie)
	{
		cc = document.links[index].currentStyle.color;
	}

	else if (dom)
	{
		cc = document.defaultView.getComputedStyle(document.links[index], '').getPropertyValue("color");
	}

	if (cc.length == 4 && cc.substring(0, 1) == "#")
	{
		temp = "";

		for (var a = 0; a < 3; a++)
		{
			temp += cc.substring(a + 1, a + 2) + cc.substring(a + 1, a + 2);
		}
		cc = temp;
	}

	else if (cc.indexOf("rgb") != -1)
	{
		cc = convertRGB(cc);
	}

	else if (cc.length == 7)
	{
		cc = cc.substring(1, 7);
	}

	else
	{
		cc = fadeTo;
	}
	return cc;
}

function convert2Dec (hex)
{
	var rgb = new Array();

	for (var u = 0; u < 3; u++)
	{
		rgb[u] = parseInt(hex.substring(u * 2, u * 2 + 2), 16);
	}
	return rgb;
}

function newRGB (f, n, d)
{
	var change;

	if (d == 1)
	{
		change = fiBy;
	}

	else
	{	
		change = foBy;
	}

	for (var g = 0; g < 3; g++)
	{
		if (n[g] > f[g] && n[g] - change >= 0)
		{
			n[g] -= change;
		}
		if (n[g] < f[g] && n[g] + change <= 255)
		{
			n[g] += change;
		}
	}
	return n;
}

function fade (index, d)
{
	var fc, nc, temp = new Array(), finished = false;
	nc = convert2Dec(currentColour(index));

	if (d == 1)
	{
		fc = convert2Dec(fadeTo);
	}

	else
	{
		fc = convert2Dec(ocs[x]);
	}

	temp = convert2Dec(currentColour(index));
	nc = newRGB(fc, nc, d);

	if ((nc[0] == temp[0]) && (nc[1] == temp[1]) && (nc[2] == temp[2]))
	{
		finished = true;
	}
	if (!finished)
	{
		document.links[x].style.color = "rgb(" + nc[0] + "," + nc[1] + "," + nc[2] + ")";
	}

	else
	{
		clearInterval(fader);
	}
}

function findLink (over)
{
	if (document.layers)
	{
		return;
	}

	if (fader)
	{
		clearInterval(fader);
		document.links[x].style.color = "#" + ocs[x];
	}

	if (over && !this.id)
	{
		this.id = over;
	}

	x = 0;

	while (!(this.id == document.links[x].id) && (x < document.links.length))
	{
		x++;
	}
	if (this.id == document.links[x].id)
	{
		oc = currentColour(x);
		fader = setInterval("fade(" + x + ", 1)", speed);
	}
}

function clearFade ()
{
	if (document.layers)
	{
		return;
	}
	if (fader)
	{
		clearInterval(fader);
	}

	fader = setInterval("fade(" + x + ", 0)", speed);
}

function faderinit ()
{
	if ((opera === true) || (ie === true)) 
	{ 
		// document.writeln("<style type=\"text/css\">a:hover { color : #" + fadeTo + "; text-decoration: underline; }</style>");
		return;
	}
	for (var i = 0; i < document.links.length; i++)
	{
		ocs[i] = currentColour(i);
		var currentOver = document.links[i].onmouseover;
		var currentOut = document.links[i].onmouseout;
		var ignoreIt = document.links[i].className == ignoreClass;
		//alert(document.links[i]);
		if (!ignoreIt)
		{
			document.links[i].id = "link" + i;
			//alert(document.links[i]);
		}
		if (!currentOver && !currentOut && !ignoreIt)
		{
			document.links[i].onmouseover = findLink;
			document.links[i].onmouseout = clearFade;
		}
	}
}

if ((opera === true) || (ie === true))
{ //for opera: change hover style, hover-glow is not being used
	document.writeln("<style type=\"text/css\">a:hover { color : #" + fadeTo + "; text-decoration: underline; }</style>");
}

