/**
 * @author Sebastian Sauer <info@dynpages.de>
 * @since 13.01.2010
 */

(function ($, undefined) {

	$.widget("mtu.carousel", {
		options : {
			/**
			 * @var {jQuery}
			 */
			container : [],
			/**
			 * @var {string}
			 */
			cssClass : 'mtu-carousel',
			/**
			 * setTimeout delay in ms
			 * @var {number}
			 */
			delay : 10000,
			/**
			 * setTimeout delay
			 * @var {number}
			 */
			preventCycle : false
		},
		_create : function () {
			this._registerHover();
		},
		_init : function () {
			var o = this.options;
			if(o.disabled) {
				return;
			}
			this.cycle();
		},
		_registerHover : function () {
			var o = this.options,
				self = this;
			this.element
				.find('img')
				.bind('mouseenter focus cycle', function (ev) {
					if (ev && ev.type && ev.type !== 'cycle') {
						self.options.preventCycle = true;
						self.element
							.find('img.' + o.cssClass + '-hover')
							.removeClass(o.cssClass + '-hover');
					}
					var $this = $(this).addClass(o.cssClass + '-hover');
							c = o.container,
							url = $this.data('image'),
							$img = $("<img />");
					if(true === $.browser.msie) {
						$img.attr('src', url);
						c.html($img);
						self._trigger('hover', ev, self._ui($this));
						return;
					}
					c.addClass('loading');
					$img
						.load(function () {
							c
								.removeClass('loading')
								.html($(this))
						})
						.attr('src', url);
					self._trigger('hover', ev, self._ui($this));
				})
				.bind('mouseleave blur', function () {
					var $this = $(this);
					$this.removeClass(o.cssClass + '-hover');
				});
		},
		_ui : function (el) {
			return {
				active : el
			};
		},
		cycle : function () {
			var self = this;
			(function () {
				var o = self.options,
					$active, $next;
				if (o.preventCycle) {
					return;
				}
				$active = self.element.find('img.mtu-carousel-hover');
				$next = $active.parent()
					.next()
					.find('img').first();
				if ($next.length < 1) {
					$next = self.element
						.find('img')
						.first();
				}
				$active.blur();
				$next.trigger('cycle');
				window.setTimeout(arguments.callee, o.delay);
			})();
		}
	});

	$(function () {
		var $carouselContainer = $('.carousel'),
			$textContainer = $('#visual-element .carousel-text'),
			cycle;
		
		if (2 > $carouselContainer.find('ul li').size()){
		
		}
		else {
			$carouselContainer.css('display','block');
		}
		
		$carouselContainer
			.carousel({
				container : $('#visual-element .carousel-container'),
				hover : function (ev, ui) {
					var el,$next;
					el = (ui && ui.active) ? ui.active : undefined;
					$next = el.next();
					if(!el || $next.length < 1) {
						return;
					};
					$textContainer.html($next.html());
				}
		});
	});	
})(window.jQuery);

