var aImageGalleryImages = new Array();

function ClsImageGalleryConfig()
{
	this.thumbgallerywidth = 720;
	this.thumbwidth = 33;
	this.thumbheight = 33;
	this.thumbstoshow = 8;
	this.padding = 5;
	this.windowmargin = 20;
	this.minimumwindowwidth = 300;
	this.minimumwindowheight = 300;
	this.scrollstep = 4;
	this.scrollfrequency = 20;
	this.timer = null;
	this.ua = navigator.userAgent.toLowerCase();
	this.bIsMSIE = ( this.ua != null && this.ua.indexOf( "msie" ) != -1 );
	this.SetThumbGalleryWidth = ClsImageGalleryConfig_SetThumbGalleryWidth;
	this.FixThumbsToShow = ClsImageGalleryConfig_FixThumbsToShow;
}
function ClsImageGalleryConfig_SetThumbGalleryWidth(iWidth)
{
	this.thumbgallerywidth = iWidth;
	this.FixThumbsToShow();
}
function ClsImageGalleryConfig_FixThumbsToShow()
{
	this.thumbstoshow = parseInt(this.thumbgallerywidth / (this.thumbwidth + this.padding));
}





function ClsImageGalleryImage(sName, sFileName, sComments)
{
	this.name = sName;
	this.divname = "div" + sName;
	this.filename = sFileName;
	this.comments = sComments;
	this.image = new Image();
	this.download = ClsImageGalleryImage_Download;
	this.getcode = ClsImageGalleryImage_GetCode;
	this.getdivcode = ClsImageGalleryImage_GetDivCode;
}

function ClsImageGalleryImage_Download()
{
	this.image.src = this.sFileName;
	if (!bIsMSIE) this.image.onload = ShowImage(this.name);
}

function ClsImageGalleryImage_GetDivCode(iLeft)
{
	return "<div id=\"" + this.divname + "\" class=\"imagegallerythumbnail\" style=\"left:" + (iLeft + oImageGalleryConfig.padding) + "px;\">Loading...</div>";
}

function ClsImageGalleryImage_GetCode(bSmallSize)
{
	return "<img id=\"" + (bSmallSize ? "" : "bigImage_")+ this.name + "\" src=\"" + this.filename + "\"" + (bSmallSize ? " style=\"WIDTH:100%;HEIGHT:100%;\" onmouseover=\"ImageGalleryShowBigImage('" + this.name + "');ImageGalleryEnlargeMe('" + this.name + "');\" onmouseout=\"ImageGalleryShrinkMe('" + this.name + "');\"" : " style=\"WIDTH:100%;\"") + ">";
}

function ImageGalleryEnlargeMe(sImageName)
{
	var oImage = ImageGalleryFindImage(sImageName);
	if (oImage != null)
	{
		var oDiv = document.getElementById(oImage.divname);
		if (oDiv)
		{
			oDiv.style.width = (oImageGalleryConfig.thumbwidth + oImageGalleryConfig.padding) + "px";
			oDiv.style.height = (oImageGalleryConfig.thumbheight + oImageGalleryConfig.padding) + "px";
			oDiv.style.top = (parseInt(oDiv.offsetTop) - parseInt(oImageGalleryConfig.padding / 2)) + "px";
			oDiv.style.left = (parseInt(oDiv.offsetLeft) - parseInt(oImageGalleryConfig.padding / 2)) + "px";
		}
	}
}

function ImageGalleryShrinkMe(sImageName)
{
	var oImage = ImageGalleryFindImage(sImageName);
	if (oImage != null)
	{
		var oDiv = document.getElementById(oImage.divname);
		if (oDiv)
		{
			oDiv.style.width = oImageGalleryConfig.thumbwidth + "px";
			oDiv.style.height = oImageGalleryConfig.thumbheight + "px";
			oDiv.style.top = (parseInt(oDiv.offsetTop) + parseInt(oImageGalleryConfig.padding / 2)) + "px";
			oDiv.style.left = (parseInt(oDiv.offsetLeft) + parseInt(oImageGalleryConfig.padding / 2)) + "px";
		}
	}
}

function ImageGalleryFindImage(sImageName)
{
	var i = 0;
	var oImage = null;
	while ((i < aImageGalleryImages.length) && (oImage == null))
	{
		if (aImageGalleryImages[i].name == sImageName) oImage = aImageGalleryImages[i]
		i++;
	}
	return oImage;
}

function ImageGalleryShowImage(sImageName)
{
	var oImage = ImageGalleryFindImage(sImageName);
	if (oImage != null)
	{
		var oDiv = document.getElementById(oImage.divname);
		if (oDiv) oDiv.innerHTML = oImage.getcode(true);
	}
}




function ImageGalleryAddNewImage(sName, sFileName, sComments)
{
	aImageGalleryImages[aImageGalleryImages.length] = new ClsImageGalleryImage(sName, sFileName, sComments);
	//aImageGalleryImages[aImageGalleryImages.length-1].download();
}

function ImageGalleryFixGalleryListWidth()
{
	var oDivImageList = document.getElementById("divImageGalleryImageList");
	if (oDivImageList)
	{
		oDivImageList.style.width = (aImageGalleryImages.length * (oImageGalleryConfig.thumbwidth + oImageGalleryConfig.padding) + oImageGalleryConfig.padding) + "px";
	}
}

function ImageGalleryShowBigImage(sImageName)
{
	var oImage = ImageGalleryFindImage(sImageName);
	if (oImage != null)
	{
		var oDiv = document.getElementById("divImageGalleryMainPicture");
		if (oDiv) oDiv.innerHTML = oImage.getcode(false);
		var oDiv2 = document.getElementById("divImageGalleryVariableComments");
		if (oDiv2) oDiv2.innerHTML = oImage.comments;
	}
}

function ImageGalleryLoadSmallImages()
{
	//if (bIsMSIE)
	//{
		var oDiv = null;
		for (i = 0; i < aImageGalleryImages.length; i++)
		{
			oDiv = document.getElementById(aImageGalleryImages[i].divname);
			if (oDiv) oDiv.innerHTML = aImageGalleryImages[i].getcode(true);
		}
	//}
}


function ImageGalleryMoveGalleryToLeft()
{
	var iLeft = 0;
	var oDivThumbnails = document.getElementById("divImageGalleryThumbnails");
	var oDivImageList = document.getElementById("divImageGalleryImageList");
	if (oDivThumbnails && oDivImageList)
	{
		iLeft = oDivThumbnails.scrollLeft - oImageGalleryConfig.scrollstep;
		if (iLeft < 0)
		{
			iLeft = 0;
		}
		oDivThumbnails.scrollLeft = iLeft;
	}
	oImageGalleryConfig.timer = setTimeout(ImageGalleryMoveGalleryToLeft, oImageGalleryConfig.scrollfrequency);
}

function ImageGalleryMoveGalleryToRight()
{
	var iLeft = 0;
	var oDivThumbnails = document.getElementById("divImageGalleryThumbnails");
	var oDivImageList = document.getElementById("divImageGalleryImageList");
	if (oDivThumbnails && oDivImageList)
	{
		iLeft = oDivThumbnails.scrollLeft + oImageGalleryConfig.scrollstep;
		if ((iLeft + oDivThumbnails.offsetWidth) > oDivImageList.offsetWidth)
		{
			iLeft = oDivImageList.offsetWidth - oDivThumbnails.offsetWidth;
		}
		oDivThumbnails.scrollLeft = iLeft;
	}
	oImageGalleryConfig.timer = setTimeout(ImageGalleryMoveGalleryToRight, oImageGalleryConfig.scrollfrequency);
}

function ImageGalleryStopTimer()
{
	clearTimeout(oImageGalleryConfig.timer);
}

function ImageGalleryFixSizes()
{
	var oDivComments = document.getElementById("divImageGalleryComments");
	var oDivMainPicture = document.getElementById("divImageGalleryMainPicture");
	var oDivThumbnails = document.getElementById("divImageGalleryThumbnails");
	var oDivGoLeft = document.getElementById("divImageGalleryGoLeft");
	var oDivGoRight = document.getElementById("divImageGalleryGoRight");
	var oDivImageList = document.getElementById("divImageGalleryImageList");
	if (oDivComments && oDivMainPicture && oDivThumbnails && oDivGoLeft && oDivGoRight && oDivImageList)
	{
		if ((document.body.clientHeight > oImageGalleryConfig.minimumwindowheight) && (document.body.clientWidth > oImageGalleryConfig.minimumwindowwidth))
		{
			oDivComments.style.height = (document.body.clientHeight - parseInt(oDivThumbnails.offsetHeight) - (oImageGalleryConfig.windowmargin * 2) - oImageGalleryConfig.padding) + "px";
			oDivMainPicture.style.width = (document.body.clientWidth - parseInt(oDivComments.offsetWidth) - (oImageGalleryConfig.windowmargin * 2) - oImageGalleryConfig.padding) + "px";
			oDivMainPicture.style.height = (document.body.clientHeight - parseInt(oDivThumbnails.offsetHeight) - (oImageGalleryConfig.windowmargin * 2) - oImageGalleryConfig.padding) + "px";
			oDivGoLeft.style.top = (document.body.clientHeight - parseInt(oDivThumbnails.offsetHeight) - oImageGalleryConfig.windowmargin) + "px";
			oDivGoRight.style.top = (document.body.clientHeight - parseInt(oDivThumbnails.offsetHeight) - oImageGalleryConfig.windowmargin) + "px";
			oDivGoRight.style.left = (document.body.clientWidth - parseInt(oDivGoRight.offsetWidth) - oImageGalleryConfig.windowmargin) + "px";
			oDivThumbnails.style.left = (oDivGoLeft.offsetWidth + oImageGalleryConfig.windowmargin) + "px";
			oDivThumbnails.style.width = (document.body.clientWidth - oDivGoLeft.offsetWidth - oDivGoRight.offsetWidth - (oImageGalleryConfig.windowmargin * 2)) + "px";
			oDivThumbnails.style.top = (document.body.clientHeight - parseInt(oDivThumbnails.offsetHeight) - oImageGalleryConfig.windowmargin) + "px";
			oDivImageList.style.width = (aImageGalleryImages.length * (oImageGalleryConfig.thumbwidth + oImageGalleryConfig.padding) + oImageGalleryConfig.padding) + "px";
		}
	}
	//oImageGalleryConfig.SetThumbGalleryWidth(document.body.clientWidth - (oImageGalleryConfig.windowmargin * 2));
}

function ImageGalleryDrawDivs()
{
	var sDivs = "";
	for (i = 0; i < aImageGalleryImages.length; i++)
	{
		sDivs += aImageGalleryImages[i].getdivcode(i * (oImageGalleryConfig.thumbwidth + oImageGalleryConfig.padding));
	}
	var oDivImageList = document.getElementById("divImageGalleryImageList");
	if (oDivImageList)
	{
		oDivImageList.innerHTML = sDivs;
	}
}

var oImageGalleryConfig = new ClsImageGalleryConfig();
