window.addEvent("domready", function ()
{
	if ($("carrousel") && $("arrow_elements"))
	{
		dxsJs.Ui.caroussel = new dxsJs.Widgets.Caroussel("carrousel", "div.slideshow", "ul.pager li");
		$("carrousel").getElement("li.previous").addEvent("click", function (a)
		{
			if ($defined(a))
			{
				var a = new Event(a).stop()
			}
			dxsJs.Ui.caroussel.previousSlide(true)
		});
		$("carrousel").getElement("li.next").addEvent("click", function (a)
		{
			if ($defined(a))
			{
				var a = new Event(a).stop()
			}
			dxsJs.Ui.caroussel.nextSlide(true)
		})
	}
});
dxsJs.Widgets.Caroussel = new Class(
{
	Implements: [Events, Options],
	options: {
		periodicalTime: 5000,
		delayTime: 10000,
		pause: false,
		onInit: $empty,
		onStart: $empty,
		onShow: $empty,
		onGoto: $empty
	},
	initialize: function (c, a, d, b)
	{
		this.setOptions(b);
		this.timer;
		this.el = $(c);
		if (d)
		{
			this.menu = ($(d)) ? $(d) : this.el.getElements(d)
		}
		else
		{
			this.menu = false
		}
		this.slide = ($(a)) ? $(a) : this.el.getElements(a);
		if (!this.slide[0])
		{
			return
		}
		this.index = 0;
		this.fireEvent("init");
		this.slide.fade("hide");
		if (this.menu)
		{
			this.menu.removeClass(dxsJs.clsActive)
		}
		this.slide.removeClass(dxsJs.clsActive);
		this.slide[0].fade("in");
		if (this.menu)
		{
			this.menu[0].addClass(dxsJs.clsActive);
			this.menu.each(function (f, e)
			{
				f.addEvent("click", this.goTo.bindWithEvent(this, [e]))
			}, this)
		}
		if (!this.options.pause)
		{
			this.launchSlideshow()
		}
		this.fireEvent("start")
	},
	launchSlideshow: function ()
	{
		$clear(this.timer);
		this.timer = this.nextSlide.periodical(this.options.periodicalTime, this)
	},
	goTo: function (b, a)
	{
		if ($defined(b))
		{
			var b = new Event(b).stop()
		}
		if (a != this.index)
		{
			$clear(this.timer);
			this.slide[a].fade("in");
			this.slide[this.index].fade("out");
			if (this.menu)
			{
				this.menu[a].addClass(dxsJs.clsActive);
				this.menu[this.index].removeClass(dxsJs.clsActive)
			}
			this.index = a;
			this.launchSlideshow.delay(this.options.delayTime, this);
			this.fireEvent("goto")
		}
	},
	nextSlide: function (b)
	{
		var a = (this.index + 1 > this.slide.length - 1) ? 0 : this.index + 1;
		this.slide[this.index].fade("out");
		this.slide[a].fade("in");
		if (this.menu)
		{
			this.menu[this.index].removeClass(dxsJs.clsActive);
			this.menu[a].addClass(dxsJs.clsActive)
		}
		this.index = a;
		if (b)
		{
			this.launchSlideshow()
		}
		this.fireEvent("show")
	},
	previousSlide: function (b)
	{
		var a = (this.index - 1 < 0) ? this.slide.length - 1 : this.index - 1;
		this.slide[this.index].fade("out");
		this.slide[a].fade("in");
		if (this.menu)
		{
			this.menu[this.index].removeClass(dxsJs.clsActive);
			this.menu[a].addClass(dxsJs.clsActive)
		}
		this.index = a;
		if (b)
		{
			this.launchSlideshow()
		}
		this.fireEvent("show")
	}
});

