﻿$(document).ready(function() 
{
	$('.slideshow').each(function()
	{
		var $container = $('>.container', this),
			$controls = $('>.controls', this);
		var intervalId,
			self = this,
			suspend = false,
			state,
			laststate,
			paused = false,
			suspended = false;
			
		var conf = 
		{
			interval : 2000,
			duration : 400
		};
		
		$(this).hover
		(
			function(){ suspended = true; updateState(); },
			function(){ suspended = false; updateState(); }
		);
			
		$.each($(this).attr('class').split(' '), function(i,v)
		{
			var res = /([a-z]+)(\d+)/.exec(v);
			if(res) conf[res[1]] = res[2];
		});
		
		if($controls.hasClass('generate'))
		{
			var all = $controls.hasClass('all');
			if($controls.hasClass('prev') || all)
				$('<a href="javascript:void()" class="prev" data-action="prev">Prev</a>').appendTo($controls);
			if($controls.hasClass('next') || all)
				$('<a href="javascript:void()" class="next" data-action="next">Next</a>').appendTo($controls);
			if($controls.hasClass('numbers') || all)
				$container.find('>.slide').each(function(i){ $('<a href="javascript:void()" data-index="'+i+'">'+(i+1)+'</a>').appendTo($controls); });
			if($controls.hasClass('pause') || all)
				$('<a href="javascript:void()" class="pause" data-action="pause">Pause</a>').appendTo($controls);
		}
		
		$controls.find('a').click(function()
		{
			clearInterval(intervalId);
			var idx = $(this).attr('data-index');
			var act = $(this).attr('data-action');
			if(idx)
				animateSlider(idx);
			else if(act)
			{
				idx = $container.find('>.slide.active').index();
				switch(act)
				{
					case 'prev': animateSlider(idx < 1 ? $container.children().length-1 : idx-1); break;
					case 'next': animateSlider(idx >= $container.children().length-1 ? 0 : idx+1); break;
					case 'pause': paused = !paused; updateState(); break;
				}
			}
			initSliderTimer();
			return false;
		});
		
		$container.find('>.slide:first')
			.addClass('active');
		$controls.find('a[data-index]:first')
			.addClass('active');
		initSliderTimer();
		updateState();
		
		function animateSlider(idx)
		{
			//console.log('animateSlider', idx);
			var $slides = $container.find('>.slide');
			var p = $slides.eq(idx).position();
			//if(!p || !p.left)
			//	return;
			$container.animate({left: -p.left, top: -p.top}, {queue: false, duration: conf.duration});
			$controls.find('a[data-index]')
				.removeClass('active')
				.eq(idx).addClass('active');
			$slides
				.removeClass('active')
				.eq(idx).addClass('active');
		}

		function initSliderTimer()
		{
			clearInterval(intervalId);
			intervalId = setInterval(function()
			{
				if(state == 'active')
				{
					var nextIndex = $container.find('>.slide.active').index() + 1;
					if(nextIndex >= $container.find('>.slide').length)
						nextIndex = 0;
					animateSlider(nextIndex);
				}
			}, conf.interval);
		}
		
		function updateState()
		{
			if(paused)
				state = 'paused';
			else if(suspended)
				state = 'suspended';
			else
				state = 'active';
			
			//$(self).toggleClass('suspended', suspended).toggleClass('paused', paused);
			$controls.find('a.pause')
				.toggleClass('active', paused || suspended)
				.toggleClass('paused', paused);
			if(laststate)
				$(self).removeClass(laststate)
			$(self).addClass(state);
			laststate = state;
		}
	});
	
	var s = $('.TestimonialsFader');
	if(s.length)
	{
		s.before('<div class="nav"><a id="prevCycle">Prev</a><a id="nextCycle">Next</a></div>')
		.before('<div id="pagerNav">')
		.cycle(
		{
			fx:    'fade',
		    speed:  300 ,
			timeout: 10000 ,
		    cleartype:  1, // enable cleartype corrections
			pager: '#pagerNav',
			next:   '#nextCycle',
		    prev:   '#prevCycle'
		});
	}
	s = $('.HomeFader');
	if(s.length)
	{
		s.cycle(
		{ 
			fx:    'fade', 
		    speed:  300 ,
			timeout: 10000 ,
		    cleartype:  1 // enable cleartype corrections
		});
	}

	$("input").placeholder();

});

