Monotone-Parent: d2bec7005b1132e0cdbaba9d59a590f4f9b95b6b

Monotone-Revision: 7cc3351f7b4c30b2183e351afaf429ade9f6ab9b

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-08-28T14:48:45
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2008-08-28 14:48:45 +00:00
parent 70f4adbbf4
commit fcb174bdfd
32 changed files with 2773 additions and 2711 deletions

View File

@@ -1,3 +1,4 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* JavaScript for SOGoContacts */
var cachedContacts = {};
@@ -23,7 +24,7 @@ function validateEditorInput(sender) {
if (errortext.length > 0) {
alert(labels.error_validationfailed + ":\n"
+ errortext);
+ errortext);
return false;
}
return true;
@@ -39,11 +40,11 @@ function openContactsFolder(contactsFolder, reload, idx) {
var searchValue = search["value"];
if (searchValue && searchValue.length > 0)
url += ("&search=" + search["criteria"]
+ "&value=" + escape(searchValue.utf8encode()));
+ "&value=" + escape(searchValue.utf8encode()));
var sortAttribute = sorting["attribute"];
if (sortAttribute && sortAttribute.length > 0)
url += ("&sort=" + sorting["attribute"]
+ "&asc=" + sorting["ascending"]);
+ "&asc=" + sorting["ascending"]);
var selection;
if (idx) {
@@ -52,9 +53,9 @@ function openContactsFolder(contactsFolder, reload, idx) {
else if (contactsFolder == Contact.currentAddressBook) {
var contactsList = $("contactsList");
if (contactsList)
selection = contactsList.getSelectedRowsId();
// else
// window.alert("no contactsList");
selection = contactsList.getSelectedRowsId();
// else
// window.alert("no contactsList");
}
else
selection = null;
@@ -88,85 +89,85 @@ function contactsListCallback(http) {
var div = $("contactsListContent");
var table = $("contactsList");
if (table) {
// Update table
var data = http.responseText;
var html = data.replace(/^(.*\n)*.*(<table(.*\n)*)$/, "$2");
var tbody = table.tBodies[0];
var tmp = document.createElement('div');
$(tmp).update(html);
table.replaceChild($(tmp).select("table tbody")[0], tbody);
// Update table
var data = http.responseText;
var html = data.replace(/^(.*\n)*.*(<table(.*\n)*)$/, "$2");
var tbody = table.tBodies[0];
var tmp = document.createElement('div');
$(tmp).update(html);
table.replaceChild($(tmp).select("table tbody")[0], tbody);
var rows = table.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
var row = $(rows[i]);
row.observe("mousedown", onRowClick);
row.observe("dblclick", onContactRowDblClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("contextmenu", onContactContextMenu);
}
var rows = table.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
var row = $(rows[i]);
row.observe("mousedown", onRowClick);
row.observe("dblclick", onContactRowDblClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("contextmenu", onContactContextMenu);
}
}
else {
// Add table (doesn't happen .. yet)
div.update(http.responseText);
table = $("contactsList");
configureSortableTableHeaders(table);
TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
// Add table (doesn't happen .. yet)
div.update(http.responseText);
table = $("contactsList");
configureSortableTableHeaders(table);
TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
}
if (sorting["attribute"] && sorting["attribute"].length > 0) {
var sortHeader;
if (sorting["attribute"] == "displayName")
sortHeader = $("nameHeader");
else if (sorting["attribute"] == "mail")
sortHeader = $("mailHeader");
else if (sorting["attribute"] == "screenName")
sortHeader = $("screenNameHeader");
else if (sorting["attribute"] == "org")
sortHeader = $("orgHeader");
else if (sorting["attribute"] == "phone")
sortHeader = $("phoneHeader");
else
sortHeader = null;
var sortHeader;
if (sorting["attribute"] == "displayName")
sortHeader = $("nameHeader");
else if (sorting["attribute"] == "mail")
sortHeader = $("mailHeader");
else if (sorting["attribute"] == "screenName")
sortHeader = $("screenNameHeader");
else if (sorting["attribute"] == "org")
sortHeader = $("orgHeader");
else if (sorting["attribute"] == "phone")
sortHeader = $("phoneHeader");
else
sortHeader = null;
if (sortHeader) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
if (sortHeader) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
}
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
}
}
var selected = http.callbackData;
if (selected) {
for (var i = 0; i < selected.length; i++) {
var row = $(selected[i]);
if (row) {
var rowPosition = row.rowIndex * row.getHeight();
if (div.getHeight() < rowPosition)
div.scrollTop = rowPosition; // scroll to selected contact
row.selectElement();
}
}
for (var i = 0; i < selected.length; i++) {
var row = $(selected[i]);
if (row) {
var rowPosition = row.rowIndex * row.getHeight();
if (div.getHeight() < rowPosition)
div.scrollTop = rowPosition; // scroll to selected contact
row.selectElement();
}
}
}
}
else {
var table = $("contactsList");
if (table) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var tBody = $(table.tBodies[0]);
var length = tBody.rows.length;
for (var i = length - 1; i > -1; i--)
tBody.removeChild(tBody.rows[i]);
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var tBody = $(table.tBodies[0]);
var length = tBody.rows.length;
for (var i = length - 1; i > -1; i--)
tBody.removeChild(tBody.rows[i]);
}
}
}
@@ -243,7 +244,7 @@ function _onContactMenuAction(folderItem, action, refresh) {
if (Object.isArray(document.menuTarget) && selectedFolders.length > 0) {
var selectedFolderId = $(selectedFolders[0]).readAttribute("id");
var contactIds = $(document.menuTarget).collect(function(row) {
return row.getAttribute("id");
return row.getAttribute("id");
});
var url = ApplicationBaseURL + selectedFolderId + "/" + action + "?folder=" + folderId + "&uid="
@@ -269,16 +270,16 @@ function actionContactCallback(http) {
if (isHttpStatus204(http.status)) {
var refreshFolderId = http.callbackData;
if (refreshFolderId)
openContactsFolder(refreshFolderId, true);
openContactsFolder(refreshFolderId, true);
}
else {
var html = new Element("div").update(http.responseText);
var error = html.select("p").first().firstChild.nodeValue.trim();
log("actionContactCallback failed: error " + http.status + " (" + error + ")");
if (parseInt(http.status) == 403)
window.alert(labels["You don't have the required privileges to perform the operation."]);
window.alert(labels["You don't have the required privileges to perform the operation."]);
else if (error)
window.alert(labels[error]);
window.alert(labels[error]);
refreshCurrentFolder();
}
}
@@ -296,7 +297,7 @@ function loadContact(idx) {
}
else {
var url = (URLForFolderID(Contact.currentAddressBook)
+ "/" + idx + "/view?noframe=1");
+ "/" + idx + "/view?noframe=1");
document.contactAjaxRequest
= triggerAjaxRequest(url, contactLoadCallback, idx);
}
@@ -353,7 +354,7 @@ function onContactRowDblClick(event) {
var contactId = this.getAttribute('contactid');
openContactWindow(URLForFolderID(Contact.currentAddressBook)
+ "/" + contactId + "/edit", contactId);
+ "/" + contactId + "/edit", contactId);
return false;
}
@@ -404,7 +405,7 @@ function onToolbarEditSelectedContacts(event) {
for (var i = 0; i < rows.length; i++) {
openContactWindow(URLForFolderID(Contact.currentAddressBook)
+ "/" + rows[i] + "/edit", rows[i]);
+ "/" + rows[i] + "/edit", rows[i]);
}
return false;
@@ -421,8 +422,8 @@ function onToolbarWriteToSelectedContacts(event) {
}
openMailComposeWindow(ApplicationBaseURL + "../Mail/compose"
+ "?folder=" + Contact.currentAddressBook.substring(1)
+ "&uid=" + rows.join("&uid="));
+ "?folder=" + Contact.currentAddressBook.substring(1)
+ "&uid=" + rows.join("&uid="));
if (document.body.hasClassName("popup"))
window.close();
@@ -459,7 +460,7 @@ function onContactDeleteEventCallback(http) {
var row = $(http.callbackData);
row.parentNode.removeChild(row);
if (Contact.currentContact == http.callbackData)
$("contactView").update();
$("contactView").update();
}
else if (parseInt(http.status) == 403) {
var row = $(http.callbackData);
@@ -550,8 +551,8 @@ function onConfirmContactSelection(event) {
if (selector) {
var selectorId = selector.getAttribute("id");
selectorList = opener.window.document.getElementById('uixselector-'
+ selectorId
+ '-uidList');
+ selectorId
+ '-uidList');
initialValues = selectorList.value;
}
@@ -563,7 +564,7 @@ function onConfirmContactSelection(event) {
var email = '' + rows[i].cells[1].innerHTML;
window.opener.addContact(tag, currentAddressBookName + '/' + cname,
cid, cname, email);
cid, cname, email);
}
if (selector && selector.changeNotification
@@ -583,7 +584,7 @@ function refreshContacts(contactId) {
function onAddressBookNew(event) {
createFolder(window.prompt(labels["Name of the Address Book"], ""),
appendAddressBook);
appendAddressBook);
preventDefault(event);
}
@@ -620,8 +621,8 @@ function appendAddressBook(name, folder) {
li.setAttribute("owner", owner);
li.addClassName("local");
li.appendChild(document.createTextNode(name
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g")));
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g")));
setEventsOnAddressBook(li);
updateAddressBooksMenus();
}
@@ -657,8 +658,8 @@ function onAddressBookRemove(event) {
node.deselect();
var owner = node.getAttribute("owner");
if (owner == "nobody") {
var label = labels["You cannot remove nor unsubscribe from a public addressbook."];
window.alert(label);
var label = labels["You cannot remove nor unsubscribe from a public addressbook."];
window.alert(label);
}
else if (owner == UserLogin) {
var folderIdElements = node.getAttribute("id").split(":");
@@ -669,8 +670,8 @@ function onAddressBookRemove(event) {
onFolderSelectionChange();
}
else {
var folderId = node.getAttribute("id");
unsubscribeFromFolder(folderId, owner, onFolderUnsubscribeCB, folderId);
var folderId = node.getAttribute("id");
unsubscribeFromFolder(folderId, owner, onFolderUnsubscribeCB, folderId);
}
}
@@ -678,24 +679,24 @@ function onAddressBookRemove(event) {
}
function deletePersonalAddressBook(folderId) {
if (folderId == "personal") {
var label = labels["You cannot remove nor unsubscribe from your personal addressbook."];
window.alert(label);
}
else {
var label
= labels["Are you sure you want to delete the selected address book?"];
if (window.confirm(label)) {
if (document.deletePersonalABAjaxRequest) {
document.deletePersonalABAjaxRequest.aborted = true;
document.deletePersonalABAjaxRequest.abort();
}
var url = ApplicationBaseURL + folderId + "/deleteFolder";
document.deletePersonalABAjaxRequest
= triggerAjaxRequest(url, deletePersonalAddressBookCallback,
folderId);
}
}
if (folderId == "personal") {
var label = labels["You cannot remove nor unsubscribe from your personal addressbook."];
window.alert(label);
}
else {
var label
= labels["Are you sure you want to delete the selected address book?"];
if (window.confirm(label)) {
if (document.deletePersonalABAjaxRequest) {
document.deletePersonalABAjaxRequest.aborted = true;
document.deletePersonalABAjaxRequest.abort();
}
var url = ApplicationBaseURL + folderId + "/deleteFolder";
document.deletePersonalABAjaxRequest
= triggerAjaxRequest(url, deletePersonalAddressBookCallback,
folderId);
}
}
}
function deletePersonalAddressBookCallback(http) {
@@ -707,13 +708,13 @@ function deletePersonalAddressBookCallback(http) {
var i = 0;
var done = false;
while (!done && i < children.length) {
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
}
}
document.deletePersonalABAjaxRequest = null;
@@ -791,10 +792,10 @@ function onAddressBookMenuPrepareVisibility() {
if (selectedFolder) {
var selectedFolderId = selectedFolder.readAttribute("id");
$(this).select("li").each(function(menuEntry) {
if (menuEntry.readAttribute("folderId") == selectedFolderId)
menuEntry.addClassName("disabled");
else
menuEntry.removeClassName("disabled");
if (menuEntry.readAttribute("folderId") == selectedFolderId)
menuEntry.addClassName("disabled");
else
menuEntry.removeClassName("disabled");
});
}
}
@@ -805,39 +806,39 @@ function updateAddressBooksMenus() {
var pageContent = $("pageContent");
var contactFolders = contactFoldersList.select("li");
var contactActions = new Hash({ move: onContactMenuMove,
copy: onContactMenuCopy });
copy: onContactMenuCopy });
var actions = contactActions.keys();
for (var j = 0; j < actions.size(); j++) {
var key = actions[j];
var callbacks = new Array();
var menuId = key + "ContactMenu";
var menuDIV = $(menuId);
if (menuDIV)
menuDIV.parentNode.removeChild(menuDIV);
var callbacks = new Array();
var menuId = key + "ContactMenu";
var menuDIV = $(menuId);
if (menuDIV)
menuDIV.parentNode.removeChild(menuDIV);
menuDIV = document.createElement("div");
pageContent.appendChild(menuDIV);
menuDIV = document.createElement("div");
pageContent.appendChild(menuDIV);
var menu = document.createElement("ul");
menuDIV.appendChild(menu);
var menu = document.createElement("ul");
menuDIV.appendChild(menu);
$(menuDIV).addClassName("menu");
menuDIV.setAttribute("id", menuId);
$(menuDIV).addClassName("menu");
menuDIV.setAttribute("id", menuId);
var submenuIds = new Array();
for (var i = 0; i < contactFolders.length; i++) {
if (contactFolders[i].hasClassName("local")) {
var menuEntry = new Element("li",
{ folderId: contactFolders[i].readAttribute("id"),
owner: contactFolders[i].readAttribute("owner") }
).update(contactFolders[i].innerHTML);
menu.appendChild(menuEntry);
callbacks.push(contactActions.get(key));
}
}
menuDIV.prepareVisibility = onAddressBookMenuPrepareVisibility;
initMenu(menuDIV, callbacks);
}
var submenuIds = new Array();
for (var i = 0; i < contactFolders.length; i++) {
if (contactFolders[i].hasClassName("local")) {
var menuEntry = new Element("li",
{ folderId: contactFolders[i].readAttribute("id"),
owner: contactFolders[i].readAttribute("owner") }
).update(contactFolders[i].innerHTML);
menu.appendChild(menuEntry);
callbacks.push(contactActions.get(key));
}
}
menuDIV.prepareVisibility = onAddressBookMenuPrepareVisibility;
initMenu(menuDIV, callbacks);
}
}
}
@@ -857,13 +858,13 @@ function onAddressBookModify(event) {
if (UserLogin == selected.getAttribute("owner")) {
var currentName = selected.innerHTML;
var newName = window.prompt(labels["Address Book Name"],
currentName);
currentName);
if (newName && newName.length > 0
&& newName != currentName) {
&& newName != currentName) {
var url = (URLForFolderID(selected.getAttribute("id"))
+ "/renameFolder?name=" + escape(newName.utf8encode()));
+ "/renameFolder?name=" + escape(newName.utf8encode()));
triggerAjaxRequest(url, folderRenameCallback,
{node: selected, name: newName});
{node: selected, name: newName});
}
} else
window.alert(clabels["Unable to rename that folder!"]);
@@ -887,7 +888,7 @@ function onMenuSharing(event) {
var owner = selected.getAttribute("owner");
if (owner == "nobody")
window.alert(clabels["The user rights cannot be"
+ " edited for this object!"]);
+ " edited for this object!"]);
else {
var title = this.innerHTML;
var url = URLForFolderID(selected.getAttribute("id"));
@@ -971,12 +972,12 @@ function onContactMenuPrepareVisibility() {
function getMenus() {
var menus = {};
menus["contactFoldersMenu"] = new Array(onAddressBookModify, "-", newContact,
null, "-", onAddressBookRemove, "-",
onMenuSharing);
null, "-", onAddressBookRemove, "-",
onMenuSharing);
menus["contactMenu"] = new Array(onMenuEditContact, "-",
onMenuWriteToContact, onMenuAIMContact,
"-", onMenuDeleteContact, "-",
"moveContactMenu", "copyContactMenu");
onMenuWriteToContact, onMenuAIMContact,
"-", onMenuDeleteContact, "-",
"moveContactMenu", "copyContactMenu");
menus["searchMenu"] = new Array(setSearchCriteria);
var contactFoldersMenu = $("contactFoldersMenu");

View File

@@ -1,281 +1,282 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* custom extensions to the DOM api */
Element.addMethods({
Element.addMethods(
{
addInterface: function(element, objectInterface) {
element = $(element);
Object.extend(element, objectInterface);
if (element.bind)
element.bind();
},
addInterface: function(element, objectInterface) {
element = $(element);
Object.extend(element, objectInterface);
if (element.bind)
element.bind();
},
childNodesWithTag: function(element, tagName) {
element = $(element);
childNodesWithTag: function(element, tagName) {
element = $(element);
var matchingNodes = new Array();
var tagName = tagName.toUpperCase();
var matchingNodes = new Array();
var tagName = tagName.toUpperCase();
for (var i = 0; i < element.childNodes.length; i++) {
var childNode = $(element.childNodes[i]);
if (Object.isElement(childNode)
&& childNode.tagName
&& childNode.tagName.toUpperCase() == tagName)
matchingNodes.push(childNode);
}
for (var i = 0; i < element.childNodes.length; i++) {
var childNode = $(element.childNodes[i]);
if (Object.isElement(childNode)
&& childNode.tagName
&& childNode.tagName.toUpperCase() == tagName)
matchingNodes.push(childNode);
}
return matchingNodes;
},
return matchingNodes;
},
getParentWithTagName: function(element, tagName) {
element = $(element);
var currentElement = element;
tagName = tagName.toUpperCase();
getParentWithTagName: function(element, tagName) {
element = $(element);
var currentElement = element;
tagName = tagName.toUpperCase();
currentElement = currentElement.parentNode;
while (currentElement
&& currentElement.tagName != tagName) {
currentElement = currentElement.parentNode;
}
currentElement = currentElement.parentNode;
while (currentElement
&& currentElement.tagName != tagName) {
currentElement = currentElement.parentNode;
}
return currentElement;
},
return currentElement;
},
cascadeLeftOffset: function(element) {
element = $(element);
var currentElement = element;
cascadeLeftOffset: function(element) {
element = $(element);
var currentElement = element;
var offset = 0;
while (currentElement) {
offset += currentElement.offsetLeft;
currentElement = $(currentElement).getParentWithTagName("div");
}
var offset = 0;
while (currentElement) {
offset += currentElement.offsetLeft;
currentElement = $(currentElement).getParentWithTagName("div");
}
return offset;
},
return offset;
},
cascadeTopOffset: function(element) {
element = $(element);
var currentElement = element;
var offset = 0;
cascadeTopOffset: function(element) {
element = $(element);
var currentElement = element;
var offset = 0;
var i = 0;
var i = 0;
while (currentElement && currentElement.tagName) {
offset += currentElement.offsetTop;
currentElement = currentElement.parentNode;
i++;
}
while (currentElement && currentElement.tagName) {
offset += currentElement.offsetTop;
currentElement = currentElement.parentNode;
i++;
}
return offset;
},
return offset;
},
dump: function(element, additionalInfo, additionalKeys) {
element = $(element);
var id = element.getAttribute("id");
var nclass = element.getAttribute("class");
dump: function(element, additionalInfo, additionalKeys) {
element = $(element);
var id = element.getAttribute("id");
var nclass = element.getAttribute("class");
var str = element.tagName;
if (id)
str += "; id = " + id;
if (nclass)
str += "; class = " + nclass;
var str = element.tagName;
if (id)
str += "; id = " + id;
if (nclass)
str += "; class = " + nclass;
if (additionalInfo)
str += "; " + additionalInfo;
if (additionalInfo)
str += "; " + additionalInfo;
if (additionalKeys)
for (var i = 0; i < additionalKeys.length; i++) {
var value = element.getAttribute(additionalKeys[i]);
if (value)
str += "; " + additionalKeys[i] + " = " + value;
}
if (additionalKeys)
for (var i = 0; i < additionalKeys.length; i++) {
var value = element.getAttribute(additionalKeys[i]);
if (value)
str += "; " + additionalKeys[i] + " = " + value;
}
log (str);
},
log (str);
},
getSelectedNodes: function(element) {
element = $(element);
var selArray = new Array();
getSelectedNodes: function(element) {
element = $(element);
var selArray = new Array();
for (var i = 0; i < element.childNodes.length; i++) {
node = element.childNodes.item(i);
if (node.nodeType == 1
&& isNodeSelected(node))
selArray.push(node);
}
for (var i = 0; i < element.childNodes.length; i++) {
node = element.childNodes.item(i);
if (node.nodeType == 1
&& isNodeSelected(node))
selArray.push(node);
}
return selArray;
},
return selArray;
},
getSelectedNodesId: function(element) {
element = $(element);
var selArray = new Array();
getSelectedNodesId: function(element) {
element = $(element);
var selArray = new Array();
for (var i = 0; i < element.childNodes.length; i++) {
node = element.childNodes.item(i);
if (node.nodeType == 1
&& isNodeSelected(node)) {
selArray.push(node.getAttribute("id")); }
}
for (var i = 0; i < element.childNodes.length; i++) {
node = element.childNodes.item(i);
if (node.nodeType == 1
&& isNodeSelected(node)) {
selArray.push(node.getAttribute("id")); }
}
return selArray;
},
return selArray;
},
onContextMenu: function(element, event) {
element = $(element);
var popup = element.sogoContextMenu;
onContextMenu: function(element, event) {
element = $(element);
var popup = element.sogoContextMenu;
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
var menuTop = Event.pointerY(event);
var menuLeft = Event.pointerX(event);
var heightDiff = (window.height()
- (menuTop + popup.offsetHeight));
if (heightDiff < 0)
menuTop += heightDiff;
var menuTop = Event.pointerY(event);
var menuLeft = Event.pointerX(event);
var heightDiff = (window.height()
- (menuTop + popup.offsetHeight));
if (heightDiff < 0)
menuTop += heightDiff;
var leftDiff = (window.width()
- (menuLeft + popup.offsetWidth));
if (leftDiff < 0)
menuLeft -= popup.offsetWidth;
var leftDiff = (window.width()
- (menuLeft + popup.offsetWidth));
if (leftDiff < 0)
menuLeft -= popup.offsetWidth;
if (popup.prepareVisibility)
popup.prepareVisibility();
if (popup.prepareVisibility)
popup.prepareVisibility();
popup.setStyle( { top: menuTop + "px",
left: menuLeft + "px",
visibility: "visible" } );
popup.setStyle( { top: menuTop + "px",
left: menuLeft + "px",
visibility: "visible" } );
document.currentPopupMenu = popup;
document.body.observe("click", onBodyClickMenuHandler);
},
document.currentPopupMenu = popup;
document.body.observe("click", onBodyClickMenuHandler);
},
attachMenu: function(element, menuName) {
element = $(element);
element.sogoContextMenu = $(menuName);
element.observe("contextmenu",
element.onContextMenu.bindAsEventListener(element));
},
attachMenu: function(element, menuName) {
element = $(element);
element.sogoContextMenu = $(menuName);
element.observe("contextmenu",
element.onContextMenu.bindAsEventListener(element));
},
selectElement: function(element) {
element = $(element);
element.addClassName('_selected');
},
selectElement: function(element) {
element = $(element);
element.addClassName('_selected');
},
selectRange: function(element, startIndex, endIndex) {
element = $(element);
var s;
var e;
var rows;
selectRange: function(element, startIndex, endIndex) {
element = $(element);
var s;
var e;
var rows;
if (startIndex > endIndex) {
s = endIndex;
e = startIndex;
}
else {
s = startIndex;
e = endIndex;
}
if (element.tagName == 'UL')
rows = element.getElementsByTagName('LI');
else
rows = element.getElementsByTagName('TR');
while (s <= e) {
if (rows[s].nodeType == 1)
$(rows[s]).selectElement();
s++;
}
},
if (startIndex > endIndex) {
s = endIndex;
e = startIndex;
}
else {
s = startIndex;
e = endIndex;
}
if (element.tagName == 'UL')
rows = element.getElementsByTagName('LI');
else
rows = element.getElementsByTagName('TR');
while (s <= e) {
if (rows[s].nodeType == 1)
$(rows[s]).selectElement();
s++;
}
},
deselect: function(element) {
element = $(element);
element.removeClassName('_selected');
},
deselect: function(element) {
element = $(element);
element.removeClassName('_selected');
},
deselectAll: function(element) {
element = $(element);
for (var i = 0; i < element.childNodes.length; i++) {
var node = element.childNodes.item(i);
if (node.nodeType == 1)
$(node).deselect();
}
},
deselectAll: function(element) {
element = $(element);
for (var i = 0; i < element.childNodes.length; i++) {
var node = element.childNodes.item(i);
if (node.nodeType == 1)
$(node).deselect();
}
},
setCaretTo: function(element, pos) {
element = $(element);
if (element.selectionStart) { // For Mozilla and Safari
element.focus();
element.setSelectionRange(pos, pos);
}
else if (element.createTextRange) { // For IE
var range = element.createTextRange();
range.move("character", pos);
range.select();
}
},
setCaretTo: function(element, pos) {
element = $(element);
if (element.selectionStart) { // For Mozilla and Safari
element.focus();
element.setSelectionRange(pos, pos);
}
else if (element.createTextRange) { // For IE
var range = element.createTextRange();
range.move("character", pos);
range.select();
}
},
selectText: function(element, start, end) {
element = $(element);
if (element.setSelectionRange) { // For Mozilla and Safari
element.setSelectionRange(start, end);
}
else if (element.createTextRange) { // For IE
var textRange = element.createTextRange();
textRange.moveStart("character", start);
textRange.moveEnd("character", end-element.value.length);
textRange.select();
}
else {
element.select();
}
},
selectText: function(element, start, end) {
element = $(element);
if (element.setSelectionRange) { // For Mozilla and Safari
element.setSelectionRange(start, end);
}
else if (element.createTextRange) { // For IE
var textRange = element.createTextRange();
textRange.moveStart("character", start);
textRange.moveEnd("character", end-element.value.length);
textRange.select();
}
else {
element.select();
}
},
getRadioValue: function(element, radioName) {
element = $(element);
var radioValue;
Form.getInputs(element, 'radio', radioName).each(function(input) {
if (input.checked)
radioValue = input.value;
});
return radioValue;
},
getRadioValue: function(element, radioName) {
element = $(element);
var radioValue;
Form.getInputs(element, 'radio', radioName).each(function(input) {
if (input.checked)
radioValue = input.value;
});
return radioValue;
},
setRadioValue: function(element, radioName, value) {
element = $(element);
var i = 0;
setRadioValue: function(element, radioName, value) {
element = $(element);
var i = 0;
Form.getInputs(element, 'radio', radioName).each(function(input) {
if (i == value)
input.checked = 1;
i++;
});
},
Form.getInputs(element, 'radio', radioName).each(function(input) {
if (i == value)
input.checked = 1;
i++;
});
},
getCheckBoxListValues: function(element, checkboxName) {
element = $(element);
var values = new Array();
var i = 0;
getCheckBoxListValues: function(element, checkboxName) {
element = $(element);
var values = new Array();
var i = 0;
Form.getInputs(element, 'checkbox', checkboxName).each(function(input) {
if (input.checked)
values.push(i+1);
Form.getInputs(element, 'checkbox', checkboxName).each(function(input) {
if (input.checked)
values.push(i+1);
i++;
});
return values.join(",");
},
i++;
});
return values.join(",");
},
setCheckBoxListValues: function(element, checkboxName, values) {
element = $(element);
var v = values.split(',');
var i = 1;
setCheckBoxListValues: function(element, checkboxName, values) {
element = $(element);
var v = values.split(',');
var i = 1;
Form.getInputs(element, 'checkbox', checkboxName).each(function(input) {
Form.getInputs(element, 'checkbox', checkboxName).each(function(input) {
if ($(v).indexOf(i+"") != -1)
input.checked = 1;
i++;
});
}
});
if ($(v).indexOf(i+"") != -1)
input.checked = 1;
i++;
});
}
});

View File

@@ -1,4 +1,6 @@
Form.Element.Methods._replicate = function(element) {
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
Form.Element.Methods._replicate = function(element) {
element = $(element);
if (element.replica) {
element.replica.value = $F(element);
@@ -6,56 +8,56 @@ Form.Element.Methods._replicate = function(element) {
onReplicaChangeEvent.initEvent("change", true, true);
element.replica.dispatchEvent(onReplicaChangeEvent);
}
}
};
Form.Element.Methods.assignReplica = function(element, otherInput) {
element = $(element);
if (!element._onChangeBound) {
element.observe("change", element._replicate, false);
element._onChangeBound = true;
}
element.replica = otherInput;
}
element = $(element);
if (!element._onChangeBound) {
element.observe("change", element._replicate, false);
element._onChangeBound = true;
}
element.replica = otherInput;
};
Form.Element.Methods.valueAsDate = function(element) {
return $F(element).asDate();
}
return $F(element).asDate();
};
Form.Element.Methods.setValueAsDate = function(element, dateValue) {
element = $(element);
if (!element.dateSeparator)
element._detectDateSeparator();
element.value = dateValue.stringWithSeparator(element.dateSeparator);
}
element = $(element);
if (!element.dateSeparator)
element._detectDateSeparator();
element.value = dateValue.stringWithSeparator(element.dateSeparator);
};
Form.Element.Methods.updateShadowValue = function(element) {
element = $(element);
element.setAttribute("shadow-value", $F(element));
}
element = $(element);
element.setAttribute("shadow-value", $F(element));
};
Form.Element.Methods._detectDateSeparator = function(element) {
element = $(element);
var date = $F(element).split("/");
if (date.length == 3)
element.dateSeparator = "/";
else
element.dateSeparator = "-";
}
element = $(element);
var date = $F(element).split("/");
if (date.length == 3)
element.dateSeparator = "/";
else
element.dateSeparator = "-";
};
Form.Element.Methods.valueAsShortDateString = function(element) {
element = $(element);
var dateStr = '';
element = $(element);
var dateStr = '';
if (!element.dateSeparator)
element._detectDateSeparator();
if (!element.dateSeparator)
element._detectDateSeparator();
var date = $F(element).split(element.dateSeparator);
if (element.dateSeparator == '/')
dateStr += date[2] + date[1] + date[0];
else
dateStr += date[0] + date[1] + date[2];
var date = $F(element).split(element.dateSeparator);
if (element.dateSeparator == '/')
dateStr += date[2] + date[1] + date[0];
else
dateStr += date[0] + date[1] + date[2];
return dateStr;
}
return dateStr;
};
Element.addMethods();

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
Element.addMethods({
getSelectedRows: function(element) {
element = $(element);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
//HTMLUListElement.prototype.getSelectedRows = function() {
// return this.getSelectedNodes();
//}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
String.prototype.trim = function() {
return this.replace(/(^\s+|\s+$)/g, '');
};
@@ -22,17 +24,17 @@ String.prototype.repeat = function(count) {
String.prototype.capitalize = function() {
return this.replace(/\w+/g,
function(a) {
return ( a.charAt(0).toUpperCase()
+ a.substr(1).toLowerCase() );
});
function(a) {
return ( a.charAt(0).toUpperCase()
+ a.substr(1).toLowerCase() );
});
};
String.prototype.decodeEntities = function() {
return this.replace(/&#(\d+);/g,
function(wholematch, parenmatch1) {
return String.fromCharCode(+parenmatch1);
});
function(wholematch, parenmatch1) {
return String.fromCharCode(+parenmatch1);
});
};
String.prototype.asDate = function () {
@@ -46,9 +48,9 @@ String.prototype.asDate = function () {
newDate = new Date(date[0], date[1] - 1, date[2]);
else {
if (this.length == 8) {
newDate = new Date(this.substring(0, 4),
this.substring(4, 6) - 1,
this.substring(6, 8));
newDate = new Date(this.substring(0, 4),
this.substring(4, 6) - 1,
this.substring(6, 8));
}
}
}
@@ -177,7 +179,7 @@ Date.prototype.earlierDate = function(otherDate) {
workDate.setTime(otherDate.getTime());
workDate.setHours(0);
return ((this.getTime() < workDate.getTime())
? this : otherDate);
? this : otherDate);
};
Date.prototype.laterDate = function(otherDate) {
@@ -188,7 +190,7 @@ Date.prototype.laterDate = function(otherDate) {
workDate.setSeconds(59);
workDate.setMilliseconds(999);
return ((this.getTime() < workDate.getTime())
? otherDate : this);
? otherDate : this);
};
Date.prototype.beginOfWeek = function() {

View File

@@ -1,57 +1,59 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
var MailerUIdTreeExtension = {
elementCounter: 1,
folderIcons: { account: "tbtv_account_17x17.png",
inbox: "tbtv_inbox_17x17.png",
sent: "tbtv_sent_17x17.png",
draft: "tbtv_drafts_17x17.png",
trash: "tbtv_trash_17x17.png" },
folderNames: { inbox: labels["InboxFolderName"],
sent: labels["SentFolderName"],
draft: labels["DraftsFolderName"],
trash: labels["TrashFolderName"] },
_addFolderNode: function (parent, name, fullName, type) {
var icon = this.folderIcons[type];
if (icon)
icon = ResourcesURL + "/" + icon;
else
icon = "";
var displayName = this.folderNames[type];
if (!displayName)
displayName = name;
this.add(this.elementCounter, parent, displayName, 1, '#', fullName,
type, '', '', icon, icon);
this.elementCounter++;
},
_addFolder: function (parent, folder) {
var thisCounter = this.elementCounter;
this._addFolderNode(parent, folder.name, folder.fullName(), folder.type);
for (var i = 0; i < folder.children.length; i++)
elementCounter: 1,
folderIcons: { account: "tbtv_account_17x17.png",
inbox: "tbtv_inbox_17x17.png",
sent: "tbtv_sent_17x17.png",
draft: "tbtv_drafts_17x17.png",
trash: "tbtv_trash_17x17.png" },
folderNames: { inbox: labels["InboxFolderName"],
sent: labels["SentFolderName"],
draft: labels["DraftsFolderName"],
trash: labels["TrashFolderName"] },
_addFolderNode: function (parent, name, fullName, type) {
var icon = this.folderIcons[type];
if (icon)
icon = ResourcesURL + "/" + icon;
else
icon = "";
var displayName = this.folderNames[type];
if (!displayName)
displayName = name;
this.add(this.elementCounter, parent, displayName, 1, '#', fullName,
type, '', '', icon, icon);
this.elementCounter++;
},
_addFolder: function (parent, folder) {
var thisCounter = this.elementCounter;
this._addFolderNode(parent, folder.name, folder.fullName(), folder.type);
for (var i = 0; i < folder.children.length; i++)
this._addFolder(thisCounter, folder.children[i]);
},
addMailAccount: function (mailAccount) {
this._addFolder(0, mailAccount);
},
addMailAccount: function (mailAccount) {
this._addFolder(0, mailAccount);
},
setCookie: function(cookieName, cookieValue, expires, path, domain, secure) {
setCookie: function(cookieName, cookieValue, expires, path, domain, secure) {
},
getCookie: function(cookieName) {
getCookie: function(cookieName) {
return ("");
},
updateCookie: function () {
updateCookie: function () {
if (Mailer.foldersStateTimer)
clearTimeout(Mailer.foldersStateTimer);
Mailer.foldersStateTimer = setTimeout('saveFoldersState()', 3000); // 3 seconds
},
getFoldersState: function () {
getFoldersState: function () {
var expandedFolders = new Array();
for (var n = 0; n < this.aNodes.length; n++) {
if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) {
expandedFolders.push(this.aNodes[n].dataname);
expandedFolders.push(this.aNodes[n].dataname);
}
}
return expandedFolders.toJSON();
},
autoSync: function() {
autoSync: function() {
this.config.useCookies = true;
}
};

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* JavaScript for SOGoMail */
var accounts = {};
var mailboxTree;
@@ -8,13 +10,13 @@ if (typeof textMailAccounts != 'undefined') {
mailAccounts = textMailAccounts.evalJSON(true);
else
mailAccounts = new Array();
}
}
if (typeof textQuotaSupport != 'undefined') {
if (textQuotaSupport.length > 0)
quotaSupport = textQuotaSupport.evalJSON(true);
else
quotaSupport = new Array();
}
}
var Mailer = {
currentMailbox: null,
@@ -73,8 +75,8 @@ function openAddressbook(sender) {
urlstr = ApplicationBaseURL + "../Contacts/?popup=YES";
var w = window.open(urlstr, "Addressbook",
"width=640,height=400,resizable=1,scrollbars=1,toolbar=0,"
+ "location=no,directories=0,status=0,menubar=0,copyhistory=0");
"width=640,height=400,resizable=1,scrollbars=1,toolbar=0,"
+ "location=no,directories=0,status=0,menubar=0,copyhistory=0");
w.focus();
return false;
@@ -86,7 +88,7 @@ function onMenuSharing(event) {
if (type == "additional")
window.alert(clabels["The user rights cannot be"
+ " edited for this object!"]);
+ " edited for this object!"]);
else {
var urlstr = URLForFolderID(folderID) + "/acls";
openAclWindow(urlstr);
@@ -104,13 +106,13 @@ function markMailInWindow(win, msguid, markread) {
subjectCell.addClassName("mailer_readmailsubject");
var img = win.$("unreaddiv_" + msguid);
if (img) {
img.removeClassName("mailerUnreadIcon");
img.addClassName("mailerReadIcon");
img.setAttribute("id", "readdiv_" + msguid);
img.setAttribute("src", ResourcesURL + "/icon_read.gif");
var title = img.getAttribute("title-markunread");
if (title)
img.setAttribute("title", title);
img.removeClassName("mailerUnreadIcon");
img.addClassName("mailerReadIcon");
img.setAttribute("id", "readdiv_" + msguid);
img.setAttribute("src", ResourcesURL + "/icon_read.gif");
var title = img.getAttribute("title-markunread");
if (title)
img.setAttribute("title", title);
}
}
else {
@@ -118,13 +120,13 @@ function markMailInWindow(win, msguid, markread) {
subjectCell.removeClassName('mailer_readmailsubject');
var img = win.$("readdiv_" + msguid);
if (img) {
img.removeClassName("mailerReadIcon");
img.addClassName("mailerUnreadIcon");
img.setAttribute("id", "unreaddiv_" + msguid);
img.setAttribute("src", ResourcesURL + "/icon_unread.gif");
var title = img.getAttribute("title-markread");
if (title)
img.setAttribute("title", title);
img.removeClassName("mailerReadIcon");
img.addClassName("mailerUnreadIcon");
img.setAttribute("id", "unreaddiv_" + msguid);
img.setAttribute("src", ResourcesURL + "/icon_unread.gif");
var title = img.getAttribute("title-markread");
if (title)
img.setAttribute("title", title);
}
}
return true;
@@ -152,12 +154,12 @@ function openMessageWindowsForSelection(action, firstOnly) {
var rows = messageList.getSelectedRowsId();
if (rows.length > 0) {
for (var i = 0; i < rows.length; i++) {
openMessageWindow(Mailer.currentMailbox + "/" + rows[i].substr(4),
ApplicationBaseURL + Mailer.currentMailbox
+ "/" + rows[i].substr(4)
+ "/" + action);
if (firstOnly)
break;
openMessageWindow(Mailer.currentMailbox + "/" + rows[i].substr(4),
ApplicationBaseURL + Mailer.currentMailbox
+ "/" + rows[i].substr(4)
+ "/" + action);
if (firstOnly)
break;
}
} else {
window.alert(labels["Please select a message."]);
@@ -258,7 +260,7 @@ function deleteSelectedMessagesCallback(http) {
var row = $("row_" + data["id"]);
var nextRow = row.next("tr");
if (!nextRow)
nextRow = row.previous("tr");
nextRow = row.previous("tr");
// row.addClassName("deleted"); // when we'll offer "mark as deleted"
if (deleteMessageRequestCount == 0) {
@@ -284,7 +286,7 @@ function moveMessages(rowIds, folder) {
var messageId = Mailer.currentMailbox + "/" + rowIds[i];
url = (ApplicationBaseURL + messageId
+ "/move?tofolder=" + folder);
+ "/move?tofolder=" + folder);
http = createHTTPClient();
http.open("GET", url, false /* not async */);
http.send("");
@@ -293,9 +295,9 @@ function moveMessages(rowIds, folder) {
row.parentNode.removeChild(row);
deleteCachedMessage(messageId);
if (Mailer.currentMessages[Mailer.currentMailbox] == rowIds[i]) {
var div = $('messageContent');
div.update();
Mailer.currentMessages[Mailer.currentMailbox] = null;
var div = $('messageContent');
div.update();
Mailer.currentMessages[Mailer.currentMailbox] = null;
}
}
else /* request failed */
@@ -326,11 +328,11 @@ function deleteMessage(url, id, mailbox, messageId) {
function deleteMessageWithDelay(url, id, mailbox, messageId) {
/* this is called by UIxMailPopupView with window.opener */
setTimeout("deleteMessage('" +
url + "', '" +
id + "', '" +
mailbox + "', '" +
messageId + "')",
50);
url + "', '" +
id + "', '" +
mailbox + "', '" +
messageId + "')",
50);
}
function onPrintCurrentMessage(event) {
@@ -392,32 +394,32 @@ function _onMailboxMenuAction(menuEntry, error, actionName) {
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
messages = $(document.menuTarget).collect(function(row) {
return row.getAttribute("id").substr(4);
});
return row.getAttribute("id").substr(4);
});
else
// Menu called from one selection in messages list view
messages.push(document.menuTarget.getAttribute("id").substr(4));
var url_prefix = URLForFolderID(Mailer.currentMailbox) + "/";
messages.each(function(msgid, i) {
var url = url_prefix + msgid + "/" + actionName
+ "?folder=" + targetMailbox;
triggerAjaxRequest(url, folderRefreshCallback,
((i == messages.size() - 1)?Mailer.currentMailbox:""));
var url = url_prefix + msgid + "/" + actionName
+ "?folder=" + targetMailbox;
triggerAjaxRequest(url, folderRefreshCallback,
((i == messages.size() - 1)?Mailer.currentMailbox:""));
});
}
}
function onMailboxMenuMove(event) {
_onMailboxMenuAction(this,
"Moving a message into its own folder is impossible!",
"move");
"Moving a message into its own folder is impossible!",
"move");
}
function onMailboxMenuCopy(event) {
_onMailboxMenuAction(this,
"Copying a message into its own folder is impossible!",
"copy");
"Copying a message into its own folder is impossible!",
"copy");
}
function refreshMailbox() {
@@ -458,20 +460,20 @@ function openMailbox(mailbox, reload, idx) {
if (!idx) {
currentMessage = Mailer.currentMessages[mailbox];
if (currentMessage) {
url += '&pageforuid=' + currentMessage;
if (!reload)
loadMessage(currentMessage);
url += '&pageforuid=' + currentMessage;
if (!reload)
loadMessage(currentMessage);
}
}
var searchValue = search["value"];
if (searchValue && searchValue.length > 0)
url += ("&search=" + search["criteria"]
+ "&value=" + escape(searchValue.utf8encode()));
+ "&value=" + escape(searchValue.utf8encode()));
var sortAttribute = sorting["attribute"];
if (sortAttribute && sortAttribute.length > 0)
url += ("&sort=" + sorting["attribute"]
+ "&asc=" + sorting["ascending"]);
+ "&asc=" + sorting["ascending"]);
if (idx)
url += "&idx=" + idx;
@@ -486,19 +488,19 @@ function openMailbox(mailbox, reload, idx) {
var rightDragHandle = $("rightDragHandle");
rightDragHandle.setStyle({ visibility: "visible" });
messageContent.setStyle({ top: (rightDragHandle.offsetTop
+ rightDragHandle.offsetHeight
+ 'px') });
+ rightDragHandle.offsetHeight
+ 'px') });
}
document.messageListAjaxRequest
= triggerAjaxRequest(url, messageListCallback,
currentMessage);
currentMessage);
var account = Mailer.currentMailbox.split("/")[1];
if (accounts[account].supportsQuotas) {
var quotasUrl = ApplicationBaseURL + mailbox + "/quotas";
if (document.quotaAjaxRequest) {
document.quotaAjaxRequest.aborted = true;
document.quotaAjaxRequest.abort();
document.quotaAjaxRequest.aborted = true;
document.quotaAjaxRequest.abort();
}
document.quotaAjaxRequest = triggerAjaxRequest(quotasUrl, quotasCallback);
}
@@ -527,7 +529,7 @@ function messageListCallback(http) {
$(tmp).update(http.responseText);
thead.rows[1].parentNode.replaceChild(tmp.firstChild.tHead.rows[1], thead.rows[1]);
addressHeaderCell.replaceChild(tmp.firstChild.tHead.rows[0].cells[3].lastChild,
addressHeaderCell.lastChild);
addressHeaderCell.lastChild);
table.replaceChild(tmp.firstChild.tBodies[0], tbody);
}
else {
@@ -543,15 +545,15 @@ function messageListCallback(http) {
if (selected) {
var row = $("row_" + selected);
if (row) {
row.selectElement();
lastClickedRow = row.rowIndex - $(row).up('table').down('thead').getElementsByTagName('tr').length;
var rowPosition = row.rowIndex * row.getHeight();
if ($(row).up('div').getHeight() > rowPosition)
rowPosition = 0;
div.scrollTop = rowPosition; // scroll to selected message
row.selectElement();
lastClickedRow = row.rowIndex - $(row).up('table').down('thead').getElementsByTagName('tr').length;
var rowPosition = row.rowIndex * row.getHeight();
if ($(row).up('div').getHeight() > rowPosition)
rowPosition = 0;
div.scrollTop = rowPosition; // scroll to selected message
}
else
$("messageContent").update();
$("messageContent").update();
}
else
div.scrollTop = 0;
@@ -560,17 +562,17 @@ function messageListCallback(http) {
var sortHeader = $(sorting["attribute"] + "Header");
if (sortHeader) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
}
}
}
@@ -588,8 +590,8 @@ function quotasCallback(http) {
if (http.responseText.length > 0) {
var quotas = http.responseText.evalJSON(true);
for (var i in quotas) {
hasQuotas = true;
break;
hasQuotas = true;
break;
}
}
@@ -597,7 +599,7 @@ function quotasCallback(http) {
var treePath = Mailer.currentMailbox.split("/");
var quotasMB = new Array();
for (var i = 2; i < treePath.length; i++)
quotasMB.push(treePath[i].substr(6));
quotasMB.push(treePath[i].substr(6));
var mbQuotas = quotas["/" + quotasMB.join("/")];
var used = mbQuotas["usedSpace"];
var max = mbQuotas["maxQuota"];
@@ -688,9 +690,9 @@ function deleteCachedMessage(messageId) {
var counter = 0;
while (counter < Mailer.cachedMessages.length
&& !done)
&& !done)
if (Mailer.cachedMessages[counter]
&& Mailer.cachedMessages[counter]['idx'] == messageId) {
&& Mailer.cachedMessages[counter]['idx'] == messageId) {
Mailer.cachedMessages.splice(counter, 1);
done = true;
}
@@ -703,9 +705,9 @@ function getCachedMessage(idx) {
var counter = 0;
while (counter < Mailer.cachedMessages.length
&& message == null)
&& message == null)
if (Mailer.cachedMessages[counter]
&& Mailer.cachedMessages[counter]['idx'] == Mailer.currentMailbox + '/' + idx)
&& Mailer.cachedMessages[counter]['idx'] == Mailer.currentMailbox + '/' + idx)
message = Mailer.cachedMessages[counter];
else
counter++;
@@ -723,9 +725,9 @@ function storeCachedMessage(cachedMessage) {
else {
while (Mailer.cachedMessages[counter]) {
if (oldest == -1
|| Mailer.cachedMessages[counter]['time'] < timeOldest) {
oldest = counter;
timeOldest = Mailer.cachedMessages[counter]['time'];
|| Mailer.cachedMessages[counter]['time'] < timeOldest) {
oldest = counter;
timeOldest = Mailer.cachedMessages[counter]['time'];
}
counter++;
}
@@ -762,7 +764,7 @@ function loadMessage(idx) {
markMailInWindow(window, idx, true);
if (cachedMessage == null) {
var url = (ApplicationBaseURL + Mailer.currentMailbox + "/"
+ idx + "/view?noframe=1");
+ idx + "/view?noframe=1");
document.messageAjaxRequest
= triggerAjaxRequest(url, messageCallback, idx);
} else {
@@ -778,7 +780,7 @@ function loadMessage(idx) {
function configureLinksInMessage() {
var messageDiv = $('messageContent');
var mailContentDiv = document.getElementsByClassName('mailer_mailcontent',
messageDiv)[0];
messageDiv)[0];
if (!document.body.hasClassName("popup"))
mailContentDiv.observe("contextmenu", onMessageContentMenu);
@@ -798,25 +800,25 @@ function configureLinksInMessage() {
var editDraftButton = $("editDraftButton");
if (editDraftButton)
editDraftButton.observe("click",
onMessageEditDraft.bindAsEventListener(editDraftButton));
onMessageEditDraft.bindAsEventListener(editDraftButton));
configureiCalLinksInMessage();
}
function configureiCalLinksInMessage() {
var buttons = { "iCalendarAccept": "accept",
"iCalendarDecline": "decline",
"iCalendarTentative": "tentative",
"iCalendarUpdateUserStatus": "updateUserStatus",
"iCalendarAddToCalendar": "addToCalendar",
"iCalendarDeleteFromCalendar": "deleteFromCalendar" };
"iCalendarDecline": "decline",
"iCalendarTentative": "tentative",
"iCalendarUpdateUserStatus": "updateUserStatus",
"iCalendarAddToCalendar": "addToCalendar",
"iCalendarDeleteFromCalendar": "deleteFromCalendar" };
for (var key in buttons) {
var button = $(key);
if (button) {
button.action = buttons[key];
button.observe("click",
onICalendarButtonClick.bindAsEventListener(button));
onICalendarButtonClick.bindAsEventListener(button));
}
}
}
@@ -844,8 +846,8 @@ function ICalendarButtonCallback(http) {
}
for (var i = 0; i < Mailer.popups.length; i++)
if (Mailer.popups[i].messageUID == oldMsg) {
Mailer.popups[i].location.reload();
break;
Mailer.popups[i].location.reload();
break;
}
}
else
@@ -857,17 +859,17 @@ function resizeMailContent() {
var contentDiv = document.getElementsByClassName('mailer_mailcontent')[0];
contentDiv.setStyle({ 'top':
(Element.getHeight(headerTable) + headerTable.offsetTop) + 'px' });
(Element.getHeight(headerTable) + headerTable.offsetTop) + 'px' });
// Show expand buttons if necessary
var spans = $$("TABLE TR.mailer_fieldrow TD.mailer_fieldvalue SPAN");
spans.each(function(span) {
var row = span.up("TR");
if (span.getWidth() > row.getWidth()) {
var cell = row.select("TD.mailer_fieldname").first();
var link = cell.down("img");
link.show();
link.observe("click", toggleDisplayHeader);
var cell = row.select("TD.mailer_fieldname").first();
var link = cell.down("img");
link.show();
link.observe("click", toggleDisplayHeader);
}
});
}
@@ -938,7 +940,7 @@ function messageCallback(http) {
cachedMessage['time'] = (new Date()).getTime();
cachedMessage['text'] = http.responseText;
if (cachedMessage['text'].length < 30000)
storeCachedMessage(cachedMessage);
storeCachedMessage(cachedMessage);
}
}
else
@@ -955,7 +957,7 @@ function processMailboxMenuAction(mailbox) {
upperNode = null;
while (currentNode
&& !currentNode.hasAttribute('mailboxaction'))
&& !currentNode.hasAttribute('mailboxaction'))
currentNode = currentNode.parentNode.parentNode.parentMenuItem;
if (currentNode)
@@ -1020,7 +1022,7 @@ function onMenuViewMessageSource(event) {
if (rows.length > 0) {
var url = (ApplicationBaseURL + Mailer.currentMailbox + "/"
+ rows[0].substr(4) + "/viewsource");
+ rows[0].substr(4) + "/viewsource");
openMailComposeWindow(url);
}
@@ -1043,7 +1045,7 @@ function newContactFromEmail(event) {
var c_name = extractEmailName(mailto);
if (email.length > 0) {
var url = (UserFolderURL + "Contacts/personal/newcontact?contactEmail="
+ encodeURI(email));
+ encodeURI(email));
if (c_name)
url += "&contactFN=" + c_name;
openContactWindow(url);
@@ -1070,8 +1072,8 @@ function expandUpperTree(node) {
var id = currentNode.getAttribute("id");
var number = parseInt(id.substr(2));
if (number > 0) {
var cn = mailboxTree.aNodes[number];
mailboxTree.nodeStatus(1, number, cn._ls);
var cn = mailboxTree.aNodes[number];
mailboxTree.nodeStatus(1, number, cn._ls);
}
}
currentNode = currentNode.parentNode;
@@ -1118,44 +1120,44 @@ var mailboxSpanAcceptType = function(type) {
};
var mailboxSpanEnter = function() {
this.addClassName("_dragOver");
this.addClassName("_dragOver");
};
var mailboxSpanExit = function() {
this.removeClassName("_dragOver");
this.removeClassName("_dragOver");
};
var mailboxSpanDrop = function(data) {
var success = false;
if (data) {
var folder = this.parentNode.parentNode.getAttribute("dataname");
if (folder != Mailer.currentMailbox)
success = (moveMessages(data, folder) == 0);
var folder = this.parentNode.parentNode.getAttribute("dataname");
if (folder != Mailer.currentMailbox)
success = (moveMessages(data, folder) == 0);
}
else
success = false;
success = false;
return success;
};
var plusSignEnter = function() {
var nodeNr = parseInt(this.id.substr(2));
if (!mailboxTree.aNodes[nodeNr]._io)
this.plusSignTimer = setTimeout("openPlusSign('" + nodeNr + "');", 1000);
var nodeNr = parseInt(this.id.substr(2));
if (!mailboxTree.aNodes[nodeNr]._io)
this.plusSignTimer = setTimeout("openPlusSign('" + nodeNr + "');", 1000);
};
var plusSignExit = function() {
if (this.plusSignTimer) {
clearTimeout(this.plusSignTimer);
this.plusSignTimer = null;
}
if (this.plusSignTimer) {
clearTimeout(this.plusSignTimer);
this.plusSignTimer = null;
}
};
function openPlusSign(nodeNr) {
mailboxTree.nodeStatus(1, nodeNr, mailboxTree.aNodes[nodeNr]._ls);
mailboxTree.aNodes[nodeNr]._io = 1;
this.plusSignTimer = null;
mailboxTree.nodeStatus(1, nodeNr, mailboxTree.aNodes[nodeNr]._ls);
mailboxTree.aNodes[nodeNr]._io = 1;
this.plusSignTimer = null;
}
var messageListGhost = function () {
@@ -1184,57 +1186,57 @@ var messageListData = function(type) {
var rows = this.parentNode.parentNode.getSelectedRowsId();
var msgIds = new Array();
for (var i = 0; i < rows.length; i++)
msgIds.push(rows[i].substr(4));
msgIds.push(rows[i].substr(4));
return msgIds;
};
/* a model for a futur refactoring of the sortable table headers mechanism */
function configureMessageListEvents(table) {
if (table) {
table.multiselect = true;
// Each body row can load a message
table.observe("mousedown",
onMessageSelectionChange.bindAsEventListener(table));
// Sortable columns
configureSortableTableHeaders(table);
}
if (table) {
table.multiselect = true;
// Each body row can load a message
table.observe("mousedown",
onMessageSelectionChange.bindAsEventListener(table));
// Sortable columns
configureSortableTableHeaders(table);
}
}
function configureMessageListBodyEvents(table) {
if (table) {
// Page navigation
var cell = table.tHead.rows[1].cells[0];
if ($(cell).hasClassName("tbtv_navcell")) {
var anchors = $(cell).childNodesWithTag("a");
for (var i = 0; i < anchors.length; i++)
$(anchors[i]).observe("click", openMailboxAtIndex);
}
if (table) {
// Page navigation
var cell = table.tHead.rows[1].cells[0];
if ($(cell).hasClassName("tbtv_navcell")) {
var anchors = $(cell).childNodesWithTag("a");
for (var i = 0; i < anchors.length; i++)
$(anchors[i]).observe("click", openMailboxAtIndex);
}
rows = table.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
var row = $(rows[i]);
row.observe("mousedown", onRowClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("contextmenu", onMessageContextMenu);
rows = table.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
var row = $(rows[i]);
row.observe("mousedown", onRowClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("contextmenu", onMessageContextMenu);
row.dndTypes = function() { return new Array("mailRow"); };
row.dndGhost = messageListGhost;
row.dndDataForType = messageListData;
// document.DNDManager.registerSource(row);
row.dndTypes = function() { return new Array("mailRow"); };
row.dndGhost = messageListGhost;
row.dndDataForType = messageListData;
// document.DNDManager.registerSource(row);
for (var j = 0; j < row.cells.length; j++) {
var cell = $(row.cells[j]);
cell.observe("mousedown", listRowMouseDownHandler);
if (j == 2 || j == 3 || j == 5)
cell.observe("dblclick", onMessageDoubleClick.bindAsEventListener(cell));
else if (j == 4) {
var img = $(cell.childNodesWithTag("img")[0]);
img.observe("click", mailListMarkMessage.bindAsEventListener(img));
}
}
}
}
for (var j = 0; j < row.cells.length; j++) {
var cell = $(row.cells[j]);
cell.observe("mousedown", listRowMouseDownHandler);
if (j == 2 || j == 3 || j == 5)
cell.observe("dblclick", onMessageDoubleClick.bindAsEventListener(cell));
else if (j == 4) {
var img = $(cell.childNodesWithTag("img")[0]);
img.observe("click", mailListMarkMessage.bindAsEventListener(img));
}
}
}
}
}
function configureDragHandles() {
@@ -1263,10 +1265,10 @@ function initDnd() {
var images = tree.getElementsByTagName("img");
for (var i = 0; i < images.length; i++) {
if (images[i].id[0] == 'j') {
images[i].dndAcceptType = mailboxSpanAcceptType;
images[i].dndEnter = plusSignEnter;
images[i].dndExit = plusSignExit;
document.DNDManager.registerDestination(images[i]);
images[i].dndAcceptType = mailboxSpanAcceptType;
images[i].dndEnter = plusSignEnter;
images[i].dndExit = plusSignExit;
document.DNDManager.registerDestination(images[i]);
}
}
var nodes = document.getElementsByClassName("nodeName", tree);
@@ -1318,7 +1320,7 @@ function initMessageCheckTimer() {
interval = parseInt(messageCheck.substr(6)) * 60;
}
messageCheckTimer = window.setInterval(onMessageCheckCallback,
interval * 1000);
interval * 1000);
}
}
@@ -1367,11 +1369,11 @@ function updateMailboxTreeInPage() {
var nodes = document.getElementsByClassName("node", tree);
for (i = 0; i < nodes.length; i++) {
nodes[i].observe("click",
onMailboxTreeItemClick.bindAsEventListener(nodes[i]));
onMailboxTreeItemClick.bindAsEventListener(nodes[i]));
nodes[i].observe("contextmenu",
onFolderMenuClick.bindAsEventListener(nodes[i]));
onFolderMenuClick.bindAsEventListener(nodes[i]));
if (!inboxFound
&& nodes[i].parentNode.getAttribute("datatype") == "inbox") {
&& nodes[i].parentNode.getAttribute("datatype") == "inbox") {
Mailer.currentMailboxType = "inbox";
openInbox(nodes[i]);
inboxFound = true;
@@ -1441,7 +1443,7 @@ function generateMenuForMailbox(mailbox, prefix, callback) {
function updateMailboxMenus() {
var mailboxActions = { move: onMailboxMenuMove,
copy: onMailboxMenuCopy };
copy: onMailboxMenuCopy };
for (key in mailboxActions) {
var menuId = key + "MailboxMenu";
@@ -1465,7 +1467,7 @@ function updateMailboxMenus() {
menu.appendChild(menuEntry);
var mailbox = accounts[mailAccounts[i]];
var newSubmenuId = generateMenuForMailbox(mailbox,
key, mailboxActions[key]);
key, mailboxActions[key]);
submenuIds.push(newSubmenuId);
}
initMenu(menuDIV, submenuIds);
@@ -1477,16 +1479,16 @@ function onLoadMailboxesCallback(http) {
checkAjaxRequestsState();
if (http.responseText.length > 0) {
var newAccount = buildMailboxes(http.callbackData,
http.responseText);
http.responseText);
accounts[http.callbackData] = newAccount;
mailboxTree.addMailAccount(newAccount);
mailboxTree.pendingRequests--;
activeAjaxRequests--;
if (!mailboxTree.pendingRequests) {
updateMailboxTreeInPage();
updateMailboxMenus();
checkAjaxRequestsState();
getFoldersState();
updateMailboxTreeInPage();
updateMailboxMenus();
checkAjaxRequestsState();
getFoldersState();
}
}
}
@@ -1521,8 +1523,8 @@ function buildMailboxes(accountName, encoded) {
for (var j = 1; j < (names.length - 1); j++) {
var node = currentNode.findMailboxByName(names[j]);
if (!node) {
node = new Mailbox("additional", names[j]);
currentNode.addMailbox(node);
node = new Mailbox("additional", names[j]);
currentNode.addMailbox(node);
}
currentNode = node;
}
@@ -1553,9 +1555,9 @@ function getFoldersStateCallback(http) {
// of the folders that were left opened.
var data = http.responseText.evalJSON(true);
for (var i = 1; i < mailboxTree.aNodes.length; i++) {
if ($(data).indexOf(mailboxTree.aNodes[i].dataname) > 0)
// If the folder is found, open it
mailboxTree.o(i);
if ($(data).indexOf(mailboxTree.aNodes[i].dataname) > 0)
// If the folder is found, open it
mailboxTree.o(i);
}
}
mailboxTree.autoSync();
@@ -1665,7 +1667,7 @@ function onMenuLabelNone() {
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(row) {
messages.push(row.getAttribute("id").substr(4));
messages.push(row.getAttribute("id").substr(4));
});
else
// Menu called from one selection in messages list view
@@ -1674,8 +1676,8 @@ function onMenuLabelNone() {
var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
messages.each(function(id) {
triggerAjaxRequest(url + id + "/removeAllLabels",
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id, label: null } );
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id, label: null } );
});
}
@@ -1685,17 +1687,17 @@ function _onMenuLabelFlagX(flag) {
if (document.menuTarget.tagName == "DIV")
// Menu called from message content view
messages.set(Mailer.currentMessages[Mailer.currentMailbox],
$('tr#row_' + Mailer.currentMessages[Mailer.currentMailbox]).getAttribute("labels"));
$('tr#row_' + Mailer.currentMessages[Mailer.currentMailbox]).getAttribute("labels"));
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(row) {
messages.set(row.getAttribute("id").substr(4),
row.getAttribute("labels"));
messages.set(row.getAttribute("id").substr(4),
row.getAttribute("labels"));
});
else
// Menu called from one selection in messages list view
messages.set(document.menuTarget.getAttribute("id").substr(4),
document.menuTarget.getAttribute("labels"));
document.menuTarget.getAttribute("labels"));
var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
messages.keys().each(function(id) {
@@ -1703,12 +1705,12 @@ function _onMenuLabelFlagX(flag) {
var operation = "add";
if (flags.indexOf("label" + flag) > -1)
operation = "remove";
operation = "remove";
triggerAjaxRequest(url + id + "/" + operation + "Label" + flag,
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id,
label: operation + flag } );
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id,
label: operation + flag } );
});
}
@@ -1759,23 +1761,23 @@ function messageFlagCallback(http) {
var row = $("row_" + data["msg"]);
var operation = data["label"];
if (operation) {
var labels = row.getAttribute("labels");
var flags;
if (labels.length > 0)
flags = labels.split(" ");
else
flags = new Array();
if (operation.substr(0, 3) == "add")
flags.push("label" + operation.substr(3));
else {
var flag = "label" + operation.substr(6);
var idx = flags.indexOf(flag);
flags.splice(idx, 1);
}
row.setAttribute("labels", flags.join(" "));
var labels = row.getAttribute("labels");
var flags;
if (labels.length > 0)
flags = labels.split(" ");
else
flags = new Array();
if (operation.substr(0, 3) == "add")
flags.push("label" + operation.substr(3));
else {
var flag = "label" + operation.substr(6);
var idx = flags.indexOf(flag);
flags.splice(idx, 1);
}
row.setAttribute("labels", flags.join(" "));
}
else
row.setAttribute("labels", "");
row.setAttribute("labels", "");
}
}
}
@@ -1788,8 +1790,8 @@ function onLabelMenuPrepareVisibility() {
var rows = messageList.getSelectedRows();
for (var i = 0; i < rows.length; i++) {
$w(rows[i].getAttribute("labels")).each(function(flag) {
flags[flag] = true;
});
flags[flag] = true;
});
}
}
@@ -1812,62 +1814,62 @@ function onLabelMenuPrepareVisibility() {
function getMenus() {
var menus = {}
menus["accountIconMenu"] = new Array(null, null, onMenuCreateFolder, null,
null, null);
null, null);
menus["inboxIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder, onMenuExpungeFolder,
"-", null,
onMenuSharing);
onMenuCreateFolder, onMenuExpungeFolder,
"-", null,
onMenuSharing);
menus["trashIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder, onMenuExpungeFolder,
onMenuEmptyTrash, "-", null,
onMenuSharing);
onMenuCreateFolder, onMenuExpungeFolder,
onMenuEmptyTrash, "-", null,
onMenuSharing);
menus["mailboxIconMenu"] = new Array(null, null, null, "-", null,
onMenuCreateFolder,
onMenuRenameFolder,
onMenuExpungeFolder,
onMenuDeleteFolder,
"folderTypeMenu",
"-", null,
onMenuSharing);
onMenuCreateFolder,
onMenuRenameFolder,
onMenuExpungeFolder,
onMenuDeleteFolder,
"folderTypeMenu",
"-", null,
onMenuSharing);
menus["addressMenu"] = new Array(newContactFromEmail, newEmailTo, null);
menus["messageListMenu"] = new Array(onMenuOpenMessage, "-",
onMenuReplyToSender,
onMenuReplyToAll,
onMenuForwardMessage, null,
"-", "moveMailboxMenu",
"copyMailboxMenu", "label-menu",
"mark-menu", "-", null,
onMenuViewMessageSource, null,
null, onMenuDeleteMessage);
onMenuReplyToSender,
onMenuReplyToAll,
onMenuForwardMessage, null,
"-", "moveMailboxMenu",
"copyMailboxMenu", "label-menu",
"mark-menu", "-", null,
onMenuViewMessageSource, null,
null, onMenuDeleteMessage);
menus["messagesListMenu"] = new Array(onMenuForwardMessage,
"-", "moveMailboxMenu",
"copyMailboxMenu", "label-menu",
"mark-menu", "-",
null, null,
onMenuDeleteMessage);
"-", "moveMailboxMenu",
"copyMailboxMenu", "label-menu",
"mark-menu", "-",
null, null,
onMenuDeleteMessage);
menus["imageMenu"] = new Array(saveImage);
menus["messageContentMenu"] = new Array(onMenuReplyToSender,
onMenuReplyToAll,
onMenuForwardMessage,
null, "moveMailboxMenu",
"copyMailboxMenu",
"-", "label-menu", "mark-menu",
"-",
null, onMenuViewMessageSource,
null, onPrintCurrentMessage,
onMenuDeleteMessage);
onMenuReplyToAll,
onMenuForwardMessage,
null, "moveMailboxMenu",
"copyMailboxMenu",
"-", "label-menu", "mark-menu",
"-",
null, onMenuViewMessageSource,
null, onPrintCurrentMessage,
onMenuDeleteMessage);
menus["folderTypeMenu"] = new Array(onMenuChangeToSentFolder,
onMenuChangeToDraftsFolder,
onMenuChangeToTrashFolder);
onMenuChangeToDraftsFolder,
onMenuChangeToTrashFolder);
menus["label-menu"] = new Array(onMenuLabelNone, "-", onMenuLabelFlag1,
onMenuLabelFlag2, onMenuLabelFlag3,
onMenuLabelFlag4, onMenuLabelFlag5);
onMenuLabelFlag2, onMenuLabelFlag3,
onMenuLabelFlag4, onMenuLabelFlag5);
menus["mark-menu"] = new Array(null, null, null, null, "-", null, "-",
null, null, null);
null, null, null);
menus["searchMenu"] = new Array(setSearchCriteria, setSearchCriteria,
setSearchCriteria, setSearchCriteria,
setSearchCriteria);
setSearchCriteria, setSearchCriteria,
setSearchCriteria);
var labelMenu = $("label-menu");
if (labelMenu)
labelMenu.prepareVisibility = onLabelMenuPrepareVisibility;
@@ -1895,31 +1897,31 @@ Mailbox.prototype = {
}
},
fullName: function() {
var fullName = "";
var fullName = "";
var currentFolder = this;
while (currentFolder.parentFolder) {
fullName = "/folder" + currentFolder.name + fullName;
currentFolder = currentFolder.parentFolder;
}
var currentFolder = this;
while (currentFolder.parentFolder) {
fullName = "/folder" + currentFolder.name + fullName;
currentFolder = currentFolder.parentFolder;
}
return "/" + currentFolder.name + fullName;
},
return "/" + currentFolder.name + fullName;
},
findMailboxByName: function(name) {
var mailbox = null;
var mailbox = null;
var i = 0;
while (!mailbox && i < this.children.length)
if (this.children[i].name == name)
mailbox = this.children[i];
else
i++;
var i = 0;
while (!mailbox && i < this.children.length)
if (this.children[i].name == name)
mailbox = this.children[i];
else
i++;
return mailbox;
},
return mailbox;
},
addMailbox: function(mailbox) {
mailbox.parentFolder = this;
this.children.push(mailbox);
}
mailbox.parentFolder = this;
this.children.push(mailbox);
}
};

View File

@@ -1,17 +1,19 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* drag and drop */
/* HTMLElement interface */
var SOGODragAndDropSourceInterface = {
_removeGestureHandlers: function () {
_removeGestureHandlers: function () {
window.removeEventListener("mousemove", this.dragGestureMouseMoveHandler, false);
window.removeEventListener("mouseup", this.dragGestureMouseUpHandler, false);
document._dragGestureStartPoint = null;
document._currentMouseGestureObject = null;
},
bind: function() {
bind: function() {
this.addEventListener("mousedown", this.dragGestureMouseDownHandler, false);
},
dragGestureMouseDownHandler: function (event) {
dragGestureMouseDownHandler: function (event) {
if (event.button == 0) {
document._dragGestureStartPoint = new Array(event.clientX,
event.clientY);
@@ -22,10 +24,10 @@ var SOGODragAndDropSourceInterface = {
false);
}
},
dragGestureMouseUpHandler: function (event) {
dragGestureMouseUpHandler: function (event) {
document._currentMouseGestureObject._removeGestureHandlers();
},
dragGestureMouseMoveHandler: function (event) {
dragGestureMouseMoveHandler: function (event) {
var deltaX = event.clientX - document._dragGestureStartPoint[0];
var deltaY = event.clientY - document._dragGestureStartPoint[1];
if (Math.sqrt((deltaX * deltaX) + (deltaY * deltaY)) > 10) {
@@ -37,217 +39,217 @@ var SOGODragAndDropSourceInterface = {
document._currentMouseGestureObject._removeGestureHandlers();
}
}
}
};
/* DNDManager */
document.DNDManager = {
lastSource: 0,
lastDestination: 0,
sources: new Array(),
destinations: new Array(),
registerSource: function (source) {
var id = source.getAttribute("id");
if (!id) {
id = "_dndSource" + (this.lastSource + 1);
source.setAttribute("id", id);
}
this.sources[id] = source;
this.lastSource++;
source.addInterface(SOGODragAndDropSourceInterface);
},
registerDestination: function (destination) {
var id = destination.getAttribute("id");
if (!id) {
id = "_dndDestination" + (this.lastDestination + 1);
destination.setAttribute("id", id);
}
this.destinations[id] = destination;
this.lastDestination++;
},
_lookupSource: function (target) {
var source = null;
var id = target.getAttribute("id");
if (id)
source = document.DNDManager.sources[id];
return source;
},
_lookupDestination: function (target) {
var destination = null;
var id = target.getAttribute("id");
if (id)
destination = document.DNDManager.destinations[id];
return destination;
},
startDragging: function (object, point) {
var source = document.DNDManager._lookupSource (object);
if (source) {
document.DNDManager.currentDndOperation = new document.DNDOperation(source, point);
window.addEventListener("mouseup",
document.DNDManager.destinationDrop, false);
window.addEventListener("mouseover",
document.DNDManager.destinationEnter, false);
window.addEventListener("mousemove",
document.DNDManager.destinationOver, false);
window.addEventListener("mouseout",
document.DNDManager.destinationExit, false);
}
},
destinationEnter: function (event) {
var operation = document.DNDManager.currentDndOperation;
var destination = document.DNDManager._lookupDestination (event.target);
if (operation && destination && destination.dndAcceptType) {
operation.type = null;
var i = 0;
while (operation.type == null
&& i < operation.types.length) {
if (destination.dndAcceptType(operation.types[i])) {
operation.type = operation.types[i];
operation.setDestination(destination);
if (destination.dndEnter)
destination.dndEnter(event, operation.source, operation.type);
}
else
i++;
}
}
},
destinationExit: function (event) {
var operation = document.DNDManager.currentDndOperation;
if (operation
&& operation.destination == event.target) {
if (operation.destination.dndExit)
event.target.dndExit();
operation.setDestination(null);
}
},
destinationOver: function (event) {
},
destinationDrop: function (event) {
var operation = document.DNDManager.currentDndOperation;
if (operation) {
window.removeEventListener("mouseup",
document.DNDManager.destinationDrop, false);
window.removeEventListener("mouseover",
document.DNDManager.destinationEnter, false);
window.removeEventListener("mousemove",
document.DNDManager.destinationOver, false);
window.removeEventListener("mouseout",
document.DNDManager.destinationExit, false);
if (operation.destination == event.target) {
if (operation.destination.dndExit) {
operation.destination.dndExit();
}
if (operation.destination.dndDrop) {
var data = null;
if (operation.source.dndDataForType)
data = operation.source.dndDataForType(operation.type);
var result = operation.destination.dndDrop(data);
if (operation.ghost) {
if (result)
operation.bustGhost();
else
operation.chaseGhost();
}
}
else
if (operation.ghost)
operation.chaseGhost();
} else {
if (operation.ghost)
operation.chaseGhost();
}
document.DNDManager.currentDndOperation = null;
}
},
currentDndOperation: null
}
lastSource: 0,
lastDestination: 0,
sources: new Array(),
destinations: new Array(),
registerSource: function (source) {
var id = source.getAttribute("id");
if (!id) {
id = "_dndSource" + (this.lastSource + 1);
source.setAttribute("id", id);
}
this.sources[id] = source;
this.lastSource++;
source.addInterface(SOGODragAndDropSourceInterface);
},
registerDestination: function (destination) {
var id = destination.getAttribute("id");
if (!id) {
id = "_dndDestination" + (this.lastDestination + 1);
destination.setAttribute("id", id);
}
this.destinations[id] = destination;
this.lastDestination++;
},
_lookupSource: function (target) {
var source = null;
var id = target.getAttribute("id");
if (id)
source = document.DNDManager.sources[id];
return source;
},
_lookupDestination: function (target) {
var destination = null;
var id = target.getAttribute("id");
if (id)
destination = document.DNDManager.destinations[id];
return destination;
},
startDragging: function (object, point) {
var source = document.DNDManager._lookupSource (object);
if (source) {
document.DNDManager.currentDndOperation = new document.DNDOperation(source, point);
window.addEventListener("mouseup",
document.DNDManager.destinationDrop, false);
window.addEventListener("mouseover",
document.DNDManager.destinationEnter, false);
window.addEventListener("mousemove",
document.DNDManager.destinationOver, false);
window.addEventListener("mouseout",
document.DNDManager.destinationExit, false);
}
},
destinationEnter: function (event) {
var operation = document.DNDManager.currentDndOperation;
var destination = document.DNDManager._lookupDestination (event.target);
if (operation && destination && destination.dndAcceptType) {
operation.type = null;
var i = 0;
while (operation.type == null
&& i < operation.types.length) {
if (destination.dndAcceptType(operation.types[i])) {
operation.type = operation.types[i];
operation.setDestination(destination);
if (destination.dndEnter)
destination.dndEnter(event, operation.source, operation.type);
}
else
i++;
}
}
},
destinationExit: function (event) {
var operation = document.DNDManager.currentDndOperation;
if (operation
&& operation.destination == event.target) {
if (operation.destination.dndExit)
event.target.dndExit();
operation.setDestination(null);
}
},
destinationOver: function (event) {
},
destinationDrop: function (event) {
var operation = document.DNDManager.currentDndOperation;
if (operation) {
window.removeEventListener("mouseup",
document.DNDManager.destinationDrop, false);
window.removeEventListener("mouseover",
document.DNDManager.destinationEnter, false);
window.removeEventListener("mousemove",
document.DNDManager.destinationOver, false);
window.removeEventListener("mouseout",
document.DNDManager.destinationExit, false);
if (operation.destination == event.target) {
if (operation.destination.dndExit) {
operation.destination.dndExit();
}
if (operation.destination.dndDrop) {
var data = null;
if (operation.source.dndDataForType)
data = operation.source.dndDataForType(operation.type);
var result = operation.destination.dndDrop(data);
if (operation.ghost) {
if (result)
operation.bustGhost();
else
operation.chaseGhost();
}
}
else
if (operation.ghost)
operation.chaseGhost();
} else {
if (operation.ghost)
operation.chaseGhost();
}
document.DNDManager.currentDndOperation = null;
}
},
currentDndOperation: null
};
/* DNDOperation */
document.DNDOperation = function (source, point) {
this.startPoint = point;
this.source = source;
if (source.dndTypes) {
this.types = source.dndTypes();
}
this.type = null;
this.destination = null;
if (source.dndGhost) {
var ghost = source.dndGhost();
ghost.style.position = "absolute;";
ghost.style.zIndex = 10000;
ghost.style.MozOpacity = 0.8;
document.body.appendChild(ghost);
this.ghost = ghost;
this.startPoint = point;
this.source = source;
if (source.dndTypes) {
this.types = source.dndTypes();
}
this.type = null;
this.destination = null;
if (source.dndGhost) {
var ghost = source.dndGhost();
ghost.style.position = "absolute;";
ghost.style.zIndex = 10000;
ghost.style.MozOpacity = 0.8;
document.body.appendChild(ghost);
this.ghost = ghost;
document.addEventListener("mousemove", this.moveGhost, false);
}
document.addEventListener("mousemove", this.moveGhost, false);
}
return this;
return this;
};
document.DNDOperation.prototype.setDestination = function(destination) {
this.destination = destination;
}
};
document.DNDOperation.prototype.moveGhost = function(event) {
var offsetX = event.clientX;
var offsetY = event.clientY;
if (document.DNDManager.currentDndOperation.ghost.ghostOffsetX)
offsetX += document.DNDManager.currentDndOperation.ghost.ghostOffsetX;
if (document.DNDManager.currentDndOperation.ghost.ghostOffsetY)
offsetY += document.DNDManager.currentDndOperation.ghost.ghostOffsetY;
document.DNDManager.currentDndOperation.ghost.style.left = offsetX + "px;";
document.DNDManager.currentDndOperation.ghost.style.top = offsetY + "px;";
}
var offsetX = event.clientX;
var offsetY = event.clientY;
if (document.DNDManager.currentDndOperation.ghost.ghostOffsetX)
offsetX += document.DNDManager.currentDndOperation.ghost.ghostOffsetX;
if (document.DNDManager.currentDndOperation.ghost.ghostOffsetY)
offsetY += document.DNDManager.currentDndOperation.ghost.ghostOffsetY;
document.DNDManager.currentDndOperation.ghost.style.left = offsetX + "px;";
document.DNDManager.currentDndOperation.ghost.style.top = offsetY + "px;";
};
document.DNDOperation.prototype.bustGhost = function() {
document._dyingOperation = this;
document.removeEventListener("mousemove", this.moveGhost, false);
this.ghost.bustStep = 10;
setTimeout("document._dyingOperation._fadeGhost();", 50);
}
document._dyingOperation = this;
document.removeEventListener("mousemove", this.moveGhost, false);
this.ghost.bustStep = 10;
setTimeout("document._dyingOperation._fadeGhost();", 50);
};
document.DNDOperation.prototype.chaseGhost = function() {
document._dyingOperation = this;
document.removeEventListener("mousemove", this.moveGhost, false);
this.ghost.bustStep = 25;
this.ghost.chaseStep = 25;
this.ghost.style.overflow = "hidden;"
this.ghost.style.whiteSpace = "nowrap;";
this.ghost.chaseDeltaX = ((this.ghost.cascadeLeftOffset() - this.startPoint[0])
/ this.ghost.chaseStep);
this.ghost.chaseDeltaY = ((this.ghost.cascadeTopOffset() - this.startPoint[1])
/ this.ghost.chaseStep);
setTimeout("document._dyingOperation._chaseGhost();", 20);
}
document._dyingOperation = this;
document.removeEventListener("mousemove", this.moveGhost, false);
this.ghost.bustStep = 25;
this.ghost.chaseStep = 25;
this.ghost.style.overflow = "hidden;"
this.ghost.style.whiteSpace = "nowrap;";
this.ghost.chaseDeltaX = ((this.ghost.cascadeLeftOffset() - this.startPoint[0])
/ this.ghost.chaseStep);
this.ghost.chaseDeltaY = ((this.ghost.cascadeTopOffset() - this.startPoint[1])
/ this.ghost.chaseStep);
setTimeout("document._dyingOperation._chaseGhost();", 20);
};
document.DNDOperation.prototype._chaseGhost = function() {
if (this.ghost.chaseStep) {
var newLeft = this.ghost.cascadeLeftOffset() - this.ghost.chaseDeltaX;
var newTop = this.ghost.cascadeTopOffset() - this.ghost.chaseDeltaY;
this.ghost.style.MozOpacity = (0.04 * this.ghost.chaseStep);
this.ghost.style.left = newLeft + "px;";
this.ghost.style.top = newTop + "px;";
this.ghost.chaseStep--;
setTimeout("document._dyingOperation._chaseGhost();", 20);
}
else {
document.body.removeChild(this.ghost);
this.ghost = null;
}
}
if (this.ghost.chaseStep) {
var newLeft = this.ghost.cascadeLeftOffset() - this.ghost.chaseDeltaX;
var newTop = this.ghost.cascadeTopOffset() - this.ghost.chaseDeltaY;
this.ghost.style.MozOpacity = (0.04 * this.ghost.chaseStep);
this.ghost.style.left = newLeft + "px;";
this.ghost.style.top = newTop + "px;";
this.ghost.chaseStep--;
setTimeout("document._dyingOperation._chaseGhost();", 20);
}
else {
document.body.removeChild(this.ghost);
this.ghost = null;
}
};
document.DNDOperation.prototype._fadeGhost = function() {
if (this.ghost.bustStep) {
this.ghost.style.MozOpacity = (0.1 * this.ghost.bustStep);
this.ghost.style.width = (this.ghost.offsetWidth * .7) + "px;";
this.ghost.style.height = (this.ghost.offsetHeight * .7) + "px;";
this.ghost.bustStep--;
setTimeout("document._dyingOperation._fadeGhost();", 50);
}
else {
document.body.removeChild(this.ghost);
this.ghost = null;
}
}
if (this.ghost.bustStep) {
this.ghost.style.MozOpacity = (0.1 * this.ghost.bustStep);
this.ghost.style.width = (this.ghost.offsetWidth * .7) + "px;";
this.ghost.style.height = (this.ghost.offsetHeight * .7) + "px;";
this.ghost.bustStep--;
setTimeout("document._dyingOperation._fadeGhost();", 50);
}
else {
document.body.removeChild(this.ghost);
this.ghost = null;
}
};

View File

@@ -1,32 +1,34 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
var SOGoDragHandlesInterface = {
leftMargin: 180,
topMargin: 120,
dhType: null,
origX: -1,
origLeft: -1,
origRight: -1,
origY: -1,
origUpper: -1,
origLower: -1,
delta: -1,
leftBlock: null,
rightBlock: null,
upperBlock: null,
lowerBlock: null,
startHandleDraggingBound: null,
stopHandleDraggingBound: null,
moveBound: null,
bind: function () {
leftMargin: 180,
topMargin: 120,
dhType: null,
origX: -1,
origLeft: -1,
origRight: -1,
origY: -1,
origUpper: -1,
origLower: -1,
delta: -1,
leftBlock: null,
rightBlock: null,
upperBlock: null,
lowerBlock: null,
startHandleDraggingBound: null,
stopHandleDraggingBound: null,
moveBound: null,
bind: function () {
this.startHandleDraggingBound = this.startHandleDragging.bindAsEventListener(this);
this.observe("mousedown", this.startHandleDraggingBound, false);
},
_determineType: function () {
_determineType: function () {
if (this.leftBlock && this.rightBlock)
this.dhType = 'horizontal';
else if (this.upperBlock && this.lowerBlock)
this.dhType = 'vertical';
},
startHandleDragging: function (event) {
startHandleDragging: function (event) {
if (!this.dhType)
this._determineType();
var targ = getTarget(event);
@@ -34,14 +36,14 @@ var SOGoDragHandlesInterface = {
if (this.dhType == 'horizontal') {
this.origX = this.offsetLeft;
this.origLeft = this.leftBlock.offsetWidth;
delta = 0;
delta = 0;
this.origRight = this.rightBlock.offsetLeft - 5;
document.body.setStyle({ cursor: "e-resize" });
} else if (this.dhType == 'vertical') {
this.origY = this.offsetTop;
this.origUpper = this.upperBlock.offsetHeight;
var pointY = Event.pointerY(event);
if (pointY <= this.topMargin) delta = this.topMargin;
var pointY = Event.pointerY(event);
if (pointY <= this.topMargin) delta = this.topMargin;
else delta = pointY - this.offsetTop - 5;
this.origLower = this.lowerBlock.offsetTop - 5;
document.body.setStyle({ cursor: "n-resize" });
@@ -56,34 +58,34 @@ var SOGoDragHandlesInterface = {
return false;
},
stopHandleDragging: function (event) {
stopHandleDragging: function (event) {
if (!this.dhType)
this._determineType();
if (this.dhType == 'horizontal') {
var pointerX = Event.pointerX(event);
if (pointerX <= this.leftMargin) {
this.rightBlock.setStyle({ left: (this.leftMargin) + 'px' });
this.leftBlock.setStyle({ width: (this.leftMargin) + 'px' });
this.rightBlock.setStyle({ left: (this.leftMargin) + 'px' });
this.leftBlock.setStyle({ width: (this.leftMargin) + 'px' });
}
else {
var deltaX = Math.floor(pointerX - this.origX - (this.offsetWidth / 2));
this.rightBlock.setStyle({ left: (this.origRight + deltaX) + 'px' });
this.leftBlock.setStyle({ width: (this.origLeft + deltaX) + 'px' });
var deltaX = Math.floor(pointerX - this.origX - (this.offsetWidth / 2));
this.rightBlock.setStyle({ left: (this.origRight + deltaX) + 'px' });
this.leftBlock.setStyle({ width: (this.origLeft + deltaX) + 'px' });
}
this.saveDragHandleState(this.dhType, parseInt(this.leftBlock.getStyle("width")));
}
else if (this.dhType == 'vertical') {
var pointerY = Event.pointerY(event);
if (pointerY <= this.topMargin) {
this.lowerBlock.setStyle({ top: (this.topMargin - delta) + 'px' });
this.upperBlock.setStyle({ height: (this.topMargin - delta) + 'px' });
}
else {
var deltaY = Math.floor(pointerY - this.origY - (this.offsetHeight / 2));
this.lowerBlock.setStyle({ top: (this.origLower + deltaY - delta) + 'px' });
this.upperBlock.setStyle({ height: (this.origUpper + deltaY - delta) + 'px' });
}
this.saveDragHandleState(this.dhType, parseInt(this.lowerBlock.getStyle("top")));
var pointerY = Event.pointerY(event);
if (pointerY <= this.topMargin) {
this.lowerBlock.setStyle({ top: (this.topMargin - delta) + 'px' });
this.upperBlock.setStyle({ height: (this.topMargin - delta) + 'px' });
}
else {
var deltaY = Math.floor(pointerY - this.origY - (this.offsetHeight / 2));
this.lowerBlock.setStyle({ top: (this.origLower + deltaY - delta) + 'px' });
this.upperBlock.setStyle({ height: (this.origUpper + deltaY - delta) + 'px' });
}
this.saveDragHandleState(this.dhType, parseInt(this.lowerBlock.getStyle("top")));
}
Event.stopObserving(document.body, "mouseup", this.stopHandleDraggingBound, true);
Event.stopObserving(document.body, "mousemove", this.moveBound, true);
@@ -92,27 +94,27 @@ var SOGoDragHandlesInterface = {
Event.stop(event);
},
move: function (event) {
move: function (event) {
if (!this.dhType)
this._determineType();
if (this.dhType == 'horizontal') {
var hX = Event.pointerX(event);
var width = this.offsetWidth;
if (hX < this.leftMargin)
hX = this.leftMargin + Math.floor(width / 2);
hX = this.leftMargin + Math.floor(width / 2);
var newLeft = Math.floor(hX - (width / 2));
this.setStyle({ left: newLeft + 'px' });
} else if (this.dhType == 'vertical') {
var height = this.offsetHeight;
var hY = Event.pointerY(event);
if (hY < this.topMargin)
hY = this.topMargin + Math.floor(height / 2);
hY = this.topMargin + Math.floor(height / 2);
var newTop = Math.floor(hY - (height / 2)) - delta;
this.setStyle({ top: newTop + 'px' });
}
Event.stop(event);
},
doubleClick: function (event) {
doubleClick: function (event) {
if (!this.dhType)
this._determineType();
if (this.dhType == 'horizontal') {
@@ -137,13 +139,13 @@ var SOGoDragHandlesInterface = {
}
}
},
saveDragHandleState: function (type, position) {
saveDragHandleState: function (type, position) {
var urlstr = ApplicationBaseURL + "saveDragHandleState"
+ "?" + type + "=" + position;
triggerAjaxRequest(urlstr, this.saveDragHandleStateCallback);
},
saveDragHandleStateCallback: function (http) {
saveDragHandleStateCallback: function (http) {
if (isHttpStatus204(http.status)) {
log ("drag handle state saved");
}

View File

@@ -1,101 +1,103 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function initLogin() {
var date = new Date();
date.setTime(date.getTime() - 86400000);
document.cookie = ("0xHIGHFLYxSOGo-0.9=discard; path=/"
+ "; expires=" + date.toGMTString());
var submit = $("submit");
submit.observe("click", onLoginClick);
var date = new Date();
date.setTime(date.getTime() - 86400000);
document.cookie = ("0xHIGHFLYxSOGo-0.9=discard; path=/"
+ "; expires=" + date.toGMTString());
var submit = $("submit");
submit.observe("click", onLoginClick);
var userName = $("userName");
userName.focus();
var userName = $("userName");
userName.focus();
var image = $("preparedAnimation");
image.parentNode.removeChild(image);
var image = $("preparedAnimation");
image.parentNode.removeChild(image);
}
function onLoginClick(event) {
var userNameField = $("userName");
var userName = userNameField.value;
var password = $("password").value;
var userNameField = $("userName");
var userName = userNameField.value;
var password = $("password").value;
if (userName.length > 0) {
startAnimation($("loginButton"), $("submit"));
if (userName.length > 0) {
startAnimation($("loginButton"), $("submit"));
if (typeof(loginSuffix) != "undefined"
&& loginSuffix.length > 0
&& !userName.endsWith(loginSuffix))
userName += loginSuffix;
var url = $("connectForm").getAttribute("action");
var parameters = ("userName=" + encodeURI(userName) + "&password=" + encodeURI(password));
document.cookie = "";
triggerAjaxRequest(url, onLoginCallback, null, parameters,
{ "Content-type": "application/x-www-form-urlencoded",
"Content-length": parameters.length,
"Connection": "close" });
}
else
userNameField.focus();
if (typeof(loginSuffix) != "undefined"
&& loginSuffix.length > 0
&& !userName.endsWith(loginSuffix))
userName += loginSuffix;
var url = $("connectForm").getAttribute("action");
var parameters = ("userName=" + encodeURI(userName) + "&password=" + encodeURI(password));
document.cookie = "";
triggerAjaxRequest(url, onLoginCallback, null, parameters,
{ "Content-type": "application/x-www-form-urlencoded",
"Content-length": parameters.length,
"Connection": "close" });
}
else
userNameField.focus();
preventDefault(event);
preventDefault(event);
}
function onLoginCallback(http) {
if (http.readyState == 4) {
var noCookiesErrorMessage = $("noCookiesErrorMessage");
var loginErrorMessage = $("loginErrorMessage");
if (http.readyState == 4) {
var noCookiesErrorMessage = $("noCookiesErrorMessage");
var loginErrorMessage = $("loginErrorMessage");
if (isHttpStatus204(http.status)) {
// Make sure browser's cookies are enabled
var cookieExists = 0;
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf("0xHIGHFLYxSOGo-0.9=") == 0) {
cookieExists = 1;
break;
}
}
if (cookieExists === 0) {
loginErrorMessage.hide();
noCookiesErrorMessage.show();
return false;
}
if (isHttpStatus204(http.status)) {
// Make sure browser's cookies are enabled
var cookieExists = 0;
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf("0xHIGHFLYxSOGo-0.9=") == 0) {
cookieExists = 1;
break;
}
}
if (cookieExists === 0) {
loginErrorMessage.hide();
noCookiesErrorMessage.show();
return false;
}
// Redirect to proper page
var userName = $("userName").value;
if (typeof(loginSuffix) != "undefined"
&& loginSuffix.length > 0
&& !userName.endsWith(loginSuffix))
userName += loginSuffix;
var address = "" + window.location.href;
var baseAddress = ApplicationBaseURL + encodeURI(userName);
var altBaseAddress;
if (baseAddress[0] == "/") {
var parts = address.split("/");
var hostpart = parts[2];
var protocol = parts[0];
baseAddress = protocol + "//" + hostpart + baseAddress;
}
var altBaseAddress;
var parts = baseAddress.split("/");
parts.splice(3, 0);
altBaseAddress = parts.join("/");
// Redirect to proper page
var userName = $("userName").value;
if (typeof(loginSuffix) != "undefined"
&& loginSuffix.length > 0
&& !userName.endsWith(loginSuffix))
userName += loginSuffix;
var address = "" + window.location.href;
var baseAddress = ApplicationBaseURL + encodeURI(userName);
var altBaseAddress;
if (baseAddress[0] == "/") {
var parts = address.split("/");
var hostpart = parts[2];
var protocol = parts[0];
baseAddress = protocol + "//" + hostpart + baseAddress;
}
var altBaseAddress;
var parts = baseAddress.split("/");
parts.splice(3, 0);
altBaseAddress = parts.join("/");
var newAddress;
if ((address.startsWith(baseAddress)
|| address.startsWith(altBaseAddress))
&& !address.endsWith("/logoff"))
newAddress = address;
else
newAddress = baseAddress;
window.location.href = newAddress;
}
else {
loginErrorMessage.show();
noCookiesErrorMessage.hide();
}
}
var newAddress;
if ((address.startsWith(baseAddress)
|| address.startsWith(altBaseAddress))
&& !address.endsWith("/logoff"))
newAddress = address;
else
newAddress = baseAddress;
window.location.href = newAddress;
}
else {
loginErrorMessage.show();
noCookiesErrorMessage.hide();
}
}
}
FastInit.addOnLoad(initLogin);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* JavaScript for SOGoCalendar */
var listFilter = 'view_today';
@@ -104,11 +106,11 @@ function _batchDeleteEvents() {
var events = eventsToDelete.shift();
var calendar = calendarsOfEventsToDelete.shift();
var urlstr = (ApplicationBaseURL + calendar
+ "/batchDelete?ids=" + events.join('/'));
+ "/batchDelete?ids=" + events.join('/'));
document.deleteEventAjaxRequest = triggerAjaxRequest(urlstr,
deleteEventCallback,
{ calendar: calendar,
events: events });
{ calendar: calendar,
events: events });
}
function deleteEvent() {
@@ -122,32 +124,32 @@ function deleteEvent() {
label = labels["eventDeleteConfirmation"];
if (nodes.length == 1
&& nodes[0].recurrenceTime) {
_editRecurrenceDialog(nodes[0], "confirmDeletion");
&& nodes[0].recurrenceTime) {
_editRecurrenceDialog(nodes[0], "confirmDeletion");
}
else {
if (confirm(label)) {
if (document.deleteEventAjaxRequest) {
document.deleteEventAjaxRequest.aborted = true;
document.deleteEventAjaxRequest.abort();
}
var sortedNodes = [];
var calendars = [];
if (confirm(label)) {
if (document.deleteEventAjaxRequest) {
document.deleteEventAjaxRequest.aborted = true;
document.deleteEventAjaxRequest.abort();
}
var sortedNodes = [];
var calendars = [];
for (var i = 0; i < nodes.length; i++) {
var calendar = nodes[i].calendar;
if (!sortedNodes[calendar]) {
sortedNodes[calendar] = [];
calendars.push(calendar);
}
sortedNodes[calendar].push(nodes[i].cname);
}
for (var i = 0; i < calendars.length; i++) {
calendarsOfEventsToDelete.push(calendars[i]);
eventsToDelete.push(sortedNodes[calendars[i]]);
}
_batchDeleteEvents();
}
for (var i = 0; i < nodes.length; i++) {
var calendar = nodes[i].calendar;
if (!sortedNodes[calendar]) {
sortedNodes[calendar] = [];
calendars.push(calendar);
}
sortedNodes[calendar].push(nodes[i].cname);
}
for (var i = 0; i < calendars.length; i++) {
calendarsOfEventsToDelete.push(calendars[i]);
eventsToDelete.push(sortedNodes[calendars[i]]);
}
_batchDeleteEvents();
}
}
} else {
window.alert(labels["Please select an event or a task."]);
@@ -160,13 +162,13 @@ function deleteEvent() {
else {
var label = labels["eventDeleteConfirmation"];
if (confirm(label)) {
if (document.deleteEventAjaxRequest) {
document.deleteEventAjaxRequest.aborted = true;
document.deleteEventAjaxRequest.abort();
}
eventsToDelete.push([selectedCalendarCell[0].cname]);
calendarsOfEventsToDelete.push(selectedCalendarCell[0].calendar);
_batchDeleteEvents();
if (document.deleteEventAjaxRequest) {
document.deleteEventAjaxRequest.aborted = true;
document.deleteEventAjaxRequest.abort();
}
eventsToDelete.push([selectedCalendarCell[0].cname]);
calendarsOfEventsToDelete.push(selectedCalendarCell[0].calendar);
_batchDeleteEvents();
}
}
}
@@ -212,10 +214,10 @@ function modifyEventCallback(http) {
if (http.status == 200) {
var mailInvitation = queryParameters["mail-invitation"];
if (mailInvitation && mailInvitation.toLowerCase() == "yes")
closeInvitationWindow();
closeInvitationWindow();
else {
window.opener.setTimeout("refreshEventsAndDisplay();", 100);
window.setTimeout("window.close();", 100);
window.opener.setTimeout("refreshEventsAndDisplay();", 100);
window.setTimeout("window.close();", 100);
}
}
else {
@@ -232,11 +234,11 @@ function _deleteCalendarEventBlocks(calendar, cname) {
var occurences = events[cname];
if (occurences)
for (var i = 0; i < occurences.length; i++) {
var nodes = occurences[i].blocks;
for (var j = 0; j < nodes.length; j++) {
var node = nodes[j];
node.parentNode.removeChild(node);
}
var nodes = occurences[i].blocks;
for (var j = 0; j < nodes.length; j++) {
var node = nodes[j];
node.parentNode.removeChild(node);
}
}
}
}
@@ -253,7 +255,7 @@ function _deleteEventFromTables(basename) {
var row = $(rows[j - 1]);
var id = row.getAttribute("id");
if (id.indexOf(basename) == 0)
row.parentNode.removeChild(row);
row.parentNode.removeChild(row);
}
}
}
@@ -265,19 +267,19 @@ function deleteEventCallback(http) {
var calendar = http.callbackData.calendar;
var events = http.callbackData.events;
// log("calendar: " + calendar + "\n");
// log("events: " + events.join(", " ) + "\n");
// log("calendar: " + calendar + "\n");
// log("events: " + events.join(", " ) + "\n");
for (var i = 0; i < events.length; i++) {
var cname = events[i];
_deleteCalendarEventBlocks(calendar, cname);
_deleteEventFromTables(calendar + "-" + cname);
delete calendarEvents[calendar][cname];
var cname = events[i];
_deleteCalendarEventBlocks(calendar, cname);
_deleteEventFromTables(calendar + "-" + cname);
delete calendarEvents[calendar][cname];
}
if (eventsToDelete.length)
_batchDeleteEvents();
_batchDeleteEvents();
else {
document.deleteEventAjaxRequest = null;
document.deleteEventAjaxRequest = null;
}
}
else
@@ -302,7 +304,7 @@ function getEventById(cname, owner) {
function _editRecurrenceDialog(eventDiv, method) {
var targetname = "SOGo_edit_" + eventDiv.cname + eventDiv.recurrenceTime;
var urlstr = (ApplicationBaseURL + eventDiv.calendar + "/" + eventDiv.cname
+ "/occurence" + eventDiv.recurrenceTime + "/" + method);
+ "/occurence" + eventDiv.recurrenceTime + "/" + method);
var win = window.open(urlstr, "_blank",
"width=490,height=70,resizable=0");
if (win)
@@ -324,9 +326,9 @@ function onViewEventCallback(http) {
&& http.status == 200) {
if (http.responseText.length > 0) {
var data = http.responseText.evalJSON(true);
// $H(data).keys().each(function(key) {
// log (key + " = " + data[key]);
// });
// $H(data).keys().each(function(key) {
// log (key + " = " + data[key]);
// });
var cell = http.callbackData;
var cellPosition = cell.cumulativeOffset();
var cellDimensions = cell.getDimensions();
@@ -337,56 +339,56 @@ function onViewEventCallback(http) {
var top = cellPosition[1];
if (currentView != "monthview") {
view = $("daysView");
var viewPosition = view.cumulativeOffset();
view = $("daysView");
var viewPosition = view.cumulativeOffset();
if (parseInt(data["isAllDay"]) == 0) {
top -= view.scrollTop;
if (viewPosition[1] > top + 2) {
view.stopObserving("scroll", onBodyClickHandler);
view.scrollTop = cell.offsetTop;
top = viewPosition[1];
Event.observe.delay(0.1, view, "scroll", onBodyClickHandler);
}
}
if (parseInt(data["isAllDay"]) == 0) {
top -= view.scrollTop;
if (viewPosition[1] > top + 2) {
view.stopObserving("scroll", onBodyClickHandler);
view.scrollTop = cell.offsetTop;
top = viewPosition[1];
Event.observe.delay(0.1, view, "scroll", onBodyClickHandler);
}
}
}
else {
view = $("calendarView");
top -= cell.up("DIV.day").scrollTop;
view = $("calendarView");
top -= cell.up("DIV.day").scrollTop;
}
if (left > parseInt(window.width()*0.75)) {
left = left - divDimensions["width"] + 10;
div.removeClassName("left");
div.addClassName("right");
left = left - divDimensions["width"] + 10;
div.removeClassName("left");
div.addClassName("right");
}
else {
left = left + cellDimensions["width"] - parseInt(cellDimensions["width"]/3);
div.removeClassName("right");
div.addClassName("left");
left = left + cellDimensions["width"] - parseInt(cellDimensions["width"]/3);
div.removeClassName("right");
div.addClassName("left");
}
// Put the event's data in the DIV
div.down("h1").update(data["summary"]);
if (parseInt(data["isAllDay"]) == 0) {
div.down("P", 0).down("SPAN", 1).update(data["startTime"]);
div.down("P", 0).show();
div.down("P", 0).down("SPAN", 1).update(data["startTime"]);
div.down("P", 0).show();
} else
div.down("P", 0).hide();
div.down("P", 0).hide();
if (data["location"].length) {
div.down("P", 1).down("SPAN", 1).update(data["location"]);
div.down("P", 1).show();
div.down("P", 1).down("SPAN", 1).update(data["location"]);
div.down("P", 1).show();
} else
div.down("P", 1).hide();
div.down("P", 1).hide();
if (data["description"].length) {
div.down("P", 2).update(data["description"]);
div.down("P", 2).show();
div.down("P", 2).update(data["description"]);
div.down("P", 2).show();
} else
div.down("P", 2).hide();
div.down("P", 2).hide();
div.setStyle({ left: left + "px",
top: top + "px" });
top: top + "px" });
div.show();
}
}
@@ -420,9 +422,9 @@ function performEventDeletion(folder, event, recurrence) {
var nodes = _eventBlocksMatching(folder, event, occurenceTime);
if (nodes)
document.deleteEventAjaxRequest = triggerAjaxRequest(urlstr,
performDeleteEventCallback,
{ nodes: nodes,
occurence: occurenceTime });
performDeleteEventCallback,
{ nodes: nodes,
occurence: occurenceTime });
}
}
@@ -434,30 +436,30 @@ function performDeleteEventCallback(http) {
var cname = nodes[0].cname;
var calendar = nodes[0].calendar;
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
// log("node: " + node);
node.parentNode.removeChild(node);
var node = nodes[i];
// log("node: " + node);
node.parentNode.removeChild(node);
}
var basename = calendar + "-" + cname;
if (occurenceTime) {
var row = $(basename + "-" + occurenceTime);
// log("rowID: " + basename + "-" + occurenceTime);
if (row)
row.parentNode.removeChild(row);
var row = $(basename + "-" + occurenceTime);
// log("rowID: " + basename + "-" + occurenceTime);
if (row)
row.parentNode.removeChild(row);
var occurences = calendarEvents[calendar][cname];
var newOccurences = [];
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
if (occurence[13] != recurrenceTime)
newOccurences.push(occurence);
}
calendarEvents[calendar][cname] = newOccurences;
var occurences = calendarEvents[calendar][cname];
var newOccurences = [];
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
if (occurence[13] != recurrenceTime)
newOccurences.push(occurence);
}
calendarEvents[calendar][cname] = newOccurences;
}
else {
// log("basename: " + basename);
_deleteEventFromTables(basename);
delete calendarEvents[calendar][cname];
// log("basename: " + basename);
_deleteEventFromTables(basename);
delete calendarEvents[calendar][cname];
}
}
}
@@ -555,64 +557,64 @@ function eventsListCallback(http) {
if (http.responseText.length > 0) {
var data = http.responseText.evalJSON(true);
for (var i = 0; i < data.length; i++) {
var row = $(document.createElement("tr"));
table.tBodies[0].appendChild(row);
row.addClassName("eventRow");
var rTime = data[i][13];
var id = escape(data[i][1] + "-" + data[i][0]);
if (rTime)
id += "-" + escape(rTime);
row.setAttribute("id", id);
row.cname = escape(data[i][0]);
row.calendar = escape(data[i][1]);
if (rTime)
row.recurrenceTime = escape(rTime);
var startDate = new Date();
startDate.setTime(data[i][4] * 1000);
row.day = startDate.getDayString();
row.hour = startDate.getHourString();
row.observe("mousedown", onRowClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("dblclick", editDoubleClickedEvent);
row.observe("contextmenu", onEventContextMenu);
var row = $(document.createElement("tr"));
table.tBodies[0].appendChild(row);
row.addClassName("eventRow");
var rTime = data[i][13];
var id = escape(data[i][1] + "-" + data[i][0]);
if (rTime)
id += "-" + escape(rTime);
row.setAttribute("id", id);
row.cname = escape(data[i][0]);
row.calendar = escape(data[i][1]);
if (rTime)
row.recurrenceTime = escape(rTime);
var startDate = new Date();
startDate.setTime(data[i][4] * 1000);
row.day = startDate.getDayString();
row.hour = startDate.getHourString();
row.observe("mousedown", onRowClick);
row.observe("selectstart", listRowMouseDownHandler);
row.observe("dblclick", editDoubleClickedEvent);
row.observe("contextmenu", onEventContextMenu);
var td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][3]));
var td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][3]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][14]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][14]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][15]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][15]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][6]));
td = $(document.createElement("td"));
row.appendChild(td);
td.observe("mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][6]));
}
if (sorting["attribute"] && sorting["attribute"].length > 0) {
var sortHeader = $(sorting["attribute"] + "Header");
var sortHeader = $(sorting["attribute"] + "Header");
if (sortHeader) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
if (sortHeader) {
var sortImages = $(table.tHead).select(".sortImage");
$(sortImages).each(function(item) {
item.remove();
});
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
}
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
else
sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
}
}
}
}
@@ -632,43 +634,43 @@ function tasksListCallback(http) {
var data = http.responseText.evalJSON(true);
for (var i = 0; i < data.length; i++) {
var listItem = $(document.createElement("li"));
list.appendChild(listItem);
listItem.observe("mousedown", listRowMouseDownHandler);
listItem.observe("click", onRowClick);
listItem.observe("dblclick", editDoubleClickedEvent);
var listItem = $(document.createElement("li"));
list.appendChild(listItem);
listItem.observe("mousedown", listRowMouseDownHandler);
listItem.observe("click", onRowClick);
listItem.observe("dblclick", editDoubleClickedEvent);
var calendar = escape(data[i][1]);
var cname = escape(data[i][0]);
listItem.setAttribute("id", calendar + "-" + cname);
listItem.addClassName(data[i][5]);
listItem.addClassName(data[i][6]);
listItem.calendar = calendar;
listItem.addClassName("calendarFolder" + calendar);
listItem.cname = cname;
var input = $(document.createElement("input"));
input.setAttribute("type", "checkbox");
listItem.appendChild(input);
input.observe("click", updateTaskStatus, true);
input.setAttribute("value", "1");
if (data[i][2] == 1)
input.setAttribute("checked", "checked");
$(input).addClassName("checkBox");
var calendar = escape(data[i][1]);
var cname = escape(data[i][0]);
listItem.setAttribute("id", calendar + "-" + cname);
listItem.addClassName(data[i][5]);
listItem.addClassName(data[i][6]);
listItem.calendar = calendar;
listItem.addClassName("calendarFolder" + calendar);
listItem.cname = cname;
var input = $(document.createElement("input"));
input.setAttribute("type", "checkbox");
listItem.appendChild(input);
input.observe("click", updateTaskStatus, true);
input.setAttribute("value", "1");
if (data[i][2] == 1)
input.setAttribute("checked", "checked");
$(input).addClassName("checkBox");
listItem.appendChild(document.createTextNode(data[i][3]));
listItem.appendChild(document.createTextNode(data[i][3]));
}
list.scrollTop = list.previousScroll;
if (http.callbackData) {
var selectedNodesId = http.callbackData;
for (var i = 0; i < selectedNodesId.length; i++) {
// log(selectedNodesId[i] + " (" + i + ") is selected");
$(selectedNodesId[i]).selectElement();
}
var selectedNodesId = http.callbackData;
for (var i = 0; i < selectedNodesId.length; i++) {
// log(selectedNodesId[i] + " (" + i + ") is selected");
$(selectedNodesId[i]).selectElement();
}
}
else
log ("tasksListCallback: no data");
log ("tasksListCallback: no data");
}
}
else
@@ -690,11 +692,11 @@ function restoreCurrentDaySelection(div) {
for (i = 0; i < elements.length; i++) {
day = elements[i].day;
if (day && day == currentDay) {
var td = $(elements[i]).getParentWithTagName("td");
if (document.selectedDate)
document.selectedDate.deselect();
$(td).selectElement();
document.selectedDate = td;
var td = $(elements[i]).getParentWithTagName("td");
if (document.selectedDate)
document.selectedDate.deselect();
$(td).selectElement();
document.selectedDate = td;
}
}
}
@@ -746,35 +748,35 @@ function changeCalendarDisplay(data, newView) {
if (data) {
var divs = $$('div.day[day='+day+']');
if (divs.length) {
// Don't reload the view if the event is present in current view
// Don't reload the view if the event is present in current view
// Deselect previous day
var selectedDivs = $$('div.day.selectedDay');
selectedDivs.each(function(div) {
div.removeClassName('selectedDay');
});
// Deselect previous day
var selectedDivs = $$('div.day.selectedDay');
selectedDivs.each(function(div) {
div.removeClassName('selectedDay');
});
// Select new day
divs.each(function(div) {
div.addClassName('selectedDay');
});
// Select new day
divs.each(function(div) {
div.addClassName('selectedDay');
});
// Deselect day in date selector
if (document.selectedDate)
document.selectedDate.deselect();
// Deselect day in date selector
if (document.selectedDate)
document.selectedDate.deselect();
// Select day in date selector
var selectedLink = $$('table#dateSelectorTable a[day='+day+']');
if (selectedLink.length > 0) {
selectedCell = selectedLink[0].up(1);
selectedCell.selectElement();
document.selectedDate = selectedCell;
}
// Select day in date selector
var selectedLink = $$('table#dateSelectorTable a[day='+day+']');
if (selectedLink.length > 0) {
selectedCell = selectedLink[0].up(1);
selectedCell.selectElement();
document.selectedDate = selectedCell;
}
// Scroll to event
scrollDayView(scrollEvent);
// Scroll to event
scrollDayView(scrollEvent);
return false;
return false;
}
}
url += "?day=" + day;
@@ -788,9 +790,9 @@ function changeCalendarDisplay(data, newView) {
}
document.dayDisplayAjaxRequest
= triggerAjaxRequest(url, calendarDisplayCallback,
{ "view": newView,
"day": day,
"scrollEvent": scrollEvent });
{ "view": newView,
"day": day,
"scrollEvent": scrollEvent });
return false;
}
@@ -895,11 +897,11 @@ function refreshCalendarEvents(scrollEvent) {
document.refreshCalendarEventsAjaxRequest.abort();
}
var url = (ApplicationBaseURL + "eventsblocks?sd=" + sd + "&ed=" + ed
+ "&view=" + currentView);
+ "&view=" + currentView);
document.refreshCalendarEventsAjaxRequest
= triggerAjaxRequest(url, refreshCalendarEventsCallback,
{"startDate": sd, "endDate": ed,
"scrollEvent": scrollEvent});
{"startDate": sd, "endDate": ed,
"scrollEvent": scrollEvent});
}
function _parseEvents(list) {
@@ -909,7 +911,7 @@ function _parseEvents(list) {
var event = list[i];
var cname = event[0];
var calendar = event[1];
// log("parsed cname: " + cname + "; calendar: " + calendar);
// log("parsed cname: " + cname + "; calendar: " + calendar);
var calendarDict = newCalendarEvents[calendar];
if (!calendarDict) {
calendarDict = {};
@@ -934,10 +936,10 @@ function refreshCalendarEventsCallback(http) {
var eventsBlocks = http.responseText.evalJSON(true);
calendarEvents = _parseEvents(eventsBlocks[0]);
if (currentView == "monthview")
_drawMonthCalendarEvents(eventsBlocks[2], eventsBlocks[0]);
_drawMonthCalendarEvents(eventsBlocks[2], eventsBlocks[0]);
else {
_drawCalendarAllDayEvents(eventsBlocks[1], eventsBlocks[0]);
_drawCalendarEvents(eventsBlocks[2], eventsBlocks[0]);
_drawCalendarAllDayEvents(eventsBlocks[1], eventsBlocks[0]);
_drawCalendarEvents(eventsBlocks[2], eventsBlocks[0]);
}
}
scrollDayView(http.callbackData["scrollEvent"]);
@@ -947,8 +949,8 @@ function refreshCalendarEventsCallback(http) {
}
function newBaseEventDIV(eventRep, event, eventText) {
// cname, calendar, starts, lasts,
// startHour, endHour, title) {
// cname, calendar, starts, lasts,
// startHour, endHour, title) {
var eventDiv = $(document.createElement("div"));
eventDiv.cname = event[0];
eventDiv.calendar = event[1];
@@ -1002,8 +1004,8 @@ function _drawCalendarAllDayEvents(events, eventsData) {
}
function newAllDayEventDIV(eventRep, event) {
// cname, calendar, starts, lasts,
// startHour, endHour, title) {
// cname, calendar, starts, lasts,
// startHour, endHour, title) {
var eventDiv = newBaseEventDIV(eventRep, event, event[3]);
return eventDiv;
@@ -1059,7 +1061,7 @@ function newMonthEventDIV(eventRep, event) {
eventText = eventRep.starthour + " - " + event[3];
var eventDiv = newBaseEventDIV(eventRep, event,
eventText);
eventText);
return eventDiv;
}
@@ -1091,32 +1093,32 @@ function calendarDisplayCallback(http) {
for (var i = 0; i < days.length; i++) {
days[i].observe("click", onCalendarSelectDay);
days[i].observe("dblclick", onClickableCellsDblClick);
days[i].observe("selectstart", listRowMouseDownHandler);
//days[i].down(".dayHeader").observe("selectstart", listRowMouseDownHandler);
if (currentView == "monthview")
days[i].observe("scroll", onBodyClickHandler);
days[i].observe("selectstart", listRowMouseDownHandler);
//days[i].down(".dayHeader").observe("selectstart", listRowMouseDownHandler);
if (currentView == "monthview")
days[i].observe("scroll", onBodyClickHandler);
}
else {
var headerDivs = $("calendarHeader").childNodesWithTag("div");
var headerDaysLabels
= document.getElementsByClassName("day", headerDivs[0]);
= document.getElementsByClassName("day", headerDivs[0]);
var headerDays = document.getElementsByClassName("day", headerDivs[1]);
for (var i = 0; i < days.length; i++) {
headerDays[i].hour = "allday";
headerDaysLabels[i].observe("mousedown", listRowMouseDownHandler);
headerDays[i].observe("click", onCalendarSelectDay);
headerDays[i].observe("dblclick", onClickableCellsDblClick);
days[i].observe("click", onCalendarSelectDay);
var clickableCells
= document.getElementsByClassName("clickableHourCell", days[i]);
for (var j = 0; j < clickableCells.length; j++)
clickableCells[j].observe("dblclick", onClickableCellsDblClick);
headerDays[i].hour = "allday";
headerDaysLabels[i].observe("mousedown", listRowMouseDownHandler);
headerDays[i].observe("click", onCalendarSelectDay);
headerDays[i].observe("dblclick", onClickableCellsDblClick);
days[i].observe("click", onCalendarSelectDay);
var clickableCells
= document.getElementsByClassName("clickableHourCell", days[i]);
for (var j = 0; j < clickableCells.length; j++)
clickableCells[j].observe("dblclick", onClickableCellsDblClick);
}
}
}
else
log ("calendarDisplayCallback Ajax error ("
+ http.readyState + "/" + http.status + ")");
+ http.readyState + "/" + http.status + ")");
}
function assignCalendar(name) {
@@ -1165,7 +1167,7 @@ function onEventsSelectionChange() {
if (rows.length == 1) {
var row = rows[0];
changeCalendarDisplay( { "day": row.day,
"scrollEvent": row.getAttribute("id") } );
"scrollEvent": row.getAttribute("id") } );
changeDateSelectorDisplay(row.day);
}
}
@@ -1253,10 +1255,10 @@ function refreshEvents() {
titleSearch = "";
return _loadEventHref("eventslist?asc=" + sorting["ascending"]
+ "&sort=" + sorting["attribute"]
+ "&day=" + currentDay
+ titleSearch
+ "&filterpopup=" + listFilter);
+ "&sort=" + sorting["attribute"]
+ "&day=" + currentDay
+ titleSearch
+ "&filterpopup=" + listFilter);
}
function refreshTasks() {
@@ -1344,18 +1346,18 @@ function _eventBlocksMatching(calendar, cname, recurrenceTime) {
var occurences = events[cname];
if (occurences) {
if (recurrenceTime) {
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
if (occurence[13] == recurrenceTime)
blocks = occurence.blocks;
}
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
if (occurence[13] == recurrenceTime)
blocks = occurence.blocks;
}
}
else {
blocks = [];
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
blocks = blocks.concat(occurence.blocks);
}
blocks = [];
for (var i = 0; i < occurences.length; i++) {
var occurence = occurences[i];
blocks = blocks.concat(occurence.blocks);
}
}
}
}
@@ -1425,7 +1427,7 @@ function changeWeekCalendarDisplayOfSelectedDay(node) {
for (var i = 0; i < days.length; i++) {
if (days[i] == node
|| headerDays[i] == node) {
|| headerDays[i] == node) {
headerDays[i].addClassName("selectedDay");
days[i].addClassName("selectedDay");
}
@@ -1443,7 +1445,7 @@ function findMonthCalendarSelectedCell(daysContainer) {
while (!found && i < daysContainer.childNodes.length) {
var currentNode = daysContainer.childNodes[i];
if (currentNode.tagName == 'DIV'
&& currentNode.hasClassName("selectedDay")) {
&& currentNode.hasClassName("selectedDay")) {
daysContainer.selectedCell = currentNode;
found = true;
}
@@ -1478,7 +1480,7 @@ function updateTaskStatus(event) {
}
url = (ApplicationBaseURL + this.parentNode.calendar
+ "/" + this.parentNode.cname + "/changeStatus?status=" + newStatus);
+ "/" + this.parentNode.cname + "/changeStatus?status=" + newStatus);
if (http) {
// TODO: add parameter to signal that we are only interested in OK
@@ -1510,9 +1512,9 @@ function updateCalendarStatus(event) {
var folderId = nodes[i].getAttribute("id");
var elems = folderId.split(":");
if (elems.length > 1)
list.push(elems[0]);
list.push(elems[0]);
else
list.push(UserLogin);
list.push(UserLogin);
}
}
@@ -1631,15 +1633,15 @@ function getMenus() {
menus["yearListMenu"] = dateMenu;
menus["eventsListMenu"] = new Array(onMenuNewEventClick, "-",
onMenuNewTaskClick,
editEvent, deleteEvent, "-",
onSelectAll, "-",
null, null);
onMenuNewTaskClick,
editEvent, deleteEvent, "-",
onSelectAll, "-",
null, null);
menus["calendarsMenu"] = new Array(onCalendarModify,
"-",
onCalendarNew, onCalendarRemove,
"-", null, null, "-",
null, "-", onMenuSharing);
"-",
onCalendarNew, onCalendarRemove,
"-", null, null, "-",
null, "-", onMenuSharing);
menus["searchMenu"] = new Array(setSearchCriteria);
var calendarsMenu = $("calendarsMenu");
@@ -1711,7 +1713,7 @@ function onCalendarModify(event) {
var url = ApplicationBaseURL + calendarID + "/properties";
var windowID = sanitizeWindowName(calendarID + " properties");
var properties = window.open(url, windowID,
"width=300,height=100,resizable=0");
"width=300,height=100,resizable=0");
properties.focus();
}
@@ -1723,7 +1725,7 @@ function updateCalendarProperties(calendarID, calendarName, calendarColor) {
nodeID = "/" + idParts[0] + "_" + folderName;
else
nodeID = "/" + folderName;
// log("nodeID: " + nodeID);
// log("nodeID: " + nodeID);
var calendarNode = $(nodeID);
var childNodes = calendarNode.childNodes;
childNodes[childNodes.length-1].nodeValue = calendarName;
@@ -1733,7 +1735,7 @@ function updateCalendarProperties(calendarID, calendarName, calendarColor) {
function onCalendarNew(event) {
createFolder(window.prompt(labels["Name of the Calendar"], ""),
appendCalendar);
appendCalendar);
preventDefault(event);
}
@@ -1783,14 +1785,14 @@ function appendCalendar(folderName, folderPath) {
$(li).writeAttribute("owner", owner);
var checkBox = createElement("input", null, "checkBox", { checked: 1 },
{ type: "checkbox" }, li);
{ type: "checkbox" }, li);
li.appendChild(document.createTextNode(" "));
var colorBox = document.createElement("div");
li.appendChild(colorBox);
li.appendChild(document.createTextNode(folderName
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g")));
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g")));
colorBox.appendChild(document.createTextNode("OO"));
$(colorBox).addClassName("colorBox");
@@ -1813,20 +1815,20 @@ function appendStyleElement(folderPath, color) {
var styleElement = document.createElement("style");
styleElement.type = "text/css";
var selectors = [
'DIV.calendarFolder' + folderPath.substr(1),
'LI.calendarFolder' + folderPath.substr(1),
'UL#calendarList DIV.calendarFolder' + folderPath.substr(1)
];
'DIV.calendarFolder' + folderPath.substr(1),
'LI.calendarFolder' + folderPath.substr(1),
'UL#calendarList DIV.calendarFolder' + folderPath.substr(1)
];
var rules = [
' { background-color: ' + color + ' !important;' + ' color: ' + fgColor + ' !important; }',
' { background-color: ' + color + ' !important;' + ' color: ' + fgColor + ' !important; }',
' { color: ' + color + ' !important; }'
];
' { background-color: ' + color + ' !important;' + ' color: ' + fgColor + ' !important; }',
' { background-color: ' + color + ' !important;' + ' color: ' + fgColor + ' !important; }',
' { color: ' + color + ' !important; }'
];
for (var i = 0; i < rules.length; i++)
if (styleElement.styleSheet && styleElement.styleSheet.addRule)
styleElement.styleSheet.addRule(selectors[i], rules[i]); // IE
styleElement.styleSheet.addRule(selectors[i], rules[i]); // IE
else
styleElement.appendChild(document.createTextNode(selectors[i] + rules[i])); // Mozilla _+ Safari
styleElement.appendChild(document.createTextNode(selectors[i] + rules[i])); // Mozilla _+ Safari
document.getElementsByTagName("head")[0].appendChild(styleElement);
}
}
@@ -1856,11 +1858,11 @@ function onCalendarRemove(event) {
var folderId = nodes[i].getAttribute("id");
if (owner == UserLogin) {
var folderIdElements = folderId.split(":");
deletePersonalCalendar(folderIdElements[0]);
deletePersonalCalendar(folderIdElements[0]);
}
else
unsubscribeFromFolder(folderId, owner,
onFolderUnsubscribeCB, folderId);
unsubscribeFromFolder(folderId, owner,
onFolderUnsubscribeCB, folderId);
}
}
@@ -1886,19 +1888,19 @@ function deletePersonalCalendarCallback(http) {
var i = 0;
var done = false;
while (!done && i < children.length) {
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
var currentFolderId = children[i].getAttribute("id").substr(1);
if (currentFolderId == http.callbackData) {
ul.removeChild(children[i]);
done = true;
}
else
i++;
}
removeFolderRequestCount--;
if (removeFolderRequestCount == 0) {
refreshEvents();
refreshTasks();
changeCalendarDisplay();
refreshEvents();
refreshTasks();
changeCalendarDisplay();
}
}
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/* test */
var contactSelectorAction = 'acls-contacts';
@@ -8,18 +10,18 @@ var AclEditor = {
};
function addUser(userName, userID) {
var result = false;
if (!$(userID)) {
var ul = $("userList");
ul.appendChild(nodeForUser(userName, userID));
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = ("addUserInAcls?uid="
+ userID);
triggerAjaxRequest(elements.join("/"), addUserCallback);
result = true;
}
return result;
var result = false;
if (!$(userID)) {
var ul = $("userList");
ul.appendChild(nodeForUser(userName, userID));
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = ("addUserInAcls?uid="
+ userID);
triggerAjaxRequest(elements.join("/"), addUserCallback);
result = true;
}
return result;
}
function addUserCallback(http) {
@@ -34,123 +36,123 @@ function setEventsOnUserNode(node) {
}
function nodeForUser(userName, userId) {
var node = document.createElement("li");
node.setAttribute("id", userId);
node.setAttribute("class", "");
setEventsOnUserNode(node);
var node = document.createElement("li");
node.setAttribute("id", userId);
node.setAttribute("class", "");
setEventsOnUserNode(node);
var image = document.createElement("img");
image.setAttribute("src", ResourcesURL + "/abcard.gif");
var image = document.createElement("img");
image.setAttribute("src", ResourcesURL + "/abcard.gif");
node.appendChild(image);
node.appendChild(document.createTextNode(" " + userName));
node.appendChild(image);
node.appendChild(document.createTextNode(" " + userName));
return node;
return node;
}
function saveAcls() {
var uidList = new Array();
var users = $("userList").childNodesWithTag("li");
for (var i = 0; i < users.length; i++)
uidList.push(users[i].getAttribute("id"));
$("userUIDS").value = uidList.join(",");
$("aclForm").submit();
var uidList = new Array();
var users = $("userList").childNodesWithTag("li");
for (var i = 0; i < users.length; i++)
uidList.push(users[i].getAttribute("id"));
$("userUIDS").value = uidList.join(",");
$("aclForm").submit();
return false;
return false;
}
function onUserAdd(event) {
openUserFolderSelector(null, "user");
openUserFolderSelector(null, "user");
preventDefault(event);
preventDefault(event);
}
function removeUserCallback(http) {
var node = http.callbackData;
var node = http.callbackData;
if (http.readyState == 4
&& http.status == 204)
node.parentNode.removeChild(node);
node.parentNode.removeChild(node);
else
log("error deleting user: " + node.getAttribute("id"));
log("error deleting user: " + node.getAttribute("id"));
}
function onUserRemove(event) {
var userList = $("userList");
var nodes = userList.getSelectedRows();
var userList = $("userList");
var nodes = userList.getSelectedRows();
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeUserFromAcls?uid=";
var baseURL = elements.join("/");
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeUserFromAcls?uid=";
var baseURL = elements.join("/");
for (var i = 0; i < nodes.length; i++) {
var userId = nodes[i].getAttribute("id");
triggerAjaxRequest(baseURL + userId, removeUserCallback, nodes[i]);
}
preventDefault(event);
for (var i = 0; i < nodes.length; i++) {
var userId = nodes[i].getAttribute("id");
triggerAjaxRequest(baseURL + userId, removeUserCallback, nodes[i]);
}
preventDefault(event);
}
function subscribeToFolder(refreshCallback, refreshCallbackData) {
var result = true;
if (UserLogin != refreshCallbackData["folder"]) {
result = addUser(refreshCallbackData["folderName"],
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]);
return result;
var result = true;
if (UserLogin != refreshCallbackData["folder"]) {
result = addUser(refreshCallbackData["folderName"],
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]);
return result;
}
function openRightsForUserID(userID) {
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "userRights?uid=" + userID;
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "userRights?uid=" + userID;
window.open(elements.join("/"), "",
"width=" + AclEditor.userRightsWidth
+ ",height=" + AclEditor.userRightsHeight
+ ",resizable=0,scrollbars=0,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0,copyhistory=0");
window.open(elements.join("/"), "",
"width=" + AclEditor.userRightsWidth
+ ",height=" + AclEditor.userRightsHeight
+ ",resizable=0,scrollbars=0,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0,copyhistory=0");
}
function openRightsForUser(button) {
var nodes = $("userList").getSelectedRows();
if (nodes.length > 0)
openRightsForUserID(nodes[0].getAttribute("id"));
openRightsForUserID(nodes[0].getAttribute("id"));
return false;
}
function openRightsForDefaultUser(event) {
openRightsForUserID(defaultUserID);
preventDefault(event);
openRightsForUserID(defaultUserID);
preventDefault(event);
}
function onOpenUserRights(event) {
openRightsForUser();
preventDefault(event);
openRightsForUser();
preventDefault(event);
}
function onAclLoadHandler() {
defaultUserID = $("defaultUserID").value;
var defaultRolesBtn = $("defaultRolesBtn");
if (defaultRolesBtn)
defaultRolesBtn.observe("click", openRightsForDefaultUser);
var ul = $("userList");
var lis = ul.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++)
setEventsOnUserNode(lis[i]);
defaultUserID = $("defaultUserID").value;
var defaultRolesBtn = $("defaultRolesBtn");
if (defaultRolesBtn)
defaultRolesBtn.observe("click", openRightsForDefaultUser);
var ul = $("userList");
var lis = ul.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++)
setEventsOnUserNode(lis[i]);
var buttonArea = $("userSelectorButtons");
if (buttonArea) {
var buttons = buttonArea.childNodesWithTag("a");
buttons[0].observe("click", onUserAdd);
buttons[1].observe("click", onUserRemove);
}
var buttonArea = $("userSelectorButtons");
if (buttonArea) {
var buttons = buttonArea.childNodesWithTag("a");
buttons[0].observe("click", onUserAdd);
buttons[1].observe("click", onUserRemove);
}
AclEditor['userRightsHeight'] = window.opener.getUsersRightsWindowHeight();
AclEditor['userRightsWidth'] = window.opener.getUsersRightsWindowWidth();
AclEditor['userRightsHeight'] = window.opener.getUsersRightsWindowHeight();
AclEditor['userRightsWidth'] = window.opener.getUsersRightsWindowWidth();
}
FastInit.addOnLoad(onAclLoadHandler);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/*
Copyright (C) 2005 SKYRIX Software AG
@@ -88,8 +90,8 @@ function validateAptEditor() {
start = parseInt(document.forms[0]['startTime_time_minute'].value);
end = parseInt(document.forms[0]['endTime_time_minute'].value);
if (start > end) {
alert(labels.validate_endbeforestart);
return false;
alert(labels.validate_endbeforestart);
return false;
}
}
}
@@ -168,7 +170,7 @@ function onComposeToUndecidedAttendees()
attendees.each(function(item) {
var address = item.firstChild.nodeValue.trim() + " <" + item.readAttribute("email") + ">";
addresses.push(address);
});
});
if (window.opener)
window.opener.openMailTo(addresses.join(","));
}
@@ -390,11 +392,11 @@ function onMailTo(event) {
function getMenus() {
AppointmentEditor.attendeesMenu = new Array(onPopupAttendeesWindow,
"-",
onComposeToAllAttendees,
onComposeToUndecidedAttendees,
"-",
null);
"-",
onComposeToAllAttendees,
onComposeToUndecidedAttendees,
"-",
null);
var attendeesMenu = $('attendeesMenu');
attendeesMenu.prepareVisibility = onAttendeesMenuPrepareVisibility;
@@ -403,17 +405,17 @@ function getMenus() {
}
function onAppointmentEditorLoad() {
assignCalendar('startTime_date');
assignCalendar('endTime_date');
assignCalendar('startTime_date');
assignCalendar('endTime_date');
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'end': {'date': $("endTime_date"),
'hour': $("endTime_time_hour"),
'minute': $("endTime_time_minute")}};
initTimeWidgets(widgets);
initializeAttendeesHref();
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'end': {'date': $("endTime_date"),
'hour': $("endTime_time_hour"),
'minute': $("endTime_time_minute")}};
initTimeWidgets(widgets);
initializeAttendeesHref();
}
FastInit.addOnLoad(onAppointmentEditorLoad);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
var resultsDiv;
var address;
var awaitingFreeBusyRequests = new Array();
@@ -37,22 +39,22 @@ function onContactKeydown(event) {
}
}
else if (event.keyCode == 0
|| event.keyCode == 8 // Backspace
|| event.keyCode == 32 // Space
|| event.keyCode > 47) {
this.setAttribute("modified", "1");
this.confirmedValue = null;
this.uid = null;
this.hasfreebusy = false;
attendeesEditor.currentField = this;
if (this.value.length > 0 && !attendeesEditor.delayedSearch) {
attendeesEditor.delayedSearch = true;
setTimeout("performSearch()", attendeesEditor.delay);
}
else if (this.value.length == 0) {
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
}
|| event.keyCode == 8 // Backspace
|| event.keyCode == 32 // Space
|| event.keyCode > 47) {
this.setAttribute("modified", "1");
this.confirmedValue = null;
this.uid = null;
this.hasfreebusy = false;
attendeesEditor.currentField = this;
if (this.value.length > 0 && !attendeesEditor.delayedSearch) {
attendeesEditor.delayedSearch = true;
setTimeout("performSearch()", attendeesEditor.delay);
}
else if (this.value.length == 0) {
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
}
}
else if (event.keyCode == 13) {
preventDefault(event);
@@ -69,22 +71,22 @@ function onContactKeydown(event) {
attendeesEditor.currentField = this;
if (event.keyCode == 38) { // Up arrow
if (attendeesEditor.selectedIndex > 0) {
var attendees = $('attendeesMenu').select("li");
attendees[attendeesEditor.selectedIndex--].removeClassName("selected");
attendees[attendeesEditor.selectedIndex].addClassName("selected");
this.value = this.confirmedValue = attendees[attendeesEditor.selectedIndex].firstChild.nodeValue.trim();
this.uid = attendees[attendeesEditor.selectedIndex].uid;
var attendees = $('attendeesMenu').select("li");
attendees[attendeesEditor.selectedIndex--].removeClassName("selected");
attendees[attendeesEditor.selectedIndex].addClassName("selected");
this.value = this.confirmedValue = attendees[attendeesEditor.selectedIndex].firstChild.nodeValue.trim();
this.uid = attendees[attendeesEditor.selectedIndex].uid;
}
}
else if (event.keyCode == 40) { // Down arrow
var attendees = $('attendeesMenu').select("li");
if (attendees.size() - 1 > attendeesEditor.selectedIndex) {
if (attendeesEditor.selectedIndex >= 0)
attendees[attendeesEditor.selectedIndex].removeClassName("selected");
attendeesEditor.selectedIndex++;
attendees[attendeesEditor.selectedIndex].addClassName("selected");
this.value = this.confirmedValue = attendees[attendeesEditor.selectedIndex].firstChild.nodeValue.trim();
this.uid = attendees[attendeesEditor.selectedIndex].uid;
if (attendeesEditor.selectedIndex >= 0)
attendees[attendeesEditor.selectedIndex].removeClassName("selected");
attendeesEditor.selectedIndex++;
attendees[attendeesEditor.selectedIndex].addClassName("selected");
this.value = this.confirmedValue = attendees[attendeesEditor.selectedIndex].firstChild.nodeValue.trim();
this.uid = attendees[attendeesEditor.selectedIndex].uid;
}
}
}
@@ -100,9 +102,9 @@ function performSearch() {
}
if (attendeesEditor.currentField.value.trim().length > 0) {
var urlstr = ( UserFolderURL + "Contacts/contactSearch?search="
+ escape(attendeesEditor.currentField.value) );
+ escape(attendeesEditor.currentField.value) );
document.contactLookupAjaxRequest =
triggerAjaxRequest(urlstr, performSearchCallback, attendeesEditor.currentField);
triggerAjaxRequest(urlstr, performSearchCallback, attendeesEditor.currentField);
}
}
attendeesEditor.delayedSearch = false;
@@ -120,69 +122,69 @@ function performSearchCallback(http) {
var data = http.responseText.evalJSON(true);
if (data.length > 1) {
$(list.childNodesWithTag("li")).each(function(item) {
item.remove();
});
$(list.childNodesWithTag("li")).each(function(item) {
item.remove();
});
// Populate popup menu
for (var i = 0; i < data.length; i++) {
var contact = data[i];
var completeEmail = contact["name"] + " <" + contact["email"] + ">";
var node = document.createElement("li");
list.appendChild(node);
node.uid = contact["uid"];
node.appendChild(document.createTextNode(completeEmail));
$(node).observe("mousedown", onAttendeeResultClick);
}
// Populate popup menu
for (var i = 0; i < data.length; i++) {
var contact = data[i];
var completeEmail = contact["name"] + " <" + contact["email"] + ">";
var node = document.createElement("li");
list.appendChild(node);
node.uid = contact["uid"];
node.appendChild(document.createTextNode(completeEmail));
$(node).observe("mousedown", onAttendeeResultClick);
}
// Show popup menu
var offsetScroll = Element.cumulativeScrollOffset(attendeesEditor.currentField);
var offset = Element.cumulativeOffset(attendeesEditor.currentField);
var top = offset[1] - offsetScroll[1] + node.offsetHeight + 3;
var height = 'auto';
var heightDiff = window.height() - offset[1];
var nodeHeight = node.getHeight();
// Show popup menu
var offsetScroll = Element.cumulativeScrollOffset(attendeesEditor.currentField);
var offset = Element.cumulativeOffset(attendeesEditor.currentField);
var top = offset[1] - offsetScroll[1] + node.offsetHeight + 3;
var height = 'auto';
var heightDiff = window.height() - offset[1];
var nodeHeight = node.getHeight();
if ((data.length * nodeHeight) > heightDiff)
// Limit the size of the popup to the window height, minus 12 pixels
height = parseInt(heightDiff/nodeHeight) * nodeHeight - 12 + 'px';
if ((data.length * nodeHeight) > heightDiff)
// Limit the size of the popup to the window height, minus 12 pixels
height = parseInt(heightDiff/nodeHeight) * nodeHeight - 12 + 'px';
menu.setStyle({ top: top + "px",
left: offset[0] + "px",
height: height,
visibility: "visible" });
menu.scrollTop = 0;
menu.setStyle({ top: top + "px",
left: offset[0] + "px",
height: height,
visibility: "visible" });
menu.scrollTop = 0;
document.currentPopupMenu = menu;
$(document.body).observe("click", onBodyClickMenuHandler);
document.currentPopupMenu = menu;
$(document.body).observe("click", onBodyClickMenuHandler);
}
else {
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
if (data.length == 1) {
// Single result
var contact = data[0];
if (contact["uid"].length > 0)
input.uid = contact["uid"];
var completeEmail = contact["name"] + " <" + contact["email"] + ">";
if (contact["name"].substring(0, input.value.length).toUpperCase()
== input.value.toUpperCase())
input.value = completeEmail;
else
// The result matches email address, not user name
input.value += ' >> ' + completeEmail;
input.confirmedValue = completeEmail;
var end = input.value.length;
$(input).selectText(start, end);
if (data.length == 1) {
// Single result
var contact = data[0];
if (contact["uid"].length > 0)
input.uid = contact["uid"];
var completeEmail = contact["name"] + " <" + contact["email"] + ">";
if (contact["name"].substring(0, input.value.length).toUpperCase()
== input.value.toUpperCase())
input.value = completeEmail;
else
// The result matches email address, not user name
input.value += ' >> ' + completeEmail;
input.confirmedValue = completeEmail;
var end = input.value.length;
$(input).selectText(start, end);
attendeesEditor.selectedIndex = -1;
}
attendeesEditor.selectedIndex = -1;
}
}
}
else
if (document.currentPopupMenu)
hideMenu(document.currentPopupMenu);
hideMenu(document.currentPopupMenu);
document.contactLookupAjaxRequest = null;
}
}
@@ -271,34 +273,34 @@ function redisplayFreeBusyZone() {
}
function newAttendee(event) {
var table = $("freeBusyAttendees");
var tbody = table.tBodies[0];
var model = tbody.rows[tbody.rows.length - 1];
var futureRow = tbody.rows[tbody.rows.length - 2];
var newRow = model.cloneNode(true);
tbody.insertBefore(newRow, futureRow);
var table = $("freeBusyAttendees");
var tbody = table.tBodies[0];
var model = tbody.rows[tbody.rows.length - 1];
var futureRow = tbody.rows[tbody.rows.length - 2];
var newRow = model.cloneNode(true);
tbody.insertBefore(newRow, futureRow);
$(newRow).removeClassName("attendeeModel");
$(newRow).removeClassName("attendeeModel");
var input = $(newRow).down("input");
input.observe("keydown", onContactKeydown);
input.observe("blur", checkAttendee);
var input = $(newRow).down("input");
input.observe("keydown", onContactKeydown);
input.observe("blur", checkAttendee);
input.focussed = true;
input.activate();
input.focussed = true;
input.activate();
table = $("freeBusyData");
tbody = table.tBodies[0];
model = tbody.rows[tbody.rows.length - 1];
futureRow = tbody.rows[tbody.rows.length - 2];
newRow = model.cloneNode(true);
tbody.insertBefore(newRow, futureRow);
$(newRow).removeClassName("dataModel");
table = $("freeBusyData");
tbody = table.tBodies[0];
model = tbody.rows[tbody.rows.length - 1];
futureRow = tbody.rows[tbody.rows.length - 2];
newRow = model.cloneNode(true);
tbody.insertBefore(newRow, futureRow);
$(newRow).removeClassName("dataModel");
var attendeesDiv = $$('TABLE#freeBusy TD.freeBusyAttendees DIV').first();
var dataDiv = $$('TABLE#freeBusy TD.freeBusyData DIV').first();
var attendeesDiv = $$('TABLE#freeBusy TD.freeBusyAttendees DIV').first();
var dataDiv = $$('TABLE#freeBusy TD.freeBusyData DIV').first();
dataDiv.scrollTop = attendeesDiv.scrollTop;
dataDiv.scrollTop = attendeesDiv.scrollTop;
}
function checkAttendee() {
@@ -330,7 +332,7 @@ function checkAttendee() {
}
if (!this.hasfreebusy) {
if (this.uid && this.confirmedValue)
this.value = this.confirmedValue;
this.value = this.confirmedValue;
displayFreeBusyForNode(this);
this.hasfreebusy = true;
}
@@ -348,27 +350,27 @@ function displayFreeBusyForNode(input) {
awaitingFreeBusyRequests.push(input);
else {
for (var i = 0; i < nodes.length; i++) {
$(nodes[i]).removeClassName("noFreeBusy");
$(nodes[i]).innerHTML = ('<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>');
$(nodes[i]).removeClassName("noFreeBusy");
$(nodes[i]).innerHTML = ('<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>');
}
if (document.contactFreeBusyAjaxRequest) {
// Abort any pending request
document.contactFreeBusyAjaxRequest.aborted = true;
document.contactFreeBusyAjaxRequest.abort();
// Abort any pending request
document.contactFreeBusyAjaxRequest.aborted = true;
document.contactFreeBusyAjaxRequest.abort();
}
var sd = $('startTime_date').valueAsShortDateString();
var ed = $('endTime_date').valueAsShortDateString();
var urlstr = ( UserFolderURL + "../" + input.uid
+ "/freebusy.ifb/ajaxRead?"
+ "sday=" + sd + "&eday=" + ed + "&additional=" +
additionalDays );
+ "/freebusy.ifb/ajaxRead?"
+ "sday=" + sd + "&eday=" + ed + "&additional=" +
additionalDays );
document.contactFreeBusyAjaxRequest
= triggerAjaxRequest(urlstr,
updateFreeBusyDataCallback,
input);
= triggerAjaxRequest(urlstr,
updateFreeBusyDataCallback,
input);
}
} else {
for (var i = 0; i < nodes.length; i++) {
@@ -406,7 +408,7 @@ function updateFreeBusyDataCallback(http) {
var nodes = $("freeBusyData").tBodies[0].rows[rowIndex].cells;
for (var i = 0; i < slots.length; i++) {
if (slots[i] != '0')
setSlot(nodes, i, slots[i]);
setSlot(nodes, i, slots[i]);
}
}
document.contactFreeBusyAjaxRequest = null;
@@ -427,254 +429,254 @@ function resetAllFreeBusys() {
}
function initializeWindowButtons() {
var okButton = $("okButton");
var cancelButton = $("cancelButton");
var okButton = $("okButton");
var cancelButton = $("cancelButton");
okButton.observe("click", onEditorOkClick, false);
cancelButton.observe("click", onEditorCancelClick, false);
okButton.observe("click", onEditorOkClick, false);
cancelButton.observe("click", onEditorCancelClick, false);
var buttons = $("freeBusyViewButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
buttons = $("freeBusyZoomButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
buttons = $("freeBusyButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
var buttons = $("freeBusyViewButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
buttons = $("freeBusyZoomButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
buttons = $("freeBusyButtons").childNodesWithTag("a");
for (var i = 0; i < buttons.length; i++)
buttons[i].observe("click", listRowMouseDownHandler, false);
}
function onEditorOkClick(event) {
preventDefault(event);
preventDefault(event);
attendeesEditor.names = new Array();
attendeesEditor.UIDs = new Array();
attendeesEditor.emails = new Array();
attendeesEditor.states = new Array();
attendeesEditor.names = new Array();
attendeesEditor.UIDs = new Array();
attendeesEditor.emails = new Array();
attendeesEditor.states = new Array();
var table = $("freeBusy");
var inputs = table.getElementsByTagName("input");
for (var i = 0; i < inputs.length - 2; i++) {
var row = $(inputs[i]).up("tr");
var name = extractEmailName(inputs[i].value);
var email = extractEmailAddress(inputs[i].value);
var uid = "";
if (inputs[i].uid)
uid = inputs[i].uid;
if (!(name && name.length > 0))
if (inputs[i].uid)
name = inputs[i].uid;
else
name = email;
var state = "needs-action";
if (row.hasClassName("accepted"))
state = "accepted";
else if (row.hasClassName("declined"))
state = "declined";
var pos = attendeesEditor.emails.indexOf(email);
if (pos == -1)
pos = attendeesEditor.emails.length;
attendeesEditor.names[pos] = name;
attendeesEditor.UIDs[pos] = uid;
attendeesEditor.emails[pos] = email;
attendeesEditor.states[pos] = state;
}
parent$("attendeesNames").value = attendeesEditor.names.join(",");
parent$("attendeesUIDs").value = attendeesEditor.UIDs.join(",");
parent$("attendeesEmails").value = attendeesEditor.emails.join(",");
parent$("attendeesStates").value = attendeesEditor.states.join(",");
window.opener.refreshAttendees();
var table = $("freeBusy");
var inputs = table.getElementsByTagName("input");
for (var i = 0; i < inputs.length - 2; i++) {
var row = $(inputs[i]).up("tr");
var name = extractEmailName(inputs[i].value);
var email = extractEmailAddress(inputs[i].value);
var uid = "";
if (inputs[i].uid)
uid = inputs[i].uid;
if (!(name && name.length > 0))
if (inputs[i].uid)
name = inputs[i].uid;
else
name = email;
var state = "needs-action";
if (row.hasClassName("accepted"))
state = "accepted";
else if (row.hasClassName("declined"))
state = "declined";
var pos = attendeesEditor.emails.indexOf(email);
if (pos == -1)
pos = attendeesEditor.emails.length;
attendeesEditor.names[pos] = name;
attendeesEditor.UIDs[pos] = uid;
attendeesEditor.emails[pos] = email;
attendeesEditor.states[pos] = state;
}
parent$("attendeesNames").value = attendeesEditor.names.join(",");
parent$("attendeesUIDs").value = attendeesEditor.UIDs.join(",");
parent$("attendeesEmails").value = attendeesEditor.emails.join(",");
parent$("attendeesStates").value = attendeesEditor.states.join(",");
window.opener.refreshAttendees();
updateParentDateFields("startTime", "startTime");
updateParentDateFields("endTime", "endTime");
updateParentDateFields("startTime", "startTime");
updateParentDateFields("endTime", "endTime");
window.close();
window.close();
}
function onEditorCancelClick(event) {
preventDefault(event);
window.close();
preventDefault(event);
window.close();
}
function synchronizeWithParent(srcWidgetName, dstWidgetName) {
var srcDate = parent$(srcWidgetName + "_date");
var dstDate = $(dstWidgetName + "_date");
dstDate.value = srcDate.value;
dstDate.updateShadowValue(srcDate);
var srcDate = parent$(srcWidgetName + "_date");
var dstDate = $(dstWidgetName + "_date");
dstDate.value = srcDate.value;
dstDate.updateShadowValue(srcDate);
var srcHour = parent$(srcWidgetName + "_time_hour");
var dstHour = $(dstWidgetName + "_time_hour");
dstHour.value = srcHour.value;
dstHour.updateShadowValue(srcHour);
var srcHour = parent$(srcWidgetName + "_time_hour");
var dstHour = $(dstWidgetName + "_time_hour");
dstHour.value = srcHour.value;
dstHour.updateShadowValue(srcHour);
var srcMinute = parent$(srcWidgetName + "_time_minute");
var dstMinute = $(dstWidgetName + "_time_minute");
dstMinute.value = srcMinute.value;
dstMinute.updateShadowValue(dstMinute);
var srcMinute = parent$(srcWidgetName + "_time_minute");
var dstMinute = $(dstWidgetName + "_time_minute");
dstMinute.value = srcMinute.value;
dstMinute.updateShadowValue(dstMinute);
}
function updateParentDateFields(srcWidgetName, dstWidgetName) {
var srcDate = $(srcWidgetName + "_date");
var dstDate = parent$(dstWidgetName + "_date");
dstDate.value = srcDate.value;
var srcDate = $(srcWidgetName + "_date");
var dstDate = parent$(dstWidgetName + "_date");
dstDate.value = srcDate.value;
var srcHour = $(srcWidgetName + "_time_hour");
var dstHour = parent$(dstWidgetName + "_time_hour");
dstHour.value = srcHour.value;
var srcHour = $(srcWidgetName + "_time_hour");
var dstHour = parent$(dstWidgetName + "_time_hour");
dstHour.value = srcHour.value;
var srcMinute = $(srcWidgetName + "_time_minute");
var dstMinute = parent$(dstWidgetName + "_time_minute");
dstMinute.value = srcMinute.value;
var srcMinute = $(srcWidgetName + "_time_minute");
var dstMinute = parent$(dstWidgetName + "_time_minute");
dstMinute.value = srcMinute.value;
}
function onTimeWidgetChange() {
redisplayFreeBusyZone();
redisplayFreeBusyZone();
}
function onTimeDateWidgetChange() {
var table = $("freeBusyHeader");
var rows = table.select("tr");
for (var i = 0; i < rows.length; i++) {
for (var j = rows[i].cells.length - 1; j > -1; j--) {
rows[i].deleteCell(j);
}
}
var table = $("freeBusyHeader");
var rows = table.select("tr");
for (var i = 0; i < rows.length; i++) {
for (var j = rows[i].cells.length - 1; j > -1; j--) {
rows[i].deleteCell(j);
}
}
table = $("freeBusyData");
rows = table.select("tr");
for (var i = 0; i < rows.length; i++) {
for (var j = rows[i].cells.length - 1; j > -1; j--) {
rows[i].deleteCell(j);
}
}
table = $("freeBusyData");
rows = table.select("tr");
for (var i = 0; i < rows.length; i++) {
for (var j = rows[i].cells.length - 1; j > -1; j--) {
rows[i].deleteCell(j);
}
}
prepareTableHeaders();
prepareTableRows();
redisplayFreeBusyZone();
resetAllFreeBusys();
prepareTableHeaders();
prepareTableRows();
redisplayFreeBusyZone();
resetAllFreeBusys();
}
function prepareTableHeaders() {
var startTimeDate = $("startTime_date");
var startDate = startTimeDate.valueAsDate();
var startTimeDate = $("startTime_date");
var startDate = startTimeDate.valueAsDate();
var endTimeDate = $("endTime_date");
var endDate = endTimeDate.valueAsDate();
endDate.setTime(endDate.getTime() + (additionalDays * 86400000));
var endTimeDate = $("endTime_date");
var endDate = endTimeDate.valueAsDate();
endDate.setTime(endDate.getTime() + (additionalDays * 86400000));
var rows = $("freeBusyHeader").rows;
var days = startDate.daysUpTo(endDate);
for (var i = 0; i < days.length; i++) {
var header1 = document.createElement("th");
header1.colSpan = (dayEndHour - dayStartHour) + 1;
header1.appendChild(document.createTextNode(days[i].toLocaleDateString()));
rows[0].appendChild(header1);
for (var hour = dayStartHour; hour < (dayEndHour + 1); hour++) {
var header2 = document.createElement("th");
var text = hour + ":00";
if (hour < 10)
text = "0" + text;
header2.appendChild(document.createTextNode(text));
rows[1].appendChild(header2);
var rows = $("freeBusyHeader").rows;
var days = startDate.daysUpTo(endDate);
for (var i = 0; i < days.length; i++) {
var header1 = document.createElement("th");
header1.colSpan = (dayEndHour - dayStartHour) + 1;
header1.appendChild(document.createTextNode(days[i].toLocaleDateString()));
rows[0].appendChild(header1);
for (var hour = dayStartHour; hour < (dayEndHour + 1); hour++) {
var header2 = document.createElement("th");
var text = hour + ":00";
if (hour < 10)
text = "0" + text;
header2.appendChild(document.createTextNode(text));
rows[1].appendChild(header2);
var header3 = document.createElement("th");
for (var span = 0; span < 4; span++) {
var spanElement = document.createElement("span");
$(spanElement).addClassName("freeBusyZoneElement");
header3.appendChild(spanElement);
}
rows[2].appendChild(header3);
}
}
var header3 = document.createElement("th");
for (var span = 0; span < 4; span++) {
var spanElement = document.createElement("span");
$(spanElement).addClassName("freeBusyZoneElement");
header3.appendChild(spanElement);
}
rows[2].appendChild(header3);
}
}
}
function prepareTableRows() {
var startTimeDate = $("startTime_date");
var startDate = startTimeDate.valueAsDate();
var startTimeDate = $("startTime_date");
var startDate = startTimeDate.valueAsDate();
var endTimeDate = $("endTime_date");
var endDate = endTimeDate.valueAsDate();
endDate.setTime(endDate.getTime() + (additionalDays * 86400000));
var endTimeDate = $("endTime_date");
var endDate = endTimeDate.valueAsDate();
endDate.setTime(endDate.getTime() + (additionalDays * 86400000));
var rows = $("freeBusyData").tBodies[0].rows;
var days = startDate.daysUpTo(endDate);
var width = $('freeBusyHeader').getWidth();
$("freeBusyData").setStyle({ width: width + 'px' });
for (var i = 0; i < days.length; i++)
for (var rowNbr = 0; rowNbr < rows.length; rowNbr++)
for (var hour = dayStartHour; hour < (dayEndHour + 1); hour++)
rows[rowNbr].appendChild(document.createElement("td"));
var rows = $("freeBusyData").tBodies[0].rows;
var days = startDate.daysUpTo(endDate);
var width = $('freeBusyHeader').getWidth();
$("freeBusyData").setStyle({ width: width + 'px' });
for (var i = 0; i < days.length; i++)
for (var rowNbr = 0; rowNbr < rows.length; rowNbr++)
for (var hour = dayStartHour; hour < (dayEndHour + 1); hour++)
rows[rowNbr].appendChild(document.createElement("td"));
}
function prepareAttendees() {
var value = parent$("attendeesNames").value;
var tableAttendees = $("freeBusyAttendees");
var tableData = $("freeBusyData");
if (value.length > 0) {
attendeesEditor.names = parent$("attendeesNames").value.split(",");
attendeesEditor.UIDs = parent$("attendeesUIDs").value.split(",");
attendeesEditor.emails = parent$("attendeesEmails").value.split(",");
attendeesEditor.states = parent$("attendeesStates").value.split(",");
var value = parent$("attendeesNames").value;
var tableAttendees = $("freeBusyAttendees");
var tableData = $("freeBusyData");
if (value.length > 0) {
attendeesEditor.names = parent$("attendeesNames").value.split(",");
attendeesEditor.UIDs = parent$("attendeesUIDs").value.split(",");
attendeesEditor.emails = parent$("attendeesEmails").value.split(",");
attendeesEditor.states = parent$("attendeesStates").value.split(",");
var tbodyAttendees = tableAttendees.tBodies[0];
var modelAttendee = tbodyAttendees.rows[tbodyAttendees.rows.length - 1];
var newAttendeeRow = tbodyAttendees.rows[tbodyAttendees.rows.length - 2];
var tbodyAttendees = tableAttendees.tBodies[0];
var modelAttendee = tbodyAttendees.rows[tbodyAttendees.rows.length - 1];
var newAttendeeRow = tbodyAttendees.rows[tbodyAttendees.rows.length - 2];
var tbodyData = tableData.tBodies[0];
var modelData = tbodyData.rows[tbodyData.rows.length - 1];
var newDataRow = tbodyData.rows[tbodyData.rows.length - 2];
var tbodyData = tableData.tBodies[0];
var modelData = tbodyData.rows[tbodyData.rows.length - 1];
var newDataRow = tbodyData.rows[tbodyData.rows.length - 2];
for (var i = 0; i < attendeesEditor.names.length; i++) {
var row = modelAttendee.cloneNode(true);
tbodyAttendees.insertBefore(row, newAttendeeRow);
$(row).removeClassName("attendeeModel");
$(row).addClassName(attendeesEditor.states[i]);
var input = $(row).down("input");
var value = "";
if (attendeesEditor.names[i].length > 0
&& attendeesEditor.names[i] != attendeesEditor.emails[i])
value += attendeesEditor.names[i] + " ";
value += "<" + attendeesEditor.emails[i] + ">";
input.value = value;
if (attendeesEditor.UIDs[i].length > 0)
input.uid = attendeesEditor.UIDs[i];
input.setAttribute("name", "");
input.setAttribute("modified", "0");
input.observe("blur", checkAttendee);
input.observe("keydown", onContactKeydown);
for (var i = 0; i < attendeesEditor.names.length; i++) {
var row = modelAttendee.cloneNode(true);
tbodyAttendees.insertBefore(row, newAttendeeRow);
$(row).removeClassName("attendeeModel");
$(row).addClassName(attendeesEditor.states[i]);
var input = $(row).down("input");
var value = "";
if (attendeesEditor.names[i].length > 0
&& attendeesEditor.names[i] != attendeesEditor.emails[i])
value += attendeesEditor.names[i] + " ";
value += "<" + attendeesEditor.emails[i] + ">";
input.value = value;
if (attendeesEditor.UIDs[i].length > 0)
input.uid = attendeesEditor.UIDs[i];
input.setAttribute("name", "");
input.setAttribute("modified", "0");
input.observe("blur", checkAttendee);
input.observe("keydown", onContactKeydown);
row = modelData.cloneNode(true);
tbodyData.insertBefore(row, newDataRow);
$(row).removeClassName("dataModel");
row = modelData.cloneNode(true);
tbodyData.insertBefore(row, newDataRow);
$(row).removeClassName("dataModel");
displayFreeBusyForNode(input);
}
}
else {
attendeesEditor.names = new Array();
attendeesEditor.UIDs = new Array();
attendeesEditor.emails = new Array();
//newAttendee(null);
}
displayFreeBusyForNode(input);
}
}
else {
attendeesEditor.names = new Array();
attendeesEditor.UIDs = new Array();
attendeesEditor.emails = new Array();
//newAttendee(null);
}
var inputs = tableAttendees.select("input");
inputs[inputs.length - 2].setAttribute("autocomplete", "off");
inputs[inputs.length - 2].observe("click", newAttendee);
var inputs = tableAttendees.select("input");
inputs[inputs.length - 2].setAttribute("autocomplete", "off");
inputs[inputs.length - 2].observe("click", newAttendee);
}
function onWindowResize(event) {
var view = $('freeBusyView');
var attendeesCell = $$('TABLE#freeBusy TD.freeBusyAttendees').first();
var headerDiv = $$('TABLE#freeBusy TD.freeBusyHeader DIV').first();
var attendeesDiv = $$('TABLE#freeBusy TD.freeBusyAttendees DIV').first();
var dataDiv = $$('TABLE#freeBusy TD.freeBusyData DIV').first();
var width = view.getWidth() - attendeesCell.getWidth();
var height = view.getHeight() - headerDiv.getHeight();
var view = $('freeBusyView');
var attendeesCell = $$('TABLE#freeBusy TD.freeBusyAttendees').first();
var headerDiv = $$('TABLE#freeBusy TD.freeBusyHeader DIV').first();
var attendeesDiv = $$('TABLE#freeBusy TD.freeBusyAttendees DIV').first();
var dataDiv = $$('TABLE#freeBusy TD.freeBusyData DIV').first();
var width = view.getWidth() - attendeesCell.getWidth();
var height = view.getHeight() - headerDiv.getHeight();
attendeesDiv.setStyle({ height: (height - 20) + 'px' });
headerDiv.setStyle({ width: (width - 20) + 'px' });
dataDiv.setStyle({ width: (width - 4) + 'px',
height: (height - 2) + 'px' });
attendeesDiv.setStyle({ height: (height - 20) + 'px' });
headerDiv.setStyle({ width: (width - 20) + 'px' });
dataDiv.setStyle({ width: (width - 4) + 'px',
height: (height - 2) + 'px' });
}
function onScroll(event) {
@@ -687,25 +689,25 @@ function onScroll(event) {
}
function onFreeBusyLoadHandler() {
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'end': {'date': $("endTime_date"),
'hour': $("endTime_time_hour"),
'minute': $("endTime_time_minute")}};
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'end': {'date': $("endTime_date"),
'hour': $("endTime_time_hour"),
'minute': $("endTime_time_minute")}};
synchronizeWithParent("startTime", "startTime");
synchronizeWithParent("endTime", "endTime");
synchronizeWithParent("startTime", "startTime");
synchronizeWithParent("endTime", "endTime");
initTimeWidgets(widgets);
initializeWindowButtons();
prepareTableHeaders();
prepareTableRows();
redisplayFreeBusyZone();
prepareAttendees();
onWindowResize(null);
Event.observe(window, "resize", onWindowResize);
$$('TABLE#freeBusy TD.freeBusyData DIV').first().observe("scroll", onScroll);
initTimeWidgets(widgets);
initializeWindowButtons();
prepareTableHeaders();
prepareTableRows();
redisplayFreeBusyZone();
prepareAttendees();
onWindowResize(null);
Event.observe(window, "resize", onWindowResize);
$$('TABLE#freeBusy TD.freeBusyData DIV').first().observe("scroll", onScroll);
}
FastInit.addOnLoad(onFreeBusyLoadHandler);
@@ -713,70 +715,70 @@ FastInit.addOnLoad(onFreeBusyLoadHandler);
/* Functions related to UIxTimeDateControl widget */
function initTimeWidgets(widgets) {
this.timeWidgets = widgets;
this.timeWidgets = widgets;
assignCalendar('startTime_date');
assignCalendar('endTime_date');
assignCalendar('startTime_date');
assignCalendar('endTime_date');
widgets['start']['date'].observe("change",
this.onAdjustTime, false);
widgets['start']['hour'].observe("change",
this.onAdjustTime, false);
widgets['start']['minute'].observe("change",
this.onAdjustTime, false);
widgets['start']['date'].observe("change",
this.onAdjustTime, false);
widgets['start']['hour'].observe("change",
this.onAdjustTime, false);
widgets['start']['minute'].observe("change",
this.onAdjustTime, false);
widgets['end']['date'].observe("change",
this.onAdjustTime, false);
widgets['end']['hour'].observe("change",
this.onAdjustTime, false);
widgets['end']['minute'].observe("change",
this.onAdjustTime, false);
widgets['end']['date'].observe("change",
this.onAdjustTime, false);
widgets['end']['hour'].observe("change",
this.onAdjustTime, false);
widgets['end']['minute'].observe("change",
this.onAdjustTime, false);
var allDayLabel = $("allDay");
if (allDayLabel) {
var input = $(allDayLabel).childNodesWithTag("input")[0];
input.observe("change", onAllDayChanged.bindAsEventListener(input));
if (input.checked) {
for (var type in widgets) {
widgets[type]['hour'].disabled = true;
widgets[type]['minute'].disabled = true;
}
}
}
var allDayLabel = $("allDay");
if (allDayLabel) {
var input = $(allDayLabel).childNodesWithTag("input")[0];
input.observe("change", onAllDayChanged.bindAsEventListener(input));
if (input.checked) {
for (var type in widgets) {
widgets[type]['hour'].disabled = true;
widgets[type]['minute'].disabled = true;
}
}
}
}
function onAdjustTime(event) {
var endDate = window.getEndDate();
var startDate = window.getStartDate();
if ($(this).readAttribute("id").startsWith("start")) {
// Start date was changed
var delta = window.getShadowStartDate().valueOf() -
startDate.valueOf();
var newEndDate = new Date(endDate.valueOf() - delta);
window.setEndDate(newEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['hour'].updateShadowValue();
window.timeWidgets['end']['minute'].updateShadowValue();
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['hour'].updateShadowValue();
window.timeWidgets['start']['minute'].updateShadowValue();
}
else {
// End date was changed
var delta = endDate.valueOf() - startDate.valueOf();
if (delta < 0) {
alert(labels.validate_endbeforestart);
var oldEndDate = window.getShadowEndDate();
window.setEndDate(oldEndDate);
var endDate = window.getEndDate();
var startDate = window.getStartDate();
if ($(this).readAttribute("id").startsWith("start")) {
// Start date was changed
var delta = window.getShadowStartDate().valueOf() -
startDate.valueOf();
var newEndDate = new Date(endDate.valueOf() - delta);
window.setEndDate(newEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['hour'].updateShadowValue();
window.timeWidgets['end']['minute'].updateShadowValue();
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['hour'].updateShadowValue();
window.timeWidgets['start']['minute'].updateShadowValue();
}
else {
// End date was changed
var delta = endDate.valueOf() - startDate.valueOf();
if (delta < 0) {
alert(labels.validate_endbeforestart);
var oldEndDate = window.getShadowEndDate();
window.setEndDate(oldEndDate);
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['hour'].updateShadowValue();
window.timeWidgets['end']['minute'].updateShadowValue();
}
}
window.timeWidgets['end']['date'].updateShadowValue();
window.timeWidgets['end']['hour'].updateShadowValue();
window.timeWidgets['end']['minute'].updateShadowValue();
}
}
// Specific function for the attendees editor
onTimeDateWidgetChange();
// Specific function for the attendees editor
onTimeDateWidgetChange();
}
function _getDate(which) {
@@ -814,18 +816,18 @@ function getShadowEndDate() {
}
function _setDate(which, newDate) {
window.timeWidgets[which]['date'].setValueAsDate(newDate);
window.timeWidgets[which]['hour'].value = newDate.getHours();
var minutes = newDate.getMinutes();
if (minutes % 15)
minutes += (15 - minutes % 15);
window.timeWidgets[which]['minute'].value = minutes;
window.timeWidgets[which]['date'].setValueAsDate(newDate);
window.timeWidgets[which]['hour'].value = newDate.getHours();
var minutes = newDate.getMinutes();
if (minutes % 15)
minutes += (15 - minutes % 15);
window.timeWidgets[which]['minute'].value = minutes;
}
function setStartDate(newStartDate) {
this._setDate('start', newStartDate);
this._setDate('start', newStartDate);
}
function setEndDate(newEndDate) {
this._setDate('end', newEndDate);
this._setDate('end', newEndDate);
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onCancelClick(event) {
window.close();
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onLoadCalendarProperties() {
var colorButton = $("colorButton");
var calendarColor = $("calendarColor");
@@ -27,10 +29,10 @@ function onOKClick(event) {
function onColorClick(event) {
var cPicker = window.open(ApplicationBaseURL + "colorPicker", "colorPicker",
"width=250,height=200,resizable=0,scrollbars=0"
+ "toolbar=0,location=0,directories=0,status=0,"
+ "menubar=0,copyhistory=0", "test"
);
"width=250,height=200,resizable=0,scrollbars=0"
+ "toolbar=0,location=0,directories=0,status=0,"
+ "menubar=0,copyhistory=0", "test"
);
cPicker.focus();
preventDefault(event);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onLoadColorPicker(event) {
showColorPicker();
}

View File

@@ -1,8 +1,10 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onPopupAttendeesWindow(event) {
if (event)
preventDefault(event);
window.open(ApplicationBaseURL + "/editAttendees", null,
"width=803,height=573");
"width=803,height=573");
return false;
}
@@ -30,14 +32,14 @@ function onPopupUrlWindow(event) {
if (documentHref.childNodes.length > 0) {
documentHref.childNodes[0].nodeValue = newUrl;
if (newUrl.length > 0)
documentLabel.setStyle({ display: "block" });
documentLabel.setStyle({ display: "block" });
else
documentLabel.setStyle({ display: "none" });
documentLabel.setStyle({ display: "none" });
}
else {
documentHref.appendChild(document.createTextNode(newUrl));
if (newUrl.length > 0)
documentLabel.setStyle({ display: "block" });
documentLabel.setStyle({ display: "block" });
}
urlInput.value = newUrl;
}
@@ -124,9 +126,9 @@ function onComponentEditorLoad(event) {
var menuItems = $("itemPrivacyList").childNodesWithTag("li");
for (var i = 0; i < menuItems.length; i++)
menuItems[i].observe("mousedown",
onMenuSetClassification.bindAsEventListener(menuItems[i]),
false);
menuItems[i].observe("mousedown",
onMenuSetClassification.bindAsEventListener(menuItems[i]),
false);
$("repeatHref").observe("click", onPopupRecurrenceWindow);
$("repeatList").observe("change", onPopupRecurrenceWindow);
@@ -143,7 +145,7 @@ function onPopupRecurrenceWindow(event) {
repeatHref.show();
if (event)
window.open(ApplicationBaseURL + "editRecurrence", null,
"width=500,height=400");
"width=500,height=400");
}
else
repeatHref.hide();

View File

@@ -1,22 +1,24 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/*
Copyright (C) 2005 SKYRIX Software AG
Copyright (C) 2005 SKYRIX Software AG
This file is part of OpenGroupware.org.
This file is part of OpenGroupware.org.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
var uixEmailUsr =
@@ -37,21 +39,21 @@ function unescapeCallbackParameter(s) {
function copyContact(type, email, uid, sn,
cn, givenName, telephoneNumber, facsimileTelephoneNumber,
mobile, postalAddress, homePostalAddress,
departmentNumber, l)
mobile, postalAddress, homePostalAddress,
departmentNumber, l)
{
// var type = arguments[0];
// var email = arguments[1];
// var uid = arguments[2];
// var sn = arguments[3];
// var givenName = arguments[4];
// var telephoneNumber = arguments[5];
// var facsimileTelephoneNumber = arguments[6];
// var mobile = arguments[7];
// var postalAddress = arguments[8];
// var homePostalAddress = arguments[9];
// var departmentNumber = arguments[10];
// var l = arguments[11];
// var type = arguments[0];
// var email = arguments[1];
// var uid = arguments[2];
// var sn = arguments[3];
// var givenName = arguments[4];
// var telephoneNumber = arguments[5];
// var facsimileTelephoneNumber = arguments[6];
// var mobile = arguments[7];
// var postalAddress = arguments[8];
// var homePostalAddress = arguments[9];
// var departmentNumber = arguments[10];
// var l = arguments[11];
var e;
e = $('cn');
e.setAttribute('value', unescapeCallbackParameter(cn));
@@ -128,8 +130,8 @@ function onFnNewValue(event) {
}
function onEditorCancelClick(event) {
preventDefault(event);
window.close();
preventDefault(event);
window.close();
}
function initEditorForm() {

View File

@@ -1,100 +1,102 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onSearchFormSubmit() {
var searchValue = $("searchValue");
var url = (UserFolderURL
+ "foldersSearch?search=" + escape(searchValue.value)
+ "&type=" + window.opener.userFolderType);
+ "foldersSearch?search=" + escape(searchValue.value)
+ "&type=" + window.opener.userFolderType);
if (document.userFoldersRequest) {
document.userFoldersRequest.aborted = true;
document.userFoldersRequest.abort();
document.userFoldersRequest.aborted = true;
document.userFoldersRequest.abort();
}
document.userFoldersRequest
= triggerAjaxRequest(url, userFoldersCallback);
= triggerAjaxRequest(url, userFoldersCallback);
return false;
}
function addLineToTree(tree, parent, line) {
var offset = 0;
var offset = 0;
var nodes = line.split(";");
if (window.opener.userFolderType == "user"
|| nodes.length > 1) {
var parentNode = nodes[0];
var userInfos = parentNode.split(":");
var email = userInfos[1] + " &lt;" + userInfos[2] + "&gt;";
tree.add(parent, 0, email, 0, '#', userInfos[0], 'person',
'', '',
ResourcesURL + '/abcard.gif',
ResourcesURL + '/abcard.gif');
for (var i = 1; i < nodes.length; i++) {
var folderInfos = nodes[i].split(":");
var icon = ResourcesURL + '/';
if (folderInfos[2] == 'Contact')
icon += 'tb-mail-addressbook-flat-16x16.png';
else
icon += 'calendar-folder-16x16.png';
var folderId = userInfos[0] + ":" + folderInfos[1];
var name = folderInfos[0]; // name has the format "Folername (Firstname Lastname <email>)"
var pos = name.lastIndexOf(' (')
if (pos != -1)
name = name.substring(0, pos); // strip the part with fullname and email
tree.add(parent + i, parent, name, 0, '#', folderId,
folderInfos[2] + '-folder', '', '', icon, icon);
}
offset = nodes.length - 1;
}
// else
// window.alert("nope:" + window.opener.userFolderType);
var nodes = line.split(";");
if (window.opener.userFolderType == "user"
|| nodes.length > 1) {
var parentNode = nodes[0];
var userInfos = parentNode.split(":");
var email = userInfos[1] + " &lt;" + userInfos[2] + "&gt;";
tree.add(parent, 0, email, 0, '#', userInfos[0], 'person',
'', '',
ResourcesURL + '/abcard.gif',
ResourcesURL + '/abcard.gif');
for (var i = 1; i < nodes.length; i++) {
var folderInfos = nodes[i].split(":");
var icon = ResourcesURL + '/';
if (folderInfos[2] == 'Contact')
icon += 'tb-mail-addressbook-flat-16x16.png';
else
icon += 'calendar-folder-16x16.png';
var folderId = userInfos[0] + ":" + folderInfos[1];
var name = folderInfos[0]; // name has the format "Folername (Firstname Lastname <email>)"
var pos = name.lastIndexOf(' (')
if (pos != -1)
name = name.substring(0, pos); // strip the part with fullname and email
tree.add(parent + i, parent, name, 0, '#', folderId,
folderInfos[2] + '-folder', '', '', icon, icon);
}
offset = nodes.length - 1;
}
// else
// window.alert("nope:" + window.opener.userFolderType);
return offset;
return offset;
}
function buildTree(response) {
d = new dTree("d");
d.config.folderLlinks = true;
d.config.hideRoot = true;
d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif';
d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.folderOpen = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.node = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.line = ResourcesURL + '/tbtv_line_17x17.gif';
d.icon.join = ResourcesURL + '/tbtv_junction_17x17.gif';
d.icon.joinBottom = ResourcesURL + '/tbtv_corner_17x17.gif';
d.icon.plus = ResourcesURL + '/tbtv_plus_17x17.gif';
d.icon.plusBottom = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
d.icon.minus = ResourcesURL + '/tbtv_minus_17x17.gif';
d.icon.minusBottom = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
d.icon.empty = ResourcesURL + '/empty.gif';
d.add(0, -1, '');
d = new dTree("d");
d.config.folderLlinks = true;
d.config.hideRoot = true;
d.icon.root = ResourcesURL + '/tbtv_account_17x17.gif';
d.icon.folder = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.folderOpen = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.node = ResourcesURL + '/tbtv_leaf_corner_17x17.png';
d.icon.line = ResourcesURL + '/tbtv_line_17x17.gif';
d.icon.join = ResourcesURL + '/tbtv_junction_17x17.gif';
d.icon.joinBottom = ResourcesURL + '/tbtv_corner_17x17.gif';
d.icon.plus = ResourcesURL + '/tbtv_plus_17x17.gif';
d.icon.plusBottom = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
d.icon.minus = ResourcesURL + '/tbtv_minus_17x17.gif';
d.icon.minusBottom = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
d.icon.nlPlus = ResourcesURL + '/tbtv_corner_plus_17x17.gif';
d.icon.nlMinus = ResourcesURL + '/tbtv_corner_minus_17x17.gif';
d.icon.empty = ResourcesURL + '/empty.gif';
d.add(0, -1, '');
var lines = response.split("\n");
var offset = 0;
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > 0)
offset += addLineToTree(d, i + 1 + offset, lines[i]);
}
var lines = response.split("\n");
var offset = 0;
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > 0)
offset += addLineToTree(d, i + 1 + offset, lines[i]);
}
return d;
return d;
}
function onFolderTreeItemClick(event) {
preventDefault(event);
preventDefault(event);
var topNode = $("d");
if (topNode.selectedEntry)
topNode.selectedEntry.deselect();
this.selectElement();
topNode.selectedEntry = this;
var topNode = $("d");
if (topNode.selectedEntry)
topNode.selectedEntry.deselect();
this.selectElement();
topNode.selectedEntry = this;
if (window.opener.userFolderType == "user")
$("addButton").disabled = false;
else {
var dataname = this.parentNode.getAttribute("dataname");
$("addButton").disabled = (dataname.indexOf(":") == -1);
};
if (window.opener.userFolderType == "user")
$("addButton").disabled = false;
else {
var dataname = this.parentNode.getAttribute("dataname");
$("addButton").disabled = (dataname.indexOf(":") == -1);
};
}
function userFoldersCallback(http) {
@@ -121,20 +123,20 @@ function onConfirmFolderSelection(event) {
var folderName;
if (window.opener.userFolderType == "user") {
var spans = document.getElementsByClassName("nodeName",
topNode.selectedEntry);
topNode.selectedEntry);
var email = (spans[0].innerHTML
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
folderName = email;
}
else {
log("topNode.selectedEntry: " + topNode.selectedEntry.innerHTML);
var spans1 = topNode.selectedEntry.childNodesWithTag("span");
var spans2 = document.getElementsByClassName("nodeName",
node.parentNode.previousSibling);
node.parentNode.previousSibling);
var email = (spans2[0].innerHTML
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
folderName = spans1[0].innerHTML + ' (' + email + ')';
}
var data = { folderName: folderName, folder: folder, window: window };

View File

@@ -1,5 +1,7 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onCancelClick(event) {
window.close();
window.close();
}
function initACLButtons() {

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onPrintCurrentMessage(event) {
window.print();
@@ -17,8 +19,8 @@ function onICalendarButtonClick(event) {
if (window.opener && window.opener.open && !window.opener.closed && window.messageUID) {
var c = window.opener;
window.opener.triggerAjaxRequest(urlstr,
window.opener.ICalendarButtonCallback,
window.messageUID);
window.opener.ICalendarButtonCallback,
window.messageUID);
}
}
else
@@ -32,9 +34,9 @@ function onMenuDeleteMessage(event) {
var url = ApplicationBaseURL + messageId + "/trash";
window.opener.deleteMessageWithDelay(url,
rowId,
window.opener.Mailer.currentMailbox,
messageId);
rowId,
window.opener.Mailer.currentMailbox,
messageId);
}
window.close();

View File

@@ -1,22 +1,24 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/*
Copyright (C) 2005 SKYRIX Software AG
Copyright (C) 2005 SKYRIX Software AG
This file is part of OpenGroupware.org.
This file is part of OpenGroupware.org.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
/* Dependencies:
@@ -109,7 +111,7 @@ function addressFieldLostFocus(sender) {
for (var i = 1; i < addresses.length; i++) {
var addr = addresses[i].strip();
if (addr.length > 0)
fancyAddRow(false, addr, $(sender).up("tr").down("select").value);
fancyAddRow(false, addr, $(sender).up("tr").down("select").value);
}
}
onWindowResize(null);
@@ -180,7 +182,7 @@ function hasRecipients() {
count = this.getAddressCount();
return (count > 0)
return (count > 0);
}
function initMailToSelection() {

View File

@@ -1,9 +1,11 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onCancelClick(event) {
window.close();
window.close();
}
function initACLButtons() {
$("cancelButton").observe("click", onCancelClick)
$("cancelButton").observe("click", onCancelClick);
}
FastInit.addOnLoad(initACLButtons);

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onPrintCurrentMessage(event) {
window.print();

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
function onCancelButtonClick(event) {
window.close();
}
@@ -5,10 +7,10 @@ function onCancelButtonClick(event) {
function onThisButtonClick(event) {
if (action == 'edit')
window.opener.performEventEdition(calendarFolder, componentName,
recurrenceName);
recurrenceName);
else if (action == 'delete')
window.opener.performEventDeletion(calendarFolder, componentName,
recurrenceName);
recurrenceName);
else
window.alert("Invalid action: " + action);

View File

@@ -1,13 +1,15 @@
function savePreferences(sender) {
$("mainForm").submit();
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
return false;
function savePreferences(sender) {
$("mainForm").submit();
return false;
}
function _setupEvents(enable) {
var widgets = [ "timezone", "shortDateFormat", "longDateFormat",
"timeFormat", "weekStartDay", "dayStartTime", "dayEndTime",
"firstWeek", "messageCheck" ];
"timeFormat", "weekStartDay", "dayStartTime", "dayEndTime",
"firstWeek", "messageCheck" ];
for (var i = 0; i < widgets.length; i++) {
var widget = $(widgets[i]);
if (widget) {

View File

@@ -1,11 +1,13 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
var RecurrenceEditor = {
types: new Array("Daily", "Weekly", "Monthly", "Yearly"),
currentRepeatType: 0
}
};
function onRepeatTypeChange(event) {
setRepeatType(parseInt(this.value));
}
function onRepeatTypeChange(event) {
setRepeatType(parseInt(this.value));
}
function setRepeatType(type) {
var elements;
@@ -16,8 +18,8 @@ function setRepeatType(type) {
elements = $$("TABLE TR.recurrence" + RecurrenceEditor.types[i]);
if (i != type)
elements.each(function(row) {
row.hide();
});
row.hide();
});
}
elements = $$("TABLE TR.recurrence" + RecurrenceEditor.types[type]);
elements.each(function(row) {
@@ -32,8 +34,8 @@ function getSelectedDays(periodType) {
var dayPrefix = periodType + "Day";
elementsArray.each(function(item) {
if (isNodeSelected(item)) {
var label = "" + item.getAttribute("id");
days.push(label.substr(dayPrefix.length));
var label = "" + item.getAttribute("id");
days.push(label.substr(dayPrefix.length));
}
});
return days.join(",");
@@ -97,14 +99,14 @@ function initializeFormValues() {
else if (repeatType == 1) {
// Repeat weekly
$('weeklyWeeksField').value = parent$("repeat1").value;
// log ("div: " + weekDiv);
// log ("days: " + parent$("repeat2").value);
// log ("div: " + weekDiv);
// log ("days: " + parent$("repeat2").value);
var days = "" + parent$("repeat2").value;
if (days.length > 0) {
var daysArray = days.split(",");
daysArray.each(function(index) {
$("weekDay"+index).addClassName("_selected");
});
$("weekDay"+index).addClassName("_selected");
});
}
}
else if (repeatType == 2) {
@@ -117,8 +119,8 @@ function initializeFormValues() {
if (days.length > 0) {
var daysArray = days.split(",");
daysArray.each(function(index) {
$("monthDay" + index).addClassName("_selected");
});
$("monthDay" + index).addClassName("_selected");
});
}
}
else if (repeatType == 3) {
@@ -169,12 +171,12 @@ function handleDailyRecurrence() {
var v = "" + $('dailyDaysField').value;
if (v.length > 0) {
v = parseInt(v);
// log("v: " + v);
// log("v: " + v);
if (!isNaN(v) && v > 0) {
validate = true;
showError = false;
parent$("repeat1").value = radioValue;
parent$("repeat2").value = v;
validate = true;
showError = false;
parent$("repeat1").value = radioValue;
parent$("repeat2").value = v;
}
}
@@ -228,13 +230,13 @@ function handleMonthlyRecurrence() {
if (fieldValue.length > 0) {
var v = parseInt(fieldValue);
if (!isNaN(v) && v > 0) {
validate = true;
showError = false;
parent$("repeat1").value = fieldValue;
parent$("repeat2").value = radioValue;
parent$("repeat3").value = $('monthlyRepeat').value;
parent$("repeat4").value = $('monthlyDay').value;
parent$("repeat5").value = getSelectedDays("month");
validate = true;
showError = false;
parent$("repeat1").value = fieldValue;
parent$("repeat2").value = radioValue;
parent$("repeat3").value = $('monthlyRepeat').value;
parent$("repeat4").value = $('monthlyDay').value;
parent$("repeat5").value = getSelectedDays("month");
}
}
@@ -262,15 +264,15 @@ function handleYearlyRecurrence() {
// We check if the yearlyYearsField really contains an integer
var v = parseInt(fieldValue);
if (!isNaN(v) && v > 0) {
validate = true;
showError = false;
parent$("repeat1").value = fieldValue;
parent$("repeat2").value = radioValue;
parent$("repeat3").value = $('yearlyDayField').value;
parent$("repeat4").value = $('yearlyMonth1').value;
parent$("repeat5").value = $('yearlyRepeat').value;
parent$("repeat6").value = $('yearlyDay').value;
parent$("repeat7").value = $('yearlyMonth2').value;
validate = true;
showError = false;
parent$("repeat1").value = fieldValue;
parent$("repeat2").value = radioValue;
parent$("repeat3").value = $('yearlyDayField').value;
parent$("repeat4").value = $('yearlyMonth1').value;
parent$("repeat5").value = $('yearlyRepeat').value;
parent$("repeat6").value = $('yearlyDay').value;
parent$("repeat7").value = $('yearlyMonth2').value;
}
}
@@ -295,9 +297,9 @@ function handleRange() {
// We check if the rangeAppointmentsField really contains an integer
var v = parseInt(fieldValue);
if (!isNaN(v) && v > 0) {
validate = true;
showError = false;
parent$("range2").value = fieldValue;
validate = true;
showError = false;
parent$("range2").value = fieldValue;
}
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
var contactSelectorAction = 'calendars-contacts';
function uixEarlierDate(date1, date2) {
@@ -180,112 +182,112 @@ function dueDayAsShortString() {
}
this._getDate = function(which) {
var date = window.timeWidgets[which]['date'].valueAsDate();
date.setHours( window.timeWidgets[which]['hour'].value );
date.setMinutes( window.timeWidgets[which]['minute'].value );
var date = window.timeWidgets[which]['date'].valueAsDate();
date.setHours( window.timeWidgets[which]['hour'].value );
date.setMinutes( window.timeWidgets[which]['minute'].value );
return date;
return date;
};
this._getShadowDate = function(which) {
var date = window.timeWidgets[which]['date'].getAttribute("shadow-value").asDate();
var intValue = parseInt(window.timeWidgets[which]['hour'].getAttribute("shadow-value"));
date.setHours(intValue);
intValue = parseInt(window.timeWidgets[which]['minute'].getAttribute("shadow-value"));
date.setMinutes(intValue);
// window.alert("shadow: " + date);
var date = window.timeWidgets[which]['date'].getAttribute("shadow-value").asDate();
var intValue = parseInt(window.timeWidgets[which]['hour'].getAttribute("shadow-value"));
date.setHours(intValue);
intValue = parseInt(window.timeWidgets[which]['minute'].getAttribute("shadow-value"));
date.setMinutes(intValue);
// window.alert("shadow: " + date);
return date;
return date;
};
this.getStartDate = function() {
return this._getDate('start');
return this._getDate('start');
};
this.getDueDate = function() {
return this._getDate('due');
return this._getDate('due');
};
this.getShadowStartDate = function() {
return this._getShadowDate('start');
return this._getShadowDate('start');
};
this.getShadowDueDate = function() {
return this._getShadowDate('due');
return this._getShadowDate('due');
};
this._setDate = function(which, newDate) {
window.timeWidgets[which]['date'].setValueAsDate(newDate);
window.timeWidgets[which]['hour'].value = newDate.getHours();
var minutes = newDate.getMinutes();
if (minutes % 15)
window.timeWidgets[which]['date'].setValueAsDate(newDate);
window.timeWidgets[which]['hour'].value = newDate.getHours();
var minutes = newDate.getMinutes();
if (minutes % 15)
minutes += (15 - minutes % 15);
window.timeWidgets[which]['minute'].value = minutes;
window.timeWidgets[which]['minute'].value = minutes;
};
this.setStartDate = function(newStartDate) {
this._setDate('start', newStartDate);
this._setDate('start', newStartDate);
};
this.setDueDate = function(newDueDate) {
// window.alert(newDueDate);
this._setDate('due', newDueDate);
// window.alert(newDueDate);
this._setDate('due', newDueDate);
};
this.onAdjustTime = function(event) {
onAdjustDueTime(event);
onAdjustDueTime(event);
};
this.onAdjustDueTime = function(event) {
if (!window.timeWidgets['due']['date'].disabled) {
var dateDelta = (window.getStartDate().valueOf()
- window.getShadowStartDate().valueOf());
var newDueDate = new Date(window.getDueDate().valueOf() + dateDelta);
window.setDueDate(newDueDate);
}
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['hour'].updateShadowValue();
window.timeWidgets['start']['minute'].updateShadowValue();
var dateDelta = (window.getStartDate().valueOf()
- window.getShadowStartDate().valueOf());
var newDueDate = new Date(window.getDueDate().valueOf() + dateDelta);
window.setDueDate(newDueDate);
}
window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['hour'].updateShadowValue();
window.timeWidgets['start']['minute'].updateShadowValue();
};
this.initTimeWidgets = function (widgets) {
this.timeWidgets = widgets;
this.timeWidgets = widgets;
widgets['start']['date'].observe("change", this.onAdjustDueTime, false);
widgets['start']['hour'].observe("change", this.onAdjustDueTime, false);
widgets['start']['minute'].observe("change", this.onAdjustDueTime, false);
widgets['start']['date'].observe("change", this.onAdjustDueTime, false);
widgets['start']['hour'].observe("change", this.onAdjustDueTime, false);
widgets['start']['minute'].observe("change", this.onAdjustDueTime, false);
};
function onStatusListChange(event) {
var value = $("statusList").value;
var statusTimeDate = $("statusTime_date");
var statusPercent = $("statusPercent");
var value = $("statusList").value;
var statusTimeDate = $("statusTime_date");
var statusPercent = $("statusPercent");
if (value == "WONoSelectionString") {
statusTimeDate.disabled = true;
statusPercent.disabled = true;
statusPercent.value = "";
}
else if (value == "0") {
statusTimeDate.disabled = true;
statusPercent.disabled = false;
}
else if (value == "1") {
statusTimeDate.disabled = true;
statusPercent.disabled = false;
}
else if (value == "2") {
statusTimeDate.disabled = false;
statusPercent.disabled = false;
statusPercent.value = "100";
}
else if (value == "3") {
statusTimeDate.disabled = true;
statusPercent.disabled = true;
}
else {
statusTimeDate.disabled = true;
}
if (value == "WONoSelectionString") {
statusTimeDate.disabled = true;
statusPercent.disabled = true;
statusPercent.value = "";
}
else if (value == "0") {
statusTimeDate.disabled = true;
statusPercent.disabled = false;
}
else if (value == "1") {
statusTimeDate.disabled = true;
statusPercent.disabled = false;
}
else if (value == "2") {
statusTimeDate.disabled = false;
statusPercent.disabled = false;
statusPercent.value = "100";
}
else if (value == "3") {
statusTimeDate.disabled = true;
statusPercent.disabled = true;
}
else {
statusTimeDate.disabled = true;
}
}
function initializeStatusLine() {
@@ -294,17 +296,17 @@ function initializeStatusLine() {
}
function onTaskEditorLoad() {
assignCalendar('startTime_date');
assignCalendar('dueTime_date');
assignCalendar('statusTime_date');
assignCalendar('startTime_date');
assignCalendar('dueTime_date');
assignCalendar('statusTime_date');
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'due': {'date': $("dueTime_date"),
'hour': $("dueTime_time_hour"),
'minute': $("dueTime_time_minute")}};
initTimeWidgets(widgets);
var widgets = {'start': {'date': $("startTime_date"),
'hour': $("startTime_time_hour"),
'minute': $("startTime_time_minute")},
'due': {'date': $("dueTime_date"),
'hour': $("dueTime_time_hour"),
'minute': $("dueTime_time_minute")}};
initTimeWidgets(widgets);
initializeStatusLine();
}

View File

@@ -1,3 +1,5 @@
/* -*- Mode: java; tab-width: 2; c-tab-always-indent: t; indent-tabs-mode: t; c-basic-offset: 2 -*- */
/*
Copyright (C) 2005 SKYRIX Software AG
@@ -49,13 +51,13 @@ function getAllScopeElements(scope) {
for (var i = 0; i < scope.childNodes.length; i++)
if (typeof(scope.childNodes[i]) == "object"
&& scope.childNodes[i].tagName
&& scope.childNodes[i].tagName != '')
&& scope.childNodes[i].tagName
&& scope.childNodes[i].tagName != '')
{
elements.push(scope.childNodes[i]);
var childElements = getAllElements(scope.childNodes[i]);
if (childElements.length > 0)
elements.push(childElements);
elements.push(scope.childNodes[i]);
var childElements = getAllElements(scope.childNodes[i]);
if (childElements.length > 0)
elements.push(childElements);
}
return elements;
@@ -74,15 +76,15 @@ function getAllElements(scope) {
{
elements = getAllScopeElements(scope);
if (scope == document)
allDocumentElements = elements;
allDocumentElements = elements;
}
return elements;
}
function createElement(tagName, id, classes,
attributes, htmlAttributes,
parentNode) {
attributes, htmlAttributes,
parentNode) {
var newElement = $(document.createElement(tagName));
if (id)
newElement.setAttribute("id", id);
@@ -91,7 +93,7 @@ function createElement(tagName, id, classes,
newElement.addClassName(classes);
else
for (var i = 0; i < classes.length; i++)
newElement.addClassName(classes[i]);
newElement.addClassName(classes[i]);
}
if (attributes)
for (var i in attributes)
@@ -123,7 +125,7 @@ function URLForFolderID(folderID) {
if (folderInfos.length > 1) {
url = UserFolderURL + "../" + folderInfos[0];
if (!(folderInfos[0].endsWith('/')
|| folderInfos[1].startsWith('/')))
|| folderInfos[1].startsWith('/')))
url += '/';
url += folderInfos[1];
}
@@ -200,7 +202,7 @@ function openUserFolderSelector(callback, type) {
urlstr += '/';
urlstr += ("../../" + UserLogin + "/Contacts/userFolders");
var w = window.open(urlstr, "_blank",
"width=322,height=250,resizable=1,scrollbars=0,location=0");
"width=322,height=250,resizable=1,scrollbars=0,location=0");
w.opener = window;
window.userFolderCallback = callback;
window.userFolderType = type;
@@ -215,7 +217,7 @@ function openContactWindow(url, wId) {
}
var w = window.open(url, wId,
"width=450,height=600,resizable=0,location=0");
"width=450,height=600,resizable=0,location=0");
w.focus();
return w;
@@ -234,9 +236,9 @@ function openMailComposeWindow(url, wId) {
parentWindow = window.opener;
var w = parentWindow.open(url, wId,
"width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0"
+ ",copyhistory=0");
"width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0"
+ ",copyhistory=0");
w.focus();
@@ -257,8 +259,8 @@ function openMailTo(senderMailTo) {
if (mailto.length > 0)
openMailComposeWindow(ApplicationBaseURL
+ "../Mail/compose?mailto=" + mailto
+ ((subject.length > 0)?"?subject="+subject:""));
+ "../Mail/compose?mailto=" + mailto
+ ((subject.length > 0)?"?subject="+subject:""));
return false; /* stop following the link */
}
@@ -267,10 +269,10 @@ function deleteDraft(url) {
/* this is called by UIxMailEditor with window.opener */
new Ajax.Request(url, {
method: 'post',
onFailure: function(transport) {
log("draftDeleteCallback: problem during ajax request: " + transport.status);
onFailure: function(transport) {
log("draftDeleteCallback: problem during ajax request: " + transport.status);
}
});
});
}
function createHTTPClient() {
@@ -301,9 +303,9 @@ function appendDifferentiator(url) {
function onAjaxRequestStateChange(http) {
try {
if (http.readyState == 4
&& activeAjaxRequests > 0) {
&& activeAjaxRequests > 0) {
if (!http.aborted)
http.callback(http);
http.callback(http);
activeAjaxRequests--;
checkAjaxRequestsState();
http.onreadystatechange = Prototype.emptyFunction;
@@ -337,8 +339,8 @@ function getContrastingTextColor(bgColor) {
// Consider all colors with less than 56% brightness as dark colors and
// use white as the foreground color, otherwise use black.
return ((brightness < 144)
? "white"
: "black");
? "white"
: "black");
}
function triggerAjaxRequest(url, callback, userdata, content, headers) {
@@ -354,21 +356,21 @@ function triggerAjaxRequest(url, callback, userdata, content, headers) {
http.callback = callback;
http.callbackData = userdata;
http.onreadystatechange = function() { onAjaxRequestStateChange(http) };
// = function() {
// // log ("state changed (" + http.readyState + "): " + url);
// };
// = function() {
// // log ("state changed (" + http.readyState + "): " + url);
// };
var hasContentLength = false;
if (headers) {
for (var i in headers) {
if (i.toLowerCase() == "content-length")
hasContentLength = true;
http.setRequestHeader(i, headers[i]);
if (i.toLowerCase() == "content-length")
hasContentLength = true;
http.setRequestHeader(i, headers[i]);
}
}
if (!hasContentLength) {
var cLength = "0";
if (content)
cLength = "" + content.length;
cLength = "" + content.length;
http.setRequestHeader("Content-Length", "" + cLength);
}
http.send(content ? content : "");
@@ -384,7 +386,7 @@ function startAnimation(parent, nextNode) {
var anim = $("progressIndicator");
if (!anim) {
anim = createElement("img", "progressIndicator", null,
{src: ResourcesURL + "/busy.gif"});
{src: ResourcesURL + "/busy.gif"});
anim.setStyle({ visibility: "hidden" });
if (nextNode)
parent.insertBefore(anim, nextNode);
@@ -405,7 +407,7 @@ function checkAjaxRequestsState() {
startAnimation(toolbar);
}
else if (!activeAjaxRequests
&& progressImage)
&& progressImage)
progressImage.parentNode.removeChild(progressImage);
}
@@ -422,7 +424,7 @@ function isSafari() {
function isHttpStatus204(status) {
return (status == 204 || // Firefox
(isSafari() && typeof(status) == 'undefined') || // Safari
(isSafari() && typeof(status) == 'undefined') || // Safari
status == 1223); // IE
}
@@ -517,7 +519,7 @@ function acceptMultiSelect(node) {
var attribute = node.getAttribute('multiselect');
if (attribute && attribute.length > 0) {
log("node '" + node.getAttribute("id")
+ "' is still using old-stylemultiselect!");
+ "' is still using old-stylemultiselect!");
response = (attribute.toLowerCase() == 'yes');
}
else
@@ -543,8 +545,8 @@ function onRowClick(event) {
var items = list.childNodesWithTag("li");
for (var i = 0; i < items.length; i++) {
if (items[i] == node) {
rowIndex = i;
break;
rowIndex = i;
break;
}
}
}
@@ -554,14 +556,14 @@ function onRowClick(event) {
if (initialSelection.length > 0
&& initialSelection.indexOf(node) >= 0
&& (!isSafari() && !Event.isLeftClick(event) ||
isSafari() && event.ctrlKey == 1)) // Event.isLeftClick is not supported in Safari
isSafari() && event.ctrlKey == 1)) // Event.isLeftClick is not supported in Safari
// Ignore non primary-click (ie right-click) inside current selection
return true;
if ((event.shiftKey == 1 || event.metaKey == 1)
&& (lastClickedRow >= 0)
&& (acceptMultiSelect(node.parentNode)
|| acceptMultiSelect(node.parentNode.parentNode))) {
|| acceptMultiSelect(node.parentNode.parentNode))) {
if (event.shiftKey) {
$(node.parentNode).selectRange(lastClickedRow, rowIndex);
} else if (isNodeSelected(node)) {
@@ -579,7 +581,7 @@ function onRowClick(event) {
// Selection has changed; fire mousedown event
var parentNode = node.parentNode;
if (parentNode.tagName == 'TBODY')
parentNode = parentNode.parentNode;
parentNode = parentNode.parentNode;
parentNode.fire("mousedown");
}
}
@@ -612,12 +614,12 @@ function popupMenu(event, menuId, target) {
var menuTop = Event.pointerY(event) + deltaY;
var menuLeft = Event.pointerX(event) + deltaX;
var heightDiff = (window.height()
- (menuTop + popup.offsetHeight));
- (menuTop + popup.offsetHeight));
if (heightDiff < 0)
menuTop += heightDiff;
var leftDiff = (window.width()
- (menuLeft + popup.offsetWidth));
- (menuLeft + popup.offsetWidth));
if (leftDiff < 0)
menuLeft -= popup.offsetWidth;
@@ -625,8 +627,8 @@ function popupMenu(event, menuId, target) {
popup.prepareVisibility();
popup.setStyle({ top: menuTop + "px",
left: menuLeft + "px",
visibility: "visible" });
left: menuLeft + "px",
visibility: "visible" });
document.currentPopupMenu = popup;
@@ -643,7 +645,7 @@ function getParentMenu(node) {
var menure = new RegExp("(^|\s+)menu(\s+|$)", "i");
while (menuNode == null
&& currentNode)
&& currentNode)
if (menure.test(currentNode.className))
menuNode = currentNode;
else
@@ -781,13 +783,13 @@ function backtrace() {
while (func)
{
if (func.name)
{
str += " " + func.name;
if (this)
{
str += " " + func.name;
if (this)
str += " (" + this + ")";
}
}
else
str += "[anonymous]\n";
str += "[anonymous]\n";
str += "\n";
func = func.caller;
@@ -812,18 +814,18 @@ function popupSubmenu(event) {
submenuNode.prepareVisibility();
var menuTop = (parentNode.offsetTop - 1
+ this.offsetTop);
+ this.offsetTop);
if (window.height()
< (menuTop + submenuNode.offsetHeight))
< (menuTop + submenuNode.offsetHeight))
if (submenuNode.offsetHeight < window.height())
menuTop = window.height() - submenuNode.offsetHeight;
menuTop = window.height() - submenuNode.offsetHeight;
else
menuTop = 0;
menuTop = 0;
var menuLeft = (parentNode.offsetLeft + parentNode.offsetWidth - 3);
if (window.width()
< (menuLeft + submenuNode.offsetWidth))
< (menuLeft + submenuNode.offsetWidth))
menuLeft = parentNode.offsetLeft - submenuNode.offsetWidth + 3;
this.mouseInside = true;
@@ -834,8 +836,8 @@ function popupSubmenu(event) {
parentNode.observe("mouseover", onMouseEnteredParentMenu);
$(this).addClassName("submenu-selected");
submenuNode.setStyle({ top: menuTop + "px",
left: menuLeft + "px",
visibility: "visible" });
left: menuLeft + "px",
visibility: "visible" });
preventDefault(event);
}
}
@@ -872,8 +874,8 @@ function popupSearchMenu(event) {
var popup = $(menuId);
offset = Position.positionedOffset(this);
popup.setStyle({ top: this.offsetHeight + "px",
left: (offset[0] + 3) + "px",
visibility: "visible" });
left: (offset[0] + 3) + "px",
visibility: "visible" });
document.currentPopupMenu = popup;
$(document.body).observe("click", onBodyClickMenuHandler);
@@ -979,7 +981,7 @@ function onSearchFormSubmit(event) {
if (searchValue.value != searchValue.ghostPhrase
&& (searchValue.value != searchValue.lastSearch
|| searchValue.value.strip().length > 0)) {
|| searchValue.value.strip().length > 0)) {
search["criteria"] = searchCriteria.value;
search["value"] = searchValue.value;
searchValue.lastSearch = searchValue.value;
@@ -999,13 +1001,13 @@ function initCriteria() {
searchValue.ghostPhrase = firstOption.innerHTML;
searchValue.lastSearch = "";
if (searchValue.value == '') {
searchValue.value = firstOption.innerHTML;
searchValue.setAttribute("modified", "");
searchValue.setStyle({ color: "#aaa" });
searchValue.value = firstOption.innerHTML;
searchValue.setAttribute("modified", "");
searchValue.setStyle({ color: "#aaa" });
}
// Set the checkmark to the first option
if (searchOptions.chosenNode)
searchOptions.chosenNode.removeClassName("_chosen");
searchOptions.chosenNode.removeClassName("_chosen");
firstOption.addClassName("_chosen");
searchOptions.chosenNode = firstOption;
}
@@ -1026,8 +1028,8 @@ function popupToolbarMenu(node, menuId) {
var offset = $(node).cumulativeOffset();
var top = offset.top + node.offsetHeight;
popup.setStyle({ top: top + "px",
left: offset.left + "px",
visibility: "visible" });
left: offset.left + "px",
visibility: "visible" });
document.currentPopupMenu = popup;
$(document.body).observe("mouseup", onBodyClickMenuHandler);
@@ -1039,7 +1041,7 @@ function folderSubscriptionCallback(http) {
if (http.readyState == 4) {
if (isHttpStatus204(http.status)) {
if (http.callbackData)
http.callbackData["method"](http.callbackData["data"]);
http.callbackData["method"](http.callbackData["data"]);
}
else
window.alert(clabels["Unable to subscribe to that folder!"]);
@@ -1055,7 +1057,7 @@ function subscribeToFolder(refreshCallback, refreshCallbackData) {
var folderPath = folderData[1];
if (username != UserLogin) {
var url = (UserFolderURL + "../" + username
+ folderPath + "/subscribe");
+ folderPath + "/subscribe");
if (document.subscriptionAjaxRequest) {
document.subscriptionAjaxRequest.aborted = true;
document.subscriptionAjaxRequest.abort();
@@ -1063,8 +1065,8 @@ function subscribeToFolder(refreshCallback, refreshCallbackData) {
var rfCbData = { method: refreshCallback, data: refreshCallbackData };
document.subscriptionAjaxRequest = triggerAjaxRequest(url,
folderSubscriptionCallback,
rfCbData);
folderSubscriptionCallback,
rfCbData);
}
else
refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]);
@@ -1075,7 +1077,7 @@ function folderUnsubscriptionCallback(http) {
removeFolderRequestCount--;
if (isHttpStatus204(http.status)) {
if (http.callbackData)
http.callbackData["method"](http.callbackData["data"]);
http.callbackData["method"](http.callbackData["data"]);
}
else
window.alert(clabels["Unable to unsubscribe from that folder!"]);
@@ -1083,10 +1085,10 @@ function folderUnsubscriptionCallback(http) {
}
function unsubscribeFromFolder(folder, owner, refreshCallback,
refreshCallbackData) {
refreshCallbackData) {
if (document.body.hasClassName("popup")) {
window.opener.unsubscribeFromFolder(folder, refreshCallback,
refreshCallbackData);
refreshCallbackData);
}
else {
if (owner.startsWith('/'))
@@ -1137,10 +1139,10 @@ function getListIndexForFolder(items, owner, folderName) {
if (currentOwner == owner) {
previousOwner = currentOwner;
if (currentFolderName > folderName)
break;
break;
}
else if (previousOwner ||
(currentOwner != UserLogin && currentOwner > owner))
(currentOwner != UserLogin && currentOwner > owner))
break;
else if (currentOwner == "nobody")
break;
@@ -1164,12 +1166,12 @@ function initTabs() {
var firstTab = null;
var nodes = $(list[0]).childNodesWithTag("li");
for (var i = 0; i < nodes.length; i++) {
var currentNode = $(nodes[i]);
if (!firstTab)
firstTab = currentNode;
currentNode.observe("mousedown", onTabMouseDown);
currentNode.observe("click", onTabClick);
//$(currentNode.getAttribute("target")).hide();
var currentNode = $(nodes[i]);
if (!firstTab)
firstTab = currentNode;
currentNode.observe("mousedown", onTabMouseDown);
currentNode.observe("click", onTabClick);
//$(currentNode.getAttribute("target")).hide();
}
firstTab.addClassName("first");
@@ -1189,7 +1191,7 @@ function initMenus() {
for (var menuID in menus) {
var menuDIV = $(menuID);
if (menuDIV)
initMenu(menuDIV, menus[menuID]);
initMenu(menuDIV, menus[menuID]);
}
}
}
@@ -1202,18 +1204,18 @@ function initMenu(menuDIV, callbacks) {
var callback = callbacks[j];
if (callback) {
if (typeof(callback) == "string") {
if (callback == "-")
node.addClassName("separator");
else {
node.submenu = callback;
node.addClassName("submenu");
node.observe("mouseover", popupSubmenu);
}
if (callback == "-")
node.addClassName("separator");
else {
node.submenu = callback;
node.addClassName("submenu");
node.observe("mouseover", popupSubmenu);
}
}
else {
node.observe("mouseup", onBodyClickMenuHandler);
node.menuCallback = callback;
node.observe("click", onMenuClickHandler);
node.observe("mouseup", onBodyClickMenuHandler);
node.menuCallback = callback;
node.observe("click", onMenuClickHandler);
}
}
else
@@ -1254,7 +1256,7 @@ function getTopWindow() {
var currentWindow = window;
while (!topWindow) {
if (currentWindow.document.body.hasClassName("popup")
&& currentWindow.opener)
&& currentWindow.opener)
currentWindow = currentWindow.opener;
else
topWindow = currentWindow;
@@ -1349,9 +1351,9 @@ function indexColor(number) {
var index = 0;
while (currentValue) {
if (currentValue & 1)
colorTable[index]++;
colorTable[index]++;
if (index == 3)
index = 0;
index = 0;
currentValue >>= 1;
index++;
}
@@ -1410,8 +1412,8 @@ function onLoadHandler(event) {
function onBodyClickContextMenu(event) {
if (!(event.target
&& (event.target.tagName == "INPUT"
|| event.target.tagName == "TEXTAREA")))
&& (event.target.tagName == "INPUT"
|| event.target.tagName == "TEXTAREA")))
preventDefault(event);
}
@@ -1431,7 +1433,7 @@ function onLinkBannerClick() {
function onPreferencesClick(event) {
var urlstr = UserFolderURL + "preferences";
var w = window.open(urlstr, "_blank",
"width=430,height=250,resizable=0,scrollbars=0,location=0");
"width=430,height=250,resizable=0,scrollbars=0,location=0");
w.opener = window;
w.focus();
@@ -1445,8 +1447,8 @@ function configureLinkBanner() {
for (var i = 0; i < moduleLinks.length; i++) {
var link = $(moduleLinks[i] + "BannerLink");
if (link) {
link.observe("mousedown", listRowMouseDownHandler);
link.observe("click", onLinkBannerClick);
link.observe("mousedown", listRowMouseDownHandler);
link.observe("click", onLinkBannerClick);
}
}
link = $("preferencesBannerLink");
@@ -1472,9 +1474,9 @@ function createFolder(name, okCB, notOkCB) {
var url = ApplicationBaseURL + "/createFolder?name=" + name;
document.newFolderAjaxRequest
= triggerAjaxRequest(url, createFolderCallback,
{name: name,
okCB: okCB,
notOkCB: notOkCB});
{name: name,
okCB: okCB,
notOkCB: notOkCB});
}
}
@@ -1483,13 +1485,13 @@ function createFolderCallback(http) {
var data = http.callbackData;
if (http.status == 201) {
if (data.okCB)
data.okCB(data.name, "/" + http.responseText, UserLogin);
data.okCB(data.name, "/" + http.responseText, UserLogin);
}
else {
if (data.notOkCB)
data.notOkCB(name);
data.notOkCB(name);
else
log("ajax problem:" + http.status);
log("ajax problem:" + http.status);
}
}
}