/* Copyright (c) 2009 Parsek (http://www.parsek.si)
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* Copyright notice and license must remain intact for legal use
* jquery.vitlaj 0.1
* Author: Rod Petrovic (petrovic@parsek.net)
* Version: 0.1 (April 17, 2009)
* Requires: jQuery 1.2+
* Examples:
* // Default: fade in/out, speed 1s, wait for 5s.
* $('#gallery').vitlaj();
* // Semi-default: fade in/out, speed 5s, wait for 10s.
* $('gallery').vitlaj({speed: 5000, wait: 10000});
* // Custom: slide up/down, speed 0.3s, wait for 10s.
* $('#gallery').vitlaj({appear: 'slideDown', disappear: 'slideUp', speed: 300, wait: 10000});
*/
(function ($) {
	$.fn.vitlaj = function (config) {
		var default_config = {
		appear: 'fadeIn',
		disappear: 'fadeOut',
		speed: 1000,
		wait: 5000
	};

	config = $.extend({}, default_config, config);

	var effects = {
		'fadeIn': {opacity: 'show'},
		'fadeOut': {opacity: 'hide'},
		'slideDown': {height: 'show'},
		'slideUp': {height: 'hide'}
	};

	var appear = effects[config.appear] ? effects[config.appear] : config.appear;
	var disappear = effects[config.disappear] ? effects[config.disappear] : config.disappear;

	var objects = $(this).children().get();
	var buttons = $("#"+$(this).attr("id")+"_buttons").children().get();

		var buttonActive = function (obj) {
			$(buttons).each(function() {$(this).removeClass("active");});
			obj.addClass("active");
		}

		var play = true;
		var activeNow = 0;

		$(buttons).each(function(ind) {
			$(this).bind("click", function() {
				buttonActive($(this));
				$("#slideshow li").css("visibility", "hidden");
				$("#slideshow li:eq("+ind+")").css({visibility: "visible", display: "block"});
				activeNow = ind;
				play = false;
			});
		});


		$("slide_yt_button").bind("click", function() {
			$("#slideshow li").css("visibility", "hidden");
			$("#slideshow li:eq(0)").css({visibility: "visible", display: "block"});
			activeNow = 0;
			play = false;
		});


		$(objects).hide();

		var transition = function (index, object) {
			if (play) {
				buttonActive($(buttons[index]));
				$(object).animate(appear, config.speed, function () {

						var next = index + 1 < objects.length ? index + 1 : 0;
						setTimeout(function () {
							transition(next, objects[next]);
							$(object).animate(disappear, config.speed, function() {
								//$("#slideshow li:eq("+activeNow+")").css({visibility: "visible", display: "block"});
							});
						}, config.wait);

				});
			}
		};

		transition(0, objects[0]);
	}
})(jQuery);
