]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/generic.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1267 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / generic.js
index 5103916e34e2b9de2e58d8c1bbf8246806a6f281..ce7a12ed45171a4c42d9c14348d16ee1f19d6cc7 100644 (file)
@@ -150,7 +150,8 @@ function URLForFolderID(folderID) {
   var url;
   if (folderInfos.length > 1) {
     url = UserFolderURL + "../" + folderInfos[0];
-    if (!folderInfos[1].startsWith('/'))
+    if (!(folderInfos[0].endsWith('/')
+         || folderInfos[1].startsWith('/')))
       url += '/';
     url += folderInfos[1];
   }
@@ -218,8 +219,13 @@ function openUserFolderSelector(callback, type) {
 }
 
 function openContactWindow(url, wId) {
-  if (!wId)
-    wId = "" + (new Date().getTime());
+  if (typeof wId == "undefined")
+    wId = "_blank";
+  else {
+    var r = new RegExp("[\.\/-]", "g");
+    wId = wId.replace(r, "_");
+  }
+
   var w = window.open(url, wId,
                      "width=450,height=600,resizable=0,location=0");
   w.focus();
@@ -230,12 +236,15 @@ function openContactWindow(url, wId) {
 function openMailComposeWindow(url, wId) {
   var parentWindow = this;
 
-  if (!wId)
-    wId = "" + (new Date().getTime());
-  else
+  if (typeof wId == "undefined")
+    wId = "_blank";
+  else {
+    var r = new RegExp("[\.\/-]", "g");
+    wId = wId.replace(r, "_");
     if (document.body.hasClassName("popup"))
       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"
@@ -248,9 +257,10 @@ function openMailComposeWindow(url, wId) {
 
 function openMailTo(senderMailTo) {
   var mailto = sanitizeMailTo(senderMailTo);
+
   if (mailto.length > 0)
     openMailComposeWindow(ApplicationBaseURL
-                         + "/../Mail/compose?mailto=" + mailto);
+                         + "../Mail/compose?mailto=" + mailto);
 
   return false; /* stop following the link */
 }
@@ -284,7 +294,7 @@ function triggerAjaxRequest(url, callback, userdata) {
   var http = createHTTPClient();
 
   activeAjaxRequests += 1;
-  document.animTimer = setTimeout("checkAjaxRequestsState();", 200);
+  document.animTimer = setTimeout("checkAjaxRequestsState();", 50);
   //url = appendDifferentiator(url);
 
   if (http) {
@@ -292,7 +302,7 @@ function triggerAjaxRequest(url, callback, userdata) {
     http.url = url;
     http.onreadystatechange
       = function() {
-      //log ("state changed (" + http.readyState + "): " + url);
+//       log ("state changed (" + http.readyState + "): " + url);
       try {
        if (http.readyState == 4
            && activeAjaxRequests > 0) {
@@ -516,18 +526,7 @@ function onRowClick(event) {
       var parentNode = node.parentNode;
       if (parentNode.tagName == 'TBODY')
        parentNode = parentNode.parentNode;
-      if (document.createEvent) {
-       var onSelectionChangeEvent;
-       if (isSafari())
-         onSelectionChangeEvent = document.createEvent("UIEvents");
-       else
-         onSelectionChangeEvent = document.createEvent("Events");
-       onSelectionChangeEvent.initEvent("mousedown", true, true);
-       parentNode.dispatchEvent(onSelectionChangeEvent);
-      }
-      else if (document.createEventObject) {
-       parentNode.fireEvent("onmousedown");
-      }
+      parentNode.fire("mousedown");
     }
   }
   lastClickedRow = rowIndex;
@@ -572,13 +571,14 @@ function popupMenu(event, menuId, target) {
 
   if (popup.prepareVisibility)
     popup.prepareVisibility();
+  
   popup.setStyle({ top: menuTop + "px",
                   left: menuLeft + "px",
                   visibility: "visible" });
 
   document.currentPopupMenu = popup;
 
-  Event.observe(document.body, "click", onBodyClickMenuHandler);
+  $(document.body).observe("click", onBodyClickMenuHandler);
 
   preventDefault(event);
 }
@@ -602,7 +602,7 @@ function getParentMenu(node) {
 
 function onBodyClickMenuHandler(event) {
   hideMenu(document.currentPopupMenu);
-  Event.stopObserving(document.body, "click", onBodyClickMenuHandler);
+  document.body.stopObserving("click", onBodyClickMenuHandler);
 
   if (event)
     preventDefault(event);
@@ -617,15 +617,12 @@ function hideMenu(menuNode) {
   }
 
   menuNode.setStyle({ visibility: "hidden" });
-  //   menuNode.hide();
   if (menuNode.parentMenuItem) {
-    Event.stopObserving(menuNode.parentMenuItem, "mouseover",
-                       onMouseEnteredSubmenu);
-    Event.stopObserving(menuNode, "mouseover", onMouseEnteredSubmenu);
-    Event.stopObserving(menuNode.parentMenuItem, "mouseout", onMouseLeftSubmenu);
-    Event.stopObserving(menuNode, "mouseout", onMouseLeftSubmenu);
-    Event.stopObserving(menuNode.parentMenu, "mouseover",
-                       onMouseEnteredParentMenu);
+    menuNode.parentMenuItem.stopObserving("mouseover",onMouseEnteredSubmenu);
+    menuNode.stopObserving("mouseover", onMouseEnteredSubmenu);
+    menuNode.parentMenuItem.stopObserving("mouseout", onMouseLeftSubmenu);
+    menuNode.stopObserving("mouseout", onMouseLeftSubmenu);
+    menuNode.parentMenu.stopObserving("mouseover", onMouseEnteredParentMenu);
     $(menuNode.parentMenuItem).removeClassName("submenu-selected");
     menuNode.parentMenuItem.mouseInside = false;
     menuNode.parentMenuItem = null;
@@ -634,18 +631,7 @@ function hideMenu(menuNode) {
     menuNode.parentMenu = null;
   }
 
-  if (document.createEvent) { // Safari & Mozilla
-    var onhideEvent;
-    if (isSafari())
-      onhideEvent = document.createEvent("UIEvents");
-    else
-      onhideEvent = document.createEvent("Events");
-    onhideEvent.initEvent("mousedown", false, true);
-    menuNode.dispatchEvent(onhideEvent);
-  }
-  else if (document.createEventObject) { // IE
-    menuNode.fireEvent("onmousedown");
-  }
+  $(menuNode).fire("mousedown");
 }
 
 function onMenuEntryClick(event) {
@@ -675,8 +661,8 @@ function initLogConsole() {
   var logConsole = $("logConsole");
   if (logConsole) {
     logConsole.highlighted = false;
-    Event.observe(logConsole, "dblclick", onLogDblClick, false);
-    logConsole.innerHTML = "";
+    logConsole.observe("dblclick", onLogDblClick, false);
+    logConsole.update();
     Event.observe(window, "keydown", onBodyKeyDown);
   }
 }
@@ -778,15 +764,11 @@ function popupSubmenu(event) {
       menuLeft = parentNode.offsetLeft - submenuNode.offsetWidth + 3;
 
     this.mouseInside = true;
-    Event.observe(this, "mouseover",
-                 onMouseEnteredSubmenu.bindAsEventListener(this));
-    Event.observe(submenuNode, "mouseover",
-                 onMouseEnteredSubmenu.bindAsEventListener(submenuNode));
-    Event.observe(this, "mouseout", onMouseLeftSubmenu.bindAsEventListener(this));
-    Event.observe(submenuNode, "mouseout",
-                 onMouseLeftSubmenu.bindAsEventListener(submenuNode));
-    Event.observe(parentNode, "mouseover",
-                 onMouseEnteredParentMenu.bindAsEventListener(parentNode));
+    this.observe("mouseover", onMouseEnteredSubmenu);
+    submenuNode.observe("mouseover", onMouseEnteredSubmenu);
+    this.observe("mouseout", onMouseLeftSubmenu);
+    submenuNode.observe("mouseout", onMouseLeftSubmenu);
+    parentNode.observe("mouseover", onMouseEnteredParentMenu);
     $(this).addClassName("submenu-selected");
     submenuNode.setStyle({ top: menuTop + "px",
                           left: menuLeft + "px",
@@ -831,7 +813,7 @@ function popupSearchMenu(event) {
          visibility: "visible" });
   
     document.currentPopupMenu = popup;
-    Event.observe(document.body, "click", onBodyClickMenuHandler);
+    $(document.body).observe("click", onBodyClickMenuHandler);
   }
 }
 
@@ -867,17 +849,12 @@ function configureSearchField() {
 
   if (!searchValue) return;
 
-  Event.observe(searchValue, "mousedown",
-               onSearchMouseDown.bindAsEventListener(searchValue));
-  Event.observe(searchValue, "click",
-               popupSearchMenu.bindAsEventListener(searchValue));
-  Event.observe(searchValue, "blur",
-               onSearchBlur.bindAsEventListener(searchValue));
-  Event.observe(searchValue, "focus",
-               onSearchFocus.bindAsEventListener(searchValue));
-  Event.observe(searchValue, "keydown",
-               onSearchKeyDown.bindAsEventListener(searchValue));
-
+  searchValue.observe("click", popupSearchMenu);
+  searchValue.observe("blur", onSearchBlur);
+  searchValue.observe("focus", onSearchFocus);
+  searchValue.observe("keydown", onSearchKeyDown);
+  searchValue.observe("mousedown", onSearchMouseDown);
+  
   if (!searchOptions) return;
    
   // Set the checkmark to the first option
@@ -977,7 +954,7 @@ function popupToolbarMenu(node, menuId) {
        visibility: "visible" });
 
   document.currentPopupMenu = popup;
-  Event.observe(document.body, "click", onBodyClickMenuHandler);
+  $(document.body).observe("click", onBodyClickMenuHandler);
 }
 
 /* contact selector */
@@ -1101,10 +1078,8 @@ function initTabs() {
       if (currentNode.tagName == 'LI') {
        if (!firstTab)
          firstTab = i;
-       Event.observe(currentNode, "mousedown",
-                     onTabMouseDown.bindAsEventListener(currentNode));
-       Event.observe(currentNode, "click",
-                     onTabClick.bindAsEventListener(currentNode));
+       $(currentNode).observe("mousedown", onTabMouseDown);
+       $(currentNode).observe("click", onTabClick);
        //$(currentNode.getAttribute("target")).hide();
       }
     }
@@ -1134,9 +1109,7 @@ function initMenu(menuDIV, callbacks) {
   var lis = $(menuDIV.childNodesWithTag("ul")[0]).childNodesWithTag("li");
   for (var j = 0; j < lis.length; j++) {
     var node = $(lis[j]);
-    Event.observe(node, "mousedown",
-                 listRowMouseDownHandler.bindAsEventListener(node),
-                 false);
+    node.observe("mousedown", listRowMouseDownHandler, false);
     var callback = callbacks[j];
     if (callback) {
       if (typeof(callback) == "string") {
@@ -1145,15 +1118,12 @@ function initMenu(menuDIV, callbacks) {
        else {
          node.submenu = callback;
          node.addClassName("submenu");
-         Event.observe(node, "mouseover",
-                       popupSubmenu.bindAsEventListener(node));
+         node.observe("mouseover", popupSubmenu);
        }
       }
       else {
-       Event.observe(node, "mouseup",
-                     onBodyClickMenuHandler);
-       Event.observe(node, "click",
-                     $(callback).bindAsEventListener(node));
+       node.observe("mouseup", onBodyClickMenuHandler);
+       node.observe("click", callback);
       }
     }
     else
@@ -1351,7 +1321,7 @@ function onLoadHandler(event) {
   var progressImage = $("progressIndicator");
   if (progressImage)
     progressImage.parentNode.removeChild(progressImage);
-  Event.observe(document.body, "contextmenu", onBodyClickContextMenu);
+  $(document.body).observe("contextmenu", onBodyClickContextMenu);
 }
 
 function onBodyClickContextMenu(event) {
@@ -1362,8 +1332,8 @@ function configureSortableTableHeaders(table) {
   var headers = $(table).getElementsByClassName("sortableTableHeader");
   for (var i = 0; i < headers.length; i++) {
     var header = headers[i];
-    Event.observe(header, "click", onHeaderClick.bindAsEventListener(header))
-      }
+    $(header).observe("click", onHeaderClick);
+  }
 }
 
 function onLinkBannerClick() {
@@ -1386,13 +1356,13 @@ function configureLinkBanner() {
   if (linkBanner) {
     var anchors = linkBanner.childNodesWithTag("a");
     for (var i = 1; i < 3; i++) {
-      Event.observe(anchors[i], "mousedown", listRowMouseDownHandler);
-      Event.observe(anchors[i], "click", onLinkBannerClick);
+      $(anchors[i]).observe("mousedown", listRowMouseDownHandler);
+      $(anchors[i]).observe("click", onLinkBannerClick);
     }
-    Event.observe(anchors[4], "mousedown", listRowMouseDownHandler);
-    Event.observe(anchors[4], "click", onPreferencesClick);
+    $(anchors[4]).observe("mousedown", listRowMouseDownHandler);
+    $(anchors[4]).observe("click", onPreferencesClick);
     if (anchors.length > 5)
-      Event.observe(anchors[5], "click", toggleLogConsole);
+      $(anchors[5]).observe("click", toggleLogConsole);
   }
 }
 
@@ -1428,7 +1398,13 @@ function createFolderCallback(http) {
   }
 }
 
-addEvent(window, 'load', onLoadHandler);
+function onFinalLoadHandler(event) {
+  var safetyNet = $("javascriptSafetyNet");
+  if (safetyNet)
+    safetyNet.parentNode.removeChild(safetyNet);
+}
+
+FastInit.addOnLoad(onLoadHandler);
 
 function parent$(element) {
   return this.opener.document.getElementById(element);