/**
 * @author Adrien Baptiste
 * v. 1.00
 */
(function($) {
        // définition du plugin jQuery
        $.fn.buller = function(params) {
                // Fusionner les paramètres par défaut et ceux de l'utilisateur
                params = $.extend( {nombreBulle: 1}, params);
				
				function estSuperpose(mXd,mXf,mYd,mYf,Xd,Xf,Yd,Yf){
			
				if(mXf < Xd)
					return true;
				if(mXd > Xf)
					return true;
				if(mYf < Yd)
					return true;
				if(mYd > Yf)
					return true;
					
				// Pas supperposé
				return false;
			
			}
                // Traverser tous les nœuds.
				 var largeurDiv = this.width();
				 var hauteurDiv = this.height();
				 for(i=0 ; i< params.nombreBulle ; i++) {
					 
					 $(this).append('<div class="bulle"><div class="mood">Heureux</div><div class="pseudo">Shinework</div></div>' );
					
					var pasDeConflit = false;
					var cooY;
					var cooX
					// Tant qu'il y a des conflit on recommence
					while(pasDeConflit == false){
						
																										 
						cooY = Math.round(Math.random()*(hauteurDiv-$('.bulle:last').height()));
						cooX = Math.round(Math.random()*(largeurDiv-$('.bulle:last').width()));
						
						// On parcours toutes les bulles sauf celle en cours
						$('#'+this.attr('id')+' .bulle:not(last)').each(function(index) {

								var bulleEnCours = $(this).position();	
								var Xdeb = bulleEnCours.left;
								var Ydeb = bulleEnCours.top;
								var Xfin = $(this).width()+bulleEnCours.left;
								var Yfin = $(this).height()+bulleEnCours.top;
								pasDeConflit = estSuperpose(cooX,cooX+$('.bulle:last').width(),cooY,cooY+$('.bulle:last').height(),Xdeb,Xfin,Ydeb,Yfin);
								if(pasDeConflit == false) { return false; }
						 });
					}
					 
					 $('.bulle:last').css('top', cooY+'px');
					 $('.bulle:last').css('left', cooX+'px');
					 
				 }
				 
        // Permettre le chaînage par jQuery
        return this;
        };
})(jQuery);
