var galleryImages = new Array();
var galleryAssets = new Array();
var currentImage = -1;
var galleryFrame;

function parseGalleryEntries(xmlDoc)
{
	var entries = xmlDoc.getElementsByTagName("entry");
	for (var i = 0; i < entries.length; i++)
		galleryImages.push(galleryPath + entries[i].attributes.getNamedItem("fn").value);
	galleryAssets = new Asset.images(galleryImages, {
							onProgress: function(loadedImageIndex) {
											galleryFrame.setHTML('<p>Chargement des images... ' + Math.floor(((loadedImageIndex + 1) / galleryImages.length) * 100) + '%</p>');
										},
							onComplete: function() {
											galleryFrame.empty();
											showNextImage();
										}
							});
}

function clipInside(element, clipper)
{
	var elementRect = { left: element.getLeft(),
						top: element.getTop(),
						right: element.getLeft() + element.getSize().size.x,
						bottom: element.getTop() + element.getSize().size.y,
						width: element.getSize().size.x,
						height: element.getSize().size.y
					  };
					  
	var clipperRect = { left: clipper.getLeft(),
						top: clipper.getTop(),
						right: clipper.getLeft() + clipper.getSize().size.x,
						bottom: clipper.getTop() + clipper.getSize().size.y,
						width: clipper.getSize().size.x,
						height: clipper.getSize().size.y
					   };
	
	var cr = { left: (clipperRect.left > elementRect.left) ? (clipperRect.left - elementRect.left) : 0,
			   top: (clipperRect.top > elementRect.top) ? (clipperRect.top - elementRect.top) : 0,
			   right: (clipperRect.right < elementRect.right) ? (elementRect.width - (elementRect.right - clipperRect.right)) : elementRect.width,
			   bottom: (clipperRect.bottom < elementRect.bottom) ? (elementRect.height - (elementRect.bottom - clipperRect.bottom)) : elementRect.height
			 };
	
	element.setStyle('clip', makeRect(cr.top, cr.left, cr.bottom, cr.right, 'px', ', '));
}

function centerInside(element, container)
{
	
}

function makeRect(top, right, bottom, left, suffix, sep)
{
	return 'rect(' + top + suffix + sep + right + suffix + sep + bottom + suffix + sep + left + suffix + ')';
}

function showNextImage()
{
	if (galleryImages.length == 0)
		return;

	currentImage++;
	if (currentImage >= galleryImages.length)
		currentImage = 0;
	
	displayImage();
}

function displayImage()
{
	var img = galleryAssets[currentImage];
	img.setStyle('opacity', 0);
	img.injectInside(galleryFrame);
	var imgMainX = Math.floor((galleryFrameSize.x - img.getSize().size.x) / 2);
	var imgMainY = Math.floor((galleryFrameSize.y - img.getSize().size.y) / 2);
	if (galleryFrame.getStyle('position') != 'absolute')
	{
		imgMainX += galleryFrame.getLeft();
		imgMainY += galleryFrame.getTop();
	}
	img.setStyles({ 'left' : imgMainX + 'px',
					'top' : imgMainY + 'px'
				  });
	new Fx.Style(img, 'opacity', { duration: 1000, onComplete: function() { hideImage.delay(2000); } }).start(1);
}

function hideImage()
{
	var hidingImg = galleryAssets[currentImage];
	new Fx.Style(hidingImg, 'opacity', { duration: 1000,
			onComplete: function() {
				hidingImg.remove();
				showNextImage();
			}
	}).start(0);
}

function startGallery()
{
	galleryFrame = $('gallery-frame');
	galleryFrameSize = galleryFrame.getSize().size;
	
	var myXHR = new XHR({method: 'get',
							onSuccess: function() {
								parseGalleryEntries(this.response.xml);
							}
		}).send(externPath + 'extern-gallery.php', 'path=' + galleryPathURLEncoded);
}

function stopGallery()
{
	hideImage();
	galleryImages = new Array();
	galleryAssets = new Array();
	currentImage = -1;
}
