/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
 *
 * The contents of this file are subject to the Netscape Public License
 * Version 1.0 (the "NPL"); you may not use this file except in
 * compliance with the NPL.  You may obtain a copy of the NPL at
 * http://www.mozilla.org/NPL/
 *
 * Software distributed under the NPL is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
 * for the specific language governing rights and limitations under the
 * NPL.
 *
 * The Initial Developer of this code under the NPL is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
 * Reserved.
 */
<!--  to hide script contents from old browsers
//toolbar.js


//handles:
//Globals frame: opener.top.globals
//controls frame: opener.top.screen.controls

// Request privilege
compromisePrincipals();			// work around for the security check
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
//var theEditor = null;
var ready;
var cfgHelpWindow;
var numValidPopupEntries = 0;

function finishedLoading()
{
	if (ready && document.layers["reload"])
		return true;
	else
		return false;
}

function getLayerVisibility(inLayerName)
{
	if (finishedLoading && document.layers[inLayerName])
		return document.layers[inLayerName].visibility;
}


function editScreen(isHelpScreen) 
{
		
		var thePlatform = new String(navigator.userAgent);
		var x=thePlatform.indexOf("(")+1;
		var y=thePlatform.indexOf(";",x+1);
		var helpFolderAppend = "help/";
		var macFSHelpFolderAppend = "help:";
		thePlatform=thePlatform.substring(x,y);

		// Request privilege

		netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");

		var theEditor = top.opener.top.globals.document.vars.externalEditor.value;
		//alert("editor: " + theEditor);
		
		var theLoc = null;
		
		
		
		//see if we can find a help Window that is open, and snarf it's location
		if (top.opener.top.screen.controls.helpWindow && top.opener.top.screen.controls.helpWindow != null && !top.opener.top.screen.controls.helpWindow.closed && top.opener.top.screen.controls.helpWindow.location)
		{
			theLoc = new String(top.opener.top.screen.controls.helpWindow.location);
			helpFolderAppend = "";  // the path will already point to the help folder if we get it from the window.
			macFSHelpFolderAppend = "";
		}
		else
		{
			//default case - no help window open, figure out it's location as we normally would.
			theLoc = new String(opener.top.screen.content.location);
		}
		
		//if we should look for the help file, parse that location here
		if (isHelpScreen && isHelpScreen != null && isHelpScreen == true)
		{
			var defaultHelpFile = "ashelp.htm";
			var slashIdx = theLoc.lastIndexOf("/");
			var thePath = theLoc.substring(0,slashIdx+1);
			var thePage = theLoc.substring(slashIdx+1, theLoc.length);
			
			if (thePath.substring(thePath.length - 6, thePath.length) == "intro/")
			{
				thePath = thePath.substring(0, thePath.length - 6);
			}
			else if (thePath.substring(thePath.length - 9, thePath.length) == "ipreview/")
			{
				thePath = thePath.substring(0, thePath.length - 9);
			}
			else if (thePath.substring(thePath.length - 8, thePath.length) == "preview/")
			{
				thePath = thePath.substring(0, thePath.length - 8);
			}
						
			var helpFile = thePath + helpFolderAppend + defaultHelpFile;
			
			//now get a directory listing and look for a help file that matches the
			// thePage fileName
			if (top.opener && top.opener.top.globals)	
			{
				helpPath = "" + top.opener.top.globals.getFolder(top.opener.top.globals);
			}

			if (thePlatform == "Macintosh")	
			{						// Macintosh support
				helpPath = helpPath + macFSHelpFolderAppend;
			}
			else	
			{												// Windows support
				helpPath = helpPath + helpFolderAppend;
			}
	
			var lookingForFile = thePage;
			
			var theList = top.opener.top.globals.document.setupPlugin.GetFolderContents(helpPath,".htm");
			if (theList != null)	
			{
				for (var i=0; i<theList.length; i++)	
				{
					if (lookingForFile == theList[i])	{
						helpFile = thePath + helpFolderAppend + lookingForFile;
						break;
						}
				}
			}
			//else
			//	alert("found no list from: " + helpPath);
				
			if (helpFile != null && helpFile != "null" && helpFile != "")
				theLoc = helpFile;
			
			//alert("HelpLoc: " + helpFile);
				
		}
		//now, if the layer select popup is around, see if it has a better location for us
		else if ((!isHelpScreen) && (document.layers["layerSwitch"]) && (document.layers["layerSwitch"].visibility=="show") && (document.layers["layerSwitch"].document.forms) && (document.layers["layerSwitch"].document.forms[0]["layerSelect"]))
		{
			var selindex = document.layers["layerSwitch"].document.forms[0]["layerSelect"].options.selectedIndex;
			var theValue =  document.layers["layerSwitch"].document.forms[0]["layerSelect"].options[selindex].value;
			
			if (theValue && theValue != null && theValue != "" && theValue != "null"  && theValue != "_none")
			{
				document.layers["layerSwitch"].document.forms[0]["layerSelect"].options[selindex].value;
				theLoc = theValue;
				//alert("Would edit: " + theValue);
			}
			else
			{
				//alert("ERROR: selected layer had a defined location of: " + theValue);	
			}
		}

		

		if (theEditor.toString().lastIndexOf("Netscape Communicator") >= 0)	
		{
			//editWindow=window.open("","_blank","dependent=yes,toolbar=1,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1");
			//editWindow.onerror=null;
			//editWindow.location=theLoc;
			netscape.plugin.composer.Document.editDocument(theLoc);
		}
		else if (theEditor != null && theEditor != "" && theEditor.length > 0)
		{
		
			var theFile = theLoc;
			
			//We need to see if we are editing a multi-layer document, which has the layer popup, and
			//if so, make sure we get the right document from the popup here
			
			
			if (theFile.indexOf("file:///") ==0)	{
				theFile = theFile.substring(8,theFile.length);
				}

			if (thePlatform == "Macintosh")	{
				var path=unescape(theFile);
				var fileArray=path.split("/");
				var newpath=fileArray.join(":");
				if (newpath.charAt(0)==':')	{
					newpath=newpath.substring(1,newpath.length);
					}
				theFile=unescape(newpath);			
				}
			else	{
				// note: JavaScript returns path with '/' instead of '\'        
				var path=unescape(theFile);
				                
				// gets the drive letter and directory path
				var Drive = path.substring(path.indexOf('|')-1, path.indexOf('|'));
				var thepath = path.substring(path.indexOf('/'), path.length);
				var newpath=Drive + ":" + thepath;
				var fileArray=newpath.split("/");
				theFile=fileArray.join("\\");
				}

			//alert("I wanna open: " + theFile);
			opener.top.globals.document.setupPlugin.OpenFileWithEditor(theEditor, theFile);
		}
		else
		{
			alert("You must select an application as your editor before you can edit HTML pages.");
			chooseEditor();
		}
			
}


function setShowScreenBox()
{
	if (document && document.layers["showscreen"] && document.layers["showscreen"].document.ssForm)
	{	
		var theBox = document.layers["showscreen"].document.ssForm.showScreenBox;
		if ((theBox))
		{
		
			var isVisible = screenVisible();
			
			if (isVisible == false)
			{
				theBox.checked = false;
			}
			else
			{
				theBox.checked = true;
			}
		}
	}
}


function screenVisible()
{
	var visible = true;
	
	if (opener.top && opener.top.screen && opener.top.screen.controls && opener.top.screen.controls.screenVisible)
	{
			visible = opener.top.screen.controls.screenVisible();
	}
	//else
	//alert("toolbar - screenvisible: " + visible);
	
	return visible;
}

function reloadScreen()
{
	//var theLoc = top.opener.screen.content.location;
	//alert("top.opener.screen.content.location is " + top.opener.screen.content.location);
	//top.opener.screen.content.history.go(0);
	top.opener.screen.controls.reloadDocument();
	return false;
}

function chooseEditor()
{

	netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
	
	var theEditor = opener.top.globals.document.setupPlugin.GetExternalEditor();
	if ((theEditor != null) && (theEditor != "")) {
		top.opener.top.globals.document.vars.externalEditor.value = theEditor;
		top.opener.top.globals.saveExternalEditor();
	}
}

function screenOptions()
{
	return opener.top.screen.controls.go('Screen Options');

}

function showScreen(thisRef)
{
	var result = thisRef.checked;
	
	var theBox = document.layers["showscreen"].document.ssForm.showScreenBox;
	if ((theBox))
	{
		var result = opener.top.screen.controls.showScreen(theBox.checked);
		if ((result != null)) 
			theBox.checked = result;
	}
	
	return result;
}

function hidelayer(layerName)
{
	if (document.layers)
	{
		theLayer = eval("document.layers."+layerName);
		if(theLayer)
		{
			theLayer.visibility="hide";
		}
	}
	else
	{
		//alert("hide: " + layerName);
		theImg = eval("document.images."+layerName);
		replaceSrc(theImg, "Images/blank.gif");
		replaceSrc(theImg, "Images/blank1.gif");
	}
}

function showlayer(layerName)
{
	if (document.layers)
	{
		theLayer = eval("document.layers."+layerName);
		if(theLayer)
		{
			theLayer.visibility="show";
		}
	}
	else
	{
		//alert("show: " + layerName);
		theImg = eval("document.images."+layerName);
		if(theImg)
			replaceSrc(theImg, theImg.lowsrc);	
	}
}


function toggleShow(lName, checkValue)
{
	//alert(checkValue);
	if ((checkValue != null) && (checkValue == false))
		hidelayer(lName);
	else
		showlayer(lName);

}

function callback()
{
	ready = true;
	opener.top.screen.controls.generateToolBarControls();
}

function updateLayersLayer()
{
	//first, evaluate the ## of layers in the top document.
	var numLayers = 0;
	var thePopup = document.layers["layerSwitch"].document.forms[0]["layerSelect"];
	
	if (thePopup && !top.loading)
	{
		//if (top.opener.screen.content.document.layers && top.opener.screen.content.document.layers.length > 0)
		//	numLayers = top.opener.screen.content.document.layers.length;
		numLayers = top.opener.screen.controls.countDocumentLayers();
	
		if (numLayers > 0)
		{
			document.layers["layerSwitch"].visibility="show";
			var curLayerName="", curLayerSrc="_none";
			
	
			//blank out old list
top.opener.top.globals.debug("deleting options list: " + thePopup.options.length + " present");
		
			for (var i = (numValidPopupEntries -1); i >= 0 ; i--)
			{
				thePopup.options[i] = new Option(" "," ",false,false);
			}	
			//thePopup.options.length = 0;

			//add a layer for the main body
			thePopup.options[0] = new Option("Main Document                     .",top.opener.screen.controls.getDocumentLocation(), false, false);
			numValidPopupEntries = 1;
top.opener.top.globals.debug("setting popuocount to 1, options.length is: " + thePopup.options.length);

			for(var index = 0; index < numLayers; index++)
			{
				curLayerName=top.opener.screen.controls.getLayerName(index);
				curLayerSrc=top.opener.screen.controls.getLayerSrc(index);
				if (!curLayerSrc || curLayerSrc == null || curLayerSrc == "null" || curLayerSrc == "")
					 curLayerSrc = "_none";				  
				
				if (top.opener.screen.controls.getDocumentLayerVisibility(index) == "hide")
				{
					curLayerName = (curLayerName + " [hidden]");
				}
				
				if (curLayerName == null || curLayerName == "")
				{
					curLayerName = ("Layer " + eval(index+1));
				} 
				
				//alert("Layer name: " + curLayerName + "; src: " + curLayerSrc);
				
				if ((top.opener.screen.controls.getDocumentLayerVisibility(index) == "hide") || ((curLayerSrc != null) && (curLayerSrc != "") && (curLayerSrc != "null") && (curLayerSrc != "_none")))
				{
top.opener.top.globals.debug("Adding layer " + curLayerName + " to options " + numValidPopupEntries + ".  thePopup.options.length now: " + thePopup.options.length);
					thePopup.options[numValidPopupEntries] = new Option(curLayerName,curLayerSrc, false, false);
					numValidPopupEntries++;
				}
			}	
			thePopup.selectedIndex=0;
			document.layers["layerSwitch"].document.layers["g_hideothers"].visibility= "hide"; //hide the checkbox if the main document is selected.
		}
		else
		{
			hidelayer("layerSwitch");
			document.layers["layerSwitch"].document.layers["g_hideothers"].visibility= "hide"; //hide the checkbox if the main document is selected.

		}
	}
	else
		setTimeout("updateLayersLayer()",1000);
	
}


function selectLayer(popupIndex)
{

	var numLayers = numValidPopupEntries;//document.layers["layerSwitch"].document.forms[0]["layerSelect"].options.length;
	var layerName = "";
	var hideCheckBox = 	null;
	
	if (popupIndex >= numValidPopupEntries)
	{
		popupIndex = 0;
		document.layers["layerSwitch"].document.forms[0]["layerSelect"].selectedIndex = 0;
	}
	if (document && document.layers && document.layers["layerSwitch"] && document.layers["layerSwitch"].document.forms[0] && document.layers["layerSwitch"].document.layers["g_hideothers"].document.forms[0]["hideLayers"])
		hideCheckBox = document.layers["layerSwitch"].document.layers['g_hideothers'].document.forms[0]["hideLayers"];

	if (top.opener.screen.controls.countDocumentLayers() > 0)
	{

		//first restore all originally hidden layers to their old hidden state:
		for (var layidx = 1; layidx < numLayers; layidx++)
		{
			//alert("Layer " + layidx + "/" + numLayers);
			var hiddenIndex = document.layers["layerSwitch"].document.forms[0]["layerSelect"].options[layidx].text.toString().indexOf(" [hidden]");
			
			if (hiddenIndex >= 0)
			{
				var layerName = document.layers["layerSwitch"].document.forms[0]["layerSelect"].options[layidx].text.substring(0, hiddenIndex);
				//alert("hiding " + layerName);
				//if (top.opener.screen.content.document.layers[layerName].visibility)
					top.opener.top.screen.controls.showDocumentLayer(layerName, false);
					//top.opener.screen.content.document.layers[layerName].visibility="hide";
			}
		}
		
		//now make sure we are showing the currently selected layer
		if (popupIndex > 0)				//omit 0 becuase that represents the main document
		{
top.opener.top.globals.debug("selectLayer, showing current Layer #: " + popupIndex);

			document.layers["layerSwitch"].document.layers["g_hideothers"].visibility="show";
			layerName = document.layers["layerSwitch"].document.forms[0]["layerSelect"].options[popupIndex].text.toString();
top.opener.top.globals.debug("selectLayer, layer name is: " + layerName);
			if (layerName.indexOf(" [hidden]") > 0)
				layerName = layerName.substring(0,layerName.indexOf(" [hidden]"));
			top.opener.top.screen.controls.showDocumentLayer(layerName, true);
		}
		else if (hideCheckBox != null && hideCheckBox.checked) //showing main document
		{
			numLayers = top.opener.screen.controls.countDocumentLayers();
			//show all document layers
	 		for (var index = 0; index < numLayers; index++)
			{
				layerName=top.opener.screen.controls.getLayerName(index);
				
				if (!checkIfHiddenInLayerPopup(layerName))
					top.opener.top.screen.controls.showDocumentLayer(layerName, true);
			
				hideCheckBox.checked = false;
			}				
		}
		
		if (popupIndex == 0)
			document.layers["layerSwitch"].document.layers["g_hideothers"].visibility= "hide"; //hide the checkbox if the main document is selected.

		

	}
}


function checkIfHiddenInLayerPopup(inLayerName)
{
	var thePopup = document.layers["layerSwitch"].document.forms[0]["layerSelect"]; 
	var hiddenName = inLayerName + " [hidden]";
	var result = false;
	
	if (thePopup && thePopup != null)
	{
top.opener.top.globals.debug("length: " + thePopup.length + ".  options.length: " + thePopup.options.length);
		for (var index = thePopup.length-1; index > 0; index--)
		{
			if (thePopup.options[index].text.toString() == hiddenName)
			{
				result = true;
				return result;
			}
		}
	}
	
	return result;
}

//show all layers that were originally not hidden.
function restoreLayers()
{
	//first, evaluate the ## of layers in the top document.
	var numLayers = 0;
	var curLayerName = "";
	
	numLayers = top.opener.screen.controls.countDocumentLayers();

	for (var index = 0; index < numLayers; index++)
	{
		curLayerName=top.opener.screen.controls.getLayerName(index);
		
		//if (!checkIfHiddenInLayerPopup(curLayerName))
			top.opener.top.screen.controls.showDocumentLayer(curLayerName, true);
	}	

	selectLayer(document.layers["layerSwitch"].document.forms[0]["layerSelect"].selectedIndex);
}


function hideOtherLayers(inDoHide)
{

	var thePopup = document.layers["layerSwitch"].document.forms[0]["layerSelect"];
	
	if (!thePopup || thePopup == null)
		return;

	if (inDoHide == false)
		restoreLayers();
	else if (thePopup.selectedIndex > 0)
	{
		//first, evaluate the ## of layers in the top document.
		var numLayers = 0;
		var curLayerName = "";
top.opener.top.globals.debug("hideOtherLayers, getting layer name for: " + thePopup.selectedIndex);
		var selectedLayerName = thePopup.options[thePopup.selectedIndex].text.toString();
top.opener.top.globals.debug("hideOtherLayers, layer name is: " + selectedLayerName);
		
		numLayers = top.opener.screen.controls.countDocumentLayers();
	
		for (var index = 0; index < numLayers; index++)
		{
			curLayerName=top.opener.screen.controls.getLayerName(index);
			
			if (curLayerName == selectedLayerName || (curLayerName + " [hidden]") == selectedLayerName)
			{
				top.opener.top.screen.controls.showDocumentLayer(curLayerName, true);
			}
			else
			{
				top.opener.top.screen.controls.showDocumentLayer(curLayerName, false);
			}
		}	
		

	}
	else if (document && document.layers && document.layers["layerSwitch"] && document.layers["layerSwitch"].document.forms[0] && document.layers["layerSwitch"].document.layers['g_hideothers'].document.forms[0]["hideLayers"])
		document.layers["layerSwitch"].document.layers['g_hideothers'].document.forms[0]["hideLayers"].checked = false;
		
}


function cfgHelp()
{
	if ((!cfgHelpWindow) || (cfgHelpWindow==null) || (!cfgHelpWindow.location) || (cfgHelpWindow.closed))
	{
		cfgHelpWindow = top.open("about:blank", "CFGHELP", "dependent=yes,alwaysRaised=yes,width=300,height=230,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no");		
	}	

	setHelpLocation();
}


function setHelpLocation()
{

	netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");

	if (cfgHelpWindow && !cfgHelpWindow.closed)	//don't do anything if there's no window, but set location if there is
	{
		var filePrefix = "./cfghelp"; //default prefix, will change
		var helpFile = "./cfghelp/default.htm";	//put default help screen here
	
		//figure out the file prefix by checking the toolbar location
		var toolbarLoc = document.location.toString();
		filePrefix = toolbarLoc.substring(0, toolbarLoc.lastIndexOf("/")+1) + "cfghelp/";
	
		if (top.opener.screen.content.document.location)
		{
			helpFile = top.opener.screen.content.document.location.toString();
			var theIdx = helpFile.lastIndexOf("/");
			var theLength = helpFile.length;
			helpFile = "" + helpFile.substring(theIdx+1, theLength);
		}

		//alert("looking for help file: " + helpFile);

		//check if the file we made up exists, if not, revert to the default
		var helpPath = "";

		if (top.opener && top.opener.top.globals)	
		{
			helpPath = "" + top.opener.top.globals.getFolder(self);
			//alert("helppath: " + helpPath);
		}

		var thePlatform = new String(navigator.userAgent);
		var x=thePlatform.indexOf("(")+1;
		var y=thePlatform.indexOf(";",x+1);
		thePlatform=thePlatform.substring(x,y);

		if (thePlatform == "Macintosh")	
		{						// Macintosh support
			helpPath = helpPath + "cfghelp:";
		}
		else	
		{												// Windows support
			helpPath = helpPath + "cfghelp/";
		}

		var lookingForFile = helpFile;
		helpFile = filePrefix + "default.htm";
		
		var theList = top.opener.top.globals.document.setupPlugin.GetFolderContents(helpPath,".htm");
		if (theList != null)	
		{
			for (var i=0; i<theList.length; i++)	
			{
				if (lookingForFile == theList[i])	{
					helpFile = filePrefix + lookingForFile;
					break;
					}
			}
		}

		if (helpFile != null && helpFile != "")	
		{
			cfgHelpWindow=window.open("about:blank","CFGHELP","dependent=yes,alwaysraised=yes,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1");
			if (cfgHelpWindow)	{
				cfgHelpWindow.focus();
				//alert("helpfile: " + helpFile);
				cfgHelpWindow.location = helpFile;
			}
		}

	}
}


function exitASE()
{
	netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");

	if (confirm("Are you sure you want to quit the Account Setup Editor?") == true)
		top.opener.top.globals.document.setupPlugin.QuitNavigator();
}


// end hiding contents from old browsers  -->