(function($) {
	$.fn.eside_slide_3 = function(options) {
		var 
			defaults = {
				effect_duration: 700,
				buttons_box_id: 'eside_slide_3_buttons',
				controls_box_id: 'eside_slide_3_controls',
				txt_of: 'of',
				button_active: false,
				button_inactive: false,
				controls_prev: '&lt;',
				controls_next: '&gt;'
			},
			options = $.extend(defaults, options),
			list_container = this.find('.pages').children().filter('ul'),
			list = list_container.children(),
			pages = list.length,
			in_effect = false,
			page_width = list.first().width(),
			width = pages * page_width,
			current = 0,
			self = this;
		
		list_container.width(width);
		
		function change_slide(pos) {
			in_effect = true;
						
			var left = -pos * page_width;
			current = pos;
			
			if(options.button_active && options.button_inactive) {
				self.find('#' + options.buttons_box_id + ' > a').html(options.button_inactive);
				self.find('#' + options.buttons_box_id + ' > #' + options.buttons_box_id + '_' + pos).html(options.button_active);
			}
			
			list_container.animate({
				left: left
			}, options.effect_duration, function() {
				in_effect = false;
			});
			
			return current;
		}
		
		if(pages > 1) {
			var buttons = [];
			for(var i = 0; i < pages; i++) {
				if(options.button_active && options.button_inactive) {
					if(i == 0) button = options.button_active;
					else button = options.button_inactive;
					
					buttons.push('<a href="javascript:void(0)" id="' + options.buttons_box_id + '_' + i + '">' + button + '</a>');
				} else buttons.push('<a href="javascript:void(0)" id="' + options.buttons_box_id + '_' + i + '">' + (i + 1) + '</a>');
			}
			
			this.append(
				'<div id="' + options.buttons_box_id + '">' +
					buttons.join('') +
				'</div>'
			);
			
			this.find('#' + options.buttons_box_id + ' > a').click(function() {
				var pagina = parseInt(this.id.replace(options.buttons_box_id + '_', ''), 10);
				change_slide(pagina);
			});
			
			var controls = [
				'<a href="javascript:void(0)" class="prev">' + options.controls_prev + '</a>',
				'<a href="javascript:void(0)" class="next">' + options.controls_next + '</a>'
			];
			
			this.append(
				'<div id="' + options.controls_box_id + '">' +
					controls.join('') +
				'</div>'
			);
			
			this.find('#' + options.controls_box_id + ' .prev').click(function() {
				if(current > 0) change_slide(current - 1);
			});
			this.find('#' + options.controls_box_id + ' .next').click(function() {
				if(current < pages - 1) change_slide(current + 1);
			});
		}
	}
})(jQuery);
