]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/UIxComponentEditor.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1100 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxComponentEditor.js
1 function onPopupAttendeesWindow(event) {
2    if (event)
3       preventDefault(event);
4    window.open(ApplicationBaseURL + "editAttendees", null, 
5                "width=803,height=573");
6
7    return false;
8 }
9
10 function onSelectPrivacy(event) {
11    if (event.button == 0) {
12       var node = event.target;
13       if (node.tagName != 'A')
14          node = node.getParentWithTagName("a");
15       node = node.childNodesWithTag("span")[0];
16
17       popupToolbarMenu(node, "privacy-menu");
18       Event.stop(event);
19 //       preventDefault(event);
20    }
21 }
22
23 function onPopupUrlWindow(event) {
24    if (event)
25       preventDefault(event);
26
27    var urlInput = document.getElementById("url");
28    var newUrl = window.prompt(labels["Target:"].decodeEntities(), urlInput.value);
29    if (newUrl != null) {
30       var documentHref = $("documentHref");
31       var documentLabel = $("documentLabel");
32       if (documentHref.childNodes.length > 0) {
33          documentHref.childNodes[0].nodeValue = newUrl;
34          if (newUrl.length > 0)
35             documentLabel.setStyle({ display: "block" });
36          else
37             documentLabel.setStyle({ display: "none" });
38       }
39       else {
40          documentHref.appendChild(document.createTextNode(newUrl)); 
41          if (newUrl.length > 0)
42             documentLabel.setStyle({ display: "block" });
43       }
44       urlInput.value = newUrl;
45    }
46
47    return false;
48 }
49
50 function onPopupDocumentWindow(event) {
51    var documentUrl = $("url");
52
53    preventDefault(event);
54    window.open(documentUrl.value, "SOGo_Document");
55
56    return false;
57 }
58
59 function onMenuSetClassification(event) {
60    event.cancelBubble = true;
61
62    var classification = this.getAttribute("classification");
63    if (this.parentNode.chosenNode)
64       this.parentNode.chosenNode.removeClassName("_chosen");
65    this.addClassName("_chosen");
66    this.parentNode.chosenNode = this;
67
68 //    log("classification: " + classification);
69    var privacyInput = document.getElementById("privacy");
70    privacyInput.value = classification;
71 }
72
73 function onChangeCalendar(event) {
74    var calendars = $("calendarFoldersList").value.split(",");
75    var form = document.forms["editform"];
76    var urlElems = form.getAttribute("action").split("/");
77    var choice = calendars[this.value];
78    var ownerLogin;
79    if (choice.indexOf(":") > -1)
80       ownerLogin = choice.split(":")[0];
81    else
82       ownerLogin = UserLogin;
83    urlElems[urlElems.length-4] = ownerLogin;
84
85    form.setAttribute("action", urlElems.join("/"));
86 }
87
88 function refreshAttendees() {
89    var attendeesLabel = $("attendeesLabel");
90    var attendeesNames = $("attendeesNames");
91    var attendeesHref = $("attendeesHref");
92
93    for (var i = 0; i < attendeesHref.childNodes.length; i++)
94      attendeesHref.removeChild(attendeesHref.childNodes[i]);
95
96    if (attendeesNames.value.length > 0) {
97       attendeesHref.appendChild(document.createTextNode(attendeesNames.value));
98       attendeesLabel.setStyle({ display: "block" });
99    }
100    else
101       attendeesLabel.setStyle({ display: "none" });
102 }
103
104 function initializeAttendeesHref() {
105    var attendeesHref = $("attendeesHref");
106    var attendeesLabel = $("attendeesLabel");
107    var attendeesNames = $("attendeesNames");
108
109    Event.observe(attendeesHref, "click", onPopupAttendeesWindow, false);
110    if (attendeesNames.value.length > 0) {
111       attendeesHref.setStyle({ textDecoration: "underline", color: "#00f" });
112       attendeesHref.appendChild(document.createTextNode(attendeesNames.value));
113       attendeesLabel.setStyle({ display: "block" });
114    }
115 }
116
117 function initializeDocumentHref() {
118    var documentHref = $("documentHref");
119    var documentLabel = $("documentLabel");
120    var documentUrl = $("url");
121
122    Event.observe(documentHref, "click", onPopupDocumentWindow, false);
123    documentHref.setStyle({ textDecoration: "underline", color: "#00f" });
124    if (documentUrl.value.length > 0) {
125       documentHref.appendChild(document.createTextNode(documentUrl.value));
126       documentLabel.setStyle({ display: "block" });
127    }
128
129    var changeUrlButton = $("changeUrlButton");
130    Event.observe(changeUrlButton, "click", onPopupUrlWindow, false);
131 }
132
133 function initializePrivacyMenu() {
134    var privacy = $("privacy").value.toUpperCase();
135    if (privacy.length > 0) {
136       var privacyMenu = $("privacy-menu").childNodesWithTag("ul")[0];
137       var menuEntries = privacyMenu.childNodesWithTag("li");
138       var chosenNode;
139       if (privacy == "CONFIDENTIAL")
140          chosenNode = menuEntries[1];
141       else if (privacy == "PRIVATE")
142          chosenNode = menuEntries[2];
143       else
144          chosenNode = menuEntries[0];
145       privacyMenu.chosenNode = chosenNode;
146       chosenNode.addClassName("_chosen");
147    }
148 }
149
150 function onComponentEditorLoad(event) {
151    if (!$("statusPercent"))
152       initializeAttendeesHref();
153    initializeDocumentHref();
154    initializePrivacyMenu();
155    var list = $("calendarList");
156    Event.observe(list, "change",
157                  onChangeCalendar.bindAsEventListener(list),
158                  false);
159    if (document.createEvent) {
160      var onSelectionChangeEvent = document.createEvent("Event");
161      onSelectionChangeEvent.initEvent("change", false, false);
162      list.dispatchEvent(onSelectionChangeEvent);
163    }
164    else {
165      list.fireEvent("onchange"); // IE
166    }
167
168    var menuItems = $("itemPrivacyList").childNodesWithTag("li");
169    for (var i = 0; i < menuItems.length; i++)
170       Event.observe(menuItems[i], "mouseup",
171                     onMenuSetClassification.bindAsEventListener(menuItems[i]),
172                     false);
173 }
174
175 addEvent(window, 'load', onComponentEditorLoad);