home *** CD-ROM | disk | FTP | other *** search
Text File | 2001-10-02 | 30.7 KB | 1,050 lines |
- var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
- var pIIMManager = IMServiceClass.getService(Components.interfaces.nsIIMManager)
- var lastRadio = null;
- var lastViewRadio = null;
- var allEnums = Components.interfaces.nsAimPrivacyModes;
- var stateEnums = Components.interfaces.nsAimOnlineStates;
- var globalPrivacyObject = pIIMManager.QueryInterface(Components.interfaces.nsIAimPrivacy);
- var MozPreferences = Components.classes['@mozilla.org/preferences;1'];
- MozPreferences = MozPreferences.getService();
- MozPreferences = MozPreferences.QueryInterface(Components.interfaces.nsIPref);
-
- function getString(name)
- {
- if (aimStringBundle())
- return aimStringBundle().GetStringFromName(name);
- else
- return "";
- }
-
- function EditAwayMessageOnLoad()
- {
- // poke in the arguments
-
- var nameItem = document.getElementById("awayMessageName");
- var textItem = document.getElementById("awayMessageText");
-
- nameItem.value = window.arguments[1];
- textItem.value = window.arguments[2];
- nameItem.focus();
-
- // construct some of the static labels here; had problems placing
- // '%' into an DTD ENTITY
-
- var labelItem = document.getElementById("editAwayMessageSpecial1");
- var stringItem = getString( "editAwayMessageSpecial1" );
- labelItem.setAttribute( "value", stringItem );
- labelItem = document.getElementById("editAwayMessageSpecial2");
- stringItem = getString( "editAwayMessageSpecial2" );
- labelItem.setAttribute( "value", stringItem );
- labelItem = document.getElementById("editAwayMessageSpecial3");
- stringItem = getString( "editAwayMessageSpecial3" );
- labelItem.setAttribute( "value", stringItem );
- labelItem = document.getElementById("editAwayMessageSpecial4");
- stringItem = getString( "editAwayMessageSpecial4" );
- labelItem.setAttribute( "value", stringItem );
-
- // set the OK, Cancel callbacks
-
- if ( nameItem.value == "" )
- doSetOKCancel(AddAwayMessageOnOK, 0);
- else
- doSetOKCancel(EditAwayMessageOnOK, 0);
- }
-
- function PrefIMAwayOnLoad()
- {
- GetRDFService();
-
- sidebar_file = GetRdfFileUrl("default-messages.rdf", "dm.rdf");
- datasource =
- RDF.GetDataSource(sidebar_file);
-
- dump( "datasource " + datasource + "\n" );
-
- var tree = document.getElementById("AwayMessages");
- tree.database.AddDataSource(datasource);
- tree.setAttribute('ref', tree.getAttribute('ref'));
-
- /*
- var editorShell = editorElement.editorShell;
-
- if(editorShell) {
- window.editorShell = editorShell;
-
- contentWindow = window._content;
-
- window.editorShell.editorType = "html";
-
- window.editorShell.SetContentWindow(contentWindow);
- window.editorShell.SetWebShellWindow(window);
- window.editorShell.SetToolbarWindow(window);
- contentWindow.focus();
- }
- */
- }
-
-
- // XXXVISHy
- // Add a user to the allow or deny list. top.addMode defines which list
-
- function GetUserAdd()
- {
- var fldUserName = top.document.getElementById("fldUserName");
- var pIAimPrivacy = aimPrivacy();
- var name = fldUserName.value;
- if ( name && name != "" ) {
- if ( top.addMode == "Allow" ) {
- pIAimPrivacy.AllowListAdd( name );
- }
- else if ( top.addMode == "Deny" ) {
- pIAimPrivacy.DenyListAdd( name );
- }
- //pIAimPrivacy.UpdateStorage();
- top.window.close();
- }
- }
-
- /*
- * Name: StandardURL
- *
- * Arguments: URI string, e.g., chrome://foo/bar
- *
- * Description: obtains an instance of nsIURL and sets the spec to the passed
- * uri. Returns the nsIURL instance.
- *
- */
-
- function StandardURL(s) {
- var clazz = Components.classes["@mozilla.org/network/standard-url;1"];
- var iface = Components.interfaces.nsIURL;
- var obj = clazz.createInstance(iface);
- obj.spec = s;
- return obj;
- }
-
- /*
- * Name: Sound
- *
- * Arguments: none
- *
- * Description: Creates and returns an instance of nsISound
- *
- */
-
- function Sound() {
- var clazz = Components.classes["@mozilla.org/sound;1"];
- var iface = Components.interfaces.nsISound;
- var obj = clazz.createInstance(iface);
- return obj;
- }
-
- /*
- * Name: PlaySound
- *
- * Arguments: chrome URI to a sound file
- *
- * Description: Called by onclick handler for speaker titled buttons in
- * the sound preferences panel for IM.
- *
- */
-
- function PlaySound( myURIPref )
- {
- var sound = new Sound();
- var myURI;
-
- try {
- myURI = aimPrefsManager().GetCharPref( myURIPref , null, false );
- }
- catch(e) {
- try {
- myURI = aimPrefsManager().GetCharPref( myURIPref , null, true); // get the global one if the per screen name doesnt work
- }
- catch(e) {
- return;
- }
- }
-
- var uri = new StandardURL(myURI);
- if ( sound != undefined && sound != null && uri != undefined && uri != null ) {
- try {
- sound.play( uri );
- }
- catch( e ) {
- // device may not support sound, so ignore
- }
- }
- }
-
- /* away messages */
-
- var datasource = null;
- var RDF = null;
- var awayMessages = null;
-
- function
- GetRDFService()
- {
- if ( RDF == null ) {
- var RDFClass = Components.classes['@mozilla.org/rdf/rdf-service;1'];
- RDF = RDFClass.getService(Components.interfaces.nsIRDFService);
- }
- }
-
- function
- RemoveTarget( msgName )
- {
- GetRDFService();
-
- var messages_file = GetRdfFileUrl("default-messages.rdf", "dm.rdf");
- var datasource = RDF.GetDataSource(messages_file);
-
- var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
- container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
- container.Init(datasource, RDF.GetResource("NC:AIM/AwayMessageBag"));
-
- var elements = container.GetElements();
- var target, node;
- var nameResource =
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgName");
- while ( elements.hasMoreElements() ) {
- node = elements.getNext();
- if ( node )
- target = datasource.GetTarget( node, nameResource,
- true );
- if ( target )
- target = target.QueryInterface(Components.interfaces.nsIRDFLiteral);
- if ( target && target.Value == msgName ) {
- container.RemoveElement( node, true );
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush();
- }
- }
- return null;
- }
-
- function
- SetAwayMessageTarget( msgName, msgText )
- {
- GetRDFService();
-
- var messages_file = GetRdfFileUrl("default-messages.rdf", "dm.rdf");
- var datasource = RDF.GetDataSource(messages_file);
-
- var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
- container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
- container.Init(datasource, RDF.GetResource("NC:AIM/AwayMessageBag"));
-
- var elements = container.GetElements();
- var nametarget, texttarget, node;
- var nameResource =
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgName");
- var textResource =
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgText");
- while ( elements.hasMoreElements() ) {
- node = elements.getNext();
- if ( node )
- nametarget = datasource.GetTarget( node, nameResource,
- true );
- if ( nametarget )
- nametarget = nametarget.QueryInterface(Components.interfaces.nsIRDFLiteral);
- if ( nametarget && nametarget.Value == msgName ) {
- texttarget = datasource.GetTarget( node, textResource,
- true );
- if ( texttarget )
- texttarget = texttarget.QueryInterface(Components.interfaces.nsIRDFLiteral);
- if ( texttarget ) {
- var newText = RDF.GetLiteral(msgText);
- datasource.Change( node, textResource,
- texttarget, newText);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush();
- }
- break;
- }
- }
- }
-
- //XXXVISHY - two
-
- function modeToRadio(mode)
- {
-
- switch(mode) {
- case allEnums.AllowAll:
- dump ("allEnums.AllowAll\n" );
- return document.getElementById("aim_privacy_contact_allowallusers");
- break;
- case allEnums.AllowBuddies:
- dump ("allEnums.AllowBuddies\n" );
- return document.getElementById("aim_privacy_contact_allowbuddylistusers");
- break;
- case allEnums.AllowList:
- dump ("allEnums.AllowOnlyList\n" );
- return document.getElementById("aim_privacy_contact_allowonlylist");
- break;
- case allEnums.DenyAll:
- dump ("allEnums.DenyAll\n" );
-
- return document.getElementById("aim_privacy_contact_blockallusers");
- break;
- case allEnums.DenyList:
- dump ("allEnums.DenyList\n" );
- return document.getElementById("aim_privacy_contact_blocklistusers");
- break;
- default:
- dump("Bad privacy mode\n");
- return document.getElementById("aim_privacy_contact_allowallusers");
- break;
- }
- }
-
- function privacyModeRadio(mode)
- {
- dump("privacyModeRadio\n");
-
- // this should not be needed, but believe me dont remove it
- // otherwise radio UI can show two things selected ;-)
- lastRadio.checked = false;
- lastRadio = modeToRadio(mode);
- dump ("lastRadio is " + lastRadio + "\n");
- lastRadio.checked = true;
- parent.lastPrivacyMode = mode;
-
- dump ("lastPrivacyMode is " + parent.lastPrivacyMode + "\n");
- }
-
- function privacyChatInvites(value)
- {
- parent.lastChatInvites = value;
- }
-
- function viewToRadio(view)
- {
- dump("in function viewToRadio\n" + view);
-
- switch(view) {
- case '1':
- return document.getElementById("nodisclosure");
- break;
- case '2':
- return document.getElementById("limiteddisclosure");
- break;
- case '3':
- return document.getElementById("fulldisclosure");
- break;
- default:
- dump("Bad privacy view\n");
- return document.getElementById("nodisclosure");
- break;
- }
- }
-
- function privacyViewRadio(view)
- {
- dump("privacyModeRadio\n");
-
- // this should not be needed, but believe me dont remove it
- // otherwise radio UI can show two things selected ;-)
- //lastViewRadio.checked = false;
- //lastViewRadio = viewToRadio(view);
- dump ("lastViewRadio is " + lastViewRadio + "\n");
- //lastViewRadio.checked = true;
- parent.lastPrivacyView = view;
-
- dump ("lastPrivacyView is " + parent.lastPrivacyView + "\n");
- }
-
- // onload handler for privacy panel. grab the privacy mode enums, and register
- // AssertChanges with prefwindow so we get called on OK presses.
-
- AdminCallback = new Object();
- AdminCallback.OnRequestInfoComplete = function(type,info)
- {
- dump("On RequestInfoComplete\n");
-
- switch (type) {
- case Components.interfaces.nsIAimAdminInfo.RegistrationStatusPreference:
- dump("info is " + info + "\n");
- parent.lastPrivacyView = info;
-
- dump("Got the aim privacy view\n");
- lastViewRadio = viewToRadio(parent.lastPrivacyView);
-
- if ( lastViewRadio != undefined && lastViewRadio != null) {
- var privacyViewElement = document.getElementById("privacyView");
- privacyViewElement.selectedItem = lastViewRadio;
- }
- break;
- default:
- break;
- }
- }
- AdminCallback.OnRequestInfoError = function(pErrMsg)
- {
- dump("OnRequestInfoError\n");
- }
-
- adminGetterCallback = new Object();
-
- adminGetterCallback.ExecuteIfReady = function()
- {
- dump("about to get the disclosure level\n");
- aimAdminManager().RequestInfoRegistrationStatusPreference(AdminCallback);
- }
-
- function DisablePrivacyUI()
- {
- var el = document.getElementById("aim_privacy_contact_allowallusers");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("aim_privacy_contact_allowbuddylistusers");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("aim_privacy_contact_allowonlylist");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("aim_privacy_contact_blockallusers");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("aim_privacy_contact_blocklistusers");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("button1");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("button2");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("button3");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("button4");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("chatInvites");
- if ( el )
- el.setAttribute( "disabled", "true" );
- /* el = document.getElementById("idleTime");
- if ( el )
- el.setAttribute( "disabled", "true" );
- */
- el = document.getElementById("privacyView");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("fulldisclosure");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("limiteddisclosure");
- if ( el )
- el.setAttribute( "disabled", "true" );
- el = document.getElementById("nodisclosure");
- if ( el )
- el.setAttribute( "disabled", "true" );
- }
-
- function DiscardPrivacyChanges()
- {
-
- var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
- var pIIMManager = IMServiceClass.getService(Components.interfaces.nsIIMManager);
- var pIAimString = pIIMManager.QueryInterface(Components.interfaces.nsIStringBundle);
-
- if ( pIAimString == undefined || pIAimString == null )
- return;
-
- var str = pIAimString.GetStringFromName( "privacy.exitmsg" );
- if (str == undefined || str ==null)
- return;
-
- alert( str );
- }
-
- function IsSignedOn()
- {
- var state = aimSession().CurrentState;
- dump( "state is " + state + " \n" );
-
- if ( state == stateEnums.Online || state == stateEnums.OnlineAway )
- return true;
- return false;
- }
-
- function PrefIMPrivacyOnLoad()
- {
- dump("PrefIMPrivacyOnLoad\n");
-
- if(false == IsSignedOn()) {
- var str = getString( "privacy.entermsg" );
- DisablePrivacyUI();
- alert( str );
- parent.hPrefWindow.registerOKCallbackFunc( DiscardPrivacyChanges );
- }
- else
- parent.hPrefWindow.registerOKCallbackFunc( AssertPrivacyChanges );
-
- // parent.handle.AddOnOK( AssertChanges );
-
- var priv = aimPrivacy();
- // do it only the first time!
- if (parent.lastPrivacyMode == undefined)
- parent.lastPrivacyMode = priv.PrivacyMode;
-
- dump("Got the aim privacy mode\n");
- lastRadio = modeToRadio(parent.lastPrivacyMode);
-
- if ( lastRadio != undefined && lastRadio != null)
- lastRadio.setAttribute("checked","true");
-
- if ( parent.lastChatInvites != undefined && parent.lastChatInvites != null) {
- var checkbox = document.getElementById("chatInvites");
- if ( checkbox != undefined && checkbox != null ) {
- checkbox.setAttribute("checked",parent.lastChatInvites);
- }
- }
-
- dump("set the radio.checked property\n");
- //aimPreferenceOnload();
- //dump("did the per screen name munging\n");
-
- var loggedin = true;
-
- if (loggedin && (parent.lastPrivacyView == undefined))
- {
- aimAdminManager().ExecuteIfReady(adminGetterCallback);
- }
- }
-
- function PrefIMPrivacyOnUnload()
- {
- // nothing for now
- }
-
- // grab a screenname from the user.
-
- function PostGetUserDlg( which )
- {
- openDialog("chrome://aim/content/pref-IM_getuser.xul", "",
- "modal=yes,chrome", which);
- }
-
- // delete the screenname entered by the user from the allow or deny list.
- // "which" indicates which list to purge from
-
- function DeleteFromList( which )
- {
- var tree = document.getElementById(which);
- var pIAimPrivacy = aimPrivacy();
- var selectedUser;
- if ( tree == undefined || tree == null )
- {
- return;
- }
-
- for ( var i = 0; i < tree.childNodes.length; i++ ) {
- if ( tree.childNodes[i].nodeName == "treechildren" ) {
- var users= tree.childNodes[i].childNodes;
- }
- }
-
- for (var i = 0; i <= users.length; i++) {
- if (users[i].getAttribute("selected") == "true") {
- selectedUser = users[i].childNodes[0].childNodes[0].getAttribute("label");
- if ( which == "Allow" ) {
- pIAimPrivacy.AllowListRemove( selectedUser );
- }
- else if ( which == "Deny" ) {
- pIAimPrivacy.DenyListRemove( selectedUser );
- }
- break;
- }
- }
- }
-
- // onload handler for the dialog used to get a screenname from the user
-
- function GetUserOnLoad()
- {
- doSetOKCancel(GetUserAdd, 0);
- top.addMode = window.arguments[0];
- document.getElementById("fldUserName").focus();
- }
-
- // called when OK button is pressed in privacy mode preferences panel. Figure
- // out what changed, communicate this to AIM Glue backend
-
- function AssertPrivacyChanges()
- {
- // We cannot use global variables as this is called in the
- // context of the Parent window much later!!
- dump("Calling function prefIM.js AssertChanges\n");
- var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
- var pIIMManager = IMServiceClass.getService(Components.interfaces.nsIIMManager)
- var lastRadio = null;
- var allEnums = Components.interfaces.nsAimPrivacyModes;
- var pIAimPrivacy = pIIMManager.QueryInterface(Components.interfaces.nsIAimPrivacy)
-
- if ( pIAimPrivacy == undefined || pIAimPrivacy == null )
- return;
-
- // This has been simplified and made correct
- pIAimPrivacy.PrivacyMode = parent.lastPrivacyMode;
- var tvalues = false;
-
- dump ("saved privacy mode in AIM as " + parent.lastPrivacyMode + "\n");
-
- var pAimAdmin = pIIMManager.QueryInterface(Components.interfaces.nsIAimAdminManager);
-
- if ( pAimAdmin == undefined || pAimAdmin == null )
- return;
-
- adminSetterCallback = new Object();
- adminSetterCallback.ExecuteIfReady = function()
- {
- dump("adminsettercallback executeifready\n");
-
- // this kinda code is dangerous -- should not glom so many
- // things that can fail into one statement XXX
-
- Components.classes['@netscape.com/aim/IMManager;1'].getService(Components.interfaces.nsIIMManager).QueryInterface(Components.interfaces.nsIAimAdminManager).ChangeRegistrationStatusPreference(null,parent.lastPrivacyView);
- }
-
- dump("adminsettercallback.execifready\n");
- pAimAdmin.ExecuteIfReady(adminSetterCallback);
-
- var pAimPrefs = pIIMManager.QueryInterface(Components.interfaces.nsIPrefsManager);
-
- dump( "parent.lastChatInvites is " + parent.lastChatInvites + " \n" );
- if ( parent.lastChatInvites != undefined ) {
- pAimPrefs.SetBoolPref("aim.chat.unavailable", parent.lastChatInvites, null, false);
- }
-
- var chatInvite_pref=false;
- try {
- chatInvite_pref= pAimPrefs.GetBoolPref("aim.chat.unavailable", null, false);
- }
- catch (ex) {
- dump("chat announce pref could not be read\n");
- chatInvite_pref = false;
- }
- pChatManager= pIIMManager.QueryInterface(Components.interfaces.nsIAimChatManager);
- // Suresh: Setting it to complement coz the pref is aim.chat._un_available. Gee...This is confusing..heh.
- pChatManager.SetAvailableForChat(!chatInvite_pref);
- dump("Setting chat invite to "+chatInvite_pref+"\n");
-
- return;
-
- }
-
- function
- FindAwayMessageTargetByName( msgName )
- {
- GetRDFService();
-
- var messages_file = GetRdfFileUrl("default-messages.rdf", "dm.rdf");
- var datasource = RDF.GetDataSource(messages_file);
-
- var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
- container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
- container.Init(datasource, RDF.GetResource("NC:AIM/AwayMessageBag"));
-
- var elements = container.GetElements();
- var target, node;
- var nameResource =
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgName");
- while ( elements.hasMoreElements() ) {
- node = elements.getNext();
- if ( node )
- target = datasource.GetTarget( node, nameResource,
- true );
- if ( target )
- target = target.QueryInterface(Components.interfaces.nsIRDFLiteral);
- if ( target && target.Value == msgName )
- return target.Value;
- }
- return null;
- }
-
- function
- EditAwayMessageOnOK()
- {
- var nameItem = document.getElementById("awayMessageName");
- var textItem = document.getElementById("awayMessageText");
- var nameValue = null;
- var textValue = null;
-
- if ( !nameItem || nameItem == undefined )
- return;
- if ( !textItem || textItem == undefined )
- return;
- nameValue = nameItem.value;
- textValue = textItem.value;
- if ( nameValue == "" ) {
- alert(getString("away.EnterLabel"));
- return;
- }
- if ( textValue == "" ) {
- alert(getString("away.EnterMessage"));
- return;
- }
-
- var target = FindAwayMessageTargetByName( nameValue );
- if ( target == null ) {
- retval = confirm(getString("away.DoesNotExist"));
- if ( retval == true )
- AssertAwayMessage( nameValue, textValue );
- else
- return;
- } else
- SetAwayMessageTarget( nameValue, textValue )
- top.window.close();
- }
-
- function
- AddAwayMessageOnOK()
- {
- var nameItem = document.getElementById("awayMessageName");
- var textItem = document.getElementById("awayMessageText");
- var nameValue = null;
- var textValue = null;
-
- if ( !nameItem || nameItem == undefined )
- return;
- if ( !textItem || textItem == undefined )
- return;
- nameValue = nameItem.value;
- textValue = textItem.value;
- if ( nameValue == "" ) {
- alert(getString("away.EnterLabel"));
- return;
- }
- if ( textValue == "" ) {
- alert(getString("away.EnterMessage"));
- return;
- }
-
- if ( FindAwayMessageTargetByName( nameValue ) != null ) {
-
- // ask them if they would like to overwrite (i.e.,
- // turn this into an edit).
-
- var response = confirm(getString("away.AlreadyExists"));
- if ( response == true ) {
- EditAwayMessageOnOK();
- return;
- } else {
- alert(getString("away.EnterLabel"));
- return;
- }
- }
-
- AssertAwayMessage( nameValue, textValue );
- top.window.close();
- }
-
- function
- AssertAwayMessage( nameValue, textValue )
- {
- GetRDFService();
-
- var newmsg = RDF.GetAnonymousResource();
- var messages_file = GetRdfFileUrl("default-messages.rdf", "dm.rdf");
-
- var datasource =
- RDF.GetDataSource(messages_file);
- datasource.Assert(newmsg,
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgName"),
- RDF.GetLiteral(nameValue), true);
- datasource.Assert(newmsg,
- RDF.GetResource("http://home.netscape.com/NC-rdf#MsgText"),
- RDF.GetLiteral(textValue), true);
-
- var container = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
- container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
- container.Init(datasource, RDF.GetResource("NC:AIM/AwayMessageBag"));
-
- container.AppendElement(newmsg);
- datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Flush();
- }
-
- function
- AddAwayMessage()
- {
- // title is window.arguments[1];
- // content is window.arguments[2];
-
- window.openDialog("chrome://aim/content/AddAwayMessage.xul","_blank", "chrome,close,titlebar,modal", "", "", "");
- }
-
- function
- EditAwayMessage()
- {
- // title is window.arguments[1];
- // content is window.arguments[2];
-
- var msgName, msgText;
- var response;
-
- response = FindSelectedAwayMessage();
- if ( response == null ) {
- alert(getString("away.PleaseSelectToEdit"));
- return;
- } else {
- msgName = response.msgName;
- msgText = response.msgText;
- }
-
- window.openDialog("chrome://aim/content/AddAwayMessage.xul","_blank", "chrome,close,titlebar, modal", "", msgName, msgText);
- }
-
- function
- RemoveAwayMessage()
- {
- var msgName, msgText;
- var response;
-
- response = FindSelectedAwayMessage();
- if ( response == null ) {
- alert(getString("away.PleaseSelectToRemove"));
- return;
- }
-
- answer = confirm(getString("away.AreYouSure").replace(/%AwayMsg%/,response.msgName));
- if ( answer == true )
- RemoveTarget( response.msgName );
- }
-
- function
- FindSelectedAwayMessage()
- {
- var selection;
- var tree = document.getElementById("AwayMessages");
-
- var response = new Object();
-
- if ( tree )
- selection = tree.selectedItems;
-
- if ( selection && selection.length == 1 ) {
- response.msgName = selection[0].getAttribute("MsgName");
- response.msgText = selection[0].getAttribute("MsgText");
-
- return response;
- }
- return null;
- }
-
-
- //XXXVISHY - per screen name stuff
-
- function getCurrentScreenName()
- {
- var myaimSession = aimSession();
- if (myaimSession) {
- return myaimSession.CurrentScreenName;
- }
- else
- return "";
- }
-
- // XXXVISHY - the aimPreferenceOnload function MUST be called in the
- // onload handler of every aim preference panel so as to do the
- // per screen name munging
-
- function aimPreferenceOnload()
- {
- if (aimIsShrimp())
- {
- // Hide other components from edit->preferences in shrimp bug 1614
- // Need to rewrite this manipulating preftree.xul and overlays.rdf for shrimp
- var panelChildren = parent.document.getElementById( "panelChildren" );
- var panelTree = parent.document.getElementById( "prefsTree" );
- for( var i = 0; i < panelChildren.childNodes.length; i++ )
- {
- var currentItem = panelChildren.childNodes[i];
- if(currentItem.id != "instantmessenger"){
- currentItem.setAttribute('style','visibility: collapse');
- }
- if( currentItem.id == "appearance" ){
- currentItem.setAttribute('style','visibility: visible');
- currentItem.firstChild.firstChild.setAttribute("url","chrome://communicator/content/pref/pref-fonts.xul");
- currentItem.childNodes[1].childNodes[2].setAttribute('style','visibility: collapse');
- }
-
- }
- }
- var aimprefs = document.getElementsByAttribute("pref", "true");
-
- for (var i = 0 ; i < aimprefs.length ; i++) {
- var preference = aimprefs[i].getAttribute("prefstring");
-
- var sN = getCurrentScreenName() + ".";
- //preference.replace(/^aim/ , sN);
- qPreference = sN + preference;
-
- if (MozPreferences.GetPrefType(qPreference) == Components.interfaces.nsIPref.ePrefInvalid) {
-
- // first time with this pref, so create a per screen name copy
- switch (MozPreferences.GetPrefType(preference)) {
- case Components.interfaces.nsIPref.ePrefString:
- var sPref = MozPreferences.CopyCharPref(preference);
- MozPreferences.SetCharPref(qPreference, sPref);
- break;
- case Components.interfaces.nsIPref.ePrefInt:
- var iPref = MozPreferences.GetIntPref(preference);
- MozPreferences.SetIntPref(qPreference, iPref);
- break;
- case Components.interfaces.nsIPref.ePrefBool:
- var bPref = MozPreferences.GetBoolPref(preference);
- MozPreferences.SetBoolPref(qPreference, bPref);
- break;
- default:
- dump("Bad pref type for NIM\n");
- break;
- }
- }
-
- aimprefs[i].setAttribute("prefstring", qPreference);
- }
- }
-
- /*
- XXXVISHY - this is a hack. The aimPreferenceOnload would have munged
- aim.mail.presence into a per-screen name pref. This function
- will unmunge it back into a global preference. This is done in this
- ugly manner since it is the least invasive way at this point.
- */
-
- function aimMailPresenceUnMunge()
- {
- var mailPref = document.getElementById("mailPresence");
- mailPref.setAttribute("prefstring", "aim.mail.presence");
- }
-
- /************* Related to the Connection/Proxy Panel ********************/
-
- function PrefIMConnectionOnload()
- {
- var proxPass = "";
- DoEnabling();
- parent.ConnectionLoad = 1;
- parent.connectionSaved = 0;
- if ( parent.ConnectionCallback == undefined ||
- parent.ConnectionCallback == null ) {
-
- /* if aim.session.isaol is true, then disable the host and port fields
- because we hardcode our connection to a specific AOL system for TIH
- login */
-
- var isAOL;
-
- try {
- isAOL = aimPrefsManager().GetBoolPref( "aim.session.isaol", null, false );
- }
- catch(e) {
- isAOL = false;
- }
-
- var el = document.getElementById("aimHost");
- if ( el && isAOL == true )
- el.setAttribute( "disabled", "true" );
- else if ( el )
- el.setAttribute( "disabled", "false" );
- el = document.getElementById("aimPort");
- if ( el && isAOL == true )
- el.setAttribute( "disabled", "true" );
- else if ( el )
- el.setAttribute( "disabled", "false" );
-
- // Register the OK callback func once, and unmunge the initial value
-
- parent.ConnectionCallback = 1;
- parent.hPrefWindow.registerOKCallbackFunc( AssertProxyChanges );
- var pIAimSession = aimSessionObject();
- if ( pIAimSession ) {
- proxPass = pIAimSession.UnMungeString(document.getElementById("proxyPassword").value);
- parent.proxyPassword = proxPass;
- }
- } else {
-
- // we switched back from some other panel, so restore the
- // saved off value from the unload handler
-
- proxPass = parent.proxyPassword;
- }
- document.getElementById("proxyPassword").value = proxPass;
- }
-
- function
- AssertProxyChanges()
- {
- // if the connection panel is loaded, base64 the current password
-
- if ( parent.ConnectionLoad == 1 )
- MungeProxyPassword();
-
- // set this so the unload handler doesn't do anything when called
-
- parent.connectionSaved = 1;
- }
-
- function PrefIMConnectionOnunload()
- {
- // we already saved (e.g., here because OK was hit), so juswt return
-
- if ( parent.connectionSaved == 1 )
- return;
-
- // ok, switching to some other panel. Save off the current value
- // to be restored in the onload handler, and remember we are not
- // visible so we deal with the AssertProxyChanges() callback in
- // the correct manner
-
- parent.proxyPassword = document.getElementById("proxyPassword").value;
- MungeProxyPassword(); // just in case OK is hit while away
- parent.ConnectionLoad = 0;
- }
-
- function DoEnabling()
- {
- var host = document.getElementById("proxyHost");
- var port = document.getElementById("proxyPort");
- var protocol = document.getElementById("proxyProtocol");
- var userName = document.getElementById("proxyUserName");
- var password = document.getElementById("proxyPassword");
- var radiogroup0 = document.getElementById("proxyProtocolSocks4");
- var radiogroup1 = document.getElementById("proxyProtocolSocks5");
- var radiogroup2 = document.getElementById("proxyProtocolHttps");
-
- // convenience arrays
- var manual = [host, port, protocol, userName, password, radiogroup0, radiogroup1, radiogroup2];
-
- // checkbox button
- var checkboxitem = document.getElementById("proxyUse");
- if ( checkboxitem.checked ) {
- for( var i = 0; i < manual.length; i++ ) {
- manual[i].setAttribute( "disabled", "false" );
- manual[i].removeAttribute( "disabled" );
- }
- } else {
- for( var i = 0; i < manual.length; i++ )
- manual[i].setAttribute( "disabled", "true" );
- }
- }
-
- function MungeProxyPassword()
- {
- //XXXVISHY - you cannot use macros like AimSessionObject in
- // any callback because the javascript context will not remember
- // the included files!!!
-
- var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
- var pIIMManager = IMServiceClass.getService(Components.interfaces.nsIIMManager)
- var pIAimSession = pIIMManager.QueryInterface(Components.interfaces.nsIAimSession)
-
- var proxPass = "";
- if(pIAimSession) {
- proxPass = pIAimSession.MungeString(document.getElementById("proxyPassword").value);
- document.getElementById("proxyPassword").value = proxPass;
- }
- }
-