	var alpha = new function()
	{
		this.speed = 100;
		this.step = 10;
		this.minOpacity = 1;

		this.acceleration = false;

		this.show = new arrList();
		this.hide = new arrList();
		this.timeOut = null;

		this.checkState = function(obj)
		{
			var opacity = getOpacity(obj);

			if(opacity == 100)
				return "show";
			if(opacity <= alpha.minOpacity)
				return "hide";
			if(alpha.show.indexOf(obj) < 0)
				return "hide";
			return "show";
		}

		this.reverseObj = function(obj)
		{
			if(alpha.checkState(obj) == "show")
				alpha.hideObj(obj);
			else alpha.showObj(obj);
		}

		this.showObj = function(obj)
		{
			setOpacity(obj, alpha.minOpacity);

			alpha.hide.remove(obj);
			if(alpha.show.indexOf(obj) < 0)
				alpha.show.add(obj);

			if(alpha.show.count() > 0 || alpha.hide.count() > 0)
				if(alpha.timeOut == null)
					alpha.timeOut = setTimeout("alpha.runAlpha()",alpha.speed);
		}
		this.hideObj = function(obj)
		{
			alpha.show.remove(obj);
			if(alpha.hide.indexOf(obj) < 0)
				alpha.hide.add(obj);

			if(alpha.show.count() > 0 || alpha.hide.count() > 0)
				if(alpha.timeOut == null)
					alpha.timeOut = setTimeout("alpha.runAlpha()",alpha.speed);
		}
		this.runAlpha = function()
		{
			var i;
			for(i=0;i<alpha.show.count();i++)
			{
				try
				{
					var obj = alpha.show.getAt(i);
					var opacity = getOpacity(obj);

					var nextStep = alpha.step;
					if(alpha.acceleration)
						nextStep = Math.ceil((100-opacity)/alpha.step);

					if(opacity+nextStep >= 100)
					{
						setOpacity(obj, 100);
						alpha.show.removeAt(i--);
					}
					else
					{
						setOpacity(obj, opacity+nextStep);
						if(obj.style.display == "none")
							obj.style.display = "";
					}
				}
				catch (e)
				{
					alpha.show.removeAt(i--);
				}
			}

			for(i=0;i<alpha.hide.count();i++)
			{
				try
				{
					var obj = alpha.hide.getAt(i);
					var opacity = getOpacity(obj);

					var nextStep = alpha.step;
					if(alpha.acceleration)
						nextStep = Math.ceil(opacity/alpha.step);

					if(opacity-nextStep <= alpha.minOpacity)
					{
						setOpacity(obj, alpha.minOpacity);
						obj.style.display = "none";
						hideMask();
						alpha.hide.removeAt(i--);
					}
					else
					{
						setOpacity(obj, opacity-nextStep);
					}
				}
				catch (e)
				{
					alpha.hide.removeAt(i--);
				}
			}

			if(alpha.show.count() > 0 || alpha.hide.count() > 0)
				alpha.timeOut = setTimeout("alpha.runAlpha()",alpha.speed);
			else
			{
				clearTimeout(alpha.timeOut);
				alpha.timeOut = null;
			}
		}
	}