/*
* ReflexeDiaporama
* Version 0.1 
* Copyright (c) 2010 Alexandre BRY - ReflexeCE
*
*/
(function($) {
	
	var id = 1;
	var $defaults = {
		loop : true,
		loop_duration: 5000,
		link_title: 'En savoir plus...',
		opacity_inactive: 0.5,
		preview_width: 275,
		preview_height: 210,
		height: 240,
		title: ''
	};

	$.fn.reflexeDiaporama = function (options)
	{
		var settings = $.extend(false, $defaults, options);
		
		return this.each(function()
		{
			var images = new Array();
			var unique_id = id;
			var current_image = 0;
			id++;
			
		    $(this).children('ul').children('li').each(function() {
		    	
		    	var image = new Array();
		    	image["link"] 		= $(this).children('a').attr('href');
		    	image['src'] 		= $(this).children('a').attr('rel');
		    	image['thumbSrc'] 	= $(this).children('a').children('img').attr('src');
		    	image['caption'] 	= $(this).children('a').children('img').attr('alt');
		    	image['description']= $(this).children('a').children('span.description').html();
		    	image['target'] 	= $(this).children('a').attr('target');
				
				images.push(image);
		    });
		    
		    if (images.length > 0)
		    {
		    	$(this).empty();
		    	$(this).append('<div id="reflexeDiaporama-'+unique_id+'" class="reflexeDiaporama-container" style="height: '+settings['height']+'px;"></div>');
          
          
		    	/** Create the thumbs **/
		    	$('#reflexeDiaporama-'+unique_id).append('	<ul class="reflexeDiaporama-thumbs-list"></ul>');
		    	
		    	for (i in images) {
		    		if (i == 0) {
		    			defaultClass = 'thumb-active';
		    		} else {
		    			defaultClass = 'thumb-inactive';
		    		}
			    	if (images[0]['link'] == '')
			    	{
			    		images[0]['link'] = '#';
			    	}
		    		$('#reflexeDiaporama-'+unique_id+' ul').append('<li class="reflexeDiaporama-thumb '+defaultClass+'" id="thumb-'+unique_id+'-'+i+'"><a href="'+images[i]['link']+'"><img src="'+images[i]['thumbSrc']+'" alt="'+images[i]['caption']+'"/></a></li>');
			    }
		    	
		    	//margin top
		    	if (settings['height'] > 250)
		    	{
		    	  margin = parseInt((settings['height'] - 239) / 2);
		    	}
		    	else
		    	{
		    	  margin = 5;
		    	}
          
		    	$('#reflexeDiaporama-'+unique_id).append('	<div class="reflexeDiaporama-preview" id="preview-'+unique_id+'" style="margin-top:'+margin+'px;height:225px;"></div>');
		    	
		    	$('#reflexeDiaporama-'+unique_id).append(' <div style="clear:both;></div>');
		    	
          /** SET THE TITLE IF EXISTS **/
          if (settings['title'] != '')
          {
            $('#preview-'+unique_id).append(' <div class="reflexeDiaporama-title">'+settings['title']+'</div>');
          }
		    	
		    	$('#preview-'+unique_id).append('		<div class="reflexeDiaporama-preview-image"></div>');

		    	$('#preview-'+unique_id+' .reflexeDiaporama-preview-image').append('<a href="'+images[0]['link']+'" class="preview-link"></a>');
		    	$('#preview-'+unique_id+' .reflexeDiaporama-preview-image a').append('		<img src="'+images[0]['src']+'" alt="'+images[0]['caption']+'" id="image-'+unique_id+'" style="width:100%;"/>');
		    	
		    	$('#preview-'+unique_id).append('<div class="reflexeDiaporama-preview-extras-voile"></div>');
		    	$('#preview-'+unique_id).append('<div class="reflexeDiaporama-preview-extras"></div>');
		    	$('#preview-'+unique_id+ ' .reflexeDiaporama-preview-extras').append('<div class="reflexeDiaporama-preview-caption" id="caption-'+unique_id+'">'+images[0]['caption']+'</div>');
		    	$('#preview-'+unique_id+ ' .reflexeDiaporama-preview-extras').append('<div class="reflexeDiaporama-preview-description" id="description-'+unique_id+'">'+images[0]['description']+'</div>');
		    	$('#preview-'+unique_id+ ' .reflexeDiaporama-preview-extras').append('<div class="reflexeDiaporama-preview-link" id="link-'+unique_id+'"><a href="'+images[0]['link']+'" target="'+images[0]['target']+'" title="'+settings['link_title']+'" class="reflexeDiaporama-link">&nbsp;</a></div>');
		    	
		    	$(".thumb-inactive").fadeTo('fast',settings['opacity_inactive']);
		    	$(".reflexeDiaporama-preview-extras-voile").fadeTo('fast',0.75);
		    	
		    	function preload() {
		    		for (i in images) {
			    		var tmp_image = new Image();
			    		tmp_image.src = images[i]['src'];
				    }
		    	}
		    	
		    	//play function
		    	function play() {
					desable_all_thumbs();
					enable_thumb(current_image);

					current_image = next_image();
					timer = setTimeout(function(){play();}, settings['loop_duration']);
				}
		    	
		    	function next_image()
		    	{
		    		if (current_image < (images.length-1))
		    		{
		    			current_image++;
		    		}
		    		else
		    		{
		    			current_image = 0;
		    		}
		    		
		    		return current_image;
		    	}
		    	
		    	function enable_thumb(image)
		    	{
					$('#thumb-'+unique_id+'-'+image).removeClass('thumb-inactive');
					$('#thumb-'+unique_id+'-'+image).addClass('thumb-active');
					$('#thumb-'+unique_id+'-'+image).fadeTo(2,1);			

					$('.reflexeDiaporama-preview-extras').css('display','none');
          $('.reflexeDiaporama-preview-extras-voile').css('display','none');
          
					$('#image-'+unique_id).fadeOut(4,
						function () {
							$('#image-'+unique_id).attr('src',images[image]['src']);
							$('#image-'+unique_id).attr('alt',images[image]['caption']);

							if (images[image]['caption'] != '') {
								$('#caption-'+unique_id).html(images[image]['caption']);
								$('#description-'+unique_id).html(images[image]['description']);							
								
								$('.reflexeDiaporama-preview-extras').css('display','');
								$('.reflexeDiaporama-preview-extras-voile').css('display','');
								
								if (images[image]['link'] != '' || images[image]['link'] != '#')
								{
									$('#link-'+unique_id+' a').attr('href',images[image]['link']);
									$('.reflexeDiaporama-preview-link').css('display','');
								}
								else
								{
								  $('.reflexeDiaporama-preview-link').css('display','');
								}
							}
							$('#image-'+unique_id).fadeIn(4);
						}
					);
					
					if (images[image]['link'] == '')
			    	{
						images[image]['link'] = '#';
			    	}
					$('#preview-'+unique_id+' .preview-link').attr('href',images[image]['link']);
		    	}
		    	
		    	function desable_all_thumbs()
		    	{
		    		$('.reflexeDiaporama-thumb').removeClass('thumb-active');
					$('.reflexeDiaporama-thumb').addClass('thumb-inactive');
					$(".thumb-inactive").fadeTo(2,settings['opacity_inactive']);
		    	}

		    	if (settings['loop'] == true)
		    	{
		    		play();
		    	}
		    	preload();
		    	
		    	
		    	$("li.reflexeDiaporama-thumb").hover(
						function() { 	
							clearTimeout(timer); 
							//update the preview
							id_thumb = $(this).attr('id');
							id_image = id_thumb.split('-');
							id_image = id_image[2];
							
							desable_all_thumbs();
							enable_thumb(id_image);
							current_image = id_image;
						}, 
						function() {timer = setTimeout(function(){play();}, settings['loop_duration']);});
		    	
		    	$(".reflexeDiaporama-preview").hover(
						function() { 	
							clearTimeout(timer); 
						}, 
						function() {timer = setTimeout(function(){play();}, settings['loop_duration']);});
		    	
		    }
		    else
		    {
		    	$(this).html('');
		    }
		});
		
		
	}

})(jQuery);
