2004-11-30 08:23:02 +00:00

216 lines
8.4 KiB
JavaScript

# 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 Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
var _elementIDs = ["networkProxyType",
"networkProxyFTP", "networkProxyFTP_Port",
"networkProxyGopher", "networkProxyGopher_Port",
"networkProxyHTTP", "networkProxyHTTP_Port",
"networkProxySOCKS", "networkProxySOCKS_Port",
"networkProxySOCKSVersion",
"networkProxySSL", "networkProxySSL_Port",
"networkProxyNone", "networkProxyAutoconfigURL", "shareAllProxies"];
function Startup()
{
DoEnabling();
}
function DoEnabling()
{
var i;
var ftp = document.getElementById("networkProxyFTP");
var ftpPort = document.getElementById("networkProxyFTP_Port");
var gopher = document.getElementById("networkProxyGopher");
var gopherPort = document.getElementById("networkProxyGopher_Port");
var http = document.getElementById("networkProxyHTTP");
var httpPort = document.getElementById("networkProxyHTTP_Port");
var socks = document.getElementById("networkProxySOCKS");
var socksPort = document.getElementById("networkProxySOCKS_Port");
var socksVersion = document.getElementById("networkProxySOCKSVersion");
var socksVersion4 = document.getElementById("networkProxySOCKSVersion4");
var socksVersion5 = document.getElementById("networkProxySOCKSVersion5");
var ssl = document.getElementById("networkProxySSL");
var sslPort = document.getElementById("networkProxySSL_Port");
var noProxy = document.getElementById("networkProxyNone");
var autoURL = document.getElementById("networkProxyAutoconfigURL");
var autoReload = document.getElementById("autoReload");
var shareAllProxies = document.getElementById("shareAllProxies");
// convenience arrays
var manual = [ftp, ftpPort, gopher, gopherPort, http, httpPort, socks, socksPort, socksVersion, socksVersion4, socksVersion5, ssl, sslPort, noProxy, shareAllProxies];
var manual2 = [http, httpPort, noProxy, shareAllProxies];
var auto = [autoURL, autoReload];
// radio buttons
var radiogroup = document.getElementById("networkProxyType");
switch ( radiogroup.value ) {
case "0":
case "4":
for (i = 0; i < manual.length; i++)
manual[i].setAttribute( "disabled", "true" );
for (i = 0; i < auto.length; i++)
auto[i].setAttribute( "disabled", "true" );
break;
case "1":
for (i = 0; i < auto.length; i++)
auto[i].setAttribute( "disabled", "true" );
if (!radiogroup.disabled && !shareAllProxies.checked) {
for (i = 0; i < manual.length; i++) {
prefstring = manual[i].getAttribute( "prefstring" );
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
manual[i].removeAttribute( "disabled" );
}
} else {
for (i = 0; i < manual.length; i++)
manual[i].setAttribute("disabled", "true");
for (i = 0; i < manual2.length; i++) {
prefstring = manual2[i].getAttribute( "prefstring" );
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
manual2[i].removeAttribute( "disabled" );
}
}
break;
case "2":
default:
for (i = 0; i < manual.length; i++)
manual[i].setAttribute("disabled", "true");
if (!radiogroup.disabled)
for (i = 0; i < auto.length; i++)
auto[i].removeAttribute("disabled");
break;
}
}
const nsIProtocolProxyService = Components.interfaces.nsIProtocolProxyService;
const kPROTPROX_CID = '{e9b301c0-e0e4-11D3-a1a8-0050041caf44}';
function ReloadPAC()
{
var autoURL = document.getElementById("networkProxyAutoconfigURL");
var pps = Components.classesByID[kPROTPROX_CID]
.getService(nsIProtocolProxyService);
pps.configureFromPAC(autoURL.value);
}
function onConnectionsDialogOK()
{
var autoURL = document.getElementById("networkProxyAutoconfigURL");
var URIFixup = Components.classes["@mozilla.org/docshell/urifixup;1"]
.getService(Components.interfaces.nsIURIFixup);
try {
var fixedUpURI = URIFixup.createFixupURI(autoURL.value, 0);
autoURL.value = fixedUpURI.spec;
}
catch(ex) {
}
window.opener.top.hPrefWindow.wsm.savePageData(window.location.href, window);
return true;
}
var oldUrls = ["","",""];
var oldPorts = ["0","0","0"];
function toggleProxySettings()
{
var http = document.getElementById("networkProxyHTTP");
var httpPort = document.getElementById("networkProxyHTTP_Port");
var ftp = document.getElementById("networkProxyFTP");
var ftpPort = document.getElementById("networkProxyFTP_Port");
var gopher = document.getElementById("networkProxyGopher");
var gopherPort = document.getElementById("networkProxyGopher_Port");
var ssl = document.getElementById("networkProxySSL");
var sslPort = document.getElementById("networkProxySSL_Port");
var socks = document.getElementById("networkProxySOCKS");
var socksPort = document.getElementById("networkProxySOCKS_Port");
var socksVersion = document.getElementById("networkProxySOCKSVersion");
var socksVersion4 = document.getElementById("networkProxySOCKSVersion4");
var socksVersion5 = document.getElementById("networkProxySOCKSVersion5");
// arrays
var urls = [ftp,gopher,ssl];
var ports = [ftpPort,gopherPort,sslPort];
var allFields = [ftp,gopher,ssl,ftpPort,gopherPort,sslPort,socks,socksPort,socksVersion,socksVersion4,socksVersion5];
if (document.getElementById("shareAllProxies").checked) {
for (i = 0; i < allFields.length; i++)
allFields[i].setAttribute("disabled", "true");
for (i = 0; i < urls.length; i++) {
oldUrls[i] = urls[i].value;
prefstring = urls[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
urls[i].value = http.value;
}
for (i = 0; i < ports.length; i++) {
oldPorts[i] = ports[i].value;
prefstring = ports[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
ports[i].value = httpPort.value;
}
} else {
for (i = 0; i < allFields.length; i++) {
prefstring = allFields[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
allFields[i].removeAttribute("disabled");
}
for (i = 0; i < urls.length; i++) {
prefstring = urls[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
urls[i].value = oldUrls[i];
}
for (i = 0; i < ports.length; i++) {
prefstring = ports[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
ports[i].value = oldPorts[i];
}
}
}
function copyProxySettings()
{
if (!document.getElementById("shareAllProxies").checked)
return;
var http = document.getElementById("networkProxyHTTP");
var httpPort = document.getElementById("networkProxyHTTP_Port");
var ftp = document.getElementById("networkProxyFTP");
var ftpPort = document.getElementById("networkProxyFTP_Port");
var gopher = document.getElementById("networkProxyGopher");
var gopherPort = document.getElementById("networkProxyGopher_Port");
var ssl = document.getElementById("networkProxySSL");
var sslPort = document.getElementById("networkProxySSL_Port");
var urls = [ftp,gopher,ssl];
var ports = [ftpPort,gopherPort,sslPort];
for (i = 0; i < urls.length; i++) {
prefstring = urls[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
urls[i].value = http.value;
}
for (i = 0; i < ports.length; i++) {
prefstring = ports[i].getAttribute("prefstring");
if (!window.opener.top.hPrefWindow.getPrefIsLocked(prefstring))
ports[i].value = httpPort.value;
}
}