1 function onSearchFormSubmit() {
2 var searchValue = $("searchValue");
4 var url = (UserFolderURL
5 + "foldersSearch?search=" + escape(searchValue.value)
6 + "&type=" + window.opener.userFolderType);
7 if (document.userFoldersRequest) {
8 document.userFoldersRequest.aborted = true;
9 document.userFoldersRequest.abort();
11 document.userFoldersRequest
12 = triggerAjaxRequest(url, userFoldersCallback);
17 function addLineToTree(tree, parent, line) {
20 var nodes = line.split(";");
21 if (window.opener.userFolderType == "user"
22 || nodes.length > 1) {
23 var parentNode = nodes[0];
24 var userInfos = parentNode.split(":");
25 var email = userInfos[1] + " <" + userInfos[2] + ">";
26 tree.add(parent, 0, email, 0, '#', userInfos[0], 'person',
28 ResourcesURL + '/abcard.gif',
29 ResourcesURL + '/abcard.gif');
30 for (var i = 1; i < nodes.length; i++) {
31 var folderInfos = nodes[i].split(":");
32 var icon = ResourcesURL + '/';
33 if (folderInfos[2] == 'Contact')
34 icon += 'tb-mail-addressbook-flat-16x16.png';
36 icon += 'calendar-folder-16x16.png';
37 var folderId = userInfos[0] + ":" + folderInfos[1];
38 var name = folderInfos[0]; // name has the format "Folername (Firstname Lastname <email>)"
39 var pos = name.lastIndexOf(' (')
41 name = name.substring(0, pos); // strip the part with fullname and email
42 tree.add(parent + i, parent, name, 0, '#', folderId,
43 folderInfos[2] + '-folder', '', '', icon, icon);
45 offset = nodes.length - 1;
48 // window.alert("nope:" + window.opener.userFolderType);
53 function buildTree(response) {
55 d.config.folderLlinks = true;
56 d.config.hideRoot = true;
57 d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif';
58 d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
59 d.icon.folderOpen = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
60 d.icon.node = ResourcesURL + '/tbtv_leaf_corner_17x17.gif';
61 d.icon.line = ResourcesURL + '/tbtv_line_17x17.gif';
62 d.icon.join = ResourcesURL + '/tbtv_junction_17x17.gif';
63 d.icon.joinBottom = ResourcesURL + '/tbtv_corner_17x17.gif';
64 d.icon.plus = ResourcesURL + '/tbtv_plus_17x17.gif';
65 d.icon.plusBottom = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
66 d.icon.minus = ResourcesURL + '/tbtv_minus_17x17.gif';
67 d.icon.minusBottom = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
68 d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
69 d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
70 d.icon.empty = ResourcesURL + '/empty.gif';
73 var lines = response.split("\n");
75 for (var i = 0; i < lines.length; i++) {
76 if (lines[i].length > 0)
77 offset += addLineToTree(d, i + 1 + offset, lines[i]);
83 function onFolderTreeItemClick(event) {
84 preventDefault(event);
87 if (topNode.selectedEntry)
88 topNode.selectedEntry.deselect();
90 topNode.selectedEntry = this;
93 function userFoldersCallback(http) {
94 if (http.readyState == 4) {
95 document.userFoldersRequest = null;
96 var div = $("folders");
97 if (http.status == 200) {
98 var response = http.responseText;
99 div.innerHTML = buildTree(http.responseText);
101 var nodes = document.getElementsByClassName("node", $("d"));
102 for (i = 0; i < nodes.length; i++)
103 Event.observe(nodes[i], "click", onFolderTreeItemClick.bindAsEventListener(nodes[i]));
105 else if (http.status == 404) {
111 function onConfirmFolderSelection(event) {
112 var topNode = $("d");
113 if (topNode && topNode.selectedEntry) {
114 var node = topNode.selectedEntry.parentNode;
115 var folder = node.getAttribute("dataname");
117 if (window.opener.userFolderType == "user") {
118 var spans = document.getElementsByClassName("nodeName",
119 topNode.selectedEntry);
120 var email = spans[0].innerHTML;
121 email = email.replace("<", "<");
122 email = email.replace(">", ">");
126 var spans1 = document.getElementsByClassName("nodeName",
128 var spans2 = document.getElementsByClassName("nodeName",
129 node.parentNode.previousSibling);
130 var email = spans2[0].innerHTML;
131 email = email.replace("<", "<");
132 email = email.replace(">", ">");
133 folderName = spans1[0].innerHTML + ' (' + email + ')';
135 var data = { folderName: folderName, folder: folder, window: window };
136 window.opener.subscribeToFolder(window.opener.userFolderCallback, data);
140 function onFolderSearchKeyDown(event) {
141 var div = $("folders");
148 function initUserFoldersWindow() {
149 $("searchValue").observe("keydown", onFolderSearchKeyDown);
150 $("addButton").observe("click", onConfirmFolderSelection);
153 FastInit.addOnLoad(initUserFoldersWindow);