sync
authorAlan Knowles <alan@roojs.com>
Fri, 30 Jul 2021 08:08:29 +0000 (16:08 +0800)
committerAlan Knowles <alan@roojs.com>
Fri, 30 Jul 2021 08:08:29 +0000 (16:08 +0800)
19 files changed:
Roo/DomHelper.js
Roo/bootstrap/Popover.js
Roo/bootstrap/PopoverNav.js
Roo/bootstrap/breadcrumb/Item.js
Roo/bootstrap/form/HtmlEditorToolbarStandard.js
Roo/bootstrap/form/deprecated.js
Roo/bootstrap/form/namespace.js
Roo/bootstrap/layout/Manager.js
Roo/bootstrap/menu/Item.js
Roo/bootstrap/menu/Menu.js
Roo/bootstrap/menu/Separator.js
Roo/bootstrap/nav/Item.js
docs/Roo.docs.bjs
docs/Roo.docs.js
docs/Roo.docs.template.js
roojs-bootstrap-debug.js
roojs-bootstrap.js
roojs-core-debug.js
roojs-core.js

index fa5e397..194a6c4 100644 (file)
@@ -166,7 +166,7 @@ Roo.DomHelper = function(){
     var ieTable = function(depth, s, h, e){
         tempTableEl.innerHTML = [s, h, e].join('');
         var i = -1, el = tempTableEl;
-        while(++i < depth){
+        while(++i < depth && el.firstChild){
             el = el.firstChild;
         }
         return el;
index 2726bcb..7ad1a52 100644 (file)
@@ -9,6 +9,7 @@
  * @class Roo.bootstrap.Popover
  * @extends Roo.bootstrap.Component
  * @builder-top
+ * @parent none
  * @children Roo.bootstrap.Component
  * Bootstrap Popover class
  * @cfg {String} html contents of the popover   (or false to use children..)
index 8f6b7d9..1884300 100644 (file)
@@ -1,15 +1,10 @@
-/*
- * - LGPL
- *
- * Card header - holder for the card header elements.
- * 
- */
 
 /**
  * @class Roo.bootstrap.PopoverNav
  * @extends Roo.bootstrap.nav.Simplebar
  * @parent Roo.bootstrap.Popover
  * @children Roo.bootstrap.nav.Group Roo.bootstrap.Container
+ * @licence LGPL
  * Bootstrap Popover header navigation class
  * FIXME? should this go under nav?
  *
index 8ef30ab..ff876f2 100644 (file)
@@ -10,6 +10,7 @@
  * @class Roo.bootstrap.breadcrumb.Nav
  * @extends Roo.bootstrap.Component
  * @children Roo.bootstrap.Component
+ * @parent Roo.bootstrap.breadcrumb.Nav
  * Bootstrap Breadcrumb Nav Class
  *  
  * 
index 1399eed..002b010 100644 (file)
@@ -1,7 +1,8 @@
   
 Roo.namespace('Roo.bootstrap.form.HtmlEditor');
 /**
- * @class Roo.bootstrap.form.HtmlEditorToolbar1
+ * @class Roo.bootstrap.form.HtmlEditorToolbarStandard
+ * @parent Roo.bootstrap.form.HtmlEditor
  * @extends Roo.bootstrap.nav.Simplebar
  * Basic Toolbar
  * 
@@ -11,7 +12,7 @@ Roo.namespace('Roo.bootstrap.form.HtmlEditor');
  new Roo.bootstrap.form.HtmlEditor({
     ....
     toolbars : [
-        new Roo.bootstrap.form.HtmlEditorToolbar1({
+        new Roo.bootstrap.form.HtmlEditorToolbarStandard({
             disable : { fonts: 1 , format: 1, ..., ... , ...],
             btns : [ .... ]
         })
index a76ed96..4837a89 100644 (file)
@@ -1,23 +1,23 @@
 // old names for form elements
-Roo.bootstrap.Form          =   Roo.bootstrap.form.Form.Form;
-Roo.bootstrap.Input         =   Roo.bootstrap.form.Form.Input;
-Roo.bootstrap.TextArea      =   Roo.bootstrap.form.Form.TextArea;
-Roo.bootstrap.TriggerField  =   Roo.bootstrap.form.Form.TriggerField;
-Roo.bootstrap.ComboBox      =   Roo.bootstrap.form.Form.ComboBox;
-Roo.bootstrap.DateField     =   Roo.bootstrap.form.Form.DateField;
-Roo.bootstrap.TimeField     =   Roo.bootstrap.form.Form.TimeField;
-Roo.bootstrap.MonthField    =   Roo.bootstrap.form.Form.MonthField;
-Roo.bootstrap.CheckBox      =   Roo.bootstrap.form.Form.CheckBox;
-Roo.bootstrap.Radio         =   Roo.bootstrap.form.Form.Radio;
-Roo.bootstrap.RadioSet      =   Roo.bootstrap.form.Form.RadioSet;
-Roo.bootstrap.SecurePass    =   Roo.bootstrap.form.Form.SecurePass;
-Roo.bootstrap.FieldLabel    =   Roo.bootstrap.form.Form.FieldLabel;
-Roo.bootstrap.DateSplitField=   Roo.bootstrap.form.Form.DateSplitField;
-Roo.bootstrap.NumberField   =   Roo.bootstrap.form.Form.NumberField;
-Roo.bootstrap.PhoneInput    =   Roo.bootstrap.form.Form.PhoneInput;
-Roo.bootstrap.PhoneInputData=   Roo.bootstrap.form.Form.PhoneInputData;
-Roo.bootstrap.MoneyField    =   Roo.bootstrap.form.Form.MoneyField;
-Roo.bootstrap.HtmlEditor    =   Roo.bootstrap.form.Form.HtmlEditor;
-Roo.bootstrap.HtmlEditor.ToolbarStandard =   Roo.bootstrap.form.Form.HtmlEditorToolbarStandard;
+Roo.bootstrap.Form          =   Roo.bootstrap.form.Form;
+Roo.bootstrap.Input         =   Roo.bootstrap.form.Input;
+Roo.bootstrap.TextArea      =   Roo.bootstrap.form.TextArea;
+Roo.bootstrap.TriggerField  =   Roo.bootstrap.form.TriggerField;
+Roo.bootstrap.ComboBox      =   Roo.bootstrap.form.ComboBox;
+Roo.bootstrap.DateField     =   Roo.bootstrap.form.DateField;
+Roo.bootstrap.TimeField     =   Roo.bootstrap.form.TimeField;
+Roo.bootstrap.MonthField    =   Roo.bootstrap.form.MonthField;
+Roo.bootstrap.CheckBox      =   Roo.bootstrap.form.CheckBox;
+Roo.bootstrap.Radio         =   Roo.bootstrap.form.Radio;
+Roo.bootstrap.RadioSet      =   Roo.bootstrap.form.RadioSet;
+Roo.bootstrap.SecurePass    =   Roo.bootstrap.form.SecurePass;
+Roo.bootstrap.FieldLabel    =   Roo.bootstrap.form.FieldLabel;
+Roo.bootstrap.DateSplitField=   Roo.bootstrap.form.DateSplitField;
+Roo.bootstrap.NumberField   =   Roo.bootstrap.form.NumberField;
+Roo.bootstrap.PhoneInput    =   Roo.bootstrap.form.PhoneInput;
+Roo.bootstrap.PhoneInputData=   Roo.bootstrap.form.PhoneInputData;
+Roo.bootstrap.MoneyField    =   Roo.bootstrap.form.MoneyField;
+Roo.bootstrap.HtmlEditor    =   Roo.bootstrap.form.HtmlEditor;
+Roo.bootstrap.HtmlEditor.ToolbarStandard =   Roo.bootstrap.form.HtmlEditorToolbarStandard;
 Roo.bootstrap.Markdown      = Roo.bootstrap.form.Markdown;
 Roo.bootstrap.CardUploader  = Roo.bootstrap.form.CardUploader;
\ No newline at end of file
index 53e2927..32ec62b 100644 (file)
@@ -1 +1 @@
-Roo.bootstrap.form.Form = {};
\ No newline at end of file
+Roo.bootstrap.form = {};
\ No newline at end of file
index 669a19f..1068460 100644 (file)
@@ -12,6 +12,7 @@
 /**
  * @class Roo.bootstrap.layout.Manager
  * @extends Roo.bootstrap.Component
+ * @abstract
  * Base class for layout managers.
  */
 Roo.bootstrap.layout.Manager = function(config)
index 493a190..71bc4b5 100644 (file)
@@ -2,6 +2,7 @@
  * @class Roo.bootstrap.menu.Item
  * @extends Roo.bootstrap.Component
  * @children  Roo.bootstrap.Button Roo.bootstrap.ButtonUploader Roo.bootstrap.Row Roo.bootstrap.Column Roo.bootstrap.Container
+ * @parent Roo.bootstrap.menu.Menu
  * @licence LGPL
  * Bootstrap MenuItem class
  * 
index e8858eb..caf2b13 100644 (file)
@@ -4,7 +4,8 @@
  * @extends Roo.bootstrap.Component
  * @licence LGPL
  * @children Roo.bootstrap.menu.Item
- * Bootstrap Menu class - container for MenuItems
+ * @parent none
+ * Bootstrap Menu class - container for MenuItems - normally has to be added to a object that supports the menu property
  * 
  * @cfg {String} type (dropdown|treeview|submenu) type of menu
  * @cfg {bool} hidden  if the menu should be hidden when rendered.
index 26f3a48..f74cac8 100644 (file)
@@ -3,6 +3,7 @@
  * @class Roo.bootstrap.menu.Separator
  * @extends Roo.bootstrap.Component
  * @licence LGPL
+ * @parent Roo.bootstrap.menu.Menu
  * Bootstrap Separator class
  * 
  * @constructor
index de57df3..8becd8c 100644 (file)
@@ -2,6 +2,7 @@
  * @class Roo.bootstrap.nav.Item
  * @extends Roo.bootstrap.Component
  * @children Roo.bootstrap.Container Roo.bootstrap.Button
+ * @parent Roo.bootstrap.nav.Group
  * @licence LGPL
  * Bootstrap Navbar.NavItem class
  * 
index 908da43..81404ba 100644 (file)
@@ -10,6 +10,7 @@
   "ae635f08107a69569e636835f24e6f6f" : " extends ",
   "87f9f735a1d36793ceaecd4e47124b63" : "Events",
   "d41d8cd98f00b204e9800998ecf8427e" : " ",
+  "4d9ee8f98abde282da987fed0aac295c" : "Children that can be added using addxtype({...})",
   "9b34238e8113db140b452beec500024b" : "Roo JS Documentation",
   "50f33d14f129e4548c1c270fd6725a78" : "Configuration options",
   "e64b94523532dbac62df6795a5153f04" : "doc-desc",
@@ -20,8 +21,7 @@
   "3c81cc62cd8a24b231d0c0db34feda61" : "Implementations",
   "f561aaf6ef0bf14d4208bb46a4ccb3ad" : "xxx",
   "9bd81329febf6efe22788e03ddeaf0af" : " Class ",
-  "a1d108496af420635536a4e29e87d42b" : "Constructor, Static and Public Methods",
-  "11410a0e42ed3bd4fc2f239a79f947dc" : "Children that can be added using Roo.factory"
+  "a1d108496af420635536a4e29e87d42b" : "Constructor, Static and Public Methods"
  },
  "items" : [
   {
            "listeners" : {
             "render" : "function (_self)\n{\n    _this.doc_children  = this;\n}"
            },
-           "String header" : "Children that can be added using Roo.factory",
+           "String header" : "Children that can be added using addxtype({...})",
            "String cls" : "doc-children",
            "xtype" : "Container",
            "String panel" : "primary",
index f32094e..b65fbb0 100644 (file)
@@ -11,6 +11,7 @@ Roo.docs = new Roo.XComponent({
   'ae635f08107a69569e636835f24e6f6f' :" extends ",
   '87f9f735a1d36793ceaecd4e47124b63' :"Events",
   'd41d8cd98f00b204e9800998ecf8427e' :"",
+  '4d9ee8f98abde282da987fed0aac295c' :"Children that can be added using addxtype({...})",
   '9b34238e8113db140b452beec500024b' :"Roo JS Documentation",
   '50f33d14f129e4548c1c270fd6725a78' :"Configuration options",
   'e64b94523532dbac62df6795a5153f04' :"doc-desc",
@@ -22,8 +23,7 @@ Roo.docs = new Roo.XComponent({
   'f561aaf6ef0bf14d4208bb46a4ccb3ad' :"xxx",
   '9bd81329febf6efe22788e03ddeaf0af' :" Class ",
   'a1d108496af420635536a4e29e87d42b' :"Constructor, Static and Public Methods",
-  'd41d8cd98f00b204e9800998ecf8427e' :" ",
-  '11410a0e42ed3bd4fc2f239a79f947dc' :"Children that can be added using Roo.factory"
+  'd41d8cd98f00b204e9800998ecf8427e' :" "
  },
 
   part     :  ["docs", "docs" ],
@@ -819,7 +819,7 @@ Roo.docs = new Roo.XComponent({
           {
            xtype : 'Container',
            cls : 'doc-children',
-           header : _this._strings['11410a0e42ed3bd4fc2f239a79f947dc'] /* Children that can be added using Roo.factory */,
+           header : _this._strings['4d9ee8f98abde282da987fed0aac295c'] /* Children that can be added using addxtype({...}) */,
            panel : 'primary',
            listeners : {
             render : function (_self)
index 9cae632..373e953 100644 (file)
@@ -79,7 +79,9 @@ Roo.docs.template  = {
                var linkSymbol  = this.linkSymbol;
                //var linkSymbol  = this.linkSymbol;
                var output = '<ul class="doc-children-list res-block"> ';
-                
+               ar.sort(function (a, b) {
+                       return a.toLowerCase().localeCompare(b.toLowerCase());
+               })
                for(var i = 0; i < ar.length; i++) {
                        output += '<li>' +linkSymbol(ar[i])  + "</li>";
                        
index 8cfe037..684d290 100644 (file)
@@ -17,7 +17,7 @@ Roo.bootstrap.version = ( function() {
 })(); Roo.bootstrap.menu = Roo.bootstrap.menu || {};
 Roo.bootstrap.nav = {};
 
-Roo.bootstrap.form.Form = {};Roo.bootstrap.panel = {};Roo.bootstrap.layout = {};/*
+Roo.bootstrap.form = {};Roo.bootstrap.panel = {};Roo.bootstrap.layout = {};/*
  * Based on:
  * Ext JS Library 1.1.1
  * Copyright(c) 2006-2007, Ext JS, LLC.
@@ -45150,26 +45150,26 @@ Roo.extend(Roo.bootstrap.BezierSignature, Roo.bootstrap.Component,
  
 
  // old names for form elements
-Roo.bootstrap.Form          =   Roo.bootstrap.form.Form.Form;
-Roo.bootstrap.Input         =   Roo.bootstrap.form.Form.Input;
-Roo.bootstrap.TextArea      =   Roo.bootstrap.form.Form.TextArea;
-Roo.bootstrap.TriggerField  =   Roo.bootstrap.form.Form.TriggerField;
-Roo.bootstrap.ComboBox      =   Roo.bootstrap.form.Form.ComboBox;
-Roo.bootstrap.DateField     =   Roo.bootstrap.form.Form.DateField;
-Roo.bootstrap.TimeField     =   Roo.bootstrap.form.Form.TimeField;
-Roo.bootstrap.MonthField    =   Roo.bootstrap.form.Form.MonthField;
-Roo.bootstrap.CheckBox      =   Roo.bootstrap.form.Form.CheckBox;
-Roo.bootstrap.Radio         =   Roo.bootstrap.form.Form.Radio;
-Roo.bootstrap.RadioSet      =   Roo.bootstrap.form.Form.RadioSet;
-Roo.bootstrap.SecurePass    =   Roo.bootstrap.form.Form.SecurePass;
-Roo.bootstrap.FieldLabel    =   Roo.bootstrap.form.Form.FieldLabel;
-Roo.bootstrap.DateSplitField=   Roo.bootstrap.form.Form.DateSplitField;
-Roo.bootstrap.NumberField   =   Roo.bootstrap.form.Form.NumberField;
-Roo.bootstrap.PhoneInput    =   Roo.bootstrap.form.Form.PhoneInput;
-Roo.bootstrap.PhoneInputData=   Roo.bootstrap.form.Form.PhoneInputData;
-Roo.bootstrap.MoneyField    =   Roo.bootstrap.form.Form.MoneyField;
-Roo.bootstrap.HtmlEditor    =   Roo.bootstrap.form.Form.HtmlEditor;
-Roo.bootstrap.HtmlEditor.ToolbarStandard =   Roo.bootstrap.form.Form.HtmlEditorToolbarStandard;
+Roo.bootstrap.Form          =   Roo.bootstrap.form.Form;
+Roo.bootstrap.Input         =   Roo.bootstrap.form.Input;
+Roo.bootstrap.TextArea      =   Roo.bootstrap.form.TextArea;
+Roo.bootstrap.TriggerField  =   Roo.bootstrap.form.TriggerField;
+Roo.bootstrap.ComboBox      =   Roo.bootstrap.form.ComboBox;
+Roo.bootstrap.DateField     =   Roo.bootstrap.form.DateField;
+Roo.bootstrap.TimeField     =   Roo.bootstrap.form.TimeField;
+Roo.bootstrap.MonthField    =   Roo.bootstrap.form.MonthField;
+Roo.bootstrap.CheckBox      =   Roo.bootstrap.form.CheckBox;
+Roo.bootstrap.Radio         =   Roo.bootstrap.form.Radio;
+Roo.bootstrap.RadioSet      =   Roo.bootstrap.form.RadioSet;
+Roo.bootstrap.SecurePass    =   Roo.bootstrap.form.SecurePass;
+Roo.bootstrap.FieldLabel    =   Roo.bootstrap.form.FieldLabel;
+Roo.bootstrap.DateSplitField=   Roo.bootstrap.form.DateSplitField;
+Roo.bootstrap.NumberField   =   Roo.bootstrap.form.NumberField;
+Roo.bootstrap.PhoneInput    =   Roo.bootstrap.form.PhoneInput;
+Roo.bootstrap.PhoneInputData=   Roo.bootstrap.form.PhoneInputData;
+Roo.bootstrap.MoneyField    =   Roo.bootstrap.form.MoneyField;
+Roo.bootstrap.HtmlEditor    =   Roo.bootstrap.form.HtmlEditor;
+Roo.bootstrap.HtmlEditor.ToolbarStandard =   Roo.bootstrap.form.HtmlEditorToolbarStandard;
 Roo.bootstrap.Markdown      = Roo.bootstrap.form.Markdown;
 Roo.bootstrap.CardUploader  = Roo.bootstrap.form.CardUploader;// depricated.
 Roo.bootstrap.Navbar            = Roo.bootstrap.nav.Bar;
index 4392050..77e6506 100644 (file)
@@ -5,7 +5,7 @@ Roo.bootstrap.menu=Roo.bootstrap.menu||{};
 // Roo/bootstrap/nav/namespace.js
 Roo.bootstrap.nav={};
 // Roo/bootstrap/form/namespace.js
-Roo.bootstrap.form.Form={};
+Roo.bootstrap.form={};
 // Roo/bootstrap/panel/namespace.js
 Roo.bootstrap.panel={};
 // Roo/bootstrap/layout/namespace.js
@@ -1892,10 +1892,10 @@ if(i>0){var C=cx-px;var D=cy-py;B+=Math.sqrt(C*C+D*D);}px=cx;py=cy;}return B;};B
 }var B=0;var C=null;var D;var E;var F;var G=function(){B=Date.now();C=null;D=fn.apply(E,F);if(!C){E=null;F=[];}};return function H(){var I=[];for(var _i=0;_i<arguments.length;_i++){I[_i]=arguments[_i];}var J=Date.now();var K=A-(J-B);E=this;F=I;if(K<=0||K>A){if(C){clearTimeout(C);
 C=null;}B=J;D=fn.apply(E,F);if(!C){E=null;F=[];}}else if(!C){C=window.setTimeout(G,K);}return D;};}});
 // Roo/bootstrap/form/deprecated.js
-Roo.bootstrap.Form=Roo.bootstrap.form.Form.Form;Roo.bootstrap.Input=Roo.bootstrap.form.Form.Input;Roo.bootstrap.TextArea=Roo.bootstrap.form.Form.TextArea;Roo.bootstrap.TriggerField=Roo.bootstrap.form.Form.TriggerField;Roo.bootstrap.ComboBox=Roo.bootstrap.form.Form.ComboBox;
-Roo.bootstrap.DateField=Roo.bootstrap.form.Form.DateField;Roo.bootstrap.TimeField=Roo.bootstrap.form.Form.TimeField;Roo.bootstrap.MonthField=Roo.bootstrap.form.Form.MonthField;Roo.bootstrap.CheckBox=Roo.bootstrap.form.Form.CheckBox;Roo.bootstrap.Radio=Roo.bootstrap.form.Form.Radio;
-Roo.bootstrap.RadioSet=Roo.bootstrap.form.Form.RadioSet;Roo.bootstrap.SecurePass=Roo.bootstrap.form.Form.SecurePass;Roo.bootstrap.FieldLabel=Roo.bootstrap.form.Form.FieldLabel;Roo.bootstrap.DateSplitField=Roo.bootstrap.form.Form.DateSplitField;Roo.bootstrap.NumberField=Roo.bootstrap.form.Form.NumberField;
-Roo.bootstrap.PhoneInput=Roo.bootstrap.form.Form.PhoneInput;Roo.bootstrap.PhoneInputData=Roo.bootstrap.form.Form.PhoneInputData;Roo.bootstrap.MoneyField=Roo.bootstrap.form.Form.MoneyField;Roo.bootstrap.HtmlEditor=Roo.bootstrap.form.Form.HtmlEditor;Roo.bootstrap.HtmlEditor.ToolbarStandard=Roo.bootstrap.form.Form.HtmlEditorToolbarStandard;
+Roo.bootstrap.Form=Roo.bootstrap.form.Form;Roo.bootstrap.Input=Roo.bootstrap.form.Input;Roo.bootstrap.TextArea=Roo.bootstrap.form.TextArea;Roo.bootstrap.TriggerField=Roo.bootstrap.form.TriggerField;Roo.bootstrap.ComboBox=Roo.bootstrap.form.ComboBox;Roo.bootstrap.DateField=Roo.bootstrap.form.DateField;
+Roo.bootstrap.TimeField=Roo.bootstrap.form.TimeField;Roo.bootstrap.MonthField=Roo.bootstrap.form.MonthField;Roo.bootstrap.CheckBox=Roo.bootstrap.form.CheckBox;Roo.bootstrap.Radio=Roo.bootstrap.form.Radio;Roo.bootstrap.RadioSet=Roo.bootstrap.form.RadioSet;
+Roo.bootstrap.SecurePass=Roo.bootstrap.form.SecurePass;Roo.bootstrap.FieldLabel=Roo.bootstrap.form.FieldLabel;Roo.bootstrap.DateSplitField=Roo.bootstrap.form.DateSplitField;Roo.bootstrap.NumberField=Roo.bootstrap.form.NumberField;Roo.bootstrap.PhoneInput=Roo.bootstrap.form.PhoneInput;
+Roo.bootstrap.PhoneInputData=Roo.bootstrap.form.PhoneInputData;Roo.bootstrap.MoneyField=Roo.bootstrap.form.MoneyField;Roo.bootstrap.HtmlEditor=Roo.bootstrap.form.HtmlEditor;Roo.bootstrap.HtmlEditor.ToolbarStandard=Roo.bootstrap.form.HtmlEditorToolbarStandard;
 Roo.bootstrap.Markdown=Roo.bootstrap.form.Markdown;Roo.bootstrap.CardUploader=Roo.bootstrap.form.CardUploader;
 // Roo/bootstrap/nav/deprecated.js
 Roo.bootstrap.Navbar=Roo.bootstrap.nav.Bar;Roo.bootstrap.NavGroup=Roo.bootstrap.nav.Group;Roo.bootstrap.NavHeaderbar=Roo.bootstrap.nav.Headerbar;Roo.bootstrap.NavItem=Roo.bootstrap.nav.Item;Roo.bootstrap.NavProgressBar=Roo.bootstrap.nav.ProgressBar;Roo.bootstrap.NavProgressBarItem=Roo.bootstrap.nav.ProgressBarItem;
index 9c5085a..f2e187a 100644 (file)
@@ -4359,7 +4359,7 @@ Roo.DomHelper = function(){
     var ieTable = function(depth, s, h, e){
         tempTableEl.innerHTML = [s, h, e].join('');
         var i = -1, el = tempTableEl;
-        while(++i < depth){
+        while(++i < depth && el.firstChild){
             el = el.firstChild;
         }
         return el;
index a336b93..d2c8fa8 100644 (file)
@@ -200,7 +200,7 @@ i<O;i++){b+=E(cn[i],b);}}else{b+=E(cn,b);}}if(o.html){b+=o.html;}b+="</"+o.tag+"
 }ns=D[o.ns];}if(typeof(o)=='string'){return M.appendChild(document.createTextNode(o));}o.tag=o.tag||div;if(o.ns&&Roo.isIE){ns=false;o.tag=o.ns+':'+o.tag;}var el=ns?document.createElementNS(ns,o.tag||'div'):document.createElement(o.tag||'div');var N=el.setAttribute?true:false;
 for(var O in o){if(O=="tag"||O=="ns"||O=="xmlns"||O=="children"||O=="cn"||O=="html"||O=="style"||typeof o[O]=="function"){continue;}if(O=="cls"&&Roo.isIE){el.className=o["cls"];}else{if(N){el.setAttribute(O=="cls"?'class':O,o[O]);}else{el[O]=o[O];}}}Roo.DomHelper.applyStyles(el,o.style);
 var cn=o.children||o.cn;if(cn){if((cn instanceof Array)||(Roo.isSafari&&typeof(cn.join)=="function")){for(var i=0,P=cn.length;i<P;i++){F(cn[i],el);}}else{F(cn,el);}}if(o.html){el.innerHTML=o.html;}if(M){M.appendChild(el);}return el;};var G=function(M,s,h,e){A.innerHTML=[s,h,e].join('');
-var i=-1,el=A;while(++i<M){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(M,N,el,O){if(!A){A=document.createElement('div');}var P;var Q=null;if(M=='td'){if(N=='afterbegin'||N=='beforeend'){return;
+var i=-1,el=A;while(++i<M&&el.firstChild){el=el.firstChild;}return el;};var ts='<table>',te='</table>',H=ts+'<tbody>',I='</tbody>'+te,J=H+'<tr>',K='</tr>'+I;var L=function(M,N,el,O){if(!A){A=document.createElement('div');}var P;var Q=null;if(M=='td'){if(N=='afterbegin'||N=='beforeend'){return;
 }if(N=='beforebegin'){Q=el;el=el.parentNode;}else{Q=el.nextSibling;el=el.parentNode;}P=G(4,J,O,K);}else if(M=='tr'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(3,H,O,I);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(3,H,O,I);}else{if(N=='afterbegin'){Q=el.firstChild;
 }P=G(4,J,O,K);}}else if(M=='tbody'){if(N=='beforebegin'){Q=el;el=el.parentNode;P=G(2,ts,O,te);}else if(N=='afterend'){Q=el.nextSibling;el=el.parentNode;P=G(2,ts,O,te);}else{if(N=='afterbegin'){Q=el.firstChild;}P=G(3,H,O,I);}}else{if(N=='beforebegin'||N=='afterend'){return;
 }if(N=='afterbegin'){Q=el.firstChild;}P=G(2,ts,O,te);}el.insertBefore(P,Q);return P;};return {useDom:false,markup:function(o){return E(o);},applyStyles:function(el,M){if(M){el=Roo.fly(el);if(typeof M=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var N;