/*
 * Author: VRB
 * Date: 10.XI.2009
 */
;(function($){
	$.fn.slideshow = function(op){
		//if (!$.isArray(op)) return false;
		//debug2(this);
		var s = [],
			_this,
			$this,
			IMG_CLASS = "ssimg",
			ACTIVE_IMG_CLASS = "activeimg",
			NAVIG_CLASS = "ssli",
			ACTIVE_NAVIG_CLASS = "activenavig",
			sTime,
			addSlide = function(slideConfig, i){
				var st = new Object();
				st.title = slideConfig[0];
				st.path = slideConfig[1];
				st.duration = slideConfig[2];
				st.$slide = $("<img src='" + st.path + "' alt='" + st.title + "' class='" + IMG_CLASS + i + "' />").appendTo($this);
				if (s.length > 0) st.$slide.hide()
				else st.$slide.addClass(ACTIVE_IMG_CLASS);
				s[s.length] = st;
			},
			makeNavigation = function(){
				var $ul = $("<ul></ul>").appendTo($this);
				$("<li class='direction prev'><a href='#2' title='Go to previous'>Previous</a></li>").appendTo($ul).find("a").click(function(){
					var n = getActiveNo();
					changeSlide((n>0)?(n-1):(s.length-1));
				});
				$.each(s, function(i, v){
					v.$li = $("<li><a href='#2' title='Go to: " + v.title + "'>" + (i+1) + "</a></li>").appendTo($ul);
					v.$li.addClass(NAVIG_CLASS + i);
					if (i==0) v.$li.addClass(ACTIVE_NAVIG_CLASS);
					v.$li.find("a").click(function(e){
						changeSlide(i);
					});
				});
				$("<li class='direction next'><a href='#2' title='Go to next'>Next</a></li>").appendTo($ul).find("a").click(function(){
					changeSlide(getNextNo());
				});
			},
			getNextNo = function(){
				var n = getActiveNo();
				return (n < s.length - 1)?(n + 1):(0);
			},
			getActiveNo = function(){
				var className = $this.find("img." + ACTIVE_IMG_CLASS).attr("class");
				var pos = className.indexOf(IMG_CLASS);
				if (pos < 0) return;
				return new Number(className.substr(pos + IMG_CLASS.length, 1));
			},
			changeSlide = function(slideNo){
				var imgold = $this.find("img." + ACTIVE_IMG_CLASS).removeClass(ACTIVE_IMG_CLASS).fadeOut("fast");
				var imgnew = $this.find("img." + IMG_CLASS + slideNo).addClass(ACTIVE_IMG_CLASS).fadeIn("slow");
				$this.find("li." + ACTIVE_NAVIG_CLASS).removeClass(ACTIVE_NAVIG_CLASS);
				$this.find("li." + NAVIG_CLASS + slideNo).addClass(ACTIVE_NAVIG_CLASS);
				setSlideTime(slideNo);
			},
			setSlideTime = function(slideNo){
				clearTimeout(sTime);
				sTime = setTimeout(function(){
					changeSlide(getNextNo());
				}, s[slideNo].duration * 1000);
			};
		
		//alert($.makeArray(this));
		return this.each(function(i) {
			_this = this;
			$this = $(this);
			$.each(op, function(i, v) { addSlide(v, i); });
			$this.ready(function(){
				makeNavigation();
				setSlideTime(0);
			});
		});
	};
	
	var ss = $.fn.slideshow;
	
})(jQuery);
