function init_lightbox(idImageFlow, directoryOffset) {
	if ($(idImageFlow)){
		LightBoxLite.initElementImageFlow(idImageFlow, directoryOffset);
		
		var imageflowLightBox = new ImageFlow();
		imageflowLightBox.init({ ImageFlowID:idImageFlow,reflectionGET: '&bgc=ffffff&fade_start=20%', imageCursor: 'pointer' });
	}
}

Position.getWindowSize = function(w) {
    var array = [];

    w = w ? w : window;
    array.width = array[0] = w.innerWidth || (w.document.documentElement.clientWidth || w.document.body.clientWidth);
    array.height = array[1] = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight);

    return array;
}


LightBoxLite = function() {
    
    var largeurMax = 800;
    var borderSize = 10;
    var resizeDuration = 0.3;
    var annonceLien = "Copiez manuellement le lien direct vers cette image ci-dessous pour stocker le lien dans le presse-papier";
	
	var elementImageFlow;
	var directoryOffset;
	var elementImage;
	var elementImageSuivante;
	var elementImagePrecedente;
    
    /**
     * resizeImageContainer
     *
     * @param {Number} desired width
     * @param {Number} desired height
     */
    function resizeImageContainer( imgWidth, imgHeight) {

        // get current width and height
		var dimensionsContainer = $('outerImageContainer').getDimensions();
        var widthCurrent = dimensionsContainer['width'];
        var heightCurrent = dimensionsContainer['height'];

        // get new width and height
        var widthNew = (imgWidth  + (borderSize * 2));
        var heightNew = (imgHeight  + (borderSize * 2));

        // scalars based on change from old to new
        var xScale = ( widthNew / widthCurrent) * 100;
        var yScale = ( heightNew / heightCurrent) * 100;

        // calculate size difference between new and old image, and resize if necessary
        var wDiff = widthCurrent - widthNew;
        var hDiff = heightCurrent - heightNew;

        if (!( hDiff === 0)) {
            new Effect.Scale('outerImageContainer', yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); 
        }
        if (!( wDiff === 0)) {
            new Effect.Scale('outerImageContainer', xScale, {scaleY: false, delay: resizeDuration, duration: resizeDuration}); 
        }

        $('imageDataContainer').setStyle({ width: widthNew + "px"});
		//$('imageTitle').setStyle({ width: widthNew + "px"});

        showImage();
    }
    
    /**
     * updateDetails
     * 
     */
    function updateDetails() {
        //var caption = $('lightboxImage').src.split('/').pop().split('.')[0].gsub("%20", " ");
        //$('imagecaption').innerHTML = caption; 
        $('imagecaption').update(elementImage['title']);
        $('imageTitle').update(elementImage['alt']);
        $('imageContainer').setStyle({ height: $('outerImageContainer').getDimensions()['height'] + "px"});
        
		var elementsImages = elementImageFlow.select('img');
		var totalImages = elementsImages.size();
		var positionCourante = elementsImages.indexOf(elementImage);
		$('numberDisplay').update('Image '+(positionCourante+1)+' sur '+totalImages);
		
		/*new Effect.Parallel(
            [ new Effect.SlideDown( 'imageTitle', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
        	  new Effect.Appear('imageTitle', { sync: true, duration: resizeDuration})
        	]
        );*/
                    
        new Effect.Parallel(
            [ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), 
              new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration, 
					afterFinish: function() {
						if (elementImagePrecedente && elementImagePrecedente != null) {
							$('prevLink').show();
						}
						if (elementImageSuivante && elementImageSuivante != null) {
							$('nextLink').show();
						}
					} }) ] 
        );
    }
	
	
	function calculImagePrecedente() {
		$('prevLink').hide();
		if (elementImage && elementImage != null) {
			var imagesPrecedentes = elementImage.previousSiblings();
			if (imagesPrecedentes && imagesPrecedentes.size()>0) {
				elementImagePrecedente = imagesPrecedentes.first();
			} else {
				elementImagePrecedente = null;
			}
		}
	}
	
	function calculImageSuivante() {
		$('nextLink').hide();
		if (elementImage && elementImage != null) {
			var imagesSuivantes = elementImage.nextSiblings();
			if (imagesSuivantes && imagesSuivantes.size()>0) {
				elementImageSuivante = imagesSuivantes.first();
			} else {
				elementImageSuivante = null;
			}
		}
	}
    
    /**
     * showImage
     * Display image and begin preloading neighbors.
     */
    function showImage() {
        $('imageloading').hide();
        new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: 'end', afterFinish: updateDetails });
    }
    
    function checkForPreloadComplete(imgPreloader) {
        if (imgPreloader.complete) {
            $('lightboxImage').src = imgPreloader.src;
            
            // Calcul de la largeur optimale
            var largeurOptimale = imgPreloader.width;
            var hauteurOptimale = imgPreloader.height;

            if (largeurMax < largeurOptimale) {
            	hauteurOptimale = (hauteurOptimale * largeurMax) / largeurOptimale;
            	largeurOptimale = largeurMax;
            	
            }
            
			$('lightboxImage').setStyle({width: largeurOptimale+"px", height: hauteurOptimale+"px"});
            resizeImageContainer(largeurOptimale, hauteurOptimale);
        } else {
            setTimeout(checkForPreloadComplete.bind(this, imgPreloader), 100);
        }
    }
    return {
        /**
         * displayImage
         * display an image in a lightbox
         *
         * @param {String} URL of image
         */
		displayImage : function(idImage) {
			elementImage = $(idImage);
			if (!elementImage) {
				return;
			}
/*alert('1 = '+hashSrcs.get(elementImage['id']));
alert('2 = '+hashSrcs.get(elementImage['id']).split('&')[0]);
alert('3 = '+hashSrcs.get(elementImage['id']).split('&')[0].split('?img=')[1]);
*/
/*JG*/			var imageUrl = directoryOffset+hashSrcs.get(elementImage['id']).split('&')[0]/*.split('?img=')[1]*/;//directoryOffset+elementImage['src'].split('&')[0].split('?img=')[1];
			var lienUrl = hashLiens.get(elementImage['id']);
			
			// resize de 'photo' a la taille du document
			var hauteurTotale = $('footer').cumulativeOffset()['top'] + $('footer').getHeight();
			$('photo').setStyle({height: hauteurTotale+'px'});
			
			// Lien de telechargement de l'image
/*JG*///			$('imageBottomFileLink').writeAttribute("href", imageUrl);
			$('imageBottomFileLink').writeAttribute("href", imageUrl);
			$('imageBottomFileLink').writeAttribute("target", "_blank");
			
			// Lien du lien de l'image
			$('imageBottomLienLink').writeAttribute(
				"onclick", 
				//"prompt('"+annonceLien+"', '"+ajouter_unique_parametre(String(window.location), 'details', elementImage['id'])+"');"
				"prompt('"+annonceLien+"', '"+lienUrl+"');"
			);
			
			// calcul image precedente / calcul image suivante
			calculImagePrecedente();
			calculImageSuivante();
			
			$('imageloading').show();
            $('lightboxImage').hide();
            //$('imageTitle').hide();
            $('imageDataContainer').hide();
            $('photo').show();

            var imgPreloader = new Image();
            imgPreloader.src = imageUrl;

            // once image is preloaded, resize image container
            setTimeout(checkForPreloadComplete.bind(this, imgPreloader), 100);
        },
        
        reset : function() {
			elementImage = null;
			elementImageSuivante = null;
			elementImagePrecedente = null;
			
			$('photo').hide();
            $('imageloading').show();
            $('lightboxImage').hide();
            //$('imageTitle').hide();
            $('imageDataContainer').hide();
            $('lightboxImage').src = "";
            $('outerImageContainer').setStyle({width : "250px", height: "250px"});
            
        },
		
		imageSuivante : function() {
			if (elementImageSuivante && elementImageSuivante != null) {	
				LightBoxLite.displayImage(elementImageSuivante['id']);
			}
		},
		
		imagePrecedente : function() {
			if (elementImagePrecedente && elementImagePrecedente != null) {
				LightBoxLite.displayImage(elementImagePrecedente['id']);
			}
		},
		
		initElementImageFlow : function(element, _directoryOffset) {
			//Event.observe($('photo'), 'click', function(event) { LightBoxLite.reset(); });
			//Event.observe($('lightbox'), 'click', function(event) { Event.stop(event); });
			Event.observe($('prevLink'), 'click', function(event) { LightBoxLite.imagePrecedente(); });
			Event.observe($('nextLink'), 'click', function(event) { LightBoxLite.imageSuivante(); });
			Event.observe($('imageBottomNav'), 'click', function(event) { LightBoxLite.reset(); });
			
			
//alert('initElementImageFlow');
			elementImageFlow = $(element);
			directoryOffset = _directoryOffset;
			
			elementImageFlow.select("img").each(
				function(imageCourante) {
//alert('imageCourante = '+imageCourante['id']);
					imageCourante.writeAttribute("longdesc", "javascript:LightBoxLite.displayImage('"+imageCourante['id']+"');");
				}
			);
		}
    };
	
}();