// JavaScript Document

(function($) {
	$.fn.myfader=function(options) {
		var defaults={
				width:600,
				height:400,
				interval:5000,
				animation:1000,
				nextButton:'.next',
				prevButton:'.prev'
		};
		var options=$.extend(defaults,options);
		
		function debugArray(a)
		{
			var str="";
			for(var i=0;i<a.length;i++)
			{
				str+="["+i+"]= "+a[i]+"\n";
			}
			alert(str);
		}
		
		function debugVar(x) { alert(x); }
		
		return this.each(function() {
			var crtObj=$(this);
			var intervalObj=0;
			var imagini=$("img",crtObj);
			var nrImagini=imagini.length;
			var denumiriImagini=new Array();
			var currentID=0;
			var nextID=0;
			var timeout=0;
			var sens=1;
			for(var i=0;i<imagini.length;i++)
			{
				denumiriImagini[i]=imagini[i].src;
			}
			
			crtObj.css({'margin':'0', width:options.width, height:options.height, 'overflow':'hidden'});
			imagini.each(function() {
				$(this).wrapAll("<div class='slide'></div>");
			});
			$(".slide",crtObj).css({'position':'absolute', 'display':'none'});
			var slides=$(".slide",crtObj);
			
			function getNextItem(crtItem)
			{
				if(sens==1)
				{
					return (crtItem==nrImagini-1)?0:crtItem+1;
				}
				else
				{
					return (crtItem==0)?nrImagini-1:crtItem-1;
				}
			}
			
			function prepareImg()
			{
				nextID=getNextItem(currentID);
				$(slides).each(function() {
					$(this).removeClass('top').removeClass('below');
				});
				$(slides[currentID]).css({'display':'block', 'z-index':'11'}).addClass('top');
				$(slides[nextID]).css({'display':'block', 'z-index':'10'}).addClass('below');
				$(slides).each(function() {
					if(!$(this).hasClass('top') && !$(this).hasClass('below'))
					{
						$(this).css({'display':'none'});
					}
				});
			}
			
			function doInstantFade()
			{
				$(".top",crtObj).fadeOut(options.animation, function() {
					currentID=nextID;
					prepareImg();
					doFade();
				});
			}
			
			function doFade()
			{
				timeout=setTimeout(function() {
					$(".top",crtObj).fadeOut(options.animation, function() {
						currentID=nextID;
						prepareImg();
						doFade();
					});
				}, options.interval);
			};
			
			$(options.nextButton).bind("click", function() {
				sens=1;
				if(!$(".top",crtObj).is(":animated"))
				{
					clearTimeout(timeout);
					prepareImg();
					doInstantFade();
				}
			});
			
			$(options.prevButton).bind("click", function() {
				sens=0;
				if(!$(".top",crtObj).is(":animated"))
				{
					clearTimeout(timeout);
					prepareImg();
					doInstantFade();
				}
			});
			
			// start cu primul element
			prepareImg();
			doFade();
		});
	};
})(jQuery);
