/** SLIDE PLUGIN **/
$.fn.extend({
	opts : new Object ,
	box  : new Object,
	index : new String,
	clicksDis : new String,
	interval : new String,
	autoClick : new String,
	autoDir   : new String,
	slide : function(options) {
		opts = $.extend({}, $.fn.slide.defaults, options);
		// INIT EVENTS
		self.autoClick = 0;
		self.autoDir = 'up';
		$(this).css("position","relative");
		clicksDis	= 0;
		index		= 0;
		$(opts.upButton).click(this.slideUp);
		$(opts.downButton).click(this.slideDown);
		self.box = $(this);
		$.fn.checkButtons();
		if(opts.autoStart) {
			self.interval = window.setInterval($.fn.autoUp,opts.speedautoStart);
		}
		return this.each(function() {
			var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
			// hide all above 2
			box.find(o.ItemClass+':gt(1)').css("display","none");
			// set right styles
			box.find(o.ItemClass+':eq(0)').css(o.pos1);
			box.find(o.ItemClass+':eq(1)').css(o.pos2);
			// set position absolute
			box.find(o.ItemClass).css("position","absolute");
		});
	},
	autoUp	: function() {
		self.autoClick = 1;
		if(self.autoDir=='down')
			$(opts.downButton).trigger('click');
		else
			$(opts.upButton).trigger('click');
	},
	setOffButton : function(t) {
		t.addClass(opts.offButton);
		t.css("opacity",0.2);
	},
	setOnButton : function(t) {
		t.removeClass(opts.offButton);
		t.css("opacity",1);
	},
	checkButtons : function() {
		if(!self.autoClick) {
			window.clearInterval(self.interval);
			self.interval = '';
		}
		if(self.clicksDis) {
			$.fn.setOffButton($(opts.upButton));
			$.fn.setOffButton($(opts.downButton));
			return false;
		} else {
			$.fn.setOnButton($(opts.upButton));
			$.fn.setOnButton($(opts.downButton));
		}
		// limits
		if(index<1) {
			$.fn.setOffButton($(opts.downButton));
			self.autoDir = 'up';
		}
		obj3 = box.find(opts.ItemClass+':eq('+(index+2)+')');
		if(!obj3.attr("class")) {
			$.fn.setOffButton($(opts.upButton));
			self.autoDir = 'down';
		}
	},
	slideUp : function() {
		if($(this).hasClass(opts.offButton))
			return false;
		self.clicksDis = 1;
		// get Objects
		obj1 = self.box.find(opts.ItemClass+':eq('+(index)+')');
		obj2 = self.box.find(opts.ItemClass+':eq('+(index+1)+')');
		obj3 = self.box.find(opts.ItemClass+':eq('+(index+2)+')');
		$.fn.checkButtons();
		// init + animation
		box.find(opts.ItemClass).css('z-index','10');
		obj1.css('z-index','100');
		obj2.css('z-index','300');
		obj3.css('z-index','200');
		obj3.css(opts.pos2);
		obj3.css("opacity",0);
		obj3.css("display","block");
		obj1.animate({opacity:'0'},{speed:opts.speedFadeOut,queue:'ani2'});
		obj2.animate(opts.pos1,{speed:opts.speedAni,queue:'ani'});
		obj3.animate({opacity:'1'},{speed:opts.speedFadeIn,queue:'ani',callback:function() {
				self.clicksDis = 0;
				$.fn.checkButtons();
				self.autoClick = 0;
		}});

		index++;
		return false;
	},
	slideDown : function() {
		if($(this).hasClass(opts.offButton))
			return false;
		self.clicksDis = 1;
		// get Objects
		obj1 = self.box.find(opts.ItemClass+':eq('+(index-1)+')');
		obj2 = self.box.find(opts.ItemClass+':eq('+(index)+')');
		obj3 = self.box.find(opts.ItemClass+':eq('+(index+1)+')');
		obj4 = self.box.find(opts.ItemClass+':eq('+(index+2)+')');
		$.fn.checkButtons();
		// init + animation
		box.find(opts.ItemClass).css('z-index','10');
		obj1.css('z-index','400');
		obj2.css('z-index','600');
		obj3.css('z-index','500');
		obj4.css('z-index','50');
		obj3.animate({opacity:'0'},{speed:opts.speedFadeOut,queue:'ani2'});
		obj2.animate(opts.pos2,{speed:opts.speedAni,queue:'ani'});
		obj1.animate({opacity:'1'},{speed:opts.speedFadeIn,queue:'ani',callback:function() {
					self.clicksDis = 0;
					$.fn.checkButtons();
					self.autoClick = 0;
					
		}});
		index--;
		return false;
	}
});

/** SLIDE DEFAULT CONFIG **/
$.fn.slide.defaults = {
  pos1 : {
  		left		: '0px'
  },
  pos2 : {
  		left		: '310px'
  },
  speedFadeOut  : 1000,
  speedAni		: 1000,
  speedFadeIn   : 500,
  speedautoStart: 5000,
  autoStart		: 1,
  ItemClass		: '.slide',
  upButton 		: '.slide-up',
  downButton 	: '.slide-down',
  offButton		: 'slide-off'
};

