home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * 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):
- * Paul Hangas <hangas@netscape.com>
- * Alec Flett <alecf@netscape.com>
- */
-
- var addressbook = 0;
- var composeWindow = 0;
- var msgCompFields = 0;
- var editCardCallback = 0;
- var gDialogResultsPaneSelectionChanged = 0;
-
- var gAddressBookBundle;
-
- // localization strings
- var prefixTo;
- var prefixCc;
- var prefixBcc;
-
- function OnLoadSelectAddress()
- {
- gAddressBookBundle = document.getElementById("bundle_addressBook");
- prefixTo = gAddressBookBundle.getString("prefixTo") + ": ";
- prefixCc = gAddressBookBundle.getString("prefixCc") + ": ";
- prefixBcc = gAddressBookBundle.getString("prefixBcc") + ": ";
-
- InitCommonJS();
-
- var toAddress="", ccAddress="", bccAddress="";
-
- doSetOKCancel(SelectAddressOKButton, 0);
-
- top.addressbook = Components.classes["@mozilla.org/addressbook;1"].createInstance();
- top.addressbook = top.addressbook.QueryInterface(Components.interfaces.nsIAddressBook);
-
- top.gDialogResultsPaneSelectionChanged = DialogResultsPaneSelectionChanged;
-
- // look in arguments[0] for parameters
- if (window.arguments && window.arguments[0])
- {
- // keep parameters in global for later
- if ( window.arguments[0].composeWindow )
- top.composeWindow = window.arguments[0].composeWindow;
- if ( window.arguments[0].msgCompFields )
- top.msgCompFields = window.arguments[0].msgCompFields;
- if ( window.arguments[0].toAddress )
- toAddress = window.arguments[0].toAddress;
- if ( window.arguments[0].ccAddress )
- ccAddress = window.arguments[0].ccAddress;
- if ( window.arguments[0].bccAddress )
- bccAddress = window.arguments[0].bccAddress;
-
- dump("onload top.composeWindow: " + top.composeWindow + "\n");
- dump("onload toAddress: " + toAddress + "\n");
-
- // put the addresses into the bucket
- AddAddressFromComposeWindow(toAddress, prefixTo);
- AddAddressFromComposeWindow(ccAddress, prefixCc);
- AddAddressFromComposeWindow(bccAddress, prefixBcc);
- }
-
- SelectFirstAddressBook();
-
- DialogResultsPaneSelectionChanged();
- DialogBucketPaneSelectionChanged();
- }
-
- function AddAddressFromComposeWindow(addresses, prefix)
- {
- if ( addresses )
- {
- var addressArray = addresses.split(",");
-
- for ( var index = 0; index < addressArray.length; index++ )
- {
- // remove leading spaces
- while ( addressArray[index][0] == " " )
- addressArray[index] = addressArray[index].substring(1, addressArray[index].length);
-
- AddAddressIntoBucket(prefix + addressArray[index]);
- }
- }
- }
-
-
- function SelectAddressOKButton()
- {
- var body = document.getElementById('bucketBody');
- var item, row, cell, text, colon,email;
- var toAddress="", ccAddress="", bccAddress="", emptyEmail="";
-
- for ( var index = 0; index < body.childNodes.length; index++ )
- {
- item = body.childNodes[index];
- if ( item.childNodes && item.childNodes.length )
- {
- row = item.childNodes[0];
- if ( row.childNodes && row.childNodes.length )
- {
- cell = row.childNodes[0];
- text = cell.getAttribute('label');
- email = cell.getAttribute('email');
- if ( text )
- {
- switch ( text[0] )
- {
- case prefixTo[0]:
- if ( toAddress )
- toAddress += ", ";
- toAddress += text.substring(prefixTo.length, text.length);
- break;
- case prefixCc[0]:
- if ( ccAddress )
- ccAddress += ", ";
- ccAddress += text.substring(prefixCc.length, text.length);
- break;
- case prefixBcc[0]:
- if ( bccAddress )
- bccAddress += ", ";
- bccAddress += text.substring(prefixBcc.length, text.length);
- break;
- }
- }
- if(!email)
- {
- if (emptyEmail)
- emptyEmail +=", ";
- emptyEmail += text.substring(prefixTo.length, text.length-2);
- }
- }
- }
- }
- if(emptyEmail)
- {
- var alertText = gAddressBookBundle.getString("emptyEmailCard");
- alert(alertText + emptyEmail);
- return false;
- }
- // reset the UI in compose window
- msgCompFields.to = toAddress;
- msgCompFields.cc = ccAddress;
- msgCompFields.bcc = bccAddress;
- top.composeWindow.CompFields2Recipients(top.msgCompFields);
-
- return true;
- }
-
- function SelectAddressToButton()
- {
- AddSelectedAddressesIntoBucket(prefixTo);
- }
-
- function SelectAddressCcButton()
- {
- AddSelectedAddressesIntoBucket(prefixCc);
- }
-
- function SelectAddressBccButton()
- {
- AddSelectedAddressesIntoBucket(prefixBcc);
- }
-
- function AddSelectedAddressesIntoBucket(prefix)
- {
- var item, uri, rdf, cardResource, card, address;
- var email ="";
- rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService();
- rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService);
-
- if ( resultsTree && resultsTree.selectedItems && resultsTree.selectedItems.length )
- {
- for ( item = 0; item < resultsTree.selectedItems.length; item++ )
- {
- uri = resultsTree.selectedItems[item].getAttribute('id');
- cardResource = rdf.GetResource(uri);
- card = cardResource.QueryInterface(Components.interfaces.nsIAbCard);
- if (card.isMailList)
- {
- address = prefix + "\"" + card.name + "\" <" + card.name + ">";
- email = card.name;
- }
- else
- {
- address = prefix + "\"" + card.name + "\" <" + card.primaryEmail + ">";
- email = card.primaryEmail;
- }
- AddAddressIntoBucket(address,email);
- }
- }
- }
-
- function AddAddressIntoBucket(address,email)
- {
- var body = document.getElementById("bucketBody");
-
- var item = document.createElement('treeitem');
- var row = document.createElement('treerow');
- var cell = document.createElement('treecell');
- cell.setAttribute('label', address);
- cell.setAttribute('email',email);
-
- row.appendChild(cell);
- item.appendChild(row);
- body.appendChild(item);
- }
-
- function RemoveSelectedFromBucket()
- {
- var bucketTree = document.getElementById("addressBucket");
- if ( bucketTree )
- {
- var body = document.getElementById("bucketBody");
-
- if ( body && bucketTree.selectedItems && bucketTree.selectedItems.length )
- {
- for ( var item = bucketTree.selectedItems.length - 1; item >= 0; item-- )
- body.removeChild(bucketTree.selectedItems[item]);
- }
- }
- }
-
- /* Function: DialogResultsPaneSelectionChanged()
- * Callers : OnLoadSelectAddress(), abCommon.js:ResultsPaneSelectionChange()
- * -------------------------------------------------------------------------
- * This function is used to grab the selection state of the results tree to maintain
- * the appropriate enabled/disabled states of the "Edit", "To:", "CC:", and "Bcc:" buttons.
- * If an entry is selected in the results Tree, then the "disabled" attribute is removed.
- * Otherwise, if nothing is selected, "disabled" is set to true.
- */
-
- function DialogResultsPaneSelectionChanged()
- {
- var resultsTree = document.getElementById("resultsTree");
- var editButton = document.getElementById("edit");
- var toButton = document.getElementById("toButton");
- var ccButton = document.getElementById("ccButton");
- var bccButton = document.getElementById("bccButton");
-
- if (editButton && toButton && ccButton && bccButton && resultsTree && resultsTree.selectedItems && resultsTree.selectedItems.length)
- {
- editButton.removeAttribute("disabled");
- toButton.removeAttribute("disabled");
- ccButton.removeAttribute("disabled");
- bccButton.removeAttribute("disabled");
- }
- else
- {
- editButton.setAttribute("disabled", "true");
- toButton.setAttribute("disabled", "true");
- ccButton.setAttribute("disabled", "true");
- bccButton.setAttribute("disabled", "true");
- }
- }
-
- /* Function: DialogBucketPaneSelectionChanged()
- * Callers : OnLoadSelectAddress(), abSelectAddressesDialog.xul:id="addressBucket"
- * -------------------------------------------------------------------------------
- * This function is used to grab the selection state of the bucket tree to maintain
- * the appropriate enabled/disabled states of the "Remove" button.
- * If an entry is selected in the bucket Tree, then the "disabled" attribute is removed.
- * Otherwise, if nothing is selected, "disabled" is set to true.
- */
-
- function DialogBucketPaneSelectionChanged()
- {
- var bucketTree = document.getElementById("addressBucket");
- var removeButton = document.getElementById("remove");
-
- if (removeButton && bucketTree && bucketTree.selectedItems && bucketTree.selectedItems.length)
- removeButton.removeAttribute("disabled");
- else
- removeButton.setAttribute("disabled", "true");
- }
-
-
-