(function($){
	
	$.jFader = function(el, options){
		var main = this;
		main.options = $.extend({},$.jFader.defaults, options);
		main.el = el;
		
		main.act = 0;
		main.next = main.act+1;
		main.anim = false; 
		
		main.slidePages = $(main.el).find("."+main.options.slideClass);
		
		main.setTop = function(a,n){
			for(var i=0;i<main.slidePages.length;i++) {
				if(i==a) $(main.slidePages[i]).css({'z-index':1099});
				else if(i==n) $(main.slidePages[i]).css({'display':'none','z-index':1100});
				else $(main.slidePages[i]).css({"z-index":1000+i});
			}
		}
		
		main.Go2Page = function(){
			main.anim = true; 
			main.setTop(main.act,main.next);
			if(main.options.navi) {
				$(main.navi).removeClass(main.options.naviActClass);
				$(main.navi[main.next]).addClass(main.options.naviActClass);
			}
			$(main.slidePages[main.next]).animate({'opacity': 'show'},main.options.animationTime,main.options.easing,function(){ 
				main.act = main.next;
				main.anim = false; 
			});
		}
		
		if(main.options.navi) {
			naviHtml = '';
			for(var i=0;i<main.slidePages.length;i++) naviHtml += '<li'+(!i?' class="act"':'')+'><a href="#'+i+'"></a></li>';
			$(main.el).append('<ul class="'+main.options.naviClass+'">'+naviHtml+'</ul>');
			main.navi = $(main.el).find("."+main.options.naviClass+" li");
			$("."+main.options.naviClass+" a").click(function(){
				window.clearInterval(main.timer);
				if(!main.anim) {
					main.next = $(this).attr('href').split('#')[1];
					main.Go2Page();
				}
			});
			
		}
		
		main.setTop(main.act,main.next);
		
		main.timer = window.setInterval(function(){
			main.next = main.act+1;
			if(main.next>=main.slidePages.length) main.next = 0;
			main.Go2Page();
		}, main.options.delay);
		
	}
	
	$.jFader.defaults = {
		slideClass: "SlidePage",
		naviClass: "SlideNavi",
		naviActClass: "act",
		easing: "easeInOutExpo",
		delay: 4000,
		animationTime: 2000,
		navi: true
	};
	
	$.fn.jFader = function(options){
		return this.each(function(i){( new $.jFader(this, options) ); });
	};
	
})(jQuery);
