/**
 * carroussel.js
 * 
 * Created by Benoît Durand on 27 mars 2009
 * 
 * @author Benoît Durand
 * @version $Id: carroussel.js 1327 2009-05-14 12:40:34Z rleclercq $
 */

var ajax = null;
var ajax_last_url = null;

var ajax_loaded = false;
var img_loaded = false;

var hideShadow = function(src){
	if(src == "img") img_loaded = true;
	if(src == "ajax") ajax_loaded = true;

	//if(!ajax_loaded || !img_loaded) return;
	
	ajax_loaded = false;
	img_loaded = false;
	
	$("#loading").fadeOut('fast');
}


var clickVisuel = function(src){
	$('#visuelsSmall a.actif').removeClass('actif');
	$(src).addClass('actif');
	
	var idVisuel = $(src).attr('id').replace('smallVisuel', '');
	$('#carrousselProduit .image a.actif').removeClass('actif');
	$('#visuel'+idVisuel).addClass('actif');
	
	return false;
}


$(document).ready(function() {
	$.ajaxSetup({
		cache: true
	});
	
	$('#carrousselProduit .image a img').load(function(){
		hideShadow("img");
	});
	
	$('#carrousselProduits a').click(function() {
		// Expression régulière du nom d'un visuel d'un produit
		var re = /[a-z]+_([0-9]+)_[0-9]+\.[A-Za-z]+/;
		var imageSrc = $(this).find('img').attr('src');
		var idProduit = imageSrc.match(re)[1];

		$('#carrousselProduits img.bordure').removeClass('bordure');
		$(this).find('img').addClass('bordure');
		
		ajax_url = '/catalogue/index/process/produit/'+idProduit+'/format/json';
		if(ajax_url==ajax_last_url) return false;
		if(ajax) ajax.abort();
		ajax_last_url = ajax_url;
		
		// Animation de chargement
		$("#loading").fadeTo('fast', 0.8);
		$("#loading").animate({opacity: 'show' }, 'fast');
		
		ajax = $.getJSON(ajax_url,
			function(data) {
				var produit = data.produit;

				// Visuels multiples : miniatures
				var htmlVisuels = '';
				var first = true;
				var i, visuel;
				if(produit.visuels[2]){
					for(i in produit.visuels){
						visuel = produit.visuels[i];
						var visuelSuffix = '_'+produit.id+'_'+visuel.id+'.'+visuel.extension;
						htmlVisuels += '<li>';
						htmlVisuels += '<a href="#visuel='+visuel.id+'" id="smallVisuel'+visuel.id+'"';
						if(first) 
							htmlVisuels += ' class="actif"';
						else 
							htmlVisuels += ' class=""';
						htmlVisuels += '>';
						htmlVisuels += '<img src="'+imageSrc.replace(re, 'mini'+visuelSuffix)+'" alt="'+produit.nom+' ('+visuel.id+')" />';
						htmlVisuels += '</a>';
						htmlVisuels += '</li>';
						first = false;
					}
				}
				//console.log($('#visuels').html());
				//console.log(htmlVisuels);
				$('#visuelsSmall').html(htmlVisuels);
				$('#visuelsSmall a').click(function() {
					return clickVisuel(this);
				});
				
				// Visuels multiples : taille normale
				htmlVisuels = '';
				first = true;
				for(i in produit.visuels){
					visuel = produit.visuels[i];
					var visuelSuffix = '_'+produit.id+'_'+visuel.id+'.'+visuel.extension;
					htmlVisuels += '<a ';
					htmlVisuels += ' id="visuel'+visuel.id+'"';
					htmlVisuels += ' href="'+imageSrc.replace(re, 'large'+visuelSuffix)+'"';
					htmlVisuels += ' rel="shadowbox['+produit.id+'];options={initialHeight: 135, initialWidth: 245}"';
					if(first) 
						htmlVisuels += ' class="actif"';
					else 
						htmlVisuels += ' class=""';
					htmlVisuels += '>';
					htmlVisuels += '<img src="'+imageSrc.replace(re, 'medium'+visuelSuffix)+'" alt="'+produit.nom+'" />&nbsp;';
					htmlVisuels += '</a>';
					first = false;
				}
				//console.log($('#carrousselProduit div.image').html());
				//console.log(htmlVisuels);
				$('#carrousselProduit div.image').html(htmlVisuels);
				//$('#carrousselProduit div.image a.actif img').attr('onload', "hideShadow('img')");
				
				// Comme le lien est modifié dynamiquement, il faut configurer manuellement la Shadowbox.
				Shadowbox.clearCache();
				Shadowbox.setup($("#carrousselProduit div.image a"), {
			    	gallery: produit.id,
			    	initialHeight: 135, 	// Catalogue_Categorie_Produit_Visuel::$_sizes[Catalogue_Categorie_Produit_Visuel::MEDIUM]['height']/2
			    	initialWidth: 245 		// Catalogue_Categorie_Produit_Visuel::$_sizes[Catalogue_Categorie_Produit_Visuel::MEDIUM]['width']/2
				});
				
				// Data
				$('#carrousselProduit div.data .nom').html(produit.nom);
				$('#carrousselProduit div.data .description').html(produit.description);
				
				if (typeof setProduct == "function") {
					setProduct(data.produit);
				}
				
				hideShadow("ajax");
			}
		);
		
		return false;
	});
	
	
	// Visuels multiples
	$('#visuelsSmall a').click(function() {
		return clickVisuel(this);
	});
	
	$('#visuelsSmall').fadeTo(0, 0.5);
	$('#visuelsSmall').hover(function(){
		$(this).fadeTo("fast", 1);
	},function(){
		$(this).fadeTo("fast", 0.5);
	});

});


