2 Copyright (C) 2005 SKYRIX Software AG
4 This file is part of OpenGroupware.org.
6 OGo is free software; you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License as published by the
8 Free Software Foundation; either version 2, or (at your option) any
11 OGo is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with OGo; see the file COPYING. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
23 * It's required that "currentIndex" is defined in a top level context.
26 * defines UIxRecipientSelectorHasRecipients() returning a bool for the
27 * surrounding context to check.
30 var lastIndex = currentIndex;
32 function sanitizedCn(cn) {
34 parts = cn.split(', ');
40 function hasAddress(email) {
41 var e = document.getElementById(email);
47 function rememberAddress(email) {
50 list = document.getElementById('addr_addresses');
51 span = document.createElement('span');
53 idx = document.createTextNode(currentIndex);
54 span.appendChild(idx);
55 list.appendChild(span);
58 function checkAddresses() {
59 alert("addressCount: " + this.getAddressCount() + " currentIndex: " + currentIndex + " lastIndex: " + lastIndex);
62 function addAddress(type, email, uid, sn, cn, dn) {
63 var shouldAddRow, s, e;
67 s = this.sanitizedCn(cn) + ' <' + email + '>';
71 if(this.hasAddress(email))
74 e = document.getElementById('addr_0');
80 this.fancyAddRow(false, s);
82 this.rememberAddress(email);
85 function fancyAddRow(shouldEdit, text) {
86 var addr, table, lastChild, proto, row, select, input;
88 addr = document.getElementById('addr_' + lastIndex);
89 if (addr && addr.value == '') {
90 input = document.getElementById('compose_subject_input');
91 if (input && input.value != '') {
97 table = this.getTable();
98 lastChild = document.getElementById('row_last');
102 proto = document.getElementById('row_' + lastIndex);
103 row = proto.cloneNode(true);
104 row.id = 'row_' + currentIndex;
107 select = row.childNodes[1].childNodes[1];
108 select.name = 'popup_' + currentIndex;
109 select.value = proto.childNodes[1].childNodes[1].value;
110 input = row.childNodes[3].childNodes[1];
111 input.name = 'addr_' + currentIndex;
112 input.id = 'addr_' + currentIndex;
115 table.insertBefore(row, lastChild);
121 this.adjustInlineAttachmentListHeight(this);
124 function addressFieldGotFocus(sender) {
127 idx = this.getIndexFromIdentifier(sender.id);
128 if ((lastIndex == idx) || (idx == 0)) return;
129 this.removeLastEditedRowIfEmpty();
131 function addressFieldLostFocus(sender) {
132 lastIndex = this.getIndexFromIdentifier(sender.id);
135 function removeLastEditedRowIfEmpty() {
136 var idx, addr, table, senderRow;
139 if (idx == 0) return;
140 addr = document.getElementById('addr_' + idx);
142 if (addr.value != '') return;
143 addr = this.findAddressWithIndex(idx);
145 var addresses = document.getElementById('addr_addresses');
146 addresses.removeChild(addr);
148 table = this.getTable();
149 senderRow = this.findRowWithIndex(idx);
150 table.removeChild(senderRow);
151 this.adjustInlineAttachmentListHeight(this);
154 function findAddressWithIndex(idx) {
155 var list, i, count, addr, idx
156 list = document.getElementById('addr_addresses').childNodes;
158 for(i = 0; i < count; i++) {
160 if(addr.innerHTML == idx)
166 function findRowWithIndex(idx) {
167 var id = 'row_' + idx;
168 return document.getElementById(id);
171 function getIndexFromIdentifier(id) {
172 return id.split('_')[1];
175 function getTable() {
176 return document.getElementById('addr_table').childNodes[1];
179 function getAddressIDs() {
180 var table, rows, i, count, addressIDs;
182 addressIDs = new Array();
184 table = this.getTable();
185 rows = table.childNodes;
188 for (i = 0; i < count; i++) {
191 row = table.childNodes[i];
193 if (rowId && rowId != 'row_last') {
196 idx = this.getIndexFromIdentifier(rowId);
197 addressIDs.push(idx);
203 function getAddressCount() {
204 var addressCount, addressIDs, i, count;
207 addressIDs = this.getAddressIDs();
208 count = addressIDs.length;
209 for (i = 0; i < count; i++) {
213 input = document.getElementById('addr_' + idx);
214 if (input.value != '')
220 function UIxRecipientSelectorHasRecipients() {
223 count = this.getAddressCount();