// JavaScript Document

function gotoImageByHash(hash)
{
	if(hash != selectedThumb) 
	{
		newSelectedThumbObj = document.getElementById("_"+hash);
		newSelectedPage = getThumbPage(newSelectedThumbObj);

		// determine if we are one the correct page
		if(newSelectedPage != selectedPage)
		{
			changePage(newSelectedPage);
		}
		
		changeSelection(newSelectedThumbObj);
	}
}

function gotoPage(newPage)
{
	thumbObj = getFirstObjByClass("li", "p_" + newPage);
	
	changePage(newPage);	
	changeSelection(thumbObj);
}

function getThumbPage(thumbObj)
{ // determine page
	thumbClass = thumbObj.className.match(/p_\d+/)[0];
	return thumbClass.match(/\d+/)[0]
}

function initSelection()
{
	newThumbObj = document.getElementById(selectedThumb);
	
	// Update thumbnails
	$(newThumbObj).css("opacity", "1.0");
	//newThumbObj.style.opacity = "1.0";
	addClass("selected", newThumbObj);
	
	// Update content and info
	content = getChildByClass(newThumbObj, "content_collection")
	document.getElementById("gallery").innerHTML = content.innerHTML;
	
	caption = getChildByClass(newThumbObj, "caption")
	document.getElementById("info").innerHTML = caption.innerHTML;
}
function changeSelection(newThumbObj)
{
	prevThumbObj = document.getElementById(selectedThumb);
	
	if(newThumbObj == null || prevThumbObj == null) return;
	
	// Update thumbnails
	$(prevThumbObj).css("opacity", "0.4");
	//prevThumbObj.style.opacity = "0.4";
	removeClass("selected", prevThumbObj);
	
	$(newThumbObj).css("opacity", "1.0");
	//newThumbObj.style.opacity = "1.0";
	addClass("selected", newThumbObj);
	
	selectedThumb = newThumbObj.id;
	
	// Update content and info
	content = getChildByClass(newThumbObj, "content_collection")
	document.getElementById("gallery").innerHTML = content.innerHTML;
	
	caption = getChildByClass(newThumbObj, "caption")
	document.getElementById("info").innerHTML = caption.innerHTML;
}
function changePage(newPage)
{
	prevPageClass = "p_" + selectedPage;
	for (i=1; i<=numPages; i++)
	{
		pageLnk = document.getElementById( "page_" + i);
		pageClass = "p_" + i;
		if(i == newPage)
		{
			setStyleByClass("li",pageClass,"display","block");
			addClass("currentPage", pageLnk);
		}
		else
		{
			setStyleByClass("li",pageClass,"display","none");
			removeClass("currentPage", pageLnk);
		}
	}
	selectedPage = newPage
}

function getChildByClass(p,c)
{
	var children = p.childNodes;
	var node;
	for(var i = 0; i < children.length; i++)
	{
		node = children.item(i);
		if(node.attributes == null) continue;
		for(var j = 0; j < node.attributes.length; j++) 
		{
			if(node.attributes.item(j).nodeName == 'class') 
			{
				if(node.attributes.item(j).nodeValue.indexOf(c) >= 0) 
				{
					return node;
				}
			}
		}
	}
	return null;
}

function getFirstObjByClass(t,c){
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	if (elements == null) return null;
	for(var i = 0; i < elements.length; i++)
	{
		var node = elements.item(i);
		if (node.attributes == null) continue;
		for(var j = 0; j < node.attributes.length; j++) 
		{
			if(node.attributes.item(j).nodeName == 'class') 
			{
				if(node.attributes.item(j).nodeValue.indexOf(c) >= 0) 
				{
					return node;
				}
			}
		}
	}
	return null;
}
function addClass(className, node)
{
	if(node.className.indexOf(className) < 0)
	{ // Only add class if it is not already set
		node.className += " " + className;
	}
}
function removeClass(className, node)
{
	node.className = node.className.replace(className, "");
	normalizeClass(node);//remove any
}
function normalizeClass(node)
{ // Remove spaces at beginning, end or multiple spaces in a row.
	node.className = node.className.replace(/(^\s+|\s{2,}|\s+$)/g,'');	
}

var ie = (document.all) ? true : false;
function setStyleByClass(t,c,p,v)
{
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++)
	{
		var node = elements.item(i);
		if (node.attributes == null) continue;
		for(var j = 0; j < node.attributes.length; j++) 
		{
			if(node.attributes.item(j).nodeName == 'class') 
			{
				if(node.attributes.item(j).nodeValue.indexOf(c) >= 0) 
				{
					eval('node.style.' + p + " = '" +v + "'");
				}
			}
		}
	}
}

function opacityOver(aObj)
{
	$(aObj.parentNode).css("opacity", "1.0");
	//aObj.parentNode.style.opacity = 1.0;
}
function opacityOut(aObj)
{
	if(aObj.parentNode.className.indexOf("selected") < 0)
	{
		$(aObj.parentNode).css("opacity", "1.0");
		//aObj.parentNode.style.opacity = 0.4;
	}
}





/*
function getObjsByClass(t,c){
	var elements;
	var retElements = array();
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue.indexOf(c) >= 0) {
					retElements.Push(node);
				}
			}
		}
	}
	return retElements;
}

function getSelectedByClass(t,c,s){
	var elements;
	if(t == '*') {
		// '*' not supported by IE/Win 5.5 and below
		elements = (ie) ? document.all : document.getElementsByTagName('*');
	} else {
		elements = document.getElementsByTagName(t);
	}
	for(var i = 0; i < elements.length; i++){
		var node = elements.item(i);
		for(var j = 0; j < node.attributes.length; j++) {
			if(node.attributes.item(j).nodeName == 'class') {
				if(node.attributes.item(j).nodeValue.indexOf(c) >= 0 && node.attributes.item(j).nodeValue.indexOf(s) >= 0) {
					return node;
				}
			}
		}
	}
	return null;
}
*/
