var markedCookieName = null;

var markedExcessMessage = null;

var marked = null;

function setMarkedCookie(inCookieName)
{
	markedCookieName = inCookieName;
}

function loadMarked()
{
	if(!marked && markedCookieName)
	{
		marked = getCookie(markedCookieName).split("|");
	}
}

function toggleMarked(event, element)
{
	if(event.altKey == false)
	{
		return;
	}
	
	loadMarked();

	var id = element.id;
	
	var wasMarked = false;

	// see if the reference is already selected

	var position = getMarkedPosition(id);

	if(position >= 0)
	{
		marked[position] = "";
		
		wasMarked = true;
	}
	else
	{
		if(!addMarked(id))
		{
			return;
		}
		
		wasMarked = false;
	} 
	
	// save the marked scriptures
	
	saveMarked();
	
	if(wasMarked)
	{
		element.className = "nomark";
	}
	else
	{
		element.className = "marked";
	}
	
	return false;
}

function addMarked(id)
{
	loadMarked();
	
	// See if there is any empty element in the marked array
	
	for(var i = 0; i < marked.length; i++)
	{
		if(marked[i] == "")
		{
			marked[i] = id;
			
			return true;
		}
	}
	
	// Make sure we haven't reached the limit
	
	if(marked.length >= 75)
	{
		alert(getMessage("marklimit"));
		
		return false;
	}

	// add the new id to the end of the array
	
	marked[marked.length] = id;
	
	return true;
}

function saveMarked()
{
	loadMarked();

	// Create a string representing the marked
	
	markedString = "";
	
	for(var i = 0; i < marked.length; i++)
	{
		if(marked[i] != "")
		{
			if(markedString.length > 0)
			{
				markedString += "|";
			}
				
			markedString += marked[i];
			
			someAreMarked = true;
		}
	}
	
	// set the cookie

	if(markedCookieName)
	{
		setCookie(markedCookieName, markedString, 365, "/");
	}
}

function showMarked()
{
	loadMarked();
	
	var divTags = document.body.getElementsByTagName("div");
	
	for(var i = 0; i < divTags.length; i++)
	{
		if(divTags[i].id)
		{
			var position = getMarkedPosition(divTags[i].id);
	
			if(position >= 0)
			{
				divTags[i].className = "marked";
			}
		}
	}
}

function clearMarked()
{
	loadMarked();

	var elementsfound = false;
	
	// Look for any marked references
	
	for(var i = 0; i < marked.length; i++)
	{
		if(marked[i] != "")
		{
			elementsfound = true;
		}
	}
	
	if(elementsfound == false)
	{
		alert(getMessage("nomarkedreferences"));
		return;
	}
	
	// Warn the user this is permanant
	
	if(confirm(getMessage("markedwarning")) == false)
	{
		return;
	}
	
	// Remove all the marked
	
	for(var i = 0; i < marked.length; i++)
	{
		if(marked[i] != "")
		{
			marked[i] = "";
		}
	}
	
	saveMarked();
	
	// Update all the classes on the page
	
	var divTags = document.body.getElementsByTagName("div");
	
	for(var i = 0; i < divTags.length; i++)
	{
		if(divTags.className == "marked")
		{
			divTags.className = "nomark";
		}
	}
	
	// update the page
	
	document.forms[0].submit();
}

function getMarkedPosition(id)
{
	loadMarked();
	
	// Find the position of an id
	
	for(var i = 0; i < marked.length; i++)
	{
		if(marked[i] == id)
		{
			return i;
		}
	}
	
	return -1;
}

function setCookie(name, value, expirydays, path)
{
	var expiry = "";
	
	if(name == "")
		return;

	if(expirydays > 0)
	{
		var	expiryDate = new Date();
		
		expiryDate.setTime(expiryDate.getTime() + (expirydays * 24 * 60 * 60 * 1000));
		
		expiry = expiryDate.toGMTString();
	}
	
	var cookieString = name + "=" + escape(value) +
					   ((expiry == "") ? "" : ("; expires=" + expiry)) +
					   ((path == "")   ? "" : ("; path=" + path));
	
	document.cookie = cookieString;
}

function getCookie(name)
{
	var arg = name + "=";
	var arglength = arg.length;
	var cookielength = document.cookie.length;
	var i = 0;
	
	while(i < cookielength)
	{
		var j = i + arglength;
		
		if(document.cookie.substring(i, j) == arg)
		{
			k = document.cookie.indexOf(";", j);
			
			if(k < 0)
			{
				k = cookielength;
			}
			
			return unescape(document.cookie.substring(j, k));
		}
			
		i = document.cookie.indexOf(" ", i) + 1;
		
		if(i == 0)
		{
			break;
		}
	}
	
	return "";
}

function setSearch(text)
{
	document.forms[0].search.value = text;
	document.forms[0].submit();
}
		
function setSearchType(type)
{
	document.forms[0].type.value = type;
	document.forms[0].submit();
}

function setSearchHelp(needHelp)
{
	document.forms[0].help.value = needHelp ? "checked" : "";
	document.forms[0].submit();
}

function toggleSiteMap(page)
{
	document.forms[0].action.value = page;
	document.forms[0].scroll.value = document.body.scrollTop;
	document.forms[0].submit();
}

function scrollSiteMap()
{
	self.focus();

	document.body.scrollTop = document.forms[0].scroll.value;
}

function gotoFromSiteMap(page)
{
	window.opener.location = ("/" + page);
}

function openSiteMap()
{
	open('/system/sitemap', 'sitemap', 'width=250,height=400,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no');
}

function openOther(url)
{
	open(url, 'other', 'width=640,height=600,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no');
}

function openPrint(url)
{
	var location = new String(document.location);
	
	var parts = location.split("#");
	
	var printURL = url + "?referer=" + escape(parts[0]);

	open(printURL, 'print', 'width=800,height=600,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no');
}

function closePrint()
{
	parent.close();
}

function printFrame()
{
	parent.printframe.focus();
	parent.printframe.print();
}

function updatePrint()
{
	parent.printframe.location.reload(true);
}

function optimizePage()
{
	self.focus();
	
	var heightDiff = document.body.scrollHeight - document.body.clientHeight;
	var widthDiff  = document.body.scrollWidth - document.body.clientWidth;

	window.resizeBy(widthDiff, 0);
	
	if(window.screenTop + document.body.clientHeight > (screen.availHeight - 28))
	{
		window.resizeBy(0, screen.availHeight - 28 - window.screenTop - document.body.clientHeight);
	}
}

function changeLanguage(inMenu)
{
	var lang = inMenu.options[inMenu.selectedIndex].value;
	
	var path = window.location.pathname;
	
	var search = window.location.search;
	
	var hash = window.location.hash;

	if(search != null && search.length > 0)
	{
		search += "&lang=" + lang;
	}
	else
	{
		search += "lang=" + lang;
	}
	
	var url = path + "?" + search;
	
	if(hash != null && hash.length > 0)
	{
		url += "#" + hash;
	}

	window.location = url;
}

function showLanguageMenu(event)
{
	var menu = document.getElementById("languagemenu");
	
	if(menu)
	{
		if(menu.style.display != 'none')
		{
			hideLanguageMenu();
		}
		else
		{
			menu.style.display = '';
			
			var tab = document.getElementById("languagetab");
			
			var left = 0;
			
			var node = tab;
		
			while(node)
			{
				left -= node.scrollLeft;

				if(node.nodeName == "TR")
				{
					left += node.cells[0].offsetLeft;
				}
				else
				{
					left += node.offsetLeft;
				}
				
				node = node.offsetParent;
			}

			menu.style.left = left + (tab.offsetWidth - menu.offsetWidth);
			
			tab.className = "languagetab";
		}
	}
	
	event.cancelBubble = true;
			
	if (event.stopPropagation)
	{
		event.stopPropagation();
	}
}

function hideLanguageMenu()
{
	var menu = document.getElementById("languagemenu");
	
	var tab = document.getElementById("languagetab");
	
	if(menu)
	{
		if(menu.style.display != 'none')
		{
			menu.style.display = 'none';
		}
		
		tab.className = "";
	}
}

function openListen(url)
{
	open(url, 'listen', 'width=400,height=244,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no');
}

function ignore()
{
}

window.onresize = hideLanguageMenu;


