Author: gseitz
Date: Mon Mar 31 13:30:31 2008
New Revision: 643133

URL: http://svn.apache.org/viewvc?rev=643133&view=rev
Log:
WICKET-1329: detect zIndex of offsetParent

Modified:
    
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js

Modified: 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js?rev=643133&r1=643132&r2=643133&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 Mon Mar 31 13:30:31 2008
@@ -164,15 +164,16 @@
     }
 
     function getAutocompleteMenu() {
-        var choiceDiv = document.getElementById(getMenuId());
-        if (choiceDiv == null) {
-            choiceDiv = document.createElement("div");
+        var choiceDiv=document.getElementById(getMenuId());
+        if (choiceDiv==null) {
+            choiceDiv=document.createElement("div");
             document.body.appendChild(choiceDiv);
-            choiceDiv.id = getMenuId();
-            choiceDiv.className = "wicket-aa";
-            choiceDiv.style.display = "none";
-            choiceDiv.style.position = "absolute";
-            choiceDiv.style.zIndex = "30000";
+            choiceDiv.id=getMenuId();
+            choiceDiv.className="wicket-aa";
+            choiceDiv.style.display="none";
+            choiceDiv.style.position="absolute";
+            var index=getOffsetParentZIndex(elementId);
+            choiceDiv.style.zIndex=index=="auto"?index:Number(index)+1;
             
             // WICKET-1350/WICKET-1351
             choiceDiv.onmouseout=function() {mouseactive=0;};
@@ -353,20 +354,39 @@
         }
     }
 
+    // From 
http://www.robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/
+    function getStyle(obj,cssRule) {
+       var cssRuleAlt = cssRule.replace(/\-(\w)/g,function(strMatch,p1){return 
p1.toUpperCase();});
+        var value=obj.style[cssRuleAlt];
+        if (!value) {
+               if (document.defaultView && 
document.defaultView.getComputedStyle) {
+                   value = 
document.defaultView.getComputedStyle(obj,"").getPropertyValue(cssRule);
+               }
+               else if (obj.currentStyle)
+               {
+                   value=obj.currentStyle[cssRuleAlt];
+               }
+        }
+        return value;
+    }
 
     function isVisible(obj) {
-               var value = obj.style.visibility;
-               if (!value) {
-                       if (document.defaultView && 
typeof(document.defaultView.getComputedStyle)=="function") {
-                               
value=document.defaultView.getComputedStyle(obj,"").getPropertyValue("visibility");
-                       } else if (obj.currentStyle) {
-                               value = obj.currentStyle.visibility;
-                       } else {
-                               value='';
-                       }
-               }
-               return value;
+               return getStyle(obj,"visibility");
        }
+    
+    function getOffsetParentZIndex(obj) {
+       obj=typeof obj=="string"?Wicket.$(obj):obj;
+       obj=obj.offsetParent;
+       var index="auto"; 
+       do {
+               var pos=getStyle(obj,"position");               
+               if(pos=="relative"||pos=="absolute"||pos=="fixed") {
+                       index=getStyle(obj,"z-index"); 
+               }
+               obj=obj.offsetParent;                   
+       } while (obj && index == "auto");
+       return index;
+    }
 
     function hideShowCovered(){
         if (!/msie/i.test(navigator.userAgent) && 
!/opera/i.test(navigator.userAgent)) {


Reply via email to