﻿var pnlImg, nCPage, nImgPP, nPages, bLoaded, ImgBd, ImgHd, NAs, JW;
var bOpen = new Boolean(false);
yEvent.onAvailable(p + "pnlGViewport", InitGallery);
yEvent.onAvailable(p + "hdNA", function() { NAs = parseInt(this.value); });
yEvent.onAvailable(p + "hdJW", function() { JW = parseInt(this.value); });

function SetLoaded()
{
	bLoaded = true;
}

function InitGallery()
{
	yEvent.onAvailable(p + "hdCPage", function() { nCPage = parseInt(this.value); });
	yEvent.onAvailable(p + "hdNPages", function() { nPages = parseInt(this.value); });
	yEvent.onAvailable(p + "hdNImgPP", function() { nImgPP = parseInt(this.value); });
	yEvent.onAvailable(p + "hdImgHd", function() { if(this.value != "") { ImgHd = Sys.Serialization.JavaScriptSerializer.deserialize(this.value); } });
	yEvent.onAvailable(p + "pnlPageCtrl", function() { yEvent.on(p + "pnlPageCtrl", "click", pnlPageCtrl_Click); });
	yEvent.on(p + "pnlGViewport", "click", pnlGViewport_Click);
	pnlImg = new YAHOO.widget.Panel("pnlImg", { width: "auto", modal: true, close: true, visible: false, draggable: false, effect: { effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.3} });
	pnlImg.setBody("<img id='imgL' src='' alt='' /><div id='imgData'><span id='lblYr'></span><span id='lblMed'></span><span id='lblSz'></span><span id='lblEd'></span><span id='lblDesc'></span></div>");
	pnlImg.beforeShowEvent.subscribe(function() { this.center(); });
	pnlImg.showEvent.subscribe(function() { this.center(); bOpen = true; });
	pnlImg.hideEvent.subscribe(function() { $get("imgL").src = "./images/trn.png"; bOpen = false; });
	pnlImg.render(document.body);
	yEvent.onAvailable("imgL", function() { yEvent.on(this, "load", SetLoaded); });
	yEvent.on(window.document, "click", function() { if(bOpen) { pnlImg.hide(); } });
}

function SetPage(n)
{
	nCPage = n;
	$get(p + "lblPage").innerHTML = "Page " + n.toString() + "/" + nPages;
	if(n == 1)
	{
		$get(p + "hlPrev").className = "off";
	}
	else
	{
		$get(p + "hlPrev").className = "";
	}
	if(n == nPages)
	{
		$get(p + "hlNext").className = "off";
	}
	else
	{
		$get(p + "hlNext").className = "";
	}
	$get(p + "pnlPage1").innerHTML = "";
	var lLimit = (nCPage - 1) * nImgPP;
	var uLimit;
	if(nCPage < nPages)
	{
		uLimit = nCPage * nImgPP;
	}
	else
	{
		uLimit = ImgHd.length;
	}
	nCNumImgs = 0;
	for(var i = lLimit; i < uLimit; i++)
	{
		var hl = CreateThumb(ImgHd[i].iID, ImgHd[i].Title, ImgHd[i].Artist);
		$get(p + "pnlPage1").appendChild(hl);
		nCNumImgs++;
	}
}

function CreateThumb(iid, title, artist)
{
	var hl = document.createElement("a");
	hl.id = p + "hlImg" + iid.toString();
	hl.title = artist;
	hl.href = "image.aspx?iid=" + iid + "&an=" + artist.replace(" ", "+") + "&rt=e";
	var img = new Image();
	img.src = "./images/artists/" + artist.replace(" ", "") + "/" + iid.toString() + "Thumb.jpg";
	img.alt = title;
	if(NAs > 1 && JW < 1)
	{
		img.title = title + ", by " + artist;
	}
	else
	{
		img.title = title;
	}
	hl.appendChild(img);
	return hl;
}

function pnlPageCtrl_Click(e)
{
	var el = yEvent.getTarget(e);
	if(el.nodeName.toUpperCase() == "IMG")
	{
		yEvent.preventDefault(e);
		var id = el.parentNode.id;
		if((id == p + "hlPrev") && (nCPage > 1))
		{
			SetPage(nCPage - 1);
		}
		if((id == p + "hlNext") && (nCPage < nPages))
		{
			SetPage(nCPage + 1);
		}
	}
}

function pnlGViewport_Click(e)
{
	var el = yEvent.getTarget(e);
	if(el.nodeName.toUpperCase() == "A" || el.nodeName.toUpperCase() == "IMG")
	{
		yEvent.preventDefault(e);
		ShowStatus("Loading...", "p");
		XFAAdmin.ImageData.GetImageData(el.parentNode.id.substring(15), OnGetIBody, OnTimeout, OnError);
		pnlImg.setHeader(el.title);
		pnlImg.render();
		bLoaded = false;
		$get("imgL").src = "./images/artists/" + el.parentNode.title.replace(" ", "").replace(" ", "") + "/" + el.parentNode.id.substring(15) + ".jpg";
	}
}

function OnGetIBody(res)
{
	if(eval("(" + res + ")") == "No Image Data Found")
	{
		ShowStatus("There was an error executing the requested action! We apologise for any inconvenience. Please try again.");
	}
	else
	{
		if(bLoaded)
		{
			HideStatus();
		}
		ImgBd = Sys.Serialization.JavaScriptSerializer.deserialize(res);
		var i = 0;
		if(ImgBd.Year != "none")
		{
			$get("lblYr").innerHTML = ImgBd.Year;
			i++;
		}
		else
		{
			$get("lblYr").innerHTML = "";
		}
		if(ImgBd.Media != "none")
		{
			$get("lblMed").innerHTML = ImgBd.Media;
			i++;
		}
		else
		{
			$get("lblMed").innerHTML = "";
		}
		if(ImgBd.Edition != "none")
		{
			$get("lblEd").innerHTML = ImgBd.Edition;
			i++;
		}
		else
		{
			$get("lblEd").innerHTML = "";
		}
		if(ImgBd.Size != "none")
		{
			$get("lblSz").innerHTML = ImgBd.Size;
			i++;
		}
		else
		{
			$get("lblSz").innerHTML = "";
		}
		if(ImgBd.Desc != "none")
		{
			$get("lblDesc").innerHTML = ImgBd.Desc;
			i++;
		}
		else
		{
			$get("lblDesc").innerHTML = "";
		}
		if(i == 0)
		{
			$get("imgData").className = "hdn";
		}
		else
		{
			$get("imgData").className = "";
		}
		ShowImgL();
	}
}

function ShowImgL()
{
	if(bLoaded)
	{
		var rect = yDom.getRegion("imgL");
		var descWidth = rect.right - rect.left - 12;
		yDom.setStyle("imgData", "width", descWidth + "px");
		if(descWidth > 360)
		{
			descWidth = 360;
		}
		yDom.setStyle("lblDesc", "width", descWidth + "px");
		yDom.setStyle("lblDesc", "margin", "0.5em auto 0 auto");
		HideStatus();
		pnlImg.show();
	}
	else
	{
		setTimeout(ShowImgL, 250);
	}
}