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;
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) {
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');
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();
+ }
+ }
});