// ##### ANIMATION CLASS #####
var Animation = 
{
	step: 14,
	timeout: 2,
	
	blindUp: function (element, down)
	{		
		// ##### CHECK FOR HEIGHT #####
		if (!element.style.height)
		{
			// ###### CHECK IF PADDING IS SET #####
			if (get_style_property(element, 'paddingTop'))
			{
				padding = parseInt(get_style_property(element, 'paddingTop').replace ('/px/', ''));
				padding += parseInt(get_style_property(element, 'paddingBottom').replace ('/px/', ''));
			}
			else
			{
				padding = 0;
			}
			element.style.height = (element.offsetHeight - padding) + 'px';
		}
		
		// ##### HIDE THE OVERFLOW #####
		element.style.overflow = 'hidden';
		
		// ##### GET THE HEIGHT #####
		var height = parseInt(element.style.height.replace('px', ''));
		
		// ##### CHECK IF REMEMBER HEIGHT IS SET #####
		if (element._height == null)
		{
			element._height = height;
		}
		
		if ((height - Animation.step) > 0)
		{
			element.style.height = height - Animation.step + 'px';
			window.setTimeout (function () { Animation.blindUp (element, down); }, Animation.timeout);
		}
		else
		{
			hide (element);
			if (down)
			{
				window.setTimeout ("Animation.blindDown ('" + down + "');", 10);
			}
		}
	},

	blindDown: function (element)
	{
		// ##### SHOW ELEMENT #####
		show (element);

		// ##### HIDE THE OVERFLOW #####
		element.style.overflow = 'hidden';

		// ##### CHECK FOR HEIGHT #####
		if (element._height == null)
		{
			// ###### CHECK IF PADDING IS SET #####
			if (get_style_property(element, 'paddingTop'))
			{
				padding = parseInt(get_style_property(element, 'paddingTop').replace ('/px/', ''));
				padding += parseInt(get_style_property(element, 'paddingBottom').replace ('/px/', ''));
			}
			else
			{
				padding = 0;
			}
			element._height = (element.offsetHeight - padding);
		}

		// ##### CHECK FOR HEIGHT #####
		if (element.style.height == '')
		{
			element.style.height = '0px';
		}
		
		// ##### GET THE HEIGHT #####
		var height = parseInt(element.style.height.replace('px', ''));
		if ((height + Animation.step) < element._height)
		{
			element.style.height = (height + Animation.step) + 'px';
			window.setTimeout (function () { Animation.blindDown (element); }, Animation.timeout);
			//window.setTimeout ("Animation.blindDown ('" + element + "');", 1);
		}
		else
		{
			element.style.height = element._height + 'px';
		}
	},

	fadeOut: function (element, opacity)
	{
		// ##### SET OPACITY #####
		Animation.setOpacity (element, opacity);

		// ##### SET IT TO CLEAR OUT ####
		if (opacity > 0)
		{
			opacity -= 2;
			window.setTimeout (function () { Animation.fadeOut (element, opacity);}, 4);
		}
		else
		{
			hide (element);
		}
	},

	fadeIn: function (element, opacity)
	{
		// ##### SHOW THE ELEMENT #####
		show (element);

		// ##### SET OPACITY #####
		Animation.setOpacity (element, opacity);

		// ##### SET IT TO CLEAR OUT ####
		if (opacity < 100)
		{
			opacity += 2;
			window.setTimeout (function () { Animation.fadeIn (element, opacity);}, 4);
		}
	},

	setOpacity: function (element, opacity)
	{
		// ##### GET OBJECT #####
		//var object = get_element (element);

		// ##### CHANGE OPACITY #####
		if (element)
		{
			element.style.opacity = (opacity / 100);
			element.style.MozOpacity = (opacity / 100);
			element.style.KhtmlOpacity = (opacity / 100);
			element.style.filter = "alpha(opacity=" + opacity + ")";
		}
	}
}