Special XML conversion code for Firefox >= 20.0
[infodrom/rico3] / minsrc / rico.js
index c8f848b..9c8e0ef 100644 (file)
@@ -1,6 +1,6 @@
 /*
 /*
- *  (c) 2005-2011 Richard Cowin (http://openrico.org)
- *  (c) 2005-2011 Matt Brown (http://dowdybrown.com)
+ *  (c) 2005-2012 Richard Cowin (http://openrico.org)
+ *  (c) 2005-2012 Matt Brown (http://dowdybrown.com)
  *
  *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
  *  file except in compliance with the License. You may obtain a copy of the License at
  *
  *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
  *  file except in compliance with the License. You may obtain a copy of the License at
@@ -13,7 +13,7 @@
  *  and limitations under the License.
  */
 
  *  and limitations under the License.
  */
 
-Rico.Version='3.0b2';
+Rico.Version='3.0';
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
 Rico.theme={};
 Rico.onLoadCallbacks=[];
 Rico.windowIsLoaded=false;
@@ -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;
@@ -242,7 +248,7 @@ Rico.zFill=function(n,slen, radix) {
 Rico.keys=function(obj) {
   var objkeys=[];
   for(var k in obj)
 Rico.keys=function(obj) {
   var objkeys=[];
   for(var k in obj)
-    objkeys.push[k];
+    objkeys.push(k);
   return objkeys;
 };
 
   return objkeys;
 };
 
@@ -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;
@@ -541,7 +548,7 @@ Rico.formatNumber=function(n,fmt) {
   if (isNaN(n)) return 'NaN';
   if (typeof fmt.multiplier=='number') n*=fmt.multiplier;
   var decPlaces=typeof fmt.decPlaces=='number' ? fmt.decPlaces : 0;
   if (isNaN(n)) return 'NaN';
   if (typeof fmt.multiplier=='number') n*=fmt.multiplier;
   var decPlaces=typeof fmt.decPlaces=='number' ? fmt.decPlaces : 0;
-  var thouSep=typeof fmt.thouSep=='undefined' ? true : this.thouSep;
+  var thouSep=typeof fmt.thouSep=='undefined' ? true : fmt.thouSep;
   var prefix=fmt.prefix || "";
   var suffix=fmt.suffix || "";
   var negSign=typeof fmt.negSign=='string' ? fmt.negSign : "L";
   var prefix=fmt.prefix || "";
   var suffix=fmt.suffix || "";
   var negSign=typeof fmt.negSign=='string' ? fmt.negSign : "L";
@@ -568,11 +575,11 @@ Rico.formatNumber=function(n,fmt) {
  * @param fmt string specifying the output format, may be one of the following:<dl>
  * <dt>locale or localeDateTime</dt>
  *   <dd>use javascript's built-in toLocaleString() function</dd>
  * @param fmt string specifying the output format, may be one of the following:<dl>
  * <dt>locale or localeDateTime</dt>
  *   <dd>use javascript's built-in toLocaleString() function</dd>
- * <dt>localeDate</dt>
+ * <dt>localeDate or 'Long Date'</dt>
  *   <dd>use javascript's built-in toLocaleDateString() function</dd>
  * <dt>translate or translateDateTime</dt>
  *   <dd>use the formats specified in the Rico.dateFmt and Rico.timeFmt properties</dd>
  *   <dd>use javascript's built-in toLocaleDateString() function</dd>
  * <dt>translate or translateDateTime</dt>
  *   <dd>use the formats specified in the Rico.dateFmt and Rico.timeFmt properties</dd>
- * <dt>translateDate</dt>
+ * <dt>translateDate or 'Short Date'</dt>
  *   <dd>use the date format specified in the Rico.dateFmt property</dd>
  * <dt>Otherwise</dt>
  *   <dd>Any combination of: yyyy, yy, mmmm, mmm, mm, m, dddd, ddd, dd, d, hh, h, HH, H, nn, ss, a/p</dd>
  *   <dd>use the date format specified in the Rico.dateFmt property</dd>
  * <dt>Otherwise</dt>
  *   <dd>Any combination of: yyyy, yy, mmmm, mmm, mm, m, dddd, ddd, dd, d, hh, h, HH, H, nn, ss, a/p</dd>
@@ -584,12 +591,14 @@ Rico.formatDate=function(d,fmt) {
     case 'locale':
     case 'localeDateTime':
       return d.toLocaleString();
     case 'locale':
     case 'localeDateTime':
       return d.toLocaleString();
+    case 'Long Date':
     case 'localeDate':
       return d.toLocaleDateString();
     case 'translate':
     case 'translateDateTime':
       datefmt=this.dateFmt+' '+this.timeFmt;
       break;
     case 'localeDate':
       return d.toLocaleDateString();
     case 'translate':
     case 'translateDateTime':
       datefmt=this.dateFmt+' '+this.timeFmt;
       break;
+    case 'Short Date':
     case 'translateDate':
       datefmt=this.dateFmt;
       break;
     case 'translateDate':
       datefmt=this.dateFmt;
       break;