/*
 * jQuery.Train - Train jQuery slider.
 * Date: 11.03.2010
 * @author Dragos Ungur
 * @mail dragos.ungur@design19.ro
 * @version 1.0
 */

(function($){
	$.fn.jtrain = function(custom) {

		// settings
		var defaults = {
							weight  : 990,
							height  : 495,
							opacity : 0.6,
							delay   : 5000,
							speed   : 1000
					   };
		$.extend(defaults, custom);

		// jtrain
		var block  = this,

		slider_l,
		slider = $('ul',block),
		slider_r,

		animation_wrk = false,

		page_w = $(window).width(),
		left   = ( page_w - defaults.weight ) / 2,
		width  = defaults.weight - left,

		kid  = 1,
		kids = slider.children().size() + 1;

		// create left and right
			// left
			slider_l = block.clone();
			block.before(slider_l);

			$(slider_l).addClass('left').css({
				'position' 	: 'absolute',
				'left'  	: '-' + width + 'px',
				'top'		: '0px',
				'opacity'   : defaults.opacity
			});

			// right
			slider_r = block.clone();
			block.after(slider_r);

			$(slider_r).addClass('right').css({
				'position'	: 'absolute',
				'width' 	: left + 'px',
				'right' 	: '0px',
				'top'		: '0px',
				'opacity'   : defaults.opacity
			});

			// main
			$(block).css({
				left: left + 'px'
			});

		// duplicates
			// slider left
			var sld_l = $('ul',slider_l).children().eq(kids-2).clone();
			$('ul',slider_l).prepend(sld_l);

			// slider
			var sld = slider.children().eq(0).clone();
			slider.append(sld);

			// slider right
			var sld_r = $('ul',slider_r).children().eq(0).clone();
			$('ul',slider_r).children().eq(0).remove();
			$('ul',slider_r).append(sld_r);
			sld_r = $('ul',slider_r).children().eq(0).clone();
			$('ul',slider_r).append(sld_r);

		// create blocks
		html  = '<p>';
		for(i=0;i<=(kids-2);i++) html += '<a href="#" ' + (i==0?'class="selected"':'') + '></a>';
		html += '</p>';

		$(block).append(html);

		//$('a',block).each(function(i){
		//	$(this).attr('href',( i + 1 )-3).click(function(){ jtrain_start( ( i + 1 )-3); return false; });
		// });

		// slide :)
		var jtrain_wrk = setInterval("jtrain_start();",defaults.delay);
		jtrain_start = function(id){

			if(id) {
				clearInterval(jtrain_wrk);
				kid = id - 1;
			}

			if(!animation_wrk) {
				animation_wrk = true;

				// slider left
				$('ul',slider_l).animate({
					left : '-' + ( kid * defaults.weight ) + 'px'
				}, defaults.speed , function(){
					if(kid==kids) {
						$('ul',slider_l).css('left','0px');
					}
				});

				// slider
				$('a',block).removeClass('selected');
				$('p',block).children().eq( ( kid >= ( kids - 1 ) ? 0 : kid ) ).addClass('selected');

				slider.animate({
					left : '-' + ( kid * defaults.weight ) + 'px'
				}, defaults.speed , function(){
					if(kid==kids) {
						slider.css('left','0px');
					}
				});

				// slider right
				$('ul',slider_r).animate({
					left : '-' + ( kid * defaults.weight ) + 'px'
				}, defaults.speed , function(){
					if(kid==kids) {
						$('ul',slider_r).css('left','0px');
						kid = 1;
					}

					// get ready for next :)
					animation_wrk=false;
				});

				// increment
				kid++;

			}

		}

	}
})(jQuery);
