1 var contactSelectorAction = 'mailer-contacts';
3 function onContactAdd() {
5 var selectorURL = '?popup=YES&selectorId=mailer-contacts';
7 urlstr = ApplicationBaseURL;
8 if (urlstr[urlstr.length-1] != '/')
10 urlstr += ("../../" + UserLogin + "/Contacts/"
11 + contactSelectorAction + selectorURL);
13 var w = window.open(urlstr, "Addressbook",
14 "width=640,height=400,resizable=1,scrollbars=0");
15 w.selector = selector;
22 function addContact(tag, fullContactName, contactId, contactName, contactEmail) {
23 if (!mailIsRecipient(contactEmail)) {
24 var neededOptionValue = 0;
26 neededOptionValue = 1;
27 else if (tag == "bcc")
28 neededOptionValue = 2;
32 var currentRow = $('row_' + counter);
35 var currentValue = currentRow.childNodesWithTag("span")[1].childNodesWithTag("input")[0].value;
36 if (currentValue == neededOptionValue) {
38 insertContact($("addr_" + counter), contactName, contactEmail);
41 currentRow = $('row_' + counter);
45 fancyAddRow(false, "");
46 $("row_" + counter).childNodesWithTag("span")[0].childNodesWithTag("select")[0].value
48 insertContact($("addr_" + counter), contactName, contactEmail);
53 function mailIsRecipient(mailto) {
54 var isRecipient = false;
57 var currentRow = $('row_' + counter);
59 var email = extractEmailAddress(mailto).toUpperCase();
61 while (currentRow && !isRecipient) {
62 var currentValue = $("addr_"+counter).value.toUpperCase();
63 if (currentValue.indexOf(email) > -1)
68 currentRow = $('row_' + counter);
75 function insertContact(inputNode, contactName, contactEmail) {
76 var value = '' + inputNode.value;
78 var newContact = contactName;
79 if (newContact.length > 0)
80 newContact += ' <' + contactEmail + '>';
82 newContact = contactEmail;
88 inputNode.value = value;
91 function toggleAttachments() {
92 var div = $("attachmentsArea");
93 if (div.style.display)
94 div.style.display = "";
96 div.style.display = "block;";
101 function updateInlineAttachmentList(sender, attachments) {
104 var div = $("attachmentsArea");
106 count = attachments.length;
110 for (var i = 0; i < count; i++) {
111 text = text + attachments[i];
112 text = text + '<br />';
115 var e = $('compose_attachments_list');
117 if (!div.style.display)
118 div.style.display = "block;";
121 div.style.display = "";
125 function validateEditorInput(sender) {
129 field = document.pageform.subject;
130 if (field.value == "")
131 errortext = errortext + labels.error_missingsubject + "\n";
133 if (!UIxRecipientSelectorHasRecipients())
134 errortext = errortext + labels.error_missingrecipients + "\n";
136 if (errortext.length > 0) {
137 alert(labels.error_validationfailed.decodeEntities() + ":\n"
138 + errortext.decodeEntities());
144 function clickedEditorSend(sender) {
145 if (!validateEditorInput(sender))
148 document.pageform.action = "send";
149 document.pageform.submit();
154 function clickedEditorAttach(sender) {
155 var area = $("attachmentsArea");
157 area.setStyle({ display: "block" });
159 var inputs = area.getElementsByTagName("input");
160 var attachmentName = "attachment" + inputs.length;
161 var newAttachment = createElement("input", attachmentName,
162 "currentAttachment", null,
164 name: attachmentName },
166 Event.observe(newAttachment, "change",
167 onAttachmentChange.bindAsEventListener(newAttachment));
172 function onAddAttachment() {
173 var area = $("attachmentsArea");
174 var inputs = area.getElementsByTagName("input");
175 var attachmentName = "attachment" + inputs.length;
176 var newAttachment = createElement("input", attachmentName,
177 "currentAttachment", null,
179 name: attachmentName },
181 Event.observe(newAttachment, "change",
182 onAttachmentChange.bindAsEventListener(newAttachment));
185 function onAttachmentChange(event) {
186 if (this.value == "")
187 this.parentNode.removeChild(this);
189 this.addClassName("attachment");
190 this.removeClassName("currentAttachment");
191 var list = $("attachments");
192 createAttachment(this, list);
196 function createAttachment(node, list) {
197 var attachment = createElement("li", null, null, { node: node }, null, list);
198 createElement("img", null, null, { src: ResourcesURL + "/attachment.gif" },
200 Event.observe(attachment, "click", onRowClick);
202 var filename = node.value;
204 if (navigator.appVersion.indexOf("Windows") > -1)
208 var fileArray = filename.split(separator);
209 var attachmentName = document.createTextNode(fileArray[fileArray.length-1]);
210 attachment.appendChild(attachmentName);
213 function clickedEditorSave(sender) {
214 document.pageform.action = "save";
215 document.pageform.submit();
221 function clickedEditorDelete(sender) {
222 document.pageform.action = "delete";
223 document.pageform.submit();
230 function initMailEditor() {
231 var list = $("attachments");
232 $(list).attachMenu("attachmentsMenu");
233 var elements = list.childNodesWithTag("li");
234 for (var i = 0; i < elements.length; i++)
235 Event.observe(elements[i], "click",
236 onRowClick.bindAsEventListener(elements[i]));
239 function getMenus() {
240 return { "attachmentsMenu": new Array(null, onRemoveAttachments,
241 onSelectAllAttachments,
243 onAddAttachment, null) };
246 function onRemoveAttachments() {
247 var list = $("attachments");
248 var nodes = list.getSelectedNodes();
249 for (var i = nodes.length-1; i > -1; i--) {
250 var input = $(nodes[i]).node;
252 input.parentNode.removeChild(input);
253 list.removeChild(nodes[i]);
256 window.alert("Server attachments not handled");
260 function onSelectAllAttachments() {
261 var list = $("attachments");
262 var nodes = list.childNodesWithTag("li");
263 for (var i = 0; i < nodes.length; i++)
267 window.addEventListener("load", initMailEditor, false);