var GlobalPhotoViewer;

//*** Class PhotoViewer ********************************************************************

function PhotoViewer(viewerName, imgName, descName, waitName)
{
	this.ViewerName;
	this.ViewerImageName;
	this.ViewerDescriptionName;
	this.WaitMessageName;
	this.ShowError;
	this.ResetPhotoViewer;
	this.initialize(viewerName, imgName, descName, waitName);
}

PhotoViewer.prototype.initialize = function(viewerName, imgName, descName, waitName)
{
	this.ViewerName = viewerName;
	this.ViewerImageName = imgName;
	this.ViewerDescriptionName = descName;
	this.WaitMessageName = waitName;
	this.ShowPhotoViewer = ShowViewer;
	this.HidePhotoViewer = HideViewer;
	this.ShowWaitMessage = ShowWait;
	this.HideWaitMessage = HideWait;
	this.SetWaitMessage = SetMessage;
	this.SetPhotoViewer = SetPhoto;
	this.ShowError = ShowErrorOnWait;
	this.ResetPhotoViewer = ResetPhoto;
	GlobalPhotoViewer = this;
}

//*** PhotoViewer Library ****************************************************************** 

function SetPhoto(desc, path, imgHeight, imgWidth, postID, photoID, last, next)
{
	var photo = new Image();
	var img = GetElement(this.ViewerImageName);
	var viewer = GetElement(this.ViewerName);
	var parentHeight = viewer.style.height.substring(0, viewer.style.height.length - 2);
	var parentWidth = viewer.style.width.substring(0, viewer.style.width.length - 2);
	var imgTop = (parentHeight - imgHeight) / 2 - 30;
	var imgLeft = (parentWidth - imgWidth) / 2;
	var textTop = imgHeight * 1 + imgTop + 15;
	var imgDescription = GetElement(this.ViewerDescriptionName);
	
	//Set image and description properties
	photo.src = "/images/" + path;
	img.style.top = imgTop + "px";
	img.style.left = imgLeft + "px";
	img.src = photo.src;
	img.style.top = imgTop + "px";
	img.style.left = imgLeft + "px";	
	imgDescription.style.top = textTop + "px";
	imgDescription.innerHTML = desc;
	
	// Set next and last photos
	if (last > 0)
	{
	    document.getElementById("LastPhoto").href = "javascript:BeginRequest(" + last + ", 'content.aspx?op=" 
	        + postID + "', '" + this.ViewerName + "', '" + this.ViewerImageName + "', '" 
	        + this.ViewerDescriptionName + "', '" + this.WaitMessageName + "');";
	}
	
	if (next > 0)
	{
	    document.getElementById("NextPhoto").href = "javascript:BeginRequest(" + next + ", 'content.aspx?op=" 
	        + postID + "', '" + this.ViewerName + "', '" + this.ViewerImageName + "', '" 
	        + this.ViewerDescriptionName + "', '" + this.WaitMessageName + "');";
	}
}

function ResetPhoto(path)
{
	var photo = new Image();
	var img = GetElement(this.ViewerImageName);
	var viewer = GetElement(this.ViewerName);
	var imgDescription = GetElement(this.ViewerDescriptionName);
	
	//Set image and description properties
	img.src = "/images/" + path;
	imgDescription.innerHTML = "";
}

function ShowViewer()
{
	var elementTop = GetCurrentTop();
	SwitchVisibilityState(this.ViewerName, "visible", elementTop);
}

function HideViewer()
{
	SwitchVisibilityState(this.ViewerName, "hidden", -1);
}

function ShowWait(topModifier)
{
	var elementTop = GetCurrentTop() + topModifier;
	SwitchVisibilityState(this.WaitMessageName, "visible", elementTop);
}

function HideWait()
{
	SwitchVisibilityState(this.WaitMessageName, "hidden", -1);
}

function SetMessage(message)
{
	var element = GetElement(this.WaitMessageName);
	element.innerHTML = message;
}

function SwitchVisibilityState(elementName, state, elementTop)
{
	var element = GetElement(elementName);
	
	if(elementTop >= 0)
		element.style.top = elementTop + "px";
		
	element.style.visibility = state;
}

function ShowErrorOnWait(message, height, width)
{
	var element = GetElement(this.WaitMessageName);
	element.innerHTML = message;
	element.style.height = height;
	element.style.width = width;
}

function GetCurrentTop()
{
	var pos;
	
	if (window.innerHeight)
		pos = window.pageYOffset;
	
	else if (document.documentElement && document.documentElement.scrollTop)
		pos = document.documentElement.scrollTop;
	
	else if (document.body)
		pos = document.body.scrollTop;
	
	return pos;
}
		
function GetElement(elementName)
{
	var element;
	
	if (document.getElementById)
		element = document.getElementById(elementName);
	
	else if (document.all)
		element = document.all[elementName];
	
	return element;
}
