var fader_c = function()
{
	this.target_opacity_i = 100;
	this.step_i = 100;
	this.fade_out_i = 80;
	this.update_interval_i = 10;

	this.interval_i = 5000;
	this.loop_count_i = 0;

	this.image_path_a = new Array();

	this.image_id_s = '';
	this.image_o = new Object();

	this.background_id_s = '';
	this.background_o = new Object();

	this.fading_b = false;

	this.setOpacity = function(element_o, value_i)
	{
		element_o.style.filter = 'alpha(opacity:' + value_i + ')';
		element_o.style.opacity = value_i / 100;
		element_o.style.MozOpacity = value_i / 100;
		element_o.style.KhtmlOpacity = value_i / 100;
	};

	this.setFadeIn = function(element_o)
	{
		var this_o = this;

		this.fading_b = true;

		var extreme_opacity_i = this.target_opacity_i + ((this.step_i / 100) * this.fade_out_i);
		var current_opacity_i = 0;

		var setFadeInStep = function()
		{
			if (current_opacity_i < this_o.target_opacity_i)
			{
				current_opacity_i += (extreme_opacity_i - current_opacity_i) / this_o.step_i;

				this_o.setOpacity(element_o, current_opacity_i);
			}
			else
			{
				clearInterval(interval_i);

				this_o.fading_b = false;
			}
		};

		var interval_i = setInterval(setFadeInStep, this.update_interval_i);
	};

	this.setImageFade = function(path_s)
	{
		if (!this.fading_b)
		{
			var old_path_s = this.image_o.style.backgroundImage.substring(4, this.image_o.style.backgroundImage.length - 1);

			this.background_o.style.backgroundImage = 'url(' + old_path_s + ')';

			this.setOpacity(this.image_o, 0);
			this.image_o.style.backgroundImage = 'url(' + path_s + ')';

			this.setFadeIn(this.image_o);
		}
	};

	this.setLoop = function()
	{
		var this_o = this;

		var loop_count_i = 1;
		var image_index_i = 0;

		var setNextImage = function()
		{
			if (image_index_i == this_o.image_path_a.length)
			{
				if (this_o.loop_count_i)
				{
					if (loop_count_i == this_o.loop_count_i)
					{
						clearInterval(interval_i); return false;
					}
				}

				loop_count_i++;
				image_index_i = 0;
			}

			this_o.setImageFade(this_o.image_path_a[image_index_i]);

			image_index_i++;
		};

		var interval_i = setInterval(setNextImage, this.interval_i);

		setNextImage();
	};

	this.setPreload = function()
	{
		var this_o = this;
		var image_a = new Array();

		for (var i_i = 0; i_i < this.image_path_a.length; i_i++)
		{
			image_a[i_i] = new Image();
			image_a[i_i].src = this.image_path_a[i_i];
		}

		/*image_a[0].onload = function()
		{*/
			this_o.setLoop();
		//};
	};

	/**/

	this.setTargetOpacity = function(value_i)
	{
		this.target_opacity_i = value_i;
	};

	this.setStepSize = function(value_i)
	{
		this.step_i = value_i;
	};

	this.setFadeOutSpeed = function(value_i)
	{
		this.fade_out_i = value_i;
	};

	this.setUpdateInterval = function(value_i)
	{
		this.update_interval_i = value_i;
	};

	this.setInterval = function(value_i)
	{
		this.interval_i = value_i;
	};

	this.setLoopCount = function(count_i)
	{
		this.loop_count_i = count_i;
	};

	this.setImageId = function(id_s)
	{
		this.image_id_s = id_s;
	};

	this.setBackgroundId = function(id_s)
	{
		this.background_id_s = id_s;
	};

	this.setImagePath = function(path_s)
	{
		this.image_path_a[this.image_path_a.length] = path_s;
	};

	this.setStart = function()
	{
		this.image_o = document.getElementById(this.image_id_s);
		this.background_o = document.getElementById(this.background_id_s);

		if (!this.image_o || !this.background_o) return false;

		this.setPreload();
	};
};