1
/* $Id: mailbox.js 1150 2008-08-20 00:27:11Z mikes@u.washington.edu $
2
* ========================================================================
3
* Copyright 2008 University of Washington
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* ========================================================================
15
* Scripts common to mailbox viewing: browse and view
19
YAHOO.alpine.morcButton = [];
20
YAHOO.alpine.select = { all:false, bannerId:'bannerSelection' };
25
/* priority column display is overloaded. Uses el.title to store state. */
26
/* changes to link titles in that column MUST be coordinated with this stuff. */
28
var gLabelStarred = 'Starred';
29
var gLabelPriHi = 'High Priority';
30
var gLabelPriHier = 'Highest Priority';
33
function applyFlag(ctrlObj,flagName,flagState) {
34
switch (flagName) { // validate
35
case 'new' : break; // read (New) flag
36
case 'imp' : break; // important flag
37
case 'del' : break; // delete flag
38
default : return false;
40
YAHOO.util.Connect.asyncRequest('GET',
41
'conduit/apply.tcl' + encodeURI('?u=all&f=' + flagName + '&s=' + flagState) + urlSalt('&'),
44
onStart:function(eventType){ showLoading(); },
45
onComplete:function(eventType){ hideLoading(); }
47
success: function(o) {
48
// valid response is "<numApplied> <numSelected> <numTotalMsgs>"
50
if((matchResult = o.responseText.match(/^(\d+) (\d+) (\d+)$/m)) == null){
51
showStatusMessage('Error: ' + o.responseText, 10);
54
var plural = (matchResult[1] > 1) ? 's' : '';
55
if(flagName == 'del'){
56
showStatusMessage(matchResult[1] + ' message' + plural + ' deleted', 3);
57
YAHOO.alpine.current.selected = matchResult[2];
58
YAHOO.alpine.current.count = matchResult[3];
62
var chk = document.getElementsByName('uidList');
64
if(flagName == 'imp'){
65
var act = (flagState == 'not') ? 'Cleared' : 'Set';
66
sm = act + ' Star on ' + matchResult[1] + ' message' + plural;
69
sm = 'Marked ' + matchResult[1] + ' message' + plural + ' as ';
70
if(flagState == 'not'){
71
decUnreadCount(matchResult[1]);
75
incUnreadCount(matchResult[1]);
79
showStatusMessage(sm, 3);
80
for(var i = 0; i < chk.length; i++){
82
var dom = YAHOO.util.Dom;
83
if(flagName == 'imp'){
85
var m = document.getElementById('star'+chk[i].value);
87
var classAdd = '', classDel = '', newtitle = '';
88
if(flagState == 'not'){
91
if(m.title.substr(0,gLabelStarred.length) == gLabelStarred){
92
if(m.title.length > gLabelStarred.length){
93
newtitle = m.title.substr(gLabelStarred.length + 5);
94
if(newtitle == gLabelPriHi){
97
else if(newtitle == gLabelPriHier){
102
newtitle = 'Set ' + gLabelStarred;
109
case 'Set ' + gLabelStarred :
110
newtitle = gLabelStarred;
115
newtitle = gLabelStarred + ' and ' + gLabelPriHi;
118
classDel = 'prihier';
119
newtitle = gLabelStarred + ' and ' + gLabelPriHier;
126
if(!dom.hasClass(m.firstChild,classAdd)) dom.addClass(m.firstChild,classAdd);
127
if(classDel.length && dom.hasClass(m.firstChild,classDel)) dom.removeClass(m.firstChild,classDel);
128
if(newtitle.length) m.title = newtitle;
131
else if(flagName == 'new'){
132
var hid = 'h1'+chk[i].value;
133
var mnode = chk[i].parentNode.parentNode;
134
if(flagState == 'not'){
135
if(dom.hasClass(hid,'unread')) dom.removeClass(hid,'unread');
136
if(dom.hasClass(mnode,'unread')) dom.removeClass(mnode,'unread');
139
if(!dom.hasClass(hid,'unread')) dom.addClass(hid,'unread');
140
if(!dom.hasClass(mnode,'unread')) dom.addClass(mnode,'unread');
149
failure: function(o) { showStatusMessage('Request Failure: ' + o.statusText + '. Please report this.', 10)}
152
if(ctrlObj) ctrlObj.blur();
158
// SELECTION (e.g. SELECT ALL)
161
function initSelection() {
162
var ac = YAHOO.alpine.current;
163
if (ac.selected > 0) {
164
if (ac.selected == ac.count) {
165
showSelectAllInfo(4);
166
} else if (ac.selected) {
167
showSelectAllInfo(2);
170
else hideSelectAllInfo();
173
function hideSelectAllInfo() {
174
var banner = document.getElementById(YAHOO.alpine.select.bannerId);
175
if(banner) YAHOO.util.Dom.setStyle(banner,'display','none');
178
function showSelectAllInfo(num) {
179
var banner = document.getElementById(YAHOO.alpine.select.bannerId);
181
setSelectAllInfoText(num);
182
YAHOO.util.Dom.setStyle(banner,'display','block');
186
function setSelectAllInfoText(state) {
187
// NOTE: "\u00a0" is the unicode equivalent of no-break space character
188
var ac = YAHOO.alpine.current;
189
var banner = document.getElementById(YAHOO.alpine.select.bannerId);
192
var pluralSelected = (ac.selected > 1) ? 's' : '';
193
var predSelected = (ac.selected > 1) ? 'are' : 'is';
194
var pluralTotal = (ac.count > 1) ? 's' : '';
195
var groupName = (ac.focused) ? 'Search Results' : ac.f;
198
banner.innerHTML = "All <b>" + ac.selected + "<\/b> message" + pluralSelected + " in " + groupName + " " + predSelected + " selected.";
199
banner.style.backgroundColor = "#ffffa6";
202
banner.innerHTML = "<b>" + ac.selected + "<\/b> message" + pluralSelected + " in " + groupName + " " + predSelected + " selected. \u00a0\u00a0\u00a0\u00a0\u00a0 [<a href='browse/" + ac.c + "/" + ac.f + "/" + ac.u + "?select=all' onClick='return selectAllInFolder();'>Select All <b>" + ac.count + " <\/b> Message" + pluralTotal + " in " + groupName + "<\/a>] \u00a0\u00a0 [<a href='browse/" + ac.c + "/" + ac.f + "/" + ac.u + "?select=none' onClick='return unSelectAllInFolder();'>Unselect All<\/a>]";
203
banner.style.backgroundColor = "#ffffa6";
206
banner.innerHTML = "All <b>" + ac.selected + "<\/b> message" + pluralSelected + " on this page " + predSelected + " selected. \u00a0\u00a0\u00a0\u00a0\u00a0 [<a href='browse/" + ac.c + "/" + ac.f + "/" + ac.u + "?select=all' onClick='return selectAllInFolder();'>Select All <b>" + ac.count + " <\/b> Message" + pluralTotal + " in " + groupName + "<\/a>]";
207
banner.style.backgroundColor = "#ffffa6";
210
banner.innerHTML = "<b>All <u>" + ac.count + "<\/u> message" + pluralTotal + " in " + groupName + " " + predSelected + " selected.<\/b> \u00a0\u00a0\u00a0\u00a0\u00a0 [<a href='browse/" + ac.c + "/" + ac.f + "/" + ac.u + "?select=none' onClick='return unSelectAllInFolder();'>Unselect All<\/a>]";
211
banner.style.backgroundColor = "#ffdebf";
214
banner.innerHTML = "<b>Selection Cleared - No messages selected in " + groupName + ".<\/b>";
215
banner.style.backgroundColor = "#ffdebf";
221
function markMessage(msg) {
222
var ac = YAHOO.alpine.current;
223
var chk = document.getElementsByName('uidList');
224
var selectAll = document.getElementById('selectall');
225
var numCheckbox = isNaN(chk.length) ? 1 : chk.length;
226
msg.parentNode.parentNode.id = msg.checked ? "sd" : "";
227
if (YAHOO.alpine.select.all) {
228
YAHOO.alpine.select.all = false;
233
setSelectAllInfoText(2);
237
selectAll.checked = false;
240
if (ac.count <= numCheckbox) {
241
setSelectAllInfoText(1);
243
setSelectAllInfoText(2);
246
updateMessageState(msg.value, msg.checked);
249
function markAllMessages() {
250
var ac = YAHOO.alpine.current;
251
var chk = document.getElementsByName('uidList');
252
var isChecked = document.getElementById('selectall').checked;
255
var markedUidList = '';
257
hideDisplayDivOrSpan("bannerConfirm"); // remove any confirmation banner from page
258
numCheckbox = isNaN(chk.length) ? 1 : chk.length;
259
if (numCheckbox == 1) { // if only one checkbox
260
chk.parentNode.parentNode.id = isChecked ? "sd" : "";
261
if (chk.checked != isChecked) {
264
chk.checked = isChecked;
265
markedUidList = chk.value;
267
var selectedClass = isChecked ? "sd" : "";
268
for (var i = 0; i < chk.length; i++) {
269
if (chk[i].checked != isChecked) {
272
chk[i].checked = isChecked;
273
chk[i].parentNode.parentNode.id = selectedClass;
274
markedUidList += ',' + chk[i].value;
277
if (isChecked) { // if Select all
278
ac.selected += numChanged;
279
if (ac.selected > numCheckbox) {
280
showSelectAllInfo(2);
281
} else if (ac.count > numCheckbox) {
282
showSelectAllInfo(3);
284
} else { // if UNselect all
285
ac.selected -= numChanged;
287
showSelectAllInfo(2);
292
updateMessageState(markedUidList, isChecked);
296
function selectAllInFolder() {
297
var alp = YAHOO.alpine;
298
var chk = document.getElementsByName('uidList');
299
document.getElementById('selectall').checked = true;
302
hideDisplayDivOrSpan("bannerConfirm"); // remove any confirmation banner from page
303
numCheckbox = isNaN(chk.length) ? 1 : chk.length;
304
if (numCheckbox == 1) {
306
chk.parentNode.parentNode.id = "sd";
308
for (var i = 0; i < chk.length; i++) {
309
chk[i].checked = true;
310
chk[i].parentNode.parentNode.id = "sd";
314
var all = (alp.current.focused) ? 'searched' : 'all';
315
alp.current.selected = (alp.current.focused) ? alp.current.focused : alp.current.count;
316
updateMessageState(all,'true');
318
showSelectAllInfo(4);
319
YAHOO.alpine.select.all = (alp.current.focused == 0);
323
function unSelectAllInFolder() {
324
var alp = YAHOO.alpine;
325
var chk = document.getElementsByName('uidList');
328
numCheckbox = isNaN(chk.length) ? 1 : chk.length;
329
YAHOO.alpine.current.selected = 0;
330
// setSelectAllInfoText(5);
331
document.getElementById('selectall').checked = false;
332
if (numCheckbox == 1) {
334
chk.parentNode.parentNode.id = "";
336
for (var i = 0; i < chk.length; i++) {
337
chk[i].checked = false;
338
chk[i].parentNode.parentNode.id = "";
342
var all = (alp.current.focused) ? 'searched' : 'all';
343
alp.select.all = false;
344
updateMessageState(all,'false');
350
function numCheckedOnPage() {
351
var chk = document.getElementsByName('uidList');
355
numCheckbox = isNaN(chk.length) ? 1 : chk.length;
356
if ((numCheckbox==1) && (chk.checked)) {
359
for (var i = 0; i < chk.length; i++) {
360
if (chk[i].checked) {
371
// Communicate state changes to server
372
function updateMessageState(u,m){
373
YAHOO.util.Connect.asyncRequest('GET',
374
'conduit/mark.tcl' + encodeURI('?u=' + u + '&mark=' + m) + urlSalt('&'),
376
success: function(o) {},
377
failure: function(o) {
378
newStatusMessage('Request Failure: ' + o.statusText);
384
function mailboxSearch(){
385
var elField = document.getElementById('searchField');
386
if(elField && elField.value && elField.value.length){
387
var elScope = document.getElementById('searchScope');
388
var scope = (elScope) ? elScope.options[elScope.selectedIndex].value : 'new';
389
newMessageList({parms:{op:'search',type:'any',scope:scope,criteria:elField.value}});
393
// Confirm Toolbar Actions based on Selection
394
function confirmDelete() {
395
var ac = YAHOO.alpine.current;
396
var plural = (ac.selected > 1) ? 's' : '';
397
if (ac.selected != numCheckedOnPage())
398
panelConfirm("Move " + ac.selected + " message" + plural + " from " + ac.f + " to the Trash?<p>Some selected messages are on other pages.",{fn:actuallyDelete},'Delete');
405
function confirmSpam() {
406
var ac = YAHOO.alpine.current;
407
var plural = (ac.selected > 1) ? 's' : '';
408
if (ac.selected != numCheckedOnPage())
409
panelConfirm("Report " + ac.selected + " message" + plural + " as Spam?<p>Some selected messages are on other pages.",{fn:actuallySpam},'Report Spam');
416
// Confirm Toolbar Actions based on Selection
417
function deleteForeverString() {
418
if (YAHOO.alpine.current.selected != numCheckedOnPage()) {
419
return confirm( + " forever?\nSome selected messages are on other pages.");
422
return(YAHOO.alpine.current.selected > 0);
425
// Complain if no messages are selected for Toolbar Action
426
function anySelected(act) {
427
if (YAHOO.alpine.current.selected <= 0){
428
panelAlert('No messages selected to ' + act + '.<p>Select one or more messages by checking the box on the line of each desired message.');
435
function flipStar(el) {
436
var dom = YAHOO.util.Dom;
437
var u = el.id.substring(4);
438
var flagState = '', iClass = '', iTitle = '', iUnClass = '';
439
if(el.title.substr(0,7) == gLabelStarred){
442
if(el.title.length > 7){
443
switch (el.title.substr(12)){
446
iTitle = gLabelPriHi;
450
iTitle = gLabelPriHier;
458
iTitle = 'Set '+ gLabelStarred;
465
case 'Set ' + gLabelStarred :
467
iTitle = gLabelStarred;
471
iTitle = gLabelStarred + ' and ' + gLabelPriHi;
474
iUnClass = 'prihier';
475
iTitle = gLabelStarred + ' and ' + gLabelPriHier;
477
default : return false;
481
setStar(u,flagState,function(){ if(iTitle.length) el.title = iTitle; if(iUnClass.length) dom.removeClass(el.firstChild,iUnClass); dom.addClass(el.firstChild,iClass); });
485
function setStar(u,flagState,onDone){
486
if(u < 0) u = YAHOO.alpine.current.u;
487
YAHOO.util.Connect.asyncRequest('GET',
488
'conduit/flag.tcl?u=' + u + '&f=imp&s=' + flagState + urlSalt('&'),
490
success: function(o) { if(onDone) onDone(); },
491
failure: function(o) { showStatusMessage('Request Failure: ' + o.statusText + '. Please report this.', 10)}
496
// Load next message list for viewing relative to current list
497
function newMessageList(o){
498
var div = document.getElementById('alpineContent');
500
var nUrl = 'newlist.tcl/' + YAHOO.alpine.current.c + '/' + encodeURIFolderPath(YAHOO.alpine.current.f);
503
for(var prop in o.parms){
504
nUrl += conj + prop + '=' + encodeURIComponent(o.parms[prop]);
513
YAHOO.util.Connect.asyncRequest('GET',
514
nUrl + urlSalt(conj),
517
onStart:function(eventType){ showLoading(); },
518
onComplete:function(eventType){ hideLoading(); }
520
success:function(aro){
521
div.innerHTML = aro.responseText;
522
evalScripts(aro.responseText);
524
failure: function(aro) { showStatusMessage('Request Failure: ' + aro.statusText, 10)},
528
if(o && o.control && o.control.blur) o.control.blur();
533
function actuallyDelete()
535
if(numCheckedOnPage()) newMessageList({parms:{'op':'delete'}});
536
else applyFlag(null,'del','ton');
539
function actuallySpam()
541
newMessageList({parms:{'op':'spam'}});
544
function doEmpty(ctrlObj,listOption){
545
if(listOption == 'all'){
546
newMessageList({control:ctrlObj,parms:{'op':'trashall'}});
549
var ac = YAHOO.alpine.current;
550
if(listOption == 'selected' && anySelected('Delete Forever')){
551
var plural = (ac.selected > 1) ? 's' : '';
552
var t = "Delete " + ac.selected + " message" + plural + " from " + ac.f + ' forever?';
553
if(ac.selected != numCheckedOnPage()) t += '<p>Some selected messages are on other pages.';
556
text:'Delete Forever',
557
fn:function(){ newMessageList({control:ctrlObj,parms:{'op':'trash'}}); }
562
if(ctrlObj) ctrlObj.blur();
566
function doSpam(ctrlObj){
567
if(anySelected('Report as Spam')) confirmSpam();
568
if(ctrlObj) ctrlObj.blur();
573
function hiliteDrop(id,on){
574
var dom = YAHOO.util.Dom;
576
if(!dom.hasClass(id,'drop'))
577
dom.addClass(id, 'drop');
579
if(dom.hasClass(id + 'Icon','splc5')){
580
dom.removeClass(id + 'Icon','splc5');
581
dom.addClass(id + 'Icon','splc10');
583
else if(dom.hasClass(id + 'Icon','splc7')){
584
dom.removeClass(id + 'Icon','splc7');
585
dom.addClass(id + 'Icon','splc11');
589
if(dom.hasClass(id,'drop'))
590
dom.removeClass(id, 'drop');
592
if(dom.hasClass(id + 'Icon','splc10')){
593
dom.removeClass(id + 'Icon','splc10');
594
dom.addClass(id + 'Icon','splc5');
596
else if(dom.hasClass(id + 'Icon','splc11')){
597
dom.removeClass(id + 'Icon','splc11');
598
dom.addClass(id + 'Icon','splc7');
603
function dragOntoFolder(uid,o){
604
newMessageList({parms:{'op':'movemsg','df':o.c+'/'+o.f,'uid':uid}});
608
function canDragit(id,uid,tt){
609
var dom = YAHOO.util.Dom;
610
var dd = new YAHOO.util.DDProxy(id,
613
dragElId:'msgDragProxy',
617
dd.b4MouseDown = function(e){
618
var s = '<b>' + this.getEl().innerHTML + '</b>';
619
var r = dom.getRegion(this.getEl());
620
var w = r.right - r.left;
621
var el = document.getElementById('ml'+uid);
622
r = dom.getRegion(el);
623
w = Math.max(w, (r.right - r.left));
624
if(el && el.innerHTML.length) s += '<br>' + el.innerHTML;
625
el = document.getElementById('msgDragProxyText');
627
dom.setStyle('msgDragProxy','width',w + 12);
630
dd.endDrag = function(){
631
dom.setStyle('msgDragProxy','visibility','hidden')
633
dd.onDragEnter = function(e,id){ hiliteDrop(id,true); };
634
dd.onDragOut = function(e,id){ hiliteDrop(id,false); };
635
dd.onDragDrop = function(e,id){
636
hiliteDrop(id,false);
638
if(o) o.f(uid,o.args);
641
dd.onMouseDown = function(e){
643
tt.cfg.setProperty('disabled',true);
645
dd.onMouseUp = function(e){
646
tt.cfg.setProperty('disabled',false);
651
function setDragTarget(id,fHandler,oArgs){
653
var o = document.getElementById(id);
655
o.ddObj = new YAHOO.util.DDTarget(id,'message');
662
function cursor(style){
663
document.body.style.cursor = style;
669
function newMessageText(o){
670
var div = document.getElementById('alpineContent');
671
var ac = YAHOO.alpine.current;
673
var uid = (o.uid) ? o.uid : ac.u;
674
var nUrl = 'newview.tcl/' + ac.c + '/' + encodeURIFolderPath(ac.f) + '/' + uid;
677
for(var prop in o.parms){
678
nUrl += conj + prop + '=' + encodeURIComponent(o.parms[prop]);
683
var aJax = YAHOO.util.Connect.asyncRequest('GET',
684
nUrl + urlSalt(conj),
687
onStart:function(eventType){ showLoading(); },
688
onComplete:function(eventType){ hideLoading(); }
690
success: function(aro){
691
div.innerHTML = aro.responseText;
692
evalScripts(aro.responseText);
693
window.scrollTo(0,0);
695
failure: function(aro) { showStatusMessage('newMessageText Failure: ' + aro.statusText,10); },
699
if(o && o.control && o.control.blur) o.control.blur();
704
// Move or Copy support
706
function initMorcButton(morcButton){
707
if(YAHOO.alpine.morcButton[morcButton] == null){
708
YAHOO.alpine.morcButton[morcButton] = new YAHOO.widget.Button({
711
id:morcButton+'Choice',
712
menu:[{ text:'Copy', value:'morc', onclick:{ fn:morcClick, obj:{morcButton:morcButton}} }],
718
function morcWhich(morcButton){
719
return YAHOO.alpine.morcButton[morcButton].get('label');
722
function morcClick(p_sType,p_aArgs,p_oItem){
724
var button = YAHOO.alpine.morcButton[p_oItem.morcButton];
725
if('copy' == YAHOO.util.Event.getTarget(p_aArgs[0]).innerHTML.toLowerCase()){
734
button.set('label',morc);
735
button.getMenu().getItem(0).cfg.setProperty('text',morcOpt);
738
function saveCacheClick(e,o){
739
var event = YAHOO.util.Event;
740
event.getTarget(e).blur();
742
event.preventDefault(e);
745
function updateSaveCache(p,c,f,dc,od,sca){
746
var event = YAHOO.util.Event;
747
var li = document.getElementById(p+'SaveCache');
749
var cn = li.childNodes;
750
var i, j, node, s = '';
751
for(i = 0; i < cn.length && i < sca.length; i++){
752
node = cn[i].childNodes[0];
753
if(node.tagName.toLowerCase() == 'hr') break;
754
node.href = p + '/' + c + '/' + f + '?save=' + dc + '/' + sca[i].fv;
755
node.innerHTML = sca[i].fn.replace(/</g,'<');
756
event.removeListener(node,'click');
757
event.addListener(node,'click',saveCacheClick,{c:dc,f:sca[i].fv,onDone:od});
759
for(j = i; j < sca.length; j++){
760
var nli = document.createElement('li');
761
var a = document.createElement('a');
762
a.href = p + '/' + c + '/' + f + '?save=' + dc + '/' + sca[j].fv;
763
a.innerHTML = sca[j].fn.replace(/</g,'<');
764
event.addListener(a,'click',saveCacheClick,{c:dc,f:sca[j].fv,onDone:od});
766
li.insertBefore(nli,cn[i++]);
772
// Move or Copy in mailbox list browse
773
function morcInBrowseDone(o){
774
if(anySelected('Move or Copy')){
775
var mvorcp = morcWhich('listMorcButton').toLowerCase();
776
newMessageList({parms:{'op':mvorcp,'df':o.c+'/'+o.f}});
782
// Move or Copy in mailbox message view
783
function morcInViewDone(o){
784
var mvorcp = morcWhich('viewMorcButton').toLowerCase();
785
newMessageText({parms:{'op':mvorcp,'df':o.c+'/'+o.f}});
790
function takeAddress(){
791
var dom = YAHOO.util.Dom;
792
var dbody = document.createDocumentFragment();
793
var div = document.createElement('div');
794
dbody.appendChild(div);
795
dom.addClass(div,'takeInstructions');
796
div.innerHTML = 'Choose extracted addresses and save to a new Contact'
798
div = document.createElement('div');
799
dbody.appendChild(div);
800
div.setAttribute('id','takeList');
801
dom.addClass(div,'takeList');
802
div.innerHTML = 'Loading...';
804
panelDialog('Extract Addresses',
807
buttonId:'butChoose',
808
label:'Add to Contacts',
811
var o = { which:'add', nickname:'', personal:'', email:'', note:'', fcc:'' };
812
var l = document.getElementsByName('taList');
815
for(i = 0; i < l.length; i++){
821
el = document.getElementById('taPers'+l[i].value);
823
var specials = el.innerHTML.match(/[()<>@,;:\\\".\[\]]/);
824
if(specials) o.email += '"' + el.innerHTML + '"';
825
else o.email += el.innerHTML;
827
el = document.getElementById('taEmail'+l[i].value);
828
if(el) o.email += ' <' + el.innerHTML + '>';
837
setPanelBodyWidth('takeList');
838
drawExtractedAddresses(div);
842
function drawExtractedAddresses(elContainer){
843
var takeDS = new YAHOO.util.DataSource('conduit/take.tcl?op=all&u=');
844
takeDS.responseType = YAHOO.util.DataSource.TYPE_XML;
845
takeDS.responseSchema = {
846
resultNode: 'Result',
847
fields: ['Type', 'Nickname','Personal','Email','Fcc','Note','Error']
849
takeDS.sendRequest(YAHOO.alpine.current.u,
851
success: function(oReq,oResp,oPayload){
852
var dom = YAHOO.util.Dom;
853
if(oResp.results.length == 1 && oResp.Error){
854
showStatusMessage('Error Taking Address: ' + oResp.Error, 10);
857
var id, el, elTD, elTR, elTable = document.createElement('table');
858
elTable.setAttribute('width','100%');
859
elTable.setAttribute('cellSpacing','0');
860
elTable.setAttribute('cellPadding','0');
861
for(var i = 0; i < oResp.results.length; i++){
862
var o = oResp.results[i];
863
n = (o.Email) ? o.Email.length : 0;
865
elTR = elTable.insertRow(elTable.rows.length);
866
elTD = elTR.insertCell(elTR.cells.length);
868
el = createInputElement('checkbox','taList');
869
el.setAttribute('value',elTable.rows.length);
870
id = 'takeAddr' + elTable.rows.length;
871
el.setAttribute('id',id);
873
YAHOO.util.Event.addListener(el,'click',boxClicked);
874
elTD.appendChild(el);
876
elTD = elTR.insertCell(elTR.cells.length);
877
dom.addClass(elTD,'wap');
878
el = createNameValueElement('label','for',id);
879
elTD.appendChild(el);
880
el.setAttribute('id','taPers'+elTable.rows.length);
881
el.innerHTML = (o.Personal) ? o.Personal : '';
883
elTD = elTR.insertCell(elTR.cells.length);
884
dom.addClass(elTD,'wap');
885
el = createNameValueElement('label','for',id);
886
elTD.appendChild(el);
887
el.setAttribute('id','taEmail'+elTable.rows.length);
888
el.innerHTML = o.Email;
891
//if(oResp.results[i].Nickname) ;
892
//if(oResp.results[i].Note) ;
893
//if(oResp.results[i].Fcc) ;
896
elContainer.replaceChild(elTable, elContainer.firstChild);
899
failure: function(oReq,oResp,oPayload){
900
showStatusMessage('Error Taking Address: ' + oResp.responseText, 10);
903
argument:[elContainer]
908
function boxClicked(e){
909
var o = YAHOO.util.Event.getTarget(e);
912
var el = document.getElementsByName('taList');
914
for(var i = 0; i < el.length; i++){
916
panelDialogEnableButton(true);
922
panelDialogEnableButton(false);
926
var el = document.getElementsByName('taList');
928
for(var i = 0; i < el.length; i++) el[i].checked = false;
931
panelDialogEnableButton(false);
934
// focus message list on search results
935
function listSearchResults(){
936
newMessageList({parms:{op:'focus',page:'new'}});
940
function fixupUnreadCount(id,n) {
942
if(n) updateElementHtml('unread' + id + 'Count', n);
943
else updateElementHtml('unread' + id, '');
947
// Pagewise Context updaters
948
function showBrowseMenus(){
949
var dom = YAHOO.util.Dom;
950
dom.setStyle('viewTopMenubar','display','none');
951
dom.setStyle('listTopMenubar','display','block');
952
dom.setStyle('viewBottomMenubar','display','none');
953
dom.setStyle('listBottomMenubar','display','block');
956
function updateBrowseLinksAndSuch(o){
957
var dom = YAHOO.util.Dom;
958
var alp = YAHOO.alpine;
959
if(o.u) alp.current.u = o.u;
960
alp.current.count = o.count;
961
alp.current.selected = o.selected;
962
alp.current.searched = o.searched;
963
alp.current.focused = o.focused;
964
if(o.selected != numCheckedOnPage()) showSelectAllInfo(2);
965
if(!o.page || o.page < 1) o.page = 1;
966
if(!o.pages || o.pages < 1) o.pages = 1;
967
document.title = alp.current.f + ', ' + o.page + ' of ' + o.pages + ' (' + o.unread + ') - Web Alpine 2.0';
968
fixupUnreadCount('Current',o.unread);
969
updateElementHtml('listContext', 'Page ' + o.page + ' of ' + o.pages + ' (' + o.count + ' Total Messages) ');
970
var bUrl = 'browse/' + alp.current.c + '/' + alp.current.f;
971
updateElementHref('gFolder', bUrl);
972
updateElementHref('composeLink', 'compose?pop=' + bUrl);
974
var ea = document.getElementsByTagName('span');
975
for(var i = 0; i < ea.length; i++){
976
if(dom.hasClass(ea[i],'spfcl3')){
977
dom.removeClass(ea[i],'spfcl3');
982
var el = document.getElementById('sort'+o.sort);
983
if(el) dom.addClass(el.firstChild,'spfcl3')
986
dom.setStyle('searchResult','display','block');
987
dom.setStyle('searchRefine','display','block');
988
dom.setStyle('searchClear','display','block');
990
updateElementHtml('pageTitle', 'Search Results in ' + quoteHtml(alp.current.f));
991
updateElementHtml('searchResultText', 'Search Results (' + o.focused + ')');
992
if(!dom.hasClass('searchResult','sel')) dom.addClass('searchResult','sel');
993
var el = document.getElementById('gFolder');
994
if(el && dom.hasClass(el.parentNode,'sel')) dom.removeClass(el.parentNode,'sel');
997
updateElementHtml('pageTitle', quoteHtml(alp.current.f));
998
if(dom.hasClass('searchResult','sel')) dom.removeClass('searchResult','sel');
999
var el = document.getElementById('gFolder');
1000
if(el && !dom.hasClass(el.parentNode,'sel')) dom.addClass(el.parentNode,'sel');
1004
updateElementHtml('pageTitle', quoteHtml(alp.current.f));
1005
dom.setStyle('searchResult','display','none');
1006
if(dom.hasClass('searchResult','sel')) dom.removeClass('searchResult','sel');
1007
var el = document.getElementById('gFolder');
1008
if(el && !dom.hasClass(el.parentNode,'sel')) dom.addClass(el.parentNode,'sel');
1009
dom.setStyle('searchRefine','display','none');
1010
dom.setStyle('searchClear','display','none');
1011
document.getElementById('searchScope').selectedIndex = 2;
1013
if(YAHOO.env.ua.gecko > 0){
1015
window.onresize = resizeVPHeight;
1019
function showViewMenus(){
1020
var dom = YAHOO.util.Dom;
1021
dom.setStyle('listTopMenubar','display','none');
1022
dom.setStyle('viewTopMenubar','display','block');
1023
dom.setStyle('listBottomMenubar','display','none');
1024
dom.setStyle('viewBottomMenubar','display','block');
1027
function updateViewLinksAndSuch(o){
1028
var alp = YAHOO.alpine;
1029
var ac = alp.current;
1031
window.location = alp.app_root + '/browse/' + ac.c + '/' + ac.f;
1037
ac.selected = o.selected;
1038
fixupUnreadCount('Current',o.unread);
1039
var thisFldr = '/' + ac.c + '/' + ac.f + '/';
1040
var thisFldrUrl = '/' + ac.c + '/' + encodeURIComponent(ac.f).replace(/%2F/g,'/');
1041
var viewUrl = 'view' + thisFldr;
1042
var browseUrl = 'browse' + thisFldrUrl;
1043
var context = 'Message ' + o.n + ' of ' + o.count;
1044
var fullcontext = ac.f + ', ' + context;
1045
document.title = context + ' (' + o.unread + ') - Web Alpine 2.0';
1046
updateElementHtml('viewContext', context);
1047
updateElementHtml('pageTitle', '<a href="' + viewUrl + '" onClick="return newMessageList({parms:{op:\'noop\',page:\'new\'}});">' + quoteHtml(fullcontext) + '');
1048
updateElementHref('gFolder', browseUrl);
1049
updateElementHref('gCheck', viewUrl + ac.u);
1050
updateElementHref('gExtract', 'extract/' + ac.c + '/' + ac.f + '/' + ac.u);
1051
updateElementHref('gDelete', viewUrl + o.unext + '?delete=' + ac.u);
1052
updateElementHref('gSpam', viewUrl + o.unext + '?spam=' + ac.u);
1053
updateElementHref('gUnread', viewUrl + o.unext + '?unread=' + ac.u);
1054
updateElementHref('gDecrypt', viewUrl + ac.u);
1055
var compUrl = thisFldrUrl + '/' + ac.u + '?pop=view' + thisFldrUrl + '/' + ac.u;
1056
updateElementHref('gReply', 'reply' + compUrl);
1057
updateElementHref('gReplyAll', 'replyall' + compUrl);
1058
updateElementHref('gForward', 'forward' + compUrl);
1059
updateElementHref('composeLink', 'compose?pop=view' + compUrl);
1060
var oForm = document.getElementById('searchForm');
1061
oForm.action = oForm.action.replace(/\/[\d]+$/,'/' + ac.u);
1062
if(YAHOO.env.ua.gecko > 0){
1064
window.onresize = resizeVPHeight;