$(function() {
	var $slider = $('#slider'),
		$slides = $slider.find('.slides'),
		$buttons = $slider.find('.menuslide li a');

	var active = -1,
		frame_shown = false;
		
	var step = 0,
		width = 0;
	
	// Intervals
	var cycle_interval,
		frame_interval;
		
	// Speeds
	var interval_speed = 2000,
		fadein_speed = 1500,
		fadeout_speed = 1000,
		slide_speed = 1000;
	
	$slides.find('li').each(function (i) {
		$this = $(this);
		
		if (i==0) {
			step = $this.width();
		}
		width += step;
	});

	// Fix total slides width
	$slider.find('.slides').width(width);
	
	// Attach buttons actions
	$buttons.each(function(i) {
		$this = $(this);
		$this.attr('rel', i);
		
		$this.click(
			function() {
				slide(i, true);
				return false;
			}
		);
	});
	
	function slide(i, show_frame) {
		if (active == i) {
			return;
		}
		
		var delay = 0;
		clearTimeout(frame_interval);
		
		$buttons.removeClass('active');
		if (i > -1) {		
			$buttons.eq(i).addClass('active');
		}
		
		// Clear frames if any
		if (frame_shown) {
			frame_shown = false;
			$slides.find('li:nth(' + (active+1) + ') .text').fadeOut(fadeout_speed);
			delay = fadeout_speed / 4;
		}
		$slides.delay(delay).stop().animate({'left': '-' + ((i+1) * step)}, slide_speed);

		active = i;
		if (show_frame && !frame_shown) {
			frame_interval = setTimeout(function () {
				frame_shown = true;
				$slides.find('li:nth(' + (i+1) + ') .text').stop().fadeIn(fadein_speed);
			}, interval_speed);
		}
	}
});
