Special XML conversion code for Firefox >= 20.0
[infodrom/rico3] / minsrc / rico.js
index a2467ba..9c8e0ef 100644 (file)
@@ -184,7 +184,13 @@ Rico.getContentAsString=function( parentNode, isEncoded ) {
 };
 
 Rico._getEncodedContent=function(parentNode) {
 };
 
 Rico._getEncodedContent=function(parentNode) {
-  if (parentNode.innerHTML) return parentNode.innerHTML;
+  if (parentNode.innerHTML) {
+    if (Rico.isGecko && navigator.productSub >= "20100101")
+      parentNode.innerHTML.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
+    else
+      return parentNode.innerHTML;
+  }
+
   switch (parentNode.childNodes.length) {
     case 0:  return "";
     case 1:  return parentNode.firstChild.nodeValue;
   switch (parentNode.childNodes.length) {
     case 0:  return "";
     case 1:  return parentNode.firstChild.nodeValue;
@@ -328,6 +334,7 @@ Rico.positionCtlOverIcon=function(ctl,icon) {
   icon=this.$(icon);
   var offsets=this.cumulativeOffset(icon);
   var scrTop=this.docScrollTop();
   icon=this.$(icon);
   var offsets=this.cumulativeOffset(icon);
   var scrTop=this.docScrollTop();
+  var scrLeft=this.docScrollLeft();
   var winHt=this.windowHeight();
   if (ctl.style.display=='none') ctl.style.display='block';
   var correction=2;  // based on a 1px border
   var winHt=this.windowHeight();
   if (ctl.style.display=='none') ctl.style.display='block';
   var correction=2;  // based on a 1px border
@@ -336,7 +343,7 @@ Rico.positionCtlOverIcon=function(ctl,icon) {
     ctl.style.left = (offsets.left + icon.offsetWidth - ctl.offsetWidth)+'px';
   } else {
     var margin=this.nan2zero(this.getStyle(icon,'marginLeft'));
     ctl.style.left = (offsets.left + icon.offsetWidth - ctl.offsetWidth)+'px';
   } else {
     var margin=this.nan2zero(this.getStyle(icon,'marginLeft'));
-    ctl.style.left = (offsets.left+margin+correction)+'px';
+    ctl.style.left = (offsets.left+margin+correction+scrLeft)+'px';
   }
   var newTop=offsets.top + correction;// + scrTop;
   var ctlht=ctl.offsetHeight;
   }
   var newTop=offsets.top + correction;// + scrTop;
   var ctlht=ctl.offsetHeight;