function BBGallery( action, itemID, params ) {

	switch(action) {
	
		// Associe les fonctions de la galerie a un objet
		case "set":
			
			break;
	
		// Recupere l HTML de la galerie via ajax 
		case "get":

			if(typeof itemID == "undefined" && BBVars.BBGallery.currentProdID == 0)
				itemID = BBSettings.defaultItemName + "1";
			else {
				var prodItem 						= $("#"+itemID);
					BBVars.BBGallery.currentProdID 	= prodItem.attr("prodID");
					BBVars.BBGallery.currentColorID = prodItem.attr("colorID");
			}

			$.get(
				BBVars.pagesURL 	+"ajax/photos.cfm"
				+"?prodID="			+BBVars.BBGallery.currentProdID
				+"&colorID="		+BBVars.BBGallery.currentColorID,
				function(data) { BBTool_openMsgBox(data, true);}
			);
			
			break;
		
		// Iniatilise le zoom
		case "zoomInit":
			
			break;
			
		// Construit la galerie a partir d une liste d images deja presente dans la page
		case "build":
		
			if(typeof itemID == "undefined")
				itemID = BBSettings.BBGallery.defaultItemName;
			
			// Recuperation de la config de zoom
			var zoom = eval(jQuery("#"+itemID).attr("zoom"));
			//jQuery("#"+itemID).attr("zoom","process");
			
			// On traite chaque lien contenu dans la galerie
			jQuery("#"+itemID+" a.BBGalery_img").each( function(i) {
			
				// Premier lien correspond a l image principale de la galerie
				if(i==0) {
					
					// Definition des proprietes css de base
					// On fixe la taille du viewport ou seront affiches les images
					jQuery(this)
						.css({
							display:		"block",
							position:		"relative",
							overflow:		"hidden",
							width:			BBVars.BBGallery.viewPortWidth,
							height:			BBVars.BBGallery.viewPortHeight
						});
						
					// Gestion du chargement de l image
					// On reaffiche l image une fois qu elle a fini d etre chargee
					jQuery("img", this)
						.bind("load", function() {
							BBGallery("zoom",this,0);
							jQuery(this).animate({opacity:1});
						})
						.addClass("BBGallery_mainProdImg");
					BBGallery("zoom",jQuery("img", this),0);
					
					// Si la galerie possede un zoom
					if(zoom) {
						
						// Reglage des proprietes css de base
						jQuery("img", this)
							.css({
								position:		"absolute",
								top:			0,
								left:			0,
								zIndex:			99
							})
							
							// Gestion de la molette(necessite BBTools)
							.bind("mousewheel", function(e, d) {
								// Si on est pas deja en train de zoomer
								//if(jQuery("#"+itemID+" li:first a img:animated").length==0) BBGallery("zoom",this,(d*2));
								BBGallery("zoom",this,(d*2));
								e.preventDefault();
								
							// Gestion du drag de l image
							// Permet de voir les parties masquees quand on a zoome
							}).bind("mousedown", function(e) {
							
								// On indique que le drag a commencer en stockant dans un attribut HTML
								jQuery(this).attr("drag", true);
								
								// On sauvegarde la position du click de base dans des attributs HTML
								jQuery(this).attr("xStart", Math.round(e.pageX - jQuery(this).eq(0).offset().left));
								jQuery(this).attr("yStart", Math.round(e.pageY - jQuery(this).eq(0).offset().top));
								
								// Blocage du comportement par defaut
								e.preventDefault();
								
							}).bind("mouseup", function(e) {
							
								// Le bouton de la souris est relache on arrete le drag
								jQuery(this).attr("drag", false);
								
								// Blocage du comportement par defaut
								e.preventDefault();
								
							}).bind("mousemove", function(e) {
							
								// Si on deplace la souris pendant que le bouton gauche est enfonce
								if(eval(jQuery(this).attr("drag"))) {
								
									// Recuperation des coordonnees actuelles de l image
									var currentXPos = eval(jQuery(this).css("left").replace("px",""));
									var currentYPos = eval(jQuery(this).css("top").replace("px",""));
								
									// Recuepration des dimensions actuelles de l image(prend en compte le zoom)
									var currentWidth = eval(jQuery(this).css("width").replace("px",""));
									var currentHeight = eval(jQuery(this).css("height").replace("px",""));
								
									// Calcul de la nouvelle position en X
									var xPos = currentXPos + Math.round(e.pageX - jQuery(this).eq(0).offset().left) - eval(jQuery(this).attr("xStart"));
									if(xPos>0) xPos = 0;
									if(xPos<BBVars.BBGallery.viewPortWidth-currentWidth) xPos = BBVars.BBGallery.viewPortWidth-currentWidth;

									// Calcul de la nouvelle position en Y									
									var yPos = currentYPos + Math.round(e.pageY - jQuery(this).eq(0).offset().top) - eval(jQuery(this).attr("yStart"));
									if(yPos>0) yPos = 0;
									if(yPos<BBVars.BBGallery.viewPortHeight-currentHeight) yPos = BBVars.BBGallery.viewPortHeight-currentHeight;
									
									// Positionnement de l image en fonction des nouvelles coordonnees
									jQuery(this).css({top: yPos+"px", left: xPos+"px"});	
		
								}
								
								// Blocage du comportement par defaut
								e.preventDefault();
								
							});
					}
					
				// Les liens de la galerie(thumbnail)
				} else {
				
					// Gestion de l affichage de l image a la place de l image principale
					jQuery(this).bind("click", function(e) {
					
						// On recuepere le lien de la nouvelle image a afficher
						// S il y a un zoom on prend le format superier stocke dans l attribut href
						var newImg = (zoom) ? jQuery(this).attr("href") : jQuery(this).attr("rel");

						// Au click on masque l image principale avant de changer sa source
						// La gestion du reaffichage de l image se fait dans l evenement load de l image principale
						jQuery("#"+itemID+" a.BBGalery_img img.BBGallery_mainProdImg").animate({opacity: 0}, function() {
							jQuery(this).attr("src", newImg);
						});
						
						// Blocage du comportement par defaut
						e.preventDefault();
					});
				}
			})
			break;
			
		// Affiche une image de la galerie
		case "imgDsp":
			break;
			
		// Affiche l image suivante de la galerie
		case "imgNext":
			break;
			
		// Affiche l image precedente de la galerie
		case "imgPrev":
			break;
			
		// Affiche la fenetre de zoom
		case "zoom":

			var obj = jQuery(itemID);
			
			// Dezoom Max
			if(params==0) {
				obj.css({
					height:	BBVars.BBGallery.viewPortHeight,
					width:	BBVars.BBGallery.viewPortWidth,
					top:	0,
					left:	0
				});
			} else {
				// Le zoom est modifie par une valeur en pixel
				if(typeof(params)=="string") params = eval(params.substring(0,params.length-2));
				// Le zoom est modifie par un pourcentage
				else params = Math.floor(BBVars.BBGallery.zoomHeight * params / 100);
				
				var objHeight	= jQuery(obj).height();
				var objWidth	= jQuery(obj).width();
				var objXPos		= (typeof(obj.css("left"))!="undefined") ? obj.css("left") : "0";
				var objYPos		= (typeof(obj.css("top"))!="undefined") ? obj.css("top") : "0";
				
				objWidth = jQuery(obj).width()+params*2;
				if(objWidth+params < BBVars.BBGallery.viewPortWidth) objWidth = BBVars.BBGallery.viewPortWidth;
				if(objWidth+params > BBVars.BBGallery.zoomWidth) objWidth = BBVars.BBGallery.zoomWidth;
				
				objHeight = jQuery(obj).height()+params*2;
				if(objHeight+params < BBVars.BBGallery.viewPortHeight) objHeight = BBVars.BBGallery.viewPortHeight;
				if(objHeight+params > BBVars.BBGallery.zoomHeight) objHeight = BBVars.BBGallery.zoomHeight;

				objXPos	= eval(objXPos.substring(0,objXPos.length-2))-params;
				if(objXPos>0) objXPos = 0;
				if(objXPos<BBVars.BBGallery.viewPortWidth-objWidth) objXPos = BBVars.BBGallery.viewPortWidth-objWidth;
				
				objYPos	= eval(objYPos.substring(0,objYPos.length-2))-params;
				if(objYPos>0) objYPos = 0;
				if(objYPos<BBVars.BBGallery.viewPortHeight-objHeight) objYPos = BBVars.BBGallery.viewPortHeight-objHeight;
			
				obj.css({
						height:	objHeight,
						width:	objWidth,
						top:	objYPos,
						left:	objXPos
					});
				
			}
			break;
			
		// Agrandissement de l image courante
		case "zoomIn":
			jQuery("#"+itemID+" img").attr("src", jQuery("#"+itemID+" a").attr("href"));
			jQuery("#"+itemID+" img").animate({width: '+=200', height: '+=200', left: '-=100', top: '-=100'}, "fast");
			break;
			
		// Retrecissement de l image courante
		case "zoomOut":
			jQuery("#"+itemID+" img").attr("src", jQuery("#"+itemID+" a").attr("href"));
			jQuery("#"+itemID+" img").animate({width: '-=200', height: '-=200', left: '+=100', top: '+=100'}, "fast");
			break;
			
		// Affichage de l image courante a un niveau de zoom defini
		case "zoomTo":
			break;
	
		default:
			break;
	
	}


}
