

function Gallery(name, width, startVMargin, currentFinalVMargin, finalVMargin, galleryDivScrollingDelay, galleryDivScrollingStep, startHMargin, currentFinalHMargin, finalHMargin, galleryScrollingDelay, galleryMinScrollingStep, galleryScrollingFactor, centerRightPic) 
{
	if(!Gallery.Instances) 
		Gallery.Instances = new Array();
	this.id = Gallery.Instances.length;
	Gallery.Instances[this.id] = this;

	this.name = name;
	this.width = width;

	this.startVMargin = startVMargin;
	this.currentFinalVMargin = currentFinalVMargin;
	this.finalVMargin = finalVMargin;
	this.galleryDivScrollingDelay = galleryDivScrollingDelay;
	this.galleryDivScrollingStep = galleryDivScrollingStep;

	this.startHMargin = startHMargin;
	this.currentFinalHMargin = currentFinalHMargin;
	this.finalHMargin = finalHMargin;
	this.galleryScrollingDelay = galleryScrollingDelay;
	this.galleryMinScrollingStep = galleryMinScrollingStep;
	this.galleryScrollingFactor = galleryScrollingFactor;
	
	this.galleryScrollingStep = this.galleryMinScrollingStep;
	
	this.centerRightPic = centerRightPic;

	this.galleryDivScrollingInterval = null;
	this.galleryScrollingInterval = null;
	this.callBackFct = null;
	

	this.scrollGalleryDiv = function()
	{
		currentMargin = document.getElementById(this.name + 'GlobalDiv').style.marginTop;
		currentMargin = currentMargin.replace('px', '');
		currentMargin = parseInt(currentMargin);
		if (isNaN(currentMargin))
			currentMargin = this.startVMargin;
		if (this.currentFinalVMargin > this.finalVMargin)
			currentMargin = Math.min(currentMargin + this.galleryDivScrollingStep, this.currentFinalVMargin);
		else
			currentMargin = Math.max(currentMargin - this.galleryDivScrollingStep, this.currentFinalVMargin);
		if (currentMargin == this.currentFinalVMargin)
		{
			clearInterval(this.galleryDivScrollingInterval);
			if (this.currentFinalVMargin == this.startVMargin)
				document.getElementById(this.name + 'DivContainer').style.display = "none";
		}
		document.getElementById(this.name + 'GlobalDiv').style.marginTop = currentMargin + 'px';
	}

	this.showHideGallery = function()
	{
		clearInterval(this.galleryDivScrollingInterval);
		document.getElementById(this.name + 'DivContainer').style.display = "block";
		currentMargin = document.getElementById(this.name + 'GlobalDiv').style.marginTop;
		currentMargin = currentMargin.replace('px', '');
		currentMargin = parseInt(currentMargin);
		if (isNaN(currentMargin))
			currentMargin = this.startVMargin;
		if (currentMargin < this.startVMargin)
			this.currentFinalVMargin = this.startVMargin;
		else
			this.currentFinalVMargin = this.finalVMargin;
		this.galleryDivScrollingInterval = setInterval('Gallery.Instances['+this.id+'].scrollGalleryDiv()', this.galleryDivScrollingDelay);
	}

	this.getCurrentMargin = function()
	{
		currentMargin = document.getElementById(this.name + 'ImgDiv').style.marginLeft;
		currentMargin = currentMargin.replace('px', '');
		currentMargin = parseInt(currentMargin);
		if (isNaN(currentMargin))
			currentMargin = this.startHMargin;
		return currentMargin;
	}

	this.scrollGalleryStep = function(useScrollingFactor)
	{
		currentMargin = this.getCurrentMargin();
		if (parseFloat(this.galleryScrollingFactor) && useScrollingFactor)
			galleryScrollingStep = Math.max(this.galleryMinScrollingStep, Math.abs(currentMargin - this.currentFinalHMargin) / this.galleryScrollingFactor);
		else
			galleryScrollingStep = this.galleryMinScrollingStep;
		if (this.currentFinalHMargin >= currentMargin)
			currentMargin = Math.min(currentMargin + galleryScrollingStep, Math.min(this.currentFinalHMargin, this.startHMargin));
		else
		{
			if (!this.centerRightPic)
				currentMargin = Math.max(currentMargin - galleryScrollingStep, Math.max(this.currentFinalHMargin, this.finalHMargin));
			else
				currentMargin = Math.max(currentMargin - galleryScrollingStep, this.currentFinalHMargin);
		}

		document.getElementById(this.name + 'ButtonLeft').style.display = 'block';
		document.getElementById(this.name + 'ButtonRight').style.display = 'block';
		if (currentMargin == this.currentFinalHMargin || currentMargin >= this.startHMargin || (currentMargin <= this.finalHMargin && !this.centerRightPic))
		{
			this.scrollGalleryStop();
			this.showHideScrollButtons(currentMargin);
		}
		document.getElementById(this.name + 'ImgDiv').style.marginLeft = currentMargin + 'px';
	}

	this.scrollGalleryLeft = function(finalHMargin)
	{
		this.scrollGalleryStop();
		if (finalHMargin < this.startHMargin)
			this.currentFinalHMargin = finalHMargin;
		else
			this.currentFinalHMargin = this.startHMargin;
		this.galleryScrollingInterval = setInterval('Gallery.Instances['+this.id+'].scrollGalleryStep('+(isNaN(finalHMargin)?'false':'true')+')', this.galleryScrollingDelay);
	}

	this.scrollGalleryRight = function(finalHMargin)
	{
		clearInterval(this.galleryScrollingInterval);
		if (finalHMargin > this.finalHMargin)
			this.currentFinalHMargin = finalHMargin;
		else
			this.currentFinalHMargin = this.finalHMargin;
		this.galleryScrollingInterval = setInterval('Gallery.Instances['+this.id+'].scrollGalleryStep('+(isNaN(finalHMargin)?'false':'true')+')', this.galleryScrollingDelay);
	}
	this.scrollGallery = function(finalHMargin)
	{
		currentMargin = this.getCurrentMargin();
		if (!isNaN(finalHMargin))
		{
			if (currentMargin > finalHMargin)
				this.scrollGalleryLeft(finalHMargin);
			else if (currentMargin < finalHMargin)
				this.scrollGalleryRight(finalHMargin);
		}
	}
	this.scrollGalleryIfNecessary = function(finalHMarginPicLeftBorder, finalHMarginPicRightBorder, callBackFct)
	{
		currentMargin = this.getCurrentMargin();
		picWidth = finalHMarginPicLeftBorder - finalHMarginPicRightBorder;
		if (this.centerRightPic
			|| (currentMargin - this.width > finalHMarginPicRightBorder
			|| currentMargin < finalHMarginPicLeftBorder))
			this.scrollGallery(finalHMarginPicLeftBorder + this.width / 2 - picWidth / 2);
		else 
			eval(callBackFct);
		this.callBackFct = callBackFct;
	}
	this.scrollGalleryStop = function()
	{
		clearInterval(this.galleryScrollingInterval);
		eval(this.callBackFct)
		this.callBackFct = null;
	}
	this.showHideScrollButtons = function(currentMargin)
	{
		if (currentMargin >= this.startHMargin)
			document.getElementById(this.name + 'ButtonLeft').style.display = 'none';
		if (currentMargin <= this.finalHMargin)
			document.getElementById(this.name + 'ButtonRight').style.display = 'none';
	}
	
	this.setFinalHMargin = function(finalHMargin)
	{
			this.finalHMargin = finalHMargin;
	}
	this.setWidth = function(width)
	{
			this.width = width;
	}
}