﻿/* 

	@Description: Tips Air france
	@Auteur: Neov
	@Creation: 15/10/2008

*/

(function($){
		
	$.fn.extend({
		
		// ajout tips
		tips: function()
		{
			var $parent = $(this);
			var $tips = $(document.createElement('p'));
			var $zoom = $(document.createElement('div'));
			var $mask = $(document.createElement('div'));
			
			
			// creation du div.tips dans le html
			$('body').append( 
				$tips
					.addClass('tips')
					.hide()
			);
			
			// creation du zoom		
			$('.content_equipe').append(
				$zoom.addClass('tips-zoom'),
				$mask
					.addClass('mask-zoom')
					.css({opacity:0.5, filter:'alpha(opacity=50)'})
			);
			
			// suppression des textes alternatifs et title
			$parent.find('ul').find('li').find('a')
				.attr({title: ''})
				.drawTips($parent);
			
			$parent.find('ul').find('li').find('a').find('img').attr({alt: ''});
		},
		
		// creation du contenu du tips et attribution des evenements
		drawTips: function($parent)
		{
			$(this).each(
				function(a)
				{
					
					// rollover et rollout des elements avec tips
					$(this).hover(
						function()
						{
							// variable de positionnement
							var posTop = $(this).offset().top + $(this).parent().height();
							var posLeft = $(this).offset().left;
							
							// mise en avant de l'element au survol
							$parent.find('ul').find('li').eq(a).addClass('active');
							$parent.find('ul').find('li').each(
								function(li)
								{
									$(this).dequeue();
									if (li != a) $(this).animate({opacity: 0.3}, 500);
								}
							);
							
							// donnee a afficher
							var data = $parent.find('ul').find('li').eq(a).find('p').html()
					
							// affichage du tips
							$('.tips')
								.html(data)
								.show()
								.css({top: posTop + 'px', left: posLeft + 'px'});
						},
						
						function()
						{
							
							// suppression de la mise en avant
							$parent.find('ul').find('li').dequeue();
							$parent.find('ul').find('li').eq(a).removeClass('active');
							$parent.find('ul').find('li').animate({opacity: 1}, 500);
							
							// destruction du tips
							$('.tips')
								.empty()
								.hide();
						}
					).click(
						function()
						{	
						
							// texte du detail
							var detail = $(this).parent().find('p.detail').html();
							var $langue = $(this).parent().find('p.flag_').html();
							var $lp = $(document.createElement('div'));
							$lp.addClass('langue');
							$lp.html( $(this).parent().find('p.lp').html() );
							
							
							// preload image
							var zoomPreloader = new Image();
							
							// affichage du masque
							$('.mask-zoom').show();
							
							// affichage preloader
							$('.tips-zoom')
								.empty()
								.append('<img src="' + j_basepath + 'design/front/images/design/preload.gif" class="waiting" />')
								.show();
							
							
							
							// action apres chargement
							zoomPreloader.onload = function () {
								zoomPreloader.onload = null;
								
								// ajout classe sur la grande image
								$(zoomPreloader).addClass('zoom-img');
								
								// bouton de fermeture du popup
								var closeLink = document.createElement('a');
								
								$(closeLink)
									.text('X')
									.attr({title: 'Fermer'})
									.addClass('btn-fermer')
									.click(
										function()
										{
											$('.tips-zoom').fadeOut(200);
											$('.mask-zoom').fadeOut(200);
										}
									);
								
								// texte du popup
								var contentText = document.createElement('p');
								$(contentText).html( detail );
								
								// affichage du zoom
								$('.tips-zoom').find('.waiting').fadeOut(200);
								
								// langue
								var $flag = $(document.createElement('div'));
								
								$flag
									.addClass('flag')
									.append(
										$lp, 
										$langue
									);
								
								$('.tips-zoom').find('.waiting').queue(
									function()
									{
										$('.tips-zoom')
											.empty()
											.append(
												$(closeLink),
												$(zoomPreloader),
												$(contentText),
												$flag
										);
									}
								);
							};
									
							var nSrc = $(this).find('img').attr('src').replace('expert', 'expert/grandePhoto').replace('72','121').replace('101', '171');
							
							zoomPreloader.src = nSrc;
							
							return false;
						}
					);
				}
			);
		}
		
	});
			
})(jQuery);

$(function() {
		   
	$('.withTips').tips();
	
});
