]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/HTMLElement.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1261 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / HTMLElement.js
index c78cc95432fa6f66d9fc861a69c2fc1ebac4c6b8..378670cab3f331b715d7f21107133e03a517e9d4 100644 (file)
@@ -125,14 +125,14 @@ Element.addMethods({
     if (document.currentPopupMenu)
       hideMenu(document.currentPopupMenu);
     
-    var menuTop = event.pageY;
-    var menuLeft = event.pageX;
-    var heightDiff = (window.innerHeight
+    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.innerWidth
+    var leftDiff = (window.width()
                    - (menuLeft + popup.offsetWidth));
     if (leftDiff < 0)
       menuLeft -= popup.offsetWidth;
@@ -148,7 +148,8 @@ Element.addMethods({
   attachMenu: function(element, menuName) {
     element = $(element);
     element.sogoContextMenu = $(menuName);
-    Event.observe(element, "contextmenu", element.onContextMenu.bindAsEventListener(element));
+    Event.observe(element, "contextmenu",
+                 element.onContextMenu.bindAsEventListener(element));
   },
 
   select: function(element) {
@@ -156,6 +157,31 @@ Element.addMethods({
     element.addClassName('_selected');
   },
 
+  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]).select();
+      s++;
+    }
+  },
+
   deselect: function(element) {
     element = $(element);
     element.removeClassName('_selected');
@@ -168,6 +194,35 @@ Element.addMethods({
       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();
+    } 
+  },
+
+  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();
+    }
+ }
 
 });