﻿(function($) {

	$.widget("ui.Animate", {

		_init: function() {
			var self = this;
			$.ui.Animate._Counter = 0;
			$.ui.Animate._Fade = 0;
			$.ui.Animate._Container = this.element;
			$.ui.Animate._Container.attr("class", this.options.imageclass + $.ui.Animate._Counter);
			$.ui.Animate._Container.html('<div id="' + this.element.attr('id') + '_sub"></div>');
			$.ui.Animate._ContainerSub = $('#' + this.element.attr('id') + '_sub');
			$.ui.Animate._ContainerSub.html('<a href="' + $("." + this.options.linkclass + $.ui.Animate._Counter).attr("href") + '" id="' + this.element.attr('id') + '_link"></a>');
			$.ui.Animate._Link = $('#' + this.element.attr('id') + '_link');
			$.ui.Animate._ContainerSub.css("opacity", $.ui.Animate._Fade);
			if (this.options.playByDefault) {
				this.playAnimation();
			}
		},

		playAnimation: function() {
			var self = this;
			$.ui.Animate._timer_rotate = setInterval(function() { self._rotateContent() }, this.options.rotateDelay);
		},

		stopAnimation: function() {
			clearTimeout($.ui.Animate._timer_rotate);
			$.ui.Animate._timer_rotate = null;
		},

		viewSlide: function(index) {
			var self = this;
			$("." + this.options.thumbclass + $.ui.Animate._Counter).css("opacity", 0.3);
			$.ui.Animate._Counter = index;
			if ($.ui.Animate._Counter > this.options.hightIndex) {
				$.ui.Animate._Counter = 0;
			}
			$("." + this.options.thumbclass + $.ui.Animate._Counter).css("opacity", 1.0);
			$.ui.Animate._ContainerSub.attr("class", this.options.imageclass + $.ui.Animate._Counter);
			$.ui.Animate._Link.attr("href", $("." + this.options.linkclass + $.ui.Animate._Counter).attr("href"));
			$.ui.Animate._timer_fade = setInterval(function() { self._fadeContent() }, this.options.fadeDelay);
			this.stopAnimation();
		},

		_rotateContent: function() {
			var self = this;
			$("." + this.options.thumbclass + $.ui.Animate._Counter).css("opacity", 0.3);
			$.ui.Animate._Counter++;
			if ($.ui.Animate._Counter > this.options.hightIndex) {
				$.ui.Animate._Counter = 0;
			}
			$("." + this.options.thumbclass + $.ui.Animate._Counter).css("opacity", 1.0);
			$.ui.Animate._ContainerSub.attr("class", this.options.imageclass + $.ui.Animate._Counter);
			$.ui.Animate._Link.attr("href", $("." + this.options.linkclass + $.ui.Animate._Counter).attr("href"));
			$.ui.Animate._timer_fade = setInterval(function() { self._fadeContent() }, this.options.fadeDelay);
		},

		_fadeContent: function() {
			if ($.ui.Animate._Fade < 1) {
				/**
				* Fade in Process
				*/
				$.ui.Animate._Fade += this.options.fadeStep;
				$.ui.Animate._ContainerSub.css("opacity", $.ui.Animate._Fade);
			} else {
				/**
				* Fade Finished = 1
				*/
				$.ui.Animate._Container.attr("class", $.ui.Animate._ContainerSub.attr("class"));
				$.ui.Animate._Fade = 0;
				$.ui.Animate._ContainerSub.css("opacity", $.ui.Animate._Fade);
				clearInterval($.ui.Animate._timer_fade);
				$.ui.Animate._timer_fade = null;
			}
		}

	});

	$.ui.Animate.defaults = {
		imageclass: "animate-",
		linkclass: "animatelink-",
		thumbclass: "thumb-",
		loaderclass: "loader",
		rotateDelay: 3000,
		fadeDelay: 50,
		hightIndex: 15,
		fadeStep: .05,
		playByDefault: false
	};

})(jQuery);
