/*
 *
 */

(function($){
 
    //Attach this new method to jQuery
    $.fn.extend({ 
         
        //Defines plugin's name and functions
        fadeStack: function(options) {
     	 
    		//Initialization
	        var defaults = {
	            animation: "slow",
	            time: 4,
				size: $(this).children().size(),
				start: 1,
	        };
			
			var options = $.extend(defaults, options);
			
			return this.each(function() {
				var startDiv = options.start-1;
				var animationSpeed = options.animation;
	            var animationTime = options.time*1E3;
				var size = options.size;
				
    			var obj = $(this);
				obj.parent().prepend('<div class="fadein-control" />');
				for(i=startDiv; i<size; i++){
					$('.fadein-control').append('<a href="#"><div class="coruselOff"></div></a>');
				}
				$('.fadein-control').children().each(function(index) {
					$(this).click(function() {
						clearTimeout(startFade);
  						fadeSpesDiv(index);
					});
				});
				
				var contentDivs = $('li', obj);
				contentDivs.each(function(index) {
					$(this).replaceWith( '<div class="fadeinContainer fadeinContainer'+index+'">' + $(this).html() + '</div>' );	
				});
				obj.wrapInner('<div class="'+$(this).attr('class')+'" />');
				obj = obj.children(":first");
				obj.unwrap();
				var contentDivs = $('div', obj);
				contentDivs.hide();
				
				contentDivs.eq(startDiv).show();
				$('.fadein-control div:first').addClass("coruselOn");
				
				var currntDiv = startDiv+1;
				function fadeDiv(){
					if(currntDiv>startDiv && currntDiv<size){	
						$('.fadein-control div').removeClass("coruselOn");
						$('.fadein-control div').eq(currntDiv).addClass("coruselOn");
						$('.fadeinContainer'+currntDiv).fadeIn(animationSpeed, function() {
							currntDiv++;
							startFade=setTimeout(fadeDiv, animationTime);
						});
							
					}else if(currntDiv==size){
						currntDiv--;
						contentDivs.hide();
						contentDivs.eq(startDiv).show();
						contentDivs.eq(size-1).show();
						$('.fadein-control div').removeClass("coruselOn");
						$('.fadein-control div').eq(0).addClass("coruselOn");
						$('.fadeinContainer'+currntDiv).fadeOut(animationSpeed, function() {
							currntDiv = startDiv+1;
							startFade=setTimeout(fadeDiv, animationTime);
						});}
				}
				
				startFade=setTimeout(fadeDiv, animationTime);
				
				function fadeSpesDiv(toDiv){
					if(toDiv>currntDiv-1){
						currntDiv=toDiv;
						fadeDiv();
					}else{
						contentDivs.hide();
						contentDivs.eq(currntDiv-1).show();
						contentDivs.eq(toDiv).show();
						$('.fadein-control div').removeClass("coruselOn");
						$('.fadein-control div').eq(toDiv).addClass("coruselOn");
						$('.fadeinContainer'+(currntDiv-1)).fadeOut(animationSpeed, function() {
							currntDiv = toDiv+1;
							startFade=setTimeout(fadeDiv, animationTime);
						});
					}
						
				}

			});
			
		}
	});
    
})(jQuery);
