﻿ShowNagScreenForOldBrowsers();

function ShowNagScreenForOldBrowsers()
{
	var nav     = window.navigator;
	var version = 0;
	var browserName = "";
	var browserURL  = "";
	var tooOld = false;
	
	/*alert(
		"window.navigator.userAgent:\t"   + nav.userAgent   + "\n" + 
		"window.navigator.appName:\t"     + nav.appName     + "\n" + 
		"window.navigator.appVersion:\t"  + nav.appVersion  + "\n" + 
		"window.navigator.platform:\t"    + nav.platform    + "\n" + 
		"window.navigator.appCodeName:\t" + nav.appCodeName + "\n" + 
		"window.navigator.product:\t"     + nav.product     + "\n" + 
		"window.navigator.productSub:\t"  + nav.productSub
		);*/
	
	// If Internet Explorer nag people with version less than 6.0
	if (document.all && nav.appName == "Microsoft Internet Explorer")
	{
		version = parseFloat(nav.appVersion.split("MSIE")[1]);
		
		if (version < 6)
		{
			tooOld = true;
			browserName = "Internet Explorer";
			browserURL  = "http://www.microsoft.com/ie";
		}
	}
	// If Mozilla Firefox, nag people with version less than 1.5
	else if (nav.appName == "Netscape" && nav.appCodeName == "Mozilla" && nav.userAgent.indexOf("Firefox") > 0)
	{
		version = parseFloat(nav.userAgent.split("Firefox")[1].substr(1));
		
		if (version < 1.5)
		{
			tooOld = true;
			browserName = "Mozilla Firefox";
			browserURL  = "http://www.getfirefox.com";
		}
	}
	// If Netscape, nag people with version less than 8.1
	else if (nav.appName == "Netscape" && nav.appCodeName == "Mozilla" && nav.userAgent.indexOf("Netscape") > 0)
	{
		version = parseFloat(nav.userAgent.split("Netscape")[1].substr(1));
		
		if (version < 8.1)
		{
			tooOld = true;
			browserName = "Netscape";
			browserURL  = "http://www.netscape.com";
		}
	}
	
	if (tooOld)
		alert("The version of your " + browserName + " browser is too old.  You must update your browser to the latest version.  You can download the latest version of " + browserName + " here:\n" + browserURL);
}

function OpenWin(address, winName, width, height)
{
	var newLeft = (window.screen.availWidth - width) / 2;
	var objPopup = window.open(address, winName, 'width=' + width + ',height=' + height + ',top=' + 100 + ',left=' + newLeft + ',menubar=no,toolbar=no,scrollbars=yes,resizable=yes,directories=no,status=yes');
	objPopup.focus();
}

function OpenBioRes(address)		{	OpenWin(address, "OPPBioRes",    750, 580);	}
function OpenWorksInfo(address)		{	OpenWin(address, "OPPWorksInfo", 670, 528);	}
function OpenImgViewer(address)		{	OpenWin(address, "",             800, 580);	}
function OpenWritingsInfo(address)		{	OpenWin(address, "",             670, 528);	}

function AutoSizePopup()
{
	var viewableHeight = 0;
	var counter = 0;
	
	if (window.name == "OPPFloatingMenu")
		window.parent.document.getElementById("OPPFloatingMenu").style.height = (document.body.scrollHeight - 40) + "px";
	else
	{
		// Workaround fix for Firefox 1.0.x (not necessary for v1.5)
		for (counter = 1; counter <= 50; counter++)
			window.resizeBy(0, (document.body.scrollHeight - document.documentElement.clientHeight) / 2);
		window.resizeBy(0, document.body.scrollHeight - document.documentElement.clientHeight);
	}
}

function ResizeSideNavigator()
{
	var MasterPanelObj = document.getElementById("MasterPanel");
	
	MasterPanelObj.style.height = (document.documentElement.clientHeight - 130) + "px";
}

// Not used any more.
function LoadTOC(iframeName)
{
	iframeObj = document.getElementById(iframeName);
	iframeObj.contentWindow.document.location = iframeObj.title;
	iframeObj.title = "";
}

function ClosePopup()
{
	if (window.name == "OPPFloatingMenu")
	{
		window.parent.document.getElementById("OPPFloatingMenuContainer").style.display = "none";
		window.parent.document.getElementById("OPPFloatingMenu").src = "blank.html";
	}
	else
		window.close();
}

function ChangeTab(TabNum)
{
	var counter = 0;
	var tabCount = 0;
	
	for (counter = 1, tabCount = 0; counter <= 10; counter++)
		if (document.getElementById("Tab" + counter))
			tabCount++;
	
	for (counter = 1; counter <= tabCount; counter++)
	{
		if (counter == TabNum)
		{
			document.getElementById("Tab" + counter).style.display = "block";
			document.getElementById("TabLbl" + counter).className = "Active";
		}
		else
		{
			document.getElementById("Tab" + counter).style.display = "none";
			document.getElementById("TabLbl" + counter).className = "Inactive";
		}
	}
}

function ChangePanel(PanelNum)
{
	var counter = 0;
	var panelCount = 0;
	
	for (counter = 1, panelCount = 0; counter <= 10; counter++)
		if (document.getElementById("Panel" + counter))
			panelCount++;
	
	for (counter = 1; counter <= panelCount; counter++)
		document.getElementById("Panel" + counter).style.display = (counter == PanelNum ? "block" : "none");
}

function OpenSearchBox(href, target, width, height)
{
	var menuObj = document.getElementById("OPPFloatingMenu");
	var menuContainerObj = document.getElementById("OPPFloatingMenuContainer");
	
	if (menuContainerObj.style.display != "block")
	{
		menuContainerObj.style.visibility = "hidden";
		menuContainerObj.style.display = "block";
		
		var posLeft = (document.documentElement.clientWidth - menuContainerObj.offsetWidth) / 2;
		
		menuObj.src = href;
		menuContainerObj.style.left       = posLeft + "px";
		menuContainerObj.style.visibility = "visible";
	}
	else
		document.getElementById("OPPFloatingMenu").src = href;
}

function SwitchBioTab(LeftTDLinkObj, RightDivClassName)
{
	var counter = 0;
	var TDObj = LeftTDLinkObj.parentNode;
	var tdHeight = 0;
	
	for (counter = 0; counter < LeftTDLinkObj.parentNode.childNodes.length; counter++)
	{
		if (LeftTDLinkObj.parentNode.childNodes[counter].className == "ActiveTab")
			LeftTDLinkObj.parentNode.childNodes[counter].className = "Tab";
	}
	
	LeftTDLinkObj.className = "ActiveTab";
	
	
	if (!TDObj.parentNode.childNodes[1].OriginalHeight)
		TDObj.parentNode.childNodes[1].OriginalHeight = TDObj.parentNode.childNodes[1].clientHeight;
	
	tdHeight = TDObj.parentNode.childNodes[1].OriginalHeight;
	
	for (counter = 0; counter < TDObj.parentNode.childNodes[1].childNodes.length; counter++)
	{
		TDObj.parentNode.childNodes[1].childNodes[counter].style.display = "none";
	}
	
	for (counter = 0; counter < TDObj.parentNode.childNodes[1].childNodes.length; counter++)
	{
		if (TDObj.parentNode.childNodes[1].childNodes[counter].className == RightDivClassName)
		{
			TDObj.parentNode.childNodes[1].childNodes[counter].style.display = "block";
			TDObj.parentNode.childNodes[1].childNodes[counter].style.height = (tdHeight - 12) + "px";
		}
	}
}

function OpenCloseImportExportBox(BoxName)
{
	var boxObj = document.getElementById(BoxName);
	
	if (boxObj.className == "BoxStateClosed")
		boxObj.className = "BoxStateOpen";
	else
		boxObj.className = "BoxStateClosed";
}

function SubmitBasketImport(textAreaObjName, importFormName)
{
	var formObj = document.forms[importFormName] ? document.forms[importFormName] : document.getElementById(importFormName);
	var textAreaObj = document.getElementById(textAreaObjName);
	
	formObj.CatalogIDs.value = textAreaObj.value.replace(/\n/g, ",");
	formObj.submit();
}

function PrintWarning()
{
	var Text = "";
	
	Text += "Please be aware of the followings:\n";
	Text += "• You will be printing a catalogue containing all items in this year or search results, not just the ones currently shown in this page.\n";
	Text += "• The printable catalogue is optimized for printing and could look bizarre on the screen.\n";
	Text += "• The printable catalogue is designed for 11\" x 8.5\" paper.\n";
	Text += "• Please use your browser's print preview functionality to preview the catalogue.\n";
        Text += "• Please use your browser's page setup functionality to customize headers and footers.\n";
        Text += "• Please set all page margins at 0.5 inches.\n";
	Text += "• If the year or search results contains many items, it could take a while to finish loading.";
	
	alert(Text);
}

function SubmitWorksComparison(comparisonFormName, listFormName)
{
	var formObj = document.forms[comparisonFormName] ? document.forms[comparisonFormName] : document.getElementById(comparisonFormName);
	var artworksFormObj = document.forms[listFormName] ? document.forms[listFormName] : document.getElementById(listFormName);
	var Artwork1 = "";
	var Artwork2 = "";
	var hasMoreThan2 = false;
	var counter = 0;
	
	for (counter = 0; counter < artworksFormObj.elements.length; counter++)
	{
		if (artworksFormObj.elements.item(counter).checked)
		{
			if (Artwork1 == "")
				Artwork1 = artworksFormObj.elements.item(counter).value;
			else if (Artwork2 == "")
				Artwork2 = artworksFormObj.elements.item(counter).value;
			else
			{
				hasMoreThan2 = true;
				break;
			}
		}
	}
	
	if (hasMoreThan2)
	{
		alert("You can only select two artworks to be compared.");
		return false;
	}
	else if (Artwork2 == "")
	{
		alert("You must select two artworks to be compared.");
		return false;
	}
	
	formObj.Artwork1.value = Artwork1;
	formObj.Artwork2.value = Artwork2;
	
	OpenWin("blank.html", formObj.target, 650, 580);
	formObj.submit();
	return true;
}

function SubmitWorksBasket(addToBasketFormName, listFormName, ErrMsg)
{
	var formObj = document.forms[addToBasketFormName] ? document.forms[addToBasketFormName] : document.getElementById(addToBasketFormName);
	var artworksFormObj = document.forms[listFormName] ? document.forms[listFormName] : document.getElementById(listFormName);
	var CatalogsString = "";
	var counter = 0;
	
	for (counter = 0; counter < artworksFormObj.elements.length; counter++)
	{
		if (artworksFormObj.elements.item(counter).checked)
		{
			CatalogsString += (CatalogsString.length > 0 ? "," : "") + artworksFormObj.elements.item(counter).value;
		}
	}
	
	if (CatalogsString.length > 0)
	{
		formObj.CatalogIDs.value = CatalogsString;
		formObj.submit();
		return true;
	}
	else
	{
		alert(ErrMsg);
		return false;
	}
}

function SubmitMultiWorksBasket(addToBasketFormName, listFormName, ErrMsg)
{
	var formObj = document.forms[addToBasketFormName] ? document.forms[addToBasketFormName] : document.getElementById(addToBasketFormName);
	var artworksFormObj = document.forms[listFormName] ? document.forms[listFormName] : document.getElementById(listFormName);
	var CatalogsString = "";
	var counter = 0;
	
	for (counter = 0; counter < artworksFormObj.elements.length; counter++)
	{
		if (artworksFormObj.elements.item(counter).checked)
		{
			CatalogsString += (CatalogsString.length > 0 ? "," : "") + artworksFormObj.elements.item(counter).value;
		}
	}
	
	if (CatalogsString.length > 0)
	{
		formObj.CatalogIDs.value = CatalogsString;
                                    OpenWin("WorksMulticompare?CatalogIDs="+formObj.CatalogIDs.value,formObj.target, 750, 670); 
		
                                    
		return true;
	}
	else
	{
		alert(ErrMsg);
		return false;
	}
}

function AddConcordanceColumns(fullListBoxName, targetListBoxName)
{
	var counter = 0;
	var thisListBox = document.getElementById(fullListBoxName);
	var targetObj   = document.getElementById(targetListBoxName);
	
	for (counter = 0; counter < thisListBox.options.length; counter++)
	{
		if (thisListBox.options[counter].selected)
		{
			var option = document.createElement("option");
			try
			{
				targetObj.add(option, null);
			}
			catch (e)
			{
				targetObj.add(option, targetObj.length)
			}
			targetObj.options[targetObj.options.length - 1].value = thisListBox.options[counter].value;
			targetObj.options[targetObj.options.length - 1].text  = thisListBox.options[counter].text;
		}
	}
}

function DeleteConcordanceColumns(listBoxName)
{
	var counter = 0;
	var thisListBox = document.getElementById(listBoxName);
	
	for (counter = thisListBox.options.length - 1; counter >= 0; counter--)
	{
		if (thisListBox.options[counter].selected)
			thisListBox.remove(counter);
	}
}

function MoveConcordanceColumnUp(listBoxName)
{
	MoveConcordanceColumn(listBoxName, -1);
}

function MoveConcordanceColumnDown(listBoxName)
{
	MoveConcordanceColumn(listBoxName, 1);
}

function MoveConcordanceColumn(listBoxName, step)
{
	var listObj = document.getElementById(listBoxName);
	var counter = 0;
	var selected = -1;
	var found = false;
	var tempValue = null;
	var tempText = null;
	var gradualStep = 0;
	
	for (counter = 0; counter < listObj.options.length; counter++)
	{
		if (listObj.options[counter].selected)
		{
			if (!found)
			{
				selected = counter;
				found = true;
			}
			else
			{
				alert("You can only move one selected item at a time.");
				return;
			}
		}
	}
	
	if ((selected + step >= 0) && (selected + step < listObj.options.length))
	{
		gradualStep = step < 0 ? -1 : 1;
		
		tempValue = listObj.options[selected].value;
		tempText  = listObj.options[selected].text;
		for (counter = selected; Math.abs(counter - (selected + step)) > 0; counter += gradualStep)
		{
			listObj.options[counter].value = listObj.options[counter + gradualStep].value;
			listObj.options[counter].text  = listObj.options[counter + gradualStep].text;
		}
		listObj.options[selected + step].value = tempValue;
		listObj.options[selected + step].text  = tempText;
		
		listObj.options[selected + step].selected = true;
		listObj.options[selected].selected = false;
	}
}

function SubmitCustomizeColumnsForm(formName, listName, primaryCatalog, maximumColumns)
{
	var formObj = document.getElementById(formName);
	var listObj = document.getElementById(listName);
	var counter = 0;
	var found = false;
	var columnStr = "";
	
	if (listObj.options.length == 0)
	{
		alert("You must have at least one column in the concordance table.");
		return;
	}
	if (listObj.options.length > maximumColumns)
	{
		alert("You cannot have more than " + maximumColumns + " columns in the concordance table.");
		return;
	}
	for (counter = 0; counter < listObj.options.length; counter++)
	{
		if (listObj.options[counter].value == primaryCatalog)
			found = true;
	}
	if (!found)
	{
		alert("The primary catalog '" + primaryCatalog + "' must be present in the concordance table at least once.");
		return;
	}
	
	
	for (counter = 0; counter < listObj.options.length; counter++)
		columnStr += (counter > 0 ? "," : "") + listObj.options[counter].value;
	
	formObj.DisplayColumns.value = columnStr;
	formObj.submit();
}

function SetOnclickPortal(ImgObj)
{
	ImgObj.onclick = NavigateToAuthoringPortal;
	ImgObj.onclick();
}

function NavigateToAuthoringPortal(e)
{
	var eventObj = e ? e : event;
	
	if (eventObj.altKey && eventObj.ctrlKey && eventObj.shiftKey)
		window.location = "OPPAuthorV2Portal";
}

function doHighlight(bodyText, searchWords)
{
	var toLookup = "";
	var reStart, reMiddle, reEnd;
	var previousCloseTag = 0;
	var lastOpenTag = 0;
	var lastCloseTag = 0;
	var newText = "";
	var textChunck = "";
	var highlightCode = "<span class=\"HighlightedSearchWord\">$1</span>";
	
	searchWords = searchWords.replace(/"/g, "");
	
	toLookup = trim(searchWords);
	toLookup = toLookup.replace(/  /g, " ");
	toLookup = toLookup.replace(/a/g, "[a|á|à|â|ä]").replace(/e/g, "[e|é|è|ê|ë]").replace(/i/g, "[i|í|ì|î|ï]").replace(/o/g, "[o|ó|ò|ô|ö]").replace(/u/g, "[u|ú|ù|û|ü]");
	toLookup = toLookup.replace(/n/g, "[n|ñ]");
	//toLookup = toLookup.replace(/ /g, "|");
	
	reStart  = new RegExp("^("   + toLookup + ")\\b", "gi"); // if searchWord is in the beginning of text
	reMiddle = new RegExp("\\b(" + toLookup + ")\\b", "gi"); // if searchWord is in the middle of text
	reEnd    = new RegExp("\\b(" + toLookup + ")$", "gi"); // if searchWord is in the end of text
	
	
	previousCloseTag = -1;
	lastOpenTag  = bodyText.indexOf("<");
	lastCloseTag = bodyText.indexOf(">", lastOpenTag);
	
	while (lastOpenTag != -1)
	{
		textChunck = bodyText.substring(previousCloseTag + 1, lastOpenTag);
		textChunck = textChunck.replace(reMiddle, highlightCode);
		textChunck = textChunck.replace(reStart,  highlightCode);
		textChunck = textChunck.replace(reEnd,    highlightCode);
		newText += textChunck;
		newText += bodyText.substring(lastOpenTag, lastCloseTag + 1);
		
		previousCloseTag = lastCloseTag;
		lastOpenTag  = bodyText.indexOf("<", lastCloseTag);
		lastCloseTag = bodyText.indexOf(">", lastOpenTag);
	}
	
	textChunck = bodyText.substring(previousCloseTag + 1, bodyText.length);
	textChunck = textChunck.replace(reStart,  highlightCode); 
	textChunck = textChunck.replace(reEnd,    highlightCode);
	textChunck = textChunck.replace(reMiddle, highlightCode);
	newText += textChunck;
	
	return newText;
}

function highlightSearchTerms(searchText)
{
	var topObj;
	var trObj;
	var counter = 0;
	var colNumber = 0;
	
	if (trim(searchText) == "")
		return false;
	
	if (document.getElementById("BioHighlightTarget"))
	{
		topObj = document.getElementById("BioHighlightTarget").firstChild;
		colNumber = 2;
	}
	else if (document.getElementById("ArtworkHighlightTarget"))
	{
		topObj = document.getElementById("ArtworkHighlightTarget").firstChild;
		colNumber = 3;
	}
	else if (document.getElementById("ArchivesHighlightTarget"))
	{
		topObj = document.getElementById("ArchivesHighlightTarget").firstChild;
		colNumber = 2;
	}
	else
		return false;
	
	
	for (counter = 1; counter <= topObj.childNodes.length; counter++)
	{
		trObj = topObj.childNodes[counter - 1];
		
		if (trObj.childNodes.length >= colNumber)
			trObj.childNodes[colNumber - 1].innerHTML = doHighlight(trObj.childNodes[colNumber - 1].innerHTML, searchText);
	}
	
	return true;
}

function trim(val)
{
	var begin = 0;
	var end   = val.length - 1;
	
	while (val.charAt(begin) == ' ')
		begin++;
	
	while (val.charAt(end)   == ' ')
		end--;
	
	if (end < begin)
		return("");
	else
		return val.substring(begin, end + 1);
}

function radioLinkTo (url)
{
      window.location=url;
}

function returnRootURL() 
{

	return location.href.substring(0, location.href.lastIndexOf('\/'));

}
