Author: pyaschenko
Date: 2008-02-05 11:45:30 -0500 (Tue, 05 Feb 2008)
New Revision: 5833
Modified:
trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
Log:
RF-2079, RF-1764, RF-1673
Modified:
trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
===================================================================
---
trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2008-02-05
16:42:16 UTC (rev 5832)
+++
trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2008-02-05
16:45:30 UTC (rev 5833)
@@ -159,6 +159,7 @@
isIE: (!window.opera && /MSIE/.test(navigator.userAgent)),
isIE6: (!window.opera && /MSIE\s*[6][\d,\.]+;/.test(navigator.userAgent)),
isSafari: /Safari/.test(navigator.userAgent),
+ isOpera: !!window.opera,
isObjectEval: (Richfaces.eval!=undefined)
};
Modified:
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
===================================================================
---
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2008-02-05
16:42:16 UTC (rev 5832)
+++
trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js 2008-02-05
16:45:30 UTC (rev 5833)
@@ -35,7 +35,6 @@
var windowRect = Richfaces.Calendar.getWindowViewport();
-
// jointPoint
var ox=baseOffset[0];
var oy=baseOffset[1];
@@ -122,20 +121,45 @@
els.position = 'absolute';
els.display = '';
- if (element.offsetParent && element.offsetParent!=document.body)
+ if (!window.opera)
{
- var parentOffset=Position.cumulativeOffset(element.offsetParent);
+ var parentOffset = element.getOffsetParent().viewportOffset();
ox -= parentOffset[0];
oy -= parentOffset[1];
+ } else if (element.offsetParent)
+ {
+ // for Opera only
+ if (element.offsetParent!=document.body)
+ {
+ var parentOffset=Position.cumulativeOffset(element.offsetParent);
+ ox -= parentOffset[0];
+ oy -= parentOffset[1];
+ ox += element.offsetParent.scrollLeft;
+ oy += element.offsetParent.scrollTop;
+ } else {
+ var parentOffset = Richfaces.Calendar.cumulativeScrollOffset(element);
+ ox += parentOffset[0];
+ oy += parentOffset[1];
+ }
}
els.display = originalDisplay;
els.position = originalPosition;
els.visibility = originalVisibility;
- element.style.left = (ox + windowRect.left) + 'px';
- element.style.top = (oy + windowRect.top) + 'px';
+ element.style.left = ox + 'px';
+ element.style.top = oy + 'px';
};
+Richfaces.Calendar.cumulativeScrollOffset = function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.scrollTop || 0;
+ valueL += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element && element != document.body);
+ return Element._returnOffset(valueL, valueT);
+};
+
Richfaces.Calendar.getOffsetDimensions = function(element) {
// from prototype 1.5.0 // Pavel Yascenko
element = $(element);
@@ -1111,7 +1135,8 @@
var offsetDimBase = Richfaces.Calendar.getOffsetDimensions(base);
var offsetDimButton = Richfaces.Calendar.getOffsetDimensions(baseButton);
- var offsetTemp = Position.realOffset(baseButton);
+ var offsetTemp = (window.opera ? [0,0] : Position.realOffset(baseButton));
+ //alert("offsetBase:"+offsetBase+" offsetTemp:"+offsetTemp+'
scrollTop:'+baseButton.offsetParent.scrollTop+"
offsetParent:"+baseButton.offsetParent);
var o = {left: offsetBase[0]-offsetTemp[0],
top: offsetBase[1]-offsetTemp[1],
width: offsetDimBase.width,
Show replies by date