dmose%mozilla.org 68d3ee8a2a updating license to xPL 1.1
git-svn-id: svn://10.0.0.236/trunk@52535 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-02 07:16:31 +00:00

681 lines
20 KiB
JavaScript

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