]> source.dussan.org Git - jquery-ui.git/commitdiff
datepicker: fixes #3232 [Position Problem in IE 6/7]: re-wrote the _checkOffset funct...
authorCa-Phun Ung <pazu2k@gmail.com>
Sun, 4 Jan 2009 09:30:39 +0000 (09:30 +0000)
committerCa-Phun Ung <pazu2k@gmail.com>
Sun, 4 Jan 2009 09:30:39 +0000 (09:30 +0000)
ui/ui.datepicker.js

index 59a330209d071de1731e1eb7954754f31d044a96..9cba3619ce30b25de36bbee96e4ff20d8e4515c5 100644 (file)
@@ -609,32 +609,14 @@ $.extend(Datepicker.prototype, {
                if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst)
                        $(inst.input[0]).focus();
        },
-
+       
        /* Check positioning to remain on screen. */
        _checkOffset: function(inst, offset, isFixed) {
-               var pos = inst.input ? this._findPos(inst.input[0]) : null;
-               var browserWidth = window.innerWidth || (document.documentElement ?
-                       document.documentElement.clientWidth : document.body.clientWidth);
-               var browserHeight = window.innerHeight || (document.documentElement ?
-                       document.documentElement.clientHeight : document.body.clientHeight);
-               var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
-               var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
-               // reposition date picker horizontally if outside the browser window
-               if (this._get(inst, 'isRTL') || (offset.left + inst.dpDiv.width() - scrollX) > browserWidth)
-                       offset.left = Math.max((isFixed ? 0 : scrollX),
-                               pos[0] + (inst.input ? inst.input.width() : 0) - (isFixed ? scrollX : 0) - inst.dpDiv.width() -
-                               (isFixed && $.browser.opera ? document.documentElement.scrollLeft : 0));
-               else
-                       offset.left -= (isFixed ? scrollX : 0);
-               // reposition date picker vertically if outside the browser window
-               if ((offset.top + inst.dpDiv.height() - scrollY) > browserHeight)
-                       offset.top = Math.max((isFixed ? 0 : scrollY),
-                               pos[1] - (isFixed ? scrollY : 0) - (this._inDialog ? 0 : inst.dpDiv.height()) -
-                               (isFixed && $.browser.opera ? document.documentElement.scrollTop : 0));
-               else
-                       offset.top -= (isFixed ? scrollY : 0);
+               offset.left -= (this._get(inst, 'isRTL') ? (inst.dpDiv.outerWidth() - inst.input.outerWidth()) : 0);
+               offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
+               offset.top -= (isFixed && offset.top == (inst.input.offset().top + inst.input.outerHeight())) ? $(document).scrollTop() : 0;                    
                return offset;
-       },
+       },      
 
        /* Find an object's position on the screen. */
        _findPos: function(obj) {