/*
Adds a lightbox-style popup wrapper around a SlideShow
*/

var Lightbox =  (function()
{
	var SlideshowSingleton = new Class(
	{
		dlg:				Class.Empty,
		curtain:			Class.Empty,
		lightbox_caption:	Class.Empty,
		lightbox_credit:	Class.Empty,
		lightbox_link:		Class.Empty,
		lightbox_save_link:	Class.Empty,
		lightbox:			Class.Empty,
		checkedLinks:		{},
		
		initialize: function()
		{
			this.dlg = new ModalDialog('slideshow_lightbox', {draggable: true, handle: $('lightbox_title')});	
			this.lightbox = $('slideshow_lightbox');
			this.lightbox_caption = $('lightbox_caption');
			this.lightbox_credit = $('lightbox_credit');
			this.lightbox_link = $('lightbox_link');
			this.lightbox_save_link = $('lightbox_save_link');
		},
		
		checkLink: function(key)
		{
			if (key in this.checkedLinks)
			{
				return this.checkedLinks[key];
			}
			else
			{
				var isLink = httpRequest("/portfolio/check_item_is_link.php?LOC_key=" + key);
				this.checkedLinks[key] = isLink;
				return isLink;
			}			
		},
		
		showLightbox: function(url, hideCaption)
		{
			
			this.dlg.show(function()
			{
				
				var slideshow = new Slideshow();
				
				slideshow.showSpinner();
				
				if (hideCaption)
				{
					this.lightbox_caption.innerHTML = "";
					this.lightbox_credit.innerHTML = "";
					this.lightbox_link.innerHTML = "";
					this.lightbox_save_link.innerHTML = "";
					this.lightbox_save_link.setStyle("display", "none");
				}
				else
				{
					this.lightbox_caption.innerHTML = hideCaption ? "" : slideshow.getCaption(url);
					this.lightbox_credit.innerHTML = slideshow.getCredit(url);
					
					var key = slideshow.getKey(url);
					
					if (key)
					{
						this.lightbox_link.innerHTML = "<a target='_blank' href='/primary_sources/item.php?item=" + key + "'>More Info</a>";
						var isLink = this.checkLink(key);
						
						if (isLink == "0")
						{
							this.lightbox_save_link.innerHTML = "<a href='javascript:saveLink(" + slideshow.getKey(url) + ");' class='button'><img src='/images/portfolio/my_links_icon_small.gif' style='border: none;display: inline-block' align='absmiddle'/>&nbsp;Save in My Links</a>";
							this.lightbox_save_link.setStyle("display", "block");	
						}
						else if (isLink == "1")
						{
							this.lightbox_save_link.innerHTML = "<img src='/images/portfolio/my_links_icon_small.gif' style='border: none;display: inline-block' align='absmiddle'/>&nbsp;<i>This item has been saved in your <a href='/portfolio/links.php'>My Links</a> collection</i>";
							this.lightbox_save_link.setStyle("display", "block");	
						}
						else
						{
							this.lightbox_save_link.innerHTML = "";
							this.lightbox_save_link.setStyle("display", "none");
						}
					}
					else
					{
						this.lightbox_link.innerHTML = "";
						this.lightbox_save_link.innerHTML = "";
						this.lightbox_save_link.setStyle("display", "none");
					}	
				}
				
				slideshow.showImage(url);
			}.bind(this));
			
			return false;	
		},
		
		hideLightbox: function()
		{
			this.dlg.hide();
		},
		
		saveLink: function(key)
		{
			var added = httpRequest("/portfolio/add_link.php?LOC_key=" + key);
			
			if (added != "0")
			{
				this.lightbox_save_link.innerHTML = "<img src='/images/portfolio/my_links_icon_small.gif' style='border: none;display: inline-block' align='absmiddle'/>&nbsp;<i>This item has been saved in your <a href='/portfolio/links.php'>My Links</a> collection</i>";
			}
		}
	});
	
	var instance;
	return function()
	{
		if (instance) return instance;
		else instance = new SlideshowSingleton();
		return instance;
	}
})();

function showLightbox(url, hideCaption)
{
	return new Lightbox().showLightbox(url, hideCaption);
}

function hideLightbox()
{
	return new Lightbox().hideLightbox();
}

function saveLink(key)
{
	return new Lightbox().saveLink(key);
}

