var fadingObjectArray = new Array();
var fadingStartColorArray = new Array();
function fadeout(obj, startColor)
{
	var ind = null;
	for(var i=0; i<fadingObjectArray.length; i++)
	{
		if(fadingObjectArray[i] == obj)
		{
			return;
		}
	}
	for(var i=0; ; i++)
	{
		if(fadingObjectArray[i] == null)
		{
			ind = i;
			fadingObjectArray[ind] = obj;
			fadingStartColorArray[ind] = fadingMakeColor(startColor);
			break;
		}
	}
	setTimeout('setOpacity(' + ind + ', 100)', 50);
}
function setOpacity(ind, nr)
{
	if(nr<0)
	{
		nr = 0;
	}
	var obj = fadingObjectArray[ind];
	var startColor = fadingStartColorArray[ind];
	var r = getR(startColor);
	var g = getG(startColor);
	var b = getB(startColor);
	r = 255 - parseInt('' + ((255-r)*nr/100.0));
	g = 255 - parseInt('' + ((255-g)*nr/100.0));
	b = 255 - parseInt('' + ((255-b)*nr/100.0));
	obj.style.color = 'rgb('+r+','+g+','+b+')';
	if(nr > 0)
	{
		setTimeout('setOpacity(' + ind + ', ' + (nr-5) + ')', 50);
	}
	else
	{
		obj.style.display = 'none';
		fadingObjectArray[ind] = null;
		fadingStartColorArray[ind] = null;
	}
}
function fadingMakeColor(str)
{
	if(str.length == 7)
	{
		str = str.substring(1);
	}
	var r = hex2number(str.substring(0,2));
	var g = hex2number(str.substring(2,4));
	var b = hex2number(str.substring(4,6));
	return 256*256*r + 256*g + b;
}
function hex2number(str)
{
	var ret = 0;
	for(var i=0; i<str.length; i++)
	{
		ret *= 16;
		var char = str.toLowerCase().charAt(i);
		var charCode = str.toLowerCase().charCodeAt(i);
		if(char >= 'a' && char <= 'f')
		{
			ret += 10 + (charCode - "a".charCodeAt(0));
		}
		else
		{
			ret += (charCode - "0".charCodeAt(0));
		}
	}
	return ret;
}
function getR(color)
{
	return (color/256)/256;
}
function getG(color)
{
	return (color/256)%256;
}
function getB(color)
{
	return color%256;
}

var blinkInProgress = false;
var blinkObject = null;
function blink(obj, percent, stage, startColor, endColor)
{
	if(blinkInProgress && obj != null)
	{
		return;
	}
	if(obj == null)
	{
		obj = blinkObject;
	}
	else
	{
		blinkObject = obj;
		if(obj.bgColor != null && ('' + obj.bgColor).length >= 6 && ('' + obj.bgColor).length <= 7)
		{
			startColor = '' + obj.bgColor;
		}
	}
	blinkInProgress = true;
	var color1 = fadingMakeColor(startColor);
	var color2 = fadingMakeColor(endColor);
	var r1 = getR(color1);
	var g1 = getG(color1);
	var b1 = getB(color1);
	var r2 = getR(color2);
	var g2 = getG(color2);
	var b2 = getB(color2);
	var r = parseInt('' + ((percent/100.0) * r1 + ((100.0-percent)/100.0) * r2));
	var g = parseInt('' + ((percent/100.0) * g1 + ((100.0-percent)/100.0) * g2));
	var b = parseInt('' + ((percent/100.0) * b1 + ((100.0-percent)/100.0) * b2));
	obj.style.backgroundColor = 'rgb('+r+','+g+','+b+')';
	if(percent >= 100.0 && stage>=4)
	{
		blinkInProgress = false;
		return;
	}
	else
	{
		var newPercent = null;
		var newStage = stage;
		if(stage%2==1)
		{
			newPercent = percent - 20.0;
			if(newPercent <=0.0)
			{
				newPercent = 0.0;
				newStage++;
			}
		}
		else
		{
			newPercent = percent + 20.0;
			if(newPercent >=100.0 )
			{
				newPercent = 100.0;
				newStage++;
			}
		}
		setTimeout('blink(null, ' + newPercent + ', ' + newStage + ', \'' + startColor + '\', \'' + endColor + '\')', 50);
	}
}