<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -82,6 +82,6 @@ th.yui-dt-hidden .yui-dt-resizer {
 }
 
 /* editing */
-.yui-dt-editor {
+.yui-dt-editor, .yui-dt-editor-shim {
     position:absolute;z-index:9000;
 }</diff>
      <filename>build/datatable/assets/datatable-core.css</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1,2 @@
-.yui-skin-sam .yui-dt-mask{position:absolute;z-index:9500;}.yui-dt-tmp{position:absolute;left:-9000px;}.yui-dt-scrollable .yui-dt-bd{overflow:auto;}.yui-dt-scrollable .yui-dt-hd{overflow:hidden;position:relative;}.yui-dt-scrollable .yui-dt-bd thead tr,.yui-dt-scrollable .yui-dt-bd thead th{position:absolute;left:-1500px;}.yui-dt-scrollable tbody{-moz-outline:none;}.yui-skin-sam thead .yui-dt-sortable{cursor:pointer;}.yui-skin-sam thead .yui-dt-draggable{cursor:move;}.yui-dt-coltarget{position:absolute;z-index:999;}.yui-dt-hd{zoom:1;}th.yui-dt-resizeable .yui-dt-resizerliner{position:relative;}.yui-dt-resizer{position:absolute;right:0;bottom:0;height:100%;cursor:e-resize;cursor:col-resize;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}.yui-dt-resizerproxy{visibility:hidden;position:absolute;z-index:9000;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}th.yui-dt-hidden .yui-dt-liner,td.yui-dt-hidden .yui-dt-liner,th.yui-dt-hidden .yui-dt-resizer{display:none;}.yui-dt-editor{position:absolute;z-index:9000;}.yui-skin-sam .yui-dt table{margin:0;padding:0;font-family:arial;font-size:inherit;border-collapse:separate;*border-collapse:collapse;border-spacing:0;border:1px solid #7F7F7F;}.yui-skin-sam .yui-dt thead{border-spacing:0;}.yui-skin-sam .yui-dt caption{color:#000;font-size:85%;font-weight:normal;font-style:italic;line-height:1;padding:1em 0;text-align:center;}.yui-skin-sam .yui-dt th{background:#D8D8DA url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-dt th,.yui-skin-sam .yui-dt th a{font-weight:normal;text-decoration:none;color:#000;vertical-align:bottom;}.yui-skin-sam .yui-dt th{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;}.yui-skin-sam .yui-dt tr.yui-dt-first td{border-top:1px solid #7F7F7F;}.yui-skin-sam .yui-dt th .yui-dt-liner{white-space:nowrap;}.yui-skin-sam .yui-dt-liner{margin:0;padding:0;padding:4px 10px 4px 10px;}.yui-skin-sam .yui-dt-coltarget{width:5px;background-color:red;}.yui-skin-sam .yui-dt td{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;text-align:left;}.yui-skin-sam .yui-dt-list td{border-right:none;}.yui-skin-sam .yui-dt-resizer{width:6px;}.yui-skin-sam .yui-dt-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-dt-message{background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable table{border:none;}.yui-skin-sam .yui-dt-scrollable .yui-dt-hd{border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;}.yui-skin-sam .yui-dt-scrollable .yui-dt-bd{border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td{border-bottom:1px solid #7F7F7F;}.yui-skin-sam th.yui-dt-asc,.yui-skin-sam th.yui-dt-desc{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -100px;}.yui-skin-sam th.yui-dt-sortable .yui-dt-label{margin-right:10px;}.yui-skin-sam th.yui-dt-asc .yui-dt-liner{background:url(dt-arrow-up.png) no-repeat right;}.yui-skin-sam th.yui-dt-desc .yui-dt-liner{background:url(dt-arrow-dn.png) no-repeat right;}tbody .yui-dt-editable{cursor:pointer;}.yui-dt-editor{text-align:left;background-color:#F2F2F2;border:1px solid #808080;padding:6px;}.yui-dt-editor label{padding-left:4px;padding-right:6px;}.yui-dt-editor .yui-dt-button{padding-top:6px;text-align:right;}.yui-dt-editor .yui-dt-button button{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;border:1px solid #999;width:4em;height:1.8em;margin-left:6px;}.yui-dt-editor .yui-dt-button button.yui-dt-default{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1400px;background-color:#5584E0;border:1px solid #304369;color:#FFF;}.yui-dt-editor .yui-dt-button button:hover{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1300px;color:#000;}.yui-dt-editor .yui-dt-button button:active{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1700px;color:#000;}.yui-skin-sam tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam tr.yui-dt-odd{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc{background-color:#DBEAFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam th.yui-dt-highlighted,.yui-skin-sam th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam tr.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam th.yui-dt-selected,.yui-skin-sam th.yui-dt-selected a{background-color:#446CD7;}.yui-skin-sam tr.yui-dt-selected td,.yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-list th.yui-dt-selected,.yui-skin-sam .yui-dt-list th.yui-dt-selected a{background-color:#446CD7;}
-.yui-skin-sam .yui-dt-list tr.yui-dt-selected td,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-paginator{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-dt-paginator .yui-dt-first,.yui-skin-sam .yui-dt-paginator .yui-dt-last,.yui-skin-sam .yui-dt-paginator .yui-dt-selected{padding:2px 6px;}.yui-skin-sam .yui-dt-paginator a.yui-dt-first,.yui-skin-sam .yui-dt-paginator a.yui-dt-last{text-decoration:none;}.yui-skin-sam .yui-dt-paginator .yui-dt-previous,.yui-skin-sam .yui-dt-paginator .yui-dt-next{display:none;}.yui-skin-sam a.yui-dt-page{border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;background-color:#fff;}.yui-skin-sam .yui-dt-selected{border:1px solid #fff;background-color:#fff;}
+.yui-skin-sam .yui-dt-mask{position:absolute;z-index:9500;}.yui-dt-tmp{position:absolute;left:-9000px;}.yui-dt-scrollable .yui-dt-bd{overflow:auto;}.yui-dt-scrollable .yui-dt-hd{overflow:hidden;position:relative;}.yui-dt-scrollable .yui-dt-bd thead tr,.yui-dt-scrollable .yui-dt-bd thead th{position:absolute;left:-1500px;}.yui-dt-scrollable tbody{-moz-outline:none;}.yui-skin-sam thead .yui-dt-sortable{cursor:pointer;}.yui-skin-sam thead .yui-dt-draggable{cursor:move;}.yui-dt-coltarget{position:absolute;z-index:999;}.yui-dt-hd{zoom:1;}th.yui-dt-resizeable .yui-dt-resizerliner{position:relative;}.yui-dt-resizer{position:absolute;right:0;bottom:0;height:100%;cursor:e-resize;cursor:col-resize;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}.yui-dt-resizerproxy{visibility:hidden;position:absolute;z-index:9000;background-color:#CCC;opacity:0;filter:alpha(opacity=0);}th.yui-dt-hidden .yui-dt-liner,td.yui-dt-hidden .yui-dt-liner,th.yui-dt-hidden .yui-dt-resizer{display:none;}.yui-dt-editor,.yui-dt-editor-shim{position:absolute;z-index:9000;}.yui-skin-sam .yui-dt table{margin:0;padding:0;font-family:arial;font-size:inherit;border-collapse:separate;*border-collapse:collapse;border-spacing:0;border:1px solid #7F7F7F;}.yui-skin-sam .yui-dt thead{border-spacing:0;}.yui-skin-sam .yui-dt caption{color:#000;font-size:85%;font-weight:normal;font-style:italic;line-height:1;padding:1em 0;text-align:center;}.yui-skin-sam .yui-dt th{background:#D8D8DA url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;}.yui-skin-sam .yui-dt th,.yui-skin-sam .yui-dt th a{font-weight:normal;text-decoration:none;color:#000;vertical-align:bottom;}.yui-skin-sam .yui-dt th{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;}.yui-skin-sam .yui-dt tr.yui-dt-first td{border-top:1px solid #7F7F7F;}.yui-skin-sam .yui-dt th .yui-dt-liner{white-space:nowrap;}.yui-skin-sam .yui-dt-liner{margin:0;padding:0;padding:4px 10px 4px 10px;}.yui-skin-sam .yui-dt-coltarget{width:5px;background-color:red;}.yui-skin-sam .yui-dt td{margin:0;padding:0;border:none;border-right:1px solid #CBCBCB;text-align:left;}.yui-skin-sam .yui-dt-list td{border-right:none;}.yui-skin-sam .yui-dt-resizer{width:6px;}.yui-skin-sam .yui-dt-mask{background-color:#000;opacity:.25;filter:alpha(opacity=25);}.yui-skin-sam .yui-dt-message{background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable table{border:none;}.yui-skin-sam .yui-dt-scrollable .yui-dt-hd{border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;}.yui-skin-sam .yui-dt-scrollable .yui-dt-bd{border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;}.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td{border-bottom:1px solid #7F7F7F;}.yui-skin-sam th.yui-dt-asc,.yui-skin-sam th.yui-dt-desc{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -100px;}.yui-skin-sam th.yui-dt-sortable .yui-dt-label{margin-right:10px;}.yui-skin-sam th.yui-dt-asc .yui-dt-liner{background:url(dt-arrow-up.png) no-repeat right;}.yui-skin-sam th.yui-dt-desc .yui-dt-liner{background:url(dt-arrow-dn.png) no-repeat right;}tbody .yui-dt-editable{cursor:pointer;}.yui-dt-editor{text-align:left;background-color:#F2F2F2;border:1px solid #808080;padding:6px;}.yui-dt-editor label{padding-left:4px;padding-right:6px;}.yui-dt-editor .yui-dt-button{padding-top:6px;text-align:right;}.yui-dt-editor .yui-dt-button button{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 0;border:1px solid #999;width:4em;height:1.8em;margin-left:6px;}.yui-dt-editor .yui-dt-button button.yui-dt-default{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1400px;background-color:#5584E0;border:1px solid #304369;color:#FFF;}.yui-dt-editor .yui-dt-button button:hover{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1300px;color:#000;}.yui-dt-editor .yui-dt-button button:active{background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -1700px;color:#000;}.yui-skin-sam tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam tr.yui-dt-odd{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc{background-color:#DBEAFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd{background-color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-desc{background-color:#EDF5FF;}.yui-skin-sam th.yui-dt-highlighted,.yui-skin-sam th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam tr.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a{background-color:#B2D2FF;}.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted{cursor:pointer;background-color:#B2D2FF;}.yui-skin-sam th.yui-dt-selected,.yui-skin-sam th.yui-dt-selected a{background-color:#446CD7;}.yui-skin-sam tr.yui-dt-selected td,.yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}
+.yui-skin-sam .yui-dt-list th.yui-dt-selected,.yui-skin-sam .yui-dt-list th.yui-dt-selected a{background-color:#446CD7;}.yui-skin-sam .yui-dt-list tr.yui-dt-selected td,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc{background-color:#426FD9;color:#FFF;}.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected{background-color:#446CD7;color:#FFF;}.yui-skin-sam .yui-dt-paginator{display:block;margin:6px 0;white-space:nowrap;}.yui-skin-sam .yui-dt-paginator .yui-dt-first,.yui-skin-sam .yui-dt-paginator .yui-dt-last,.yui-skin-sam .yui-dt-paginator .yui-dt-selected{padding:2px 6px;}.yui-skin-sam .yui-dt-paginator a.yui-dt-first,.yui-skin-sam .yui-dt-paginator a.yui-dt-last{text-decoration:none;}.yui-skin-sam .yui-dt-paginator .yui-dt-previous,.yui-skin-sam .yui-dt-paginator .yui-dt-next{display:none;}.yui-skin-sam a.yui-dt-page{border:1px solid #CBCBCB;padding:2px 6px;text-decoration:none;background-color:#fff;}.yui-skin-sam .yui-dt-selected{border:1px solid #fff;background-color:#fff;}</diff>
      <filename>build/datatable/assets/skins/sam/datatable.css</filename>
    </modified>
    <modified>
      <diff>@@ -2767,6 +2767,17 @@ lang.augmentObject(DT, {
     CLASS_EDITOR : &quot;yui-dt-editor&quot;,
 
     /**
+     * Class name assigned to CellEditor container shim.
+     *
+     * @property DataTable.CLASS_EDITOR_SHIM
+     * @type String
+     * @static
+     * @final
+     * @default &quot;yui-dt-editor-shim&quot;
+     */
+    CLASS_EDITOR_SHIM : &quot;yui-dt-editor-shim&quot;,
+
+    /**
      * Class name assigned to paginator container elements.
      *
      * @property DataTable.CLASS_PAGINATOR
@@ -15760,7 +15771,65 @@ _initEvents : function() {
     this.createEvent(&quot;unblockEvent&quot;);
 },
 
+/**
+ * Initialize container element.
+ *
+ * @method _initContainerEl
+ * @private
+ */
+_initContainerEl : function() {
+    if(this._elContainer) {
+        YAHOO.util.Event.purgeElement(this._elContainer, true);
+        this._elContainer.innerHTML = &quot;&quot;;
+    }
 
+    var elContainer = document.createElement(&quot;div&quot;);
+    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
+    elContainer.style.display = &quot;none&quot;;
+    elContainer.tabIndex = 0;
+    elContainer.className = DT.CLASS_EDITOR;
+    document.body.insertBefore(elContainer, document.body.firstChild);
+    this._elContainer = elContainer;
+},
+
+/**
+ * Initialize container shim element.
+ *
+ * @method _initShimEl
+ * @private
+ */
+_initShimEl : function() {
+    // Iframe shim
+    if(this.useIFrame) {
+        if(!this._elIFrame) {
+            var elIFrame = document.createElement(&quot;iframe&quot;);
+            elIFrame.src = &quot;javascript:false&quot;;
+            elIFrame.frameBorder = 0;
+            elIFrame.scrolling = &quot;no&quot;;
+            elIFrame.style.display = &quot;none&quot;;
+            elIFrame.className = DT.CLASS_EDITOR_SHIM;
+            elIFrame.tabIndex = -1;
+            elIFrame.role = &quot;presentation&quot;;
+            elIFrame.title = &quot;Presentational iframe shim&quot;;
+            document.body.insertBefore(elIFrame, document.body.firstChild);
+            this._elIFrame = elIFrame;
+        }
+    }
+},
+
+/**
+ * Hides CellEditor UI at end of interaction.
+ *
+ * @method _hide
+ */
+_hide : function() {
+    this.getContainerEl().style.display = &quot;none&quot;;
+    if(this._elIFrame) {
+        this._elIFrame.style.display = &quot;none&quot;;
+    }
+    this.isActive = false;
+    this.getDataTable()._oCellEditor =  null;
+},
 
 
 
@@ -15862,6 +15931,14 @@ LABEL_CANCEL : &quot;Cancel&quot;,
  */
 disableBtns : false,
 
+/**
+ * True if iframe shim for container element should be enabled.
+ *
+ * @property useIFrame
+ * @type Boolean
+ * @default false
+ */
+useIFrame : false,
 
 
 
@@ -15979,22 +16056,11 @@ destroy : function() {
  * @method render
  */
 render : function() {
-    if(this._elContainer) {
-        YAHOO.util.Event.purgeElement(this._elContainer, true);
-        this._elContainer.innerHTML = &quot;&quot;;
-    }
+    this._initContainerEl();
+    this._initShimEl();
 
-    // Render Cell Editor container element as first child of body
-    var elContainer = document.createElement(&quot;div&quot;);
-    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
-    elContainer.style.display = &quot;none&quot;;
-    elContainer.tabIndex = 0;
-    elContainer.className = DT.CLASS_EDITOR;
-    document.body.insertBefore(elContainer, document.body.firstChild);
-    this._elContainer = elContainer;
-    
     // Handle ESC key
-    Ev.addListener(elContainer, &quot;keydown&quot;, function(e, oSelf) {
+    Ev.addListener(this.getContainerEl(), &quot;keydown&quot;, function(e, oSelf) {
         // ESC cancels Cell Editor
         if((e.keyCode == 27)) {
             var target = Ev.getTarget(e);
@@ -16008,7 +16074,7 @@ render : function() {
         // Pass through event
         oSelf.fireEvent(&quot;keydownEvent&quot;, {editor:this, event:e});
     }, this);
-    
+
     this.renderForm();
 
     // Show Save/Cancel buttons
@@ -16112,6 +16178,11 @@ move : function() {
 
     elContainer.style.left = x + &quot;px&quot;;
     elContainer.style.top = y + &quot;px&quot;;
+
+    if(this._elIFrame) {
+        this._elIFrame.style.left = x + &quot;px&quot;;
+        this._elIFrame.style.top = y + &quot;px&quot;;
+    }
 },
 
 /**
@@ -16120,9 +16191,16 @@ move : function() {
  * @method show
  */
 show : function() {
+    var elContainer = this.getContainerEl(),
+        elIFrame = this._elIFrame;
     this.resetForm();
     this.isActive = true;
-    this.getContainerEl().style.display = &quot;&quot;;
+    elContainer.style.display = &quot;&quot;;
+    if(elIFrame) {
+        elIFrame.style.width = elContainer.offsetWidth + &quot;px&quot;;
+        elIFrame.style.height = elContainer.offsetHeight + &quot;px&quot;;
+        elIFrame.style.display = &quot;&quot;;
+    }
     this.focus();
     this.fireEvent(&quot;showEvent&quot;, {editor:this});
     YAHOO.log(&quot;CellEditor shown&quot;, &quot;info&quot;, this.toString()); 
@@ -16182,9 +16260,7 @@ save : function() {
             oSelf.getDataTable().updateCell(oSelf.getRecord(), oSelf.getColumn(), oNewValue);
             
             // Hide CellEditor
-            oSelf.getContainerEl().style.display = &quot;none&quot;;
-            oSelf.isActive = false;
-            oSelf.getDataTable()._oCellEditor =  null;
+            oSelf._hide();
             
             oSelf.fireEvent(&quot;saveEvent&quot;,
                     {editor:oSelf, oldData:oOrigValue, newData:oSelf.value});
@@ -16216,9 +16292,7 @@ save : function() {
  */
 cancel : function() {
     if(this.isActive) {
-        this.getContainerEl().style.display = &quot;none&quot;;
-        this.isActive = false;
-        this.getDataTable()._oCellEditor =  null;
+        this._hide();
         this.fireEvent(&quot;cancelEvent&quot;, {editor:this});
         YAHOO.log(&quot;CellEditor canceled&quot;, &quot;info&quot;, this.toString());
     }</diff>
      <filename>build/datatable/datatable-debug.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 YAHOO.util.Chain=function(){this.q=[].slice.call(arguments);this.createEvent(&quot;end&quot;);};YAHOO.util.Chain.prototype={id:0,run:function(){var F=this.q[0],C;if(!F){this.fireEvent(&quot;end&quot;);return this;}else{if(this.id){return this;}}C=F.method||F;if(typeof C===&quot;function&quot;){var E=F.scope||{},B=F.argument||[],A=F.timeout||0,D=this;if(!(B instanceof Array)){B=[B];}if(A&lt;0){this.id=A;if(F.until){for(;!F.until();){C.apply(E,B);}}else{if(F.iterations){for(;F.iterations--&gt;0;){C.apply(E,B);}}else{C.apply(E,B);}}this.q.shift();this.id=0;return this.run();}else{if(F.until){if(F.until()){this.q.shift();return this.run();}}else{if(!F.iterations||!--F.iterations){this.q.shift();}}this.id=setTimeout(function(){C.apply(E,B);if(D.id){D.id=0;D.run();}},A);}}return this;},add:function(A){this.q.push(A);return this;},pause:function(){if(this.id&gt;0){clearTimeout(this.id);}this.id=0;return this;},stop:function(){this.pause();this.q=[];return this;}};YAHOO.lang.augmentProto(YAHOO.util.Chain,YAHOO.util.EventProvider);YAHOO.widget.ColumnSet=function(A){this._sId=&quot;yui-cs&quot;+YAHOO.widget.ColumnSet._nCount;A=YAHOO.widget.DataTable._cloneObject(A);this._init(A);YAHOO.widget.ColumnSet._nCount++;};YAHOO.widget.ColumnSet._nCount=0;YAHOO.widget.ColumnSet.prototype={_sId:null,_aDefinitions:null,tree:null,flat:null,keys:null,headers:null,_init:function(I){var J=[];var A=[];var G=[];var E=[];var C=-1;var B=function(M,S){C++;if(!J[C]){J[C]=[];}for(var O=0;O&lt;M.length;O++){var K=M[O];var Q=new YAHOO.widget.Column(K);K.yuiColumnId=Q._sId;A.push(Q);if(S){Q._oParent=S;}if(YAHOO.lang.isArray(K.children)){Q.children=K.children;var R=0;var P=function(V){var W=V.children;for(var U=0;U&lt;W.length;U++){if(YAHOO.lang.isArray(W[U].children)){P(W[U]);}else{R++;}}};P(K);Q._nColspan=R;var T=K.children;for(var N=0;N&lt;T.length;N++){var L=T[N];if(Q.className&amp;&amp;(L.className===undefined)){L.className=Q.className;}if(Q.editor&amp;&amp;(L.editor===undefined)){L.editor=Q.editor;}if(Q.editorOptions&amp;&amp;(L.editorOptions===undefined)){L.editorOptions=Q.editorOptions;}if(Q.formatter&amp;&amp;(L.formatter===undefined)){L.formatter=Q.formatter;}if(Q.resizeable&amp;&amp;(L.resizeable===undefined)){L.resizeable=Q.resizeable;}if(Q.sortable&amp;&amp;(L.sortable===undefined)){L.sortable=Q.sortable;}if(Q.hidden){L.hidden=true;}if(Q.width&amp;&amp;(L.width===undefined)){L.width=Q.width;}if(Q.minWidth&amp;&amp;(L.minWidth===undefined)){L.minWidth=Q.minWidth;}if(Q.maxAutoWidth&amp;&amp;(L.maxAutoWidth===undefined)){L.maxAutoWidth=Q.maxAutoWidth;}if(Q.type&amp;&amp;(L.type===undefined)){L.type=Q.type;}if(Q.type&amp;&amp;!Q.formatter){Q.formatter=Q.type;}if(Q.text&amp;&amp;!YAHOO.lang.isValue(Q.label)){Q.label=Q.text;}if(Q.parser){}if(Q.sortOptions&amp;&amp;((Q.sortOptions.ascFunction)||(Q.sortOptions.descFunction))){}}if(!J[C+1]){J[C+1]=[];}B(T,Q);}else{Q._nKeyIndex=G.length;Q._nColspan=1;G.push(Q);}J[C].push(Q);}C--;};if(YAHOO.lang.isArray(I)){B(I);this._aDefinitions=I;}else{return null;}var F;var D=function(L){var M=1;var O;var N;var P=function(T,S){S=S||1;for(var U=0;U&lt;T.length;U++){var R=T[U];if(YAHOO.lang.isArray(R.children)){S++;P(R.children,S);S--;}else{if(S&gt;M){M=S;}}}};for(var K=0;K&lt;L.length;K++){O=L[K];P(O);for(var Q=0;Q&lt;O.length;Q++){N=O[Q];if(!YAHOO.lang.isArray(N.children)){N._nRowspan=M;}else{N._nRowspan=1;}}M=1;}};D(J);for(F=0;F&lt;J[0].length;F++){J[0][F]._nTreeIndex=F;}var H=function(K,L){E[K].push(L.getSanitizedKey());if(L._oParent){H(K,L._oParent);}};for(F=0;F&lt;G.length;F++){E[F]=[];H(F,G[F]);E[F]=E[F].reverse();}this.tree=J;this.flat=A;this.keys=G;this.headers=E;},getId:function(){return this._sId;},toString:function(){return&quot;ColumnSet instance &quot;+this._sId;},getDefinitions:function(){var A=this._aDefinitions;var B=function(E,G){for(var D=0;D&lt;E.length;D++){var F=E[D];var I=G.getColumnById(F.yuiColumnId);if(I){var H=I.getDefinition();for(var C in H){if(YAHOO.lang.hasOwnProperty(H,C)){F[C]=H[C];}}}if(YAHOO.lang.isArray(F.children)){B(F.children,G);}}};B(A,this);this._aDefinitions=A;return A;},getColumnById:function(C){if(YAHOO.lang.isString(C)){var A=this.flat;for(var B=A.length-1;B&gt;-1;B--){if(A[B]._sId===C){return A[B];}}}return null;},getColumn:function(C){if(YAHOO.lang.isNumber(C)&amp;&amp;this.keys[C]){return this.keys[C];}else{if(YAHOO.lang.isString(C)){var A=this.flat;var D=[];for(var B=0;B&lt;A.length;B++){if(A[B].key===C){D.push(A[B]);}}if(D.length===1){return D[0];}else{if(D.length&gt;1){return D;}}}}return null;},getDescendants:function(D){var B=this;var C=[];var A;var E=function(F){C.push(F);if(F.children){for(A=0;A&lt;F.children.length;A++){E(B.getColumn(F.children[A].key));}}};E(D);return C;}};YAHOO.widget.Column=function(B){this._sId=&quot;yui-col&quot;+YAHOO.widget.Column._nCount;if(B&amp;&amp;YAHOO.lang.isObject(B)){for(var A in B){if(A){this[A]=B[A];}}}if(!YAHOO.lang.isValue(this.key)){this.key=&quot;yui-dt-col&quot;+YAHOO.widget.Column._nCount;}if(!YAHOO.lang.isValue(this.field)){this.field=this.key;}YAHOO.widget.Column._nCount++;if(this.width&amp;&amp;!YAHOO.lang.isNumber(this.width)){this.width=null;}if(this.editor&amp;&amp;YAHOO.lang.isString(this.editor)){this.editor=new YAHOO.widget.CellEditor(this.editor,this.editorOptions);}};YAHOO.lang.augmentObject(YAHOO.widget.Column,{_nCount:0,formatCheckbox:function(B,A,C,D){YAHOO.widget.DataTable.formatCheckbox(B,A,C,D);},formatCurrency:function(B,A,C,D){YAHOO.widget.DataTable.formatCurrency(B,A,C,D);},formatDate:function(B,A,C,D){YAHOO.widget.DataTable.formatDate(B,A,C,D);},formatEmail:function(B,A,C,D){YAHOO.widget.DataTable.formatEmail(B,A,C,D);},formatLink:function(B,A,C,D){YAHOO.widget.DataTable.formatLink(B,A,C,D);},formatNumber:function(B,A,C,D){YAHOO.widget.DataTable.formatNumber(B,A,C,D);},formatSelect:function(B,A,C,D){YAHOO.widget.DataTable.formatDropdown(B,A,C,D);}});YAHOO.widget.Column.prototype={_sId:null,_nKeyIndex:null,_nTreeIndex:null,_nColspan:1,_nRowspan:1,_oParent:null,_elTh:null,_elThLiner:null,_elThLabel:null,_elResizer:null,_nWidth:null,_dd:null,_ddResizer:null,key:null,field:null,label:null,abbr:null,children:null,width:null,minWidth:null,maxAutoWidth:null,hidden:false,selected:false,className:null,formatter:null,currencyOptions:null,dateOptions:null,dropdownOptions:null,editor:null,resizeable:false,sortable:false,sortOptions:null,getId:function(){return this._sId;
 },toString:function(){return&quot;Column instance &quot;+this._sId;},getDefinition:function(){var A={};A.abbr=this.abbr;A.className=this.className;A.editor=this.editor;A.editorOptions=this.editorOptions;A.field=this.field;A.formatter=this.formatter;A.hidden=this.hidden;A.key=this.key;A.label=this.label;A.minWidth=this.minWidth;A.maxAutoWidth=this.maxAutoWidth;A.resizeable=this.resizeable;A.selected=this.selected;A.sortable=this.sortable;A.sortOptions=this.sortOptions;A.width=this.width;return A;},getKey:function(){return this.key;},getField:function(){return this.field;},getSanitizedKey:function(){return this.getKey().replace(/[^\w\-]/g,&quot;&quot;);},getKeyIndex:function(){return this._nKeyIndex;},getTreeIndex:function(){return this._nTreeIndex;},getParent:function(){return this._oParent;},getColspan:function(){return this._nColspan;},getColSpan:function(){return this.getColspan();},getRowspan:function(){return this._nRowspan;},getThEl:function(){return this._elTh;},getThLinerEl:function(){return this._elThLiner;},getResizerEl:function(){return this._elResizer;},getColEl:function(){return this.getThEl();},getIndex:function(){return this.getKeyIndex();},format:function(){}};YAHOO.util.Sort={compare:function(B,A,C){if((B===null)||(typeof B==&quot;undefined&quot;)){if((A===null)||(typeof A==&quot;undefined&quot;)){return 0;}else{return 1;}}else{if((A===null)||(typeof A==&quot;undefined&quot;)){return -1;}}if(B.constructor==String){B=B.toLowerCase();}if(A.constructor==String){A=A.toLowerCase();}if(B&lt;A){return(C)?1:-1;}else{if(B&gt;A){return(C)?-1:1;}else{return 0;}}}};YAHOO.widget.ColumnDD=function(D,A,C,B){if(D&amp;&amp;A&amp;&amp;C&amp;&amp;B){this.datatable=D;this.table=D.getTableEl();this.column=A;this.headCell=C;this.pointer=B;this.newIndex=null;this.init(C);this.initFrame();this.invalidHandleTypes={};this.setPadding(10,0,(this.datatable.getTheadEl().offsetHeight+10),0);YAHOO.util.Event.on(window,&quot;resize&quot;,function(){this.initConstraints();},this,true);}else{}};if(YAHOO.util.DDProxy){YAHOO.extend(YAHOO.widget.ColumnDD,YAHOO.util.DDProxy,{initConstraints:function(){var G=YAHOO.util.Dom.getRegion(this.table),D=this.getEl(),F=YAHOO.util.Dom.getXY(D),C=parseInt(YAHOO.util.Dom.getStyle(D,&quot;width&quot;),10),A=parseInt(YAHOO.util.Dom.getStyle(D,&quot;height&quot;),10),E=((F[0]-G.left)+15),B=((G.right-F[0]-C)+15);this.setXConstraint(E,B);this.setYConstraint(10,10);},_resizeProxy:function(){YAHOO.widget.ColumnDD.superclass._resizeProxy.apply(this,arguments);var A=this.getDragEl(),B=this.getEl();YAHOO.util.Dom.setStyle(this.pointer,&quot;height&quot;,(this.table.parentNode.offsetHeight+10)+&quot;px&quot;);YAHOO.util.Dom.setStyle(this.pointer,&quot;display&quot;,&quot;block&quot;);var C=YAHOO.util.Dom.getXY(B);YAHOO.util.Dom.setXY(this.pointer,[C[0],(C[1]-5)]);YAHOO.util.Dom.setStyle(A,&quot;height&quot;,this.datatable.getContainerEl().offsetHeight+&quot;px&quot;);YAHOO.util.Dom.setStyle(A,&quot;width&quot;,(parseInt(YAHOO.util.Dom.getStyle(A,&quot;width&quot;),10)+4)+&quot;px&quot;);YAHOO.util.Dom.setXY(this.dragEl,C);},onMouseDown:function(){this.initConstraints();this.resetConstraints();},clickValidator:function(B){if(!this.column.hidden){var A=YAHOO.util.Event.getTarget(B);return(this.isValidHandleChild(A)&amp;&amp;(this.id==this.handleElId||this.DDM.handleWasClicked(A,this.id)));}},onDragOver:function(H,A){var F=this.datatable.getColumn(A);if(F){var C=F.getTreeIndex();while((C===null)&amp;&amp;F.getParent()){F=F.getParent();C=F.getTreeIndex();}if(C!==null){var B=F.getThEl();var K=C;var D=YAHOO.util.Event.getPageX(H),I=YAHOO.util.Dom.getX(B),J=I+((YAHOO.util.Dom.get(B).offsetWidth)/2),E=this.column.getTreeIndex();if(D&lt;J){YAHOO.util.Dom.setX(this.pointer,I);}else{var G=parseInt(B.offsetWidth,10);YAHOO.util.Dom.setX(this.pointer,(I+G));K++;}if(C&gt;E){K--;}if(K&lt;0){K=0;}else{if(K&gt;this.datatable.getColumnSet().tree[0].length){K=this.datatable.getColumnSet().tree[0].length;}}this.newIndex=K;}}},onDragDrop:function(){this.datatable.reorderColumn(this.column,this.newIndex);},endDrag:function(){this.newIndex=null;YAHOO.util.Dom.setStyle(this.pointer,&quot;display&quot;,&quot;none&quot;);}});}YAHOO.util.ColumnResizer=function(E,C,D,A,B){if(E&amp;&amp;C&amp;&amp;D&amp;&amp;A){this.datatable=E;this.column=C;this.headCell=D;this.headCellLiner=C.getThLinerEl();this.resizerLiner=D.firstChild;this.init(A,A,{dragOnly:true,dragElId:B.id});this.initFrame();this.resetResizerEl();this.setPadding(0,1,0,0);}else{}};if(YAHOO.util.DD){YAHOO.extend(YAHOO.util.ColumnResizer,YAHOO.util.DDProxy,{resetResizerEl:function(){var A=YAHOO.util.Dom.get(this.handleElId).style;A.left=&quot;auto&quot;;A.right=0;A.top=&quot;auto&quot;;A.bottom=0;A.height=this.headCell.offsetHeight+&quot;px&quot;;},onMouseUp:function(G){var E=this.datatable.getColumnSet().keys,B;for(var C=0,A=E.length;C&lt;A;C++){B=E[C];if(B._ddResizer){B._ddResizer.resetResizerEl();}}this.resetResizerEl();var D=this.headCellLiner;var F=D.offsetWidth-(parseInt(YAHOO.util.Dom.getStyle(D,&quot;paddingLeft&quot;),10)|0)-(parseInt(YAHOO.util.Dom.getStyle(D,&quot;paddingRight&quot;),10)|0);this.datatable.fireEvent(&quot;columnResizeEvent&quot;,{column:this.column,target:this.headCell,width:F});},onMouseDown:function(A){this.startWidth=this.headCellLiner.offsetWidth;this.startX=YAHOO.util.Event.getXY(A)[0];this.nLinerPadding=(parseInt(YAHOO.util.Dom.getStyle(this.headCellLiner,&quot;paddingLeft&quot;),10)|0)+(parseInt(YAHOO.util.Dom.getStyle(this.headCellLiner,&quot;paddingRight&quot;),10)|0);},clickValidator:function(B){if(!this.column.hidden){var A=YAHOO.util.Event.getTarget(B);return(this.isValidHandleChild(A)&amp;&amp;(this.id==this.handleElId||this.DDM.handleWasClicked(A,this.id)));}},startDrag:function(){var E=this.datatable.getColumnSet().keys,D=this.column.getKeyIndex(),B;for(var C=0,A=E.length;C&lt;A;C++){B=E[C];if(B._ddResizer){YAHOO.util.Dom.get(B._ddResizer.handleElId).style.height=&quot;1em&quot;;}}},onDrag:function(C){var D=YAHOO.util.Event.getXY(C)[0];if(D&gt;YAHOO.util.Dom.getX(this.headCellLiner)){var A=D-this.startX;var B=this.startWidth+A-this.nLinerPadding;if(B&gt;0){this.datatable.setColumnWidth(this.column,B);}}}});}(function(){var G=YAHOO.lang,A=YAHOO.util,E=YAHOO.widget,C=A.Dom,F=A.Event,D=E.DataTable;YAHOO.widget.RecordSet=function(H){this._sId=&quot;yui-rs&quot;+E.RecordSet._nCount;E.RecordSet._nCount++;this._records=[];
-if(H){if(G.isArray(H)){this.addRecords(H);}else{if(G.isObject(H)){this.addRecord(H);}}}};var B=E.RecordSet;B._nCount=0;B.prototype={_sId:null,_addRecord:function(J,H){var I=new YAHOO.widget.Record(J);if(YAHOO.lang.isNumber(H)&amp;&amp;(H&gt;-1)){this._records.splice(H,0,I);}else{this._records[this._records.length]=I;}return I;},_setRecord:function(I,H){if(!G.isNumber(H)||H&lt;0){H=this._records.length;}return(this._records[H]=new E.Record(I));},_deleteRecord:function(I,H){if(!G.isNumber(H)||(H&lt;0)){H=1;}this._records.splice(I,H);},getId:function(){return this._sId;},toString:function(){return&quot;RecordSet instance &quot;+this._sId;},getLength:function(){return this._records.length;},getRecord:function(H){var I;if(H instanceof E.Record){for(I=0;I&lt;this._records.length;I++){if(this._records[I]&amp;&amp;(this._records[I]._sId===H._sId)){return H;}}}else{if(G.isNumber(H)){if((H&gt;-1)&amp;&amp;(H&lt;this.getLength())){return this._records[H];}}else{if(G.isString(H)){for(I=0;I&lt;this._records.length;I++){if(this._records[I]&amp;&amp;(this._records[I]._sId===H)){return this._records[I];}}}}}return null;},getRecords:function(I,H){if(!G.isNumber(I)){return this._records;}if(!G.isNumber(H)){return this._records.slice(I);}return this._records.slice(I,I+H);},hasRecords:function(I,H){var K=this.getRecords(I,H);for(var J=0;J&lt;H;++J){if(typeof K[J]===&quot;undefined&quot;){return false;}}return true;},getRecordIndex:function(I){if(I){for(var H=this._records.length-1;H&gt;-1;H--){if(this._records[H]&amp;&amp;I.getId()===this._records[H].getId()){return H;}}}return null;},addRecord:function(J,H){if(G.isObject(J)){var I=this._addRecord(J,H);this.fireEvent(&quot;recordAddEvent&quot;,{record:I,data:J});return I;}else{return null;}},addRecords:function(L,K){if(G.isArray(L)){var O=[],I,M,H;K=G.isNumber(K)?K:this._records.length;I=K;for(M=0,H=L.length;M&lt;H;++M){if(G.isObject(L[M])){var J=this._addRecord(L[M],I++);O.push(J);}}this.fireEvent(&quot;recordsAddEvent&quot;,{records:O,data:L});return O;}else{if(G.isObject(L)){var N=this._addRecord(L);this.fireEvent(&quot;recordsAddEvent&quot;,{records:[N],data:L});return N;}else{return null;}}},setRecord:function(J,H){if(G.isObject(J)){var I=this._setRecord(J,H);this.fireEvent(&quot;recordSetEvent&quot;,{record:I,data:J});return I;}else{return null;}},setRecords:function(L,K){var O=E.Record,I=G.isArray(L)?L:[L],N=[],M=0,H=I.length,J=0;K=parseInt(K,10)|0;for(;M&lt;H;++M){if(typeof I[M]===&quot;object&quot;&amp;&amp;I[M]){N[J++]=this._records[K+M]=new O(I[M]);}}this.fireEvent(&quot;recordsSetEvent&quot;,{records:N,data:L});this.fireEvent(&quot;recordsSet&quot;,{records:N,data:L});if(I.length&amp;&amp;!N.length){}return N.length&gt;1?N:N[0];},updateRecord:function(H,L){var J=this.getRecord(H);if(J&amp;&amp;G.isObject(L)){var K={};for(var I in J._oData){if(G.hasOwnProperty(J._oData,I)){K[I]=J._oData[I];}}J._oData=L;this.fireEvent(&quot;recordUpdateEvent&quot;,{record:J,newData:L,oldData:K});return J;}else{return null;}},updateKey:function(H,I,J){this.updateRecordValue(H,I,J);},updateRecordValue:function(H,K,N){var J=this.getRecord(H);if(J){var M=null;var L=J._oData[K];if(L&amp;&amp;G.isObject(L)){M={};for(var I in L){if(G.hasOwnProperty(L,I)){M[I]=L[I];}}}else{M=L;}J._oData[K]=N;this.fireEvent(&quot;keyUpdateEvent&quot;,{record:J,key:K,newData:N,oldData:M});this.fireEvent(&quot;recordValueUpdateEvent&quot;,{record:J,key:K,newData:N,oldData:M});}else{}},replaceRecords:function(H){this.reset();return this.addRecords(H);},sortRecords:function(H,J,I){return this._records.sort(function(L,K){return H(L,K,J,I);});},reverseRecords:function(){return this._records.reverse();},deleteRecord:function(H){if(G.isNumber(H)&amp;&amp;(H&gt;-1)&amp;&amp;(H&lt;this.getLength())){var I=E.DataTable._cloneObject(this.getRecord(H).getData());this._deleteRecord(H);this.fireEvent(&quot;recordDeleteEvent&quot;,{data:I,index:H});return I;}else{return null;}},deleteRecords:function(J,H){if(!G.isNumber(H)){H=1;}if(G.isNumber(J)&amp;&amp;(J&gt;-1)&amp;&amp;(J&lt;this.getLength())){var L=this.getRecords(J,H);var I=[];for(var K=0;K&lt;L.length;K++){I[I.length]=E.DataTable._cloneObject(L[K]);}this._deleteRecord(J,H);this.fireEvent(&quot;recordsDeleteEvent&quot;,{data:I,index:J});return I;}else{return null;}},reset:function(){this._records=[];this.fireEvent(&quot;resetEvent&quot;);}};G.augmentProto(B,A.EventProvider);YAHOO.widget.Record=function(H){this._nCount=E.Record._nCount;this._sId=&quot;yui-rec&quot;+this._nCount;E.Record._nCount++;this._oData={};if(G.isObject(H)){for(var I in H){if(G.hasOwnProperty(H,I)){this._oData[I]=H[I];}}}};YAHOO.widget.Record._nCount=0;YAHOO.widget.Record.prototype={_nCount:null,_sId:null,_oData:null,getCount:function(){return this._nCount;},getId:function(){return this._sId;},getData:function(H){if(G.isString(H)){return this._oData[H];}else{return this._oData;}},setData:function(H,I){this._oData[H]=I;}};})();(function(){var H=YAHOO.lang,A=YAHOO.util,E=YAHOO.widget,B=YAHOO.env.ua,C=A.Dom,G=A.Event,F=A.DataSourceBase;YAHOO.widget.DataTable=function(I,M,O,K){var L=E.DataTable;if(K&amp;&amp;K.scrollable){return new YAHOO.widget.ScrollingDataTable(I,M,O,K);}this._nIndex=L._nCount;this._sId=&quot;yui-dt&quot;+this._nIndex;this._oChainRender=new YAHOO.util.Chain();this._oChainRender.subscribe(&quot;end&quot;,this._onRenderChainEnd,this,true);this._initConfigs(K);this._initDataSource(O);if(!this._oDataSource){return;}this._initColumnSet(M);if(!this._oColumnSet){return;}this._initRecordSet();if(!this._oRecordSet){}L.superclass.constructor.call(this,I,this.configs);var Q=this._initDomElements(I);if(!Q){return;}this.showTableMessage(this.get(&quot;MSG_LOADING&quot;),L.CLASS_LOADING);this._initEvents();L._nCount++;L._nCurrentCount++;var N={success:this.onDataReturnSetRows,failure:this.onDataReturnSetRows,scope:this,argument:this.getState()};var P=this.get(&quot;initialLoad&quot;);if(P===true){this._oDataSource.sendRequest(this.get(&quot;initialRequest&quot;),N);}else{if(P===false){this.showTableMessage(this.get(&quot;MSG_EMPTY&quot;),L.CLASS_EMPTY);}else{var J=P||{};N.argument=J.argument||{};this._oDataSource.sendRequest(J.request,N);}}};var D=E.DataTable;H.augmentObject(D,{CLASS_DATATABLE:&quot;yui-dt&quot;,CLASS_LINER:&quot;yui-dt-liner&quot;,CLASS_LABEL:&quot;yui-dt-label&quot;,CLASS_MESSAGE:&quot;yui-dt-message&quot;,CLASS_MASK:&quot;yui-dt-mask&quot;,CLASS_DATA:&quot;yui-dt-data&quot;,CLASS_COLTARGET:&quot;yui-dt-coltarget&quot;,CLASS_RESIZER:&quot;yui-dt-resizer&quot;,CLASS_RESIZERLINER:&quot;yui-dt-resizerliner&quot;,CLASS_RESIZERPROXY:&quot;yui-dt-resizerproxy&quot;,CLASS_EDITOR:&quot;yui-dt-editor&quot;,CLASS_PAGINATOR:&quot;yui-dt-paginator&quot;,CLASS_PAGE:&quot;yui-dt-page&quot;,CLASS_DEFAULT:&quot;yui-dt-default&quot;,CLASS_PREVIOUS:&quot;yui-dt-previous&quot;,CLASS_NEXT:&quot;yui-dt-next&quot;,CLASS_FIRST:&quot;yui-dt-first&quot;,CLASS_LAST:&quot;yui-dt-last&quot;,CLASS_EVEN:&quot;yui-dt-even&quot;,CLASS_ODD:&quot;yui-dt-odd&quot;,CLASS_SELECTED:&quot;yui-dt-selected&quot;,CLASS_HIGHLIGHTED:&quot;yui-dt-highlighted&quot;,CLASS_HIDDEN:&quot;yui-dt-hidden&quot;,CLASS_DISABLED:&quot;yui-dt-disabled&quot;,CLASS_EMPTY:&quot;yui-dt-empty&quot;,CLASS_LOADING:&quot;yui-dt-loading&quot;,CLASS_ERROR:&quot;yui-dt-error&quot;,CLASS_EDITABLE:&quot;yui-dt-editable&quot;,CLASS_DRAGGABLE:&quot;yui-dt-draggable&quot;,CLASS_RESIZEABLE:&quot;yui-dt-resizeable&quot;,CLASS_SCROLLABLE:&quot;yui-dt-scrollable&quot;,CLASS_SORTABLE:&quot;yui-dt-sortable&quot;,CLASS_ASC:&quot;yui-dt-asc&quot;,CLASS_DESC:&quot;yui-dt-desc&quot;,CLASS_BUTTON:&quot;yui-dt-button&quot;,CLASS_CHECKBOX:&quot;yui-dt-checkbox&quot;,CLASS_DROPDOWN:&quot;yui-dt-dropdown&quot;,CLASS_RADIO:&quot;yui-dt-radio&quot;,_nCount:0,_nCurrentCount:0,_elDynStyleNode:null,_bDynStylesFallback:(B.ie)?true:false,_oDynStyles:{},_elColumnDragTarget:null,_elColumnResizerProxy:null,_cloneObject:function(L){if(!H.isValue(L)){return L;
+if(H){if(G.isArray(H)){this.addRecords(H);}else{if(G.isObject(H)){this.addRecord(H);}}}};var B=E.RecordSet;B._nCount=0;B.prototype={_sId:null,_addRecord:function(J,H){var I=new YAHOO.widget.Record(J);if(YAHOO.lang.isNumber(H)&amp;&amp;(H&gt;-1)){this._records.splice(H,0,I);}else{this._records[this._records.length]=I;}return I;},_setRecord:function(I,H){if(!G.isNumber(H)||H&lt;0){H=this._records.length;}return(this._records[H]=new E.Record(I));},_deleteRecord:function(I,H){if(!G.isNumber(H)||(H&lt;0)){H=1;}this._records.splice(I,H);},getId:function(){return this._sId;},toString:function(){return&quot;RecordSet instance &quot;+this._sId;},getLength:function(){return this._records.length;},getRecord:function(H){var I;if(H instanceof E.Record){for(I=0;I&lt;this._records.length;I++){if(this._records[I]&amp;&amp;(this._records[I]._sId===H._sId)){return H;}}}else{if(G.isNumber(H)){if((H&gt;-1)&amp;&amp;(H&lt;this.getLength())){return this._records[H];}}else{if(G.isString(H)){for(I=0;I&lt;this._records.length;I++){if(this._records[I]&amp;&amp;(this._records[I]._sId===H)){return this._records[I];}}}}}return null;},getRecords:function(I,H){if(!G.isNumber(I)){return this._records;}if(!G.isNumber(H)){return this._records.slice(I);}return this._records.slice(I,I+H);},hasRecords:function(I,H){var K=this.getRecords(I,H);for(var J=0;J&lt;H;++J){if(typeof K[J]===&quot;undefined&quot;){return false;}}return true;},getRecordIndex:function(I){if(I){for(var H=this._records.length-1;H&gt;-1;H--){if(this._records[H]&amp;&amp;I.getId()===this._records[H].getId()){return H;}}}return null;},addRecord:function(J,H){if(G.isObject(J)){var I=this._addRecord(J,H);this.fireEvent(&quot;recordAddEvent&quot;,{record:I,data:J});return I;}else{return null;}},addRecords:function(L,K){if(G.isArray(L)){var O=[],I,M,H;K=G.isNumber(K)?K:this._records.length;I=K;for(M=0,H=L.length;M&lt;H;++M){if(G.isObject(L[M])){var J=this._addRecord(L[M],I++);O.push(J);}}this.fireEvent(&quot;recordsAddEvent&quot;,{records:O,data:L});return O;}else{if(G.isObject(L)){var N=this._addRecord(L);this.fireEvent(&quot;recordsAddEvent&quot;,{records:[N],data:L});return N;}else{return null;}}},setRecord:function(J,H){if(G.isObject(J)){var I=this._setRecord(J,H);this.fireEvent(&quot;recordSetEvent&quot;,{record:I,data:J});return I;}else{return null;}},setRecords:function(L,K){var O=E.Record,I=G.isArray(L)?L:[L],N=[],M=0,H=I.length,J=0;K=parseInt(K,10)|0;for(;M&lt;H;++M){if(typeof I[M]===&quot;object&quot;&amp;&amp;I[M]){N[J++]=this._records[K+M]=new O(I[M]);}}this.fireEvent(&quot;recordsSetEvent&quot;,{records:N,data:L});this.fireEvent(&quot;recordsSet&quot;,{records:N,data:L});if(I.length&amp;&amp;!N.length){}return N.length&gt;1?N:N[0];},updateRecord:function(H,L){var J=this.getRecord(H);if(J&amp;&amp;G.isObject(L)){var K={};for(var I in J._oData){if(G.hasOwnProperty(J._oData,I)){K[I]=J._oData[I];}}J._oData=L;this.fireEvent(&quot;recordUpdateEvent&quot;,{record:J,newData:L,oldData:K});return J;}else{return null;}},updateKey:function(H,I,J){this.updateRecordValue(H,I,J);},updateRecordValue:function(H,K,N){var J=this.getRecord(H);if(J){var M=null;var L=J._oData[K];if(L&amp;&amp;G.isObject(L)){M={};for(var I in L){if(G.hasOwnProperty(L,I)){M[I]=L[I];}}}else{M=L;}J._oData[K]=N;this.fireEvent(&quot;keyUpdateEvent&quot;,{record:J,key:K,newData:N,oldData:M});this.fireEvent(&quot;recordValueUpdateEvent&quot;,{record:J,key:K,newData:N,oldData:M});}else{}},replaceRecords:function(H){this.reset();return this.addRecords(H);},sortRecords:function(H,J,I){return this._records.sort(function(L,K){return H(L,K,J,I);});},reverseRecords:function(){return this._records.reverse();},deleteRecord:function(H){if(G.isNumber(H)&amp;&amp;(H&gt;-1)&amp;&amp;(H&lt;this.getLength())){var I=E.DataTable._cloneObject(this.getRecord(H).getData());this._deleteRecord(H);this.fireEvent(&quot;recordDeleteEvent&quot;,{data:I,index:H});return I;}else{return null;}},deleteRecords:function(J,H){if(!G.isNumber(H)){H=1;}if(G.isNumber(J)&amp;&amp;(J&gt;-1)&amp;&amp;(J&lt;this.getLength())){var L=this.getRecords(J,H);var I=[];for(var K=0;K&lt;L.length;K++){I[I.length]=E.DataTable._cloneObject(L[K]);}this._deleteRecord(J,H);this.fireEvent(&quot;recordsDeleteEvent&quot;,{data:I,index:J});return I;}else{return null;}},reset:function(){this._records=[];this.fireEvent(&quot;resetEvent&quot;);}};G.augmentProto(B,A.EventProvider);YAHOO.widget.Record=function(H){this._nCount=E.Record._nCount;this._sId=&quot;yui-rec&quot;+this._nCount;E.Record._nCount++;this._oData={};if(G.isObject(H)){for(var I in H){if(G.hasOwnProperty(H,I)){this._oData[I]=H[I];}}}};YAHOO.widget.Record._nCount=0;YAHOO.widget.Record.prototype={_nCount:null,_sId:null,_oData:null,getCount:function(){return this._nCount;},getId:function(){return this._sId;},getData:function(H){if(G.isString(H)){return this._oData[H];}else{return this._oData;}},setData:function(H,I){this._oData[H]=I;}};})();(function(){var H=YAHOO.lang,A=YAHOO.util,E=YAHOO.widget,B=YAHOO.env.ua,C=A.Dom,G=A.Event,F=A.DataSourceBase;YAHOO.widget.DataTable=function(I,M,O,K){var L=E.DataTable;if(K&amp;&amp;K.scrollable){return new YAHOO.widget.ScrollingDataTable(I,M,O,K);}this._nIndex=L._nCount;this._sId=&quot;yui-dt&quot;+this._nIndex;this._oChainRender=new YAHOO.util.Chain();this._oChainRender.subscribe(&quot;end&quot;,this._onRenderChainEnd,this,true);this._initConfigs(K);this._initDataSource(O);if(!this._oDataSource){return;}this._initColumnSet(M);if(!this._oColumnSet){return;}this._initRecordSet();if(!this._oRecordSet){}L.superclass.constructor.call(this,I,this.configs);var Q=this._initDomElements(I);if(!Q){return;}this.showTableMessage(this.get(&quot;MSG_LOADING&quot;),L.CLASS_LOADING);this._initEvents();L._nCount++;L._nCurrentCount++;var N={success:this.onDataReturnSetRows,failure:this.onDataReturnSetRows,scope:this,argument:this.getState()};var P=this.get(&quot;initialLoad&quot;);if(P===true){this._oDataSource.sendRequest(this.get(&quot;initialRequest&quot;),N);}else{if(P===false){this.showTableMessage(this.get(&quot;MSG_EMPTY&quot;),L.CLASS_EMPTY);}else{var J=P||{};N.argument=J.argument||{};this._oDataSource.sendRequest(J.request,N);}}};var D=E.DataTable;H.augmentObject(D,{CLASS_DATATABLE:&quot;yui-dt&quot;,CLASS_LINER:&quot;yui-dt-liner&quot;,CLASS_LABEL:&quot;yui-dt-label&quot;,CLASS_MESSAGE:&quot;yui-dt-message&quot;,CLASS_MASK:&quot;yui-dt-mask&quot;,CLASS_DATA:&quot;yui-dt-data&quot;,CLASS_COLTARGET:&quot;yui-dt-coltarget&quot;,CLASS_RESIZER:&quot;yui-dt-resizer&quot;,CLASS_RESIZERLINER:&quot;yui-dt-resizerliner&quot;,CLASS_RESIZERPROXY:&quot;yui-dt-resizerproxy&quot;,CLASS_EDITOR:&quot;yui-dt-editor&quot;,CLASS_EDITOR_SHIM:&quot;yui-dt-editor-shim&quot;,CLASS_PAGINATOR:&quot;yui-dt-paginator&quot;,CLASS_PAGE:&quot;yui-dt-page&quot;,CLASS_DEFAULT:&quot;yui-dt-default&quot;,CLASS_PREVIOUS:&quot;yui-dt-previous&quot;,CLASS_NEXT:&quot;yui-dt-next&quot;,CLASS_FIRST:&quot;yui-dt-first&quot;,CLASS_LAST:&quot;yui-dt-last&quot;,CLASS_EVEN:&quot;yui-dt-even&quot;,CLASS_ODD:&quot;yui-dt-odd&quot;,CLASS_SELECTED:&quot;yui-dt-selected&quot;,CLASS_HIGHLIGHTED:&quot;yui-dt-highlighted&quot;,CLASS_HIDDEN:&quot;yui-dt-hidden&quot;,CLASS_DISABLED:&quot;yui-dt-disabled&quot;,CLASS_EMPTY:&quot;yui-dt-empty&quot;,CLASS_LOADING:&quot;yui-dt-loading&quot;,CLASS_ERROR:&quot;yui-dt-error&quot;,CLASS_EDITABLE:&quot;yui-dt-editable&quot;,CLASS_DRAGGABLE:&quot;yui-dt-draggable&quot;,CLASS_RESIZEABLE:&quot;yui-dt-resizeable&quot;,CLASS_SCROLLABLE:&quot;yui-dt-scrollable&quot;,CLASS_SORTABLE:&quot;yui-dt-sortable&quot;,CLASS_ASC:&quot;yui-dt-asc&quot;,CLASS_DESC:&quot;yui-dt-desc&quot;,CLASS_BUTTON:&quot;yui-dt-button&quot;,CLASS_CHECKBOX:&quot;yui-dt-checkbox&quot;,CLASS_DROPDOWN:&quot;yui-dt-dropdown&quot;,CLASS_RADIO:&quot;yui-dt-radio&quot;,_nCount:0,_nCurrentCount:0,_elDynStyleNode:null,_bDynStylesFallback:(B.ie)?true:false,_oDynStyles:{},_elColumnDragTarget:null,_elColumnResizerProxy:null,_cloneObject:function(L){if(!H.isValue(L)){return L;
 }var N={};if(L instanceof YAHOO.widget.BaseCellEditor){N=L;}else{if(H.isFunction(L)){N=L;}else{if(H.isArray(L)){var M=[];for(var K=0,J=L.length;K&lt;J;K++){M[K]=D._cloneObject(L[K]);}N=M;}else{if(H.isObject(L)){for(var I in L){if(H.hasOwnProperty(L,I)){if(H.isValue(L[I])&amp;&amp;H.isObject(L[I])||H.isArray(L[I])){N[I]=D._cloneObject(L[I]);}else{N[I]=L[I];}}}}else{N=L;}}}}return N;},_destroyColumnDragTargetEl:function(){if(D._elColumnDragTarget){var I=D._elColumnDragTarget;YAHOO.util.Event.purgeElement(I);I.parentNode.removeChild(I);D._elColumnDragTarget=null;}},_initColumnDragTargetEl:function(){if(!D._elColumnDragTarget){var I=document.createElement(&quot;div&quot;);I.className=D.CLASS_COLTARGET;I.style.display=&quot;none&quot;;document.body.insertBefore(I,document.body.firstChild);D._elColumnDragTarget=I;}return D._elColumnDragTarget;},_destroyColumnResizerProxyEl:function(){if(D._elColumnResizerProxy){var I=D._elColumnResizerProxy;YAHOO.util.Event.purgeElement(I);I.parentNode.removeChild(I);D._elColumnResizerProxy=null;}},_initColumnResizerProxyEl:function(){if(!D._elColumnResizerProxy){var I=document.createElement(&quot;div&quot;);I.id=&quot;yui-dt-colresizerproxy&quot;;I.className=D.CLASS_RESIZERPROXY;document.body.insertBefore(I,document.body.firstChild);D._elColumnResizerProxy=I;}return D._elColumnResizerProxy;},formatButton:function(I,J,K,M){var L=H.isValue(M)?M:&quot;Click&quot;;I.innerHTML='&lt;button type=&quot;button&quot; class=&quot;'+D.CLASS_BUTTON+'&quot;&gt;'+L+&quot;&lt;/button&gt;&quot;;},formatCheckbox:function(I,J,K,M){var L=M;L=(L)?' checked=&quot;checked&quot;':&quot;&quot;;I.innerHTML='&lt;input type=&quot;checkbox&quot;'+L+' class=&quot;'+D.CLASS_CHECKBOX+'&quot; /&gt;';},formatCurrency:function(I,J,K,L){I.innerHTML=A.Number.format(L,K.currencyOptions||this.get(&quot;currencyOptions&quot;));},formatDate:function(I,K,L,M){var J=L.dateOptions||this.get(&quot;dateOptions&quot;);I.innerHTML=A.Date.format(M,J,J.locale);},formatDropdown:function(K,R,P,I){var Q=(H.isValue(I))?I:R.getData(P.field),S=(H.isArray(P.dropdownOptions))?P.dropdownOptions:null,J,O=K.getElementsByTagName(&quot;select&quot;);if(O.length===0){J=document.createElement(&quot;select&quot;);J.className=D.CLASS_DROPDOWN;J=K.appendChild(J);G.addListener(J,&quot;change&quot;,this._onDropdownChange,this);}J=O[0];if(J){J.innerHTML=&quot;&quot;;if(S){for(var M=0;M&lt;S.length;M++){var N=S[M];var L=document.createElement(&quot;option&quot;);L.value=(H.isValue(N.value))?N.value:N;L.innerHTML=(H.isValue(N.text))?N.text:(H.isValue(N.label))?N.label:N;L=J.appendChild(L);if(L.value==Q){L.selected=true;}}}else{J.innerHTML='&lt;option selected value=&quot;'+Q+'&quot;&gt;'+Q+&quot;&lt;/option&gt;&quot;;}}else{K.innerHTML=H.isValue(I)?I:&quot;&quot;;}},formatEmail:function(I,J,K,L){if(H.isString(L)){I.innerHTML='&lt;a href=&quot;mailto:'+L+'&quot;&gt;'+L+&quot;&lt;/a&gt;&quot;;}else{I.innerHTML=H.isValue(L)?L:&quot;&quot;;}},formatLink:function(I,J,K,L){if(H.isString(L)){I.innerHTML='&lt;a href=&quot;'+L+'&quot;&gt;'+L+&quot;&lt;/a&gt;&quot;;}else{I.innerHTML=H.isValue(L)?L:&quot;&quot;;}},formatNumber:function(I,J,K,L){I.innerHTML=A.Number.format(L,K.numberOptions||this.get(&quot;numberOptions&quot;));},formatRadio:function(I,J,K,M){var L=M;L=(L)?' checked=&quot;checked&quot;':&quot;&quot;;I.innerHTML='&lt;input type=&quot;radio&quot;'+L+' name=&quot;'+this.getId()+&quot;-col-&quot;+K.getSanitizedKey()+'&quot;'+' class=&quot;'+D.CLASS_RADIO+'&quot; /&gt;';},formatText:function(I,J,L,M){var K=(H.isValue(M))?M:&quot;&quot;;I.innerHTML=K.toString().replace(/&amp;/g,&quot;&amp;#38;&quot;).replace(/&lt;/g,&quot;&amp;#60;&quot;).replace(/&gt;/g,&quot;&amp;#62;&quot;);},formatTextarea:function(J,K,M,N){var L=(H.isValue(N))?N:&quot;&quot;,I=&quot;&lt;textarea&gt;&quot;+L+&quot;&lt;/textarea&gt;&quot;;J.innerHTML=I;},formatTextbox:function(J,K,M,N){var L=(H.isValue(N))?N:&quot;&quot;,I='&lt;input type=&quot;text&quot; value=&quot;'+L+'&quot; /&gt;';J.innerHTML=I;},formatDefault:function(I,J,K,L){I.innerHTML=L===undefined||L===null||(typeof L===&quot;number&quot;&amp;&amp;isNaN(L))?&quot;&amp;#160;&quot;:L.toString();},validateNumber:function(J){var I=J*1;if(H.isNumber(I)){return I;}else{return undefined;}}});D.Formatter={button:D.formatButton,checkbox:D.formatCheckbox,currency:D.formatCurrency,&quot;date&quot;:D.formatDate,dropdown:D.formatDropdown,email:D.formatEmail,link:D.formatLink,&quot;number&quot;:D.formatNumber,radio:D.formatRadio,text:D.formatText,textarea:D.formatTextarea,textbox:D.formatTextbox,defaultFormatter:D.formatDefault};H.extend(D,A.Element,{initAttributes:function(I){I=I||{};D.superclass.initAttributes.call(this,I);this.setAttributeConfig(&quot;summary&quot;,{value:&quot;&quot;,validator:H.isString,method:function(J){if(this._elTable){this._elTable.summary=J;}}});this.setAttributeConfig(&quot;selectionMode&quot;,{value:&quot;standard&quot;,validator:H.isString});this.setAttributeConfig(&quot;sortedBy&quot;,{value:null,validator:function(J){if(J){return(H.isObject(J)&amp;&amp;J.key);}else{return(J===null);}},method:function(K){var R=this.get(&quot;sortedBy&quot;);this._configs.sortedBy.value=K;var J,O,M,Q;if(this._elThead){if(R&amp;&amp;R.key&amp;&amp;R.dir){J=this._oColumnSet.getColumn(R.key);O=J.getKeyIndex();var U=J.getThEl();C.removeClass(U,R.dir);this.formatTheadCell(J.getThLinerEl().firstChild,J,K);}if(K){M=(K.column)?K.column:this._oColumnSet.getColumn(K.key);Q=M.getKeyIndex();var V=M.getThEl();if(K.dir&amp;&amp;((K.dir==&quot;asc&quot;)||(K.dir==&quot;desc&quot;))){var P=(K.dir==&quot;desc&quot;)?D.CLASS_DESC:D.CLASS_ASC;C.addClass(V,P);}else{var L=K.dir||D.CLASS_ASC;C.addClass(V,L);}this.formatTheadCell(M.getThLinerEl().firstChild,M,K);}}if(this._elTbody){this._elTbody.style.display=&quot;none&quot;;var S=this._elTbody.rows,T;for(var N=S.length-1;N&gt;-1;N--){T=S[N].childNodes;if(T[O]){C.removeClass(T[O],R.dir);}if(T[Q]){C.addClass(T[Q],K.dir);}}this._elTbody.style.display=&quot;&quot;;}this._clearTrTemplateEl();}});this.setAttributeConfig(&quot;paginator&quot;,{value:null,validator:function(J){return J===null||J instanceof E.Paginator;},method:function(){this._updatePaginator.apply(this,arguments);}});this.setAttributeConfig(&quot;caption&quot;,{value:null,validator:H.isString,method:function(J){this._initCaptionEl(J);}});this.setAttributeConfig(&quot;draggableColumns&quot;,{value:false,validator:H.isBoolean,method:function(J){if(this._elThead){if(J){this._initDraggableColumns();}else{this._destroyDraggableColumns();}}}});this.setAttributeConfig(&quot;renderLoopSize&quot;,{value:0,validator:H.isNumber});this.setAttributeConfig(&quot;formatRow&quot;,{value:null,validator:H.isFunction});this.setAttributeConfig(&quot;generateRequest&quot;,{value:function(K,N){K=K||{pagination:null,sortedBy:null};var M=encodeURIComponent((K.sortedBy)?K.sortedBy.key:N.getColumnSet().keys[0].getKey());
 var J=(K.sortedBy&amp;&amp;K.sortedBy.dir===YAHOO.widget.DataTable.CLASS_DESC)?&quot;desc&quot;:&quot;asc&quot;;var O=(K.pagination)?K.pagination.recordOffset:0;var L=(K.pagination)?K.pagination.rowsPerPage:null;return&quot;sort=&quot;+M+&quot;&amp;dir=&quot;+J+&quot;&amp;startIndex=&quot;+O+((L!==null)?&quot;&amp;results=&quot;+L:&quot;&quot;);},validator:H.isFunction});this.setAttributeConfig(&quot;initialRequest&quot;,{value:null});this.setAttributeConfig(&quot;initialLoad&quot;,{value:true});this.setAttributeConfig(&quot;dynamicData&quot;,{value:false,validator:H.isBoolean});this.setAttributeConfig(&quot;MSG_EMPTY&quot;,{value:&quot;No records found.&quot;,validator:H.isString});this.setAttributeConfig(&quot;MSG_LOADING&quot;,{value:&quot;Loading...&quot;,validator:H.isString});this.setAttributeConfig(&quot;MSG_ERROR&quot;,{value:&quot;Data error.&quot;,validator:H.isString});this.setAttributeConfig(&quot;MSG_SORTASC&quot;,{value:&quot;Click to sort ascending&quot;,validator:H.isString,method:function(K){if(this._elThead){for(var L=0,M=this.getColumnSet().keys,J=M.length;L&lt;J;L++){if(M[L].sortable&amp;&amp;this.getColumnSortDir(M[L])===D.CLASS_ASC){M[L]._elThLabel.firstChild.title=K;}}}}});this.setAttributeConfig(&quot;MSG_SORTDESC&quot;,{value:&quot;Click to sort descending&quot;,validator:H.isString,method:function(K){if(this._elThead){for(var L=0,M=this.getColumnSet().keys,J=M.length;L&lt;J;L++){if(M[L].sortable&amp;&amp;this.getColumnSortDir(M[L])===D.CLASS_DESC){M[L]._elThLabel.firstChild.title=K;}}}}});this.setAttributeConfig(&quot;currencySymbol&quot;,{value:&quot;$&quot;,validator:H.isString});this.setAttributeConfig(&quot;currencyOptions&quot;,{value:{prefix:this.get(&quot;currencySymbol&quot;),decimalPlaces:2,decimalSeparator:&quot;.&quot;,thousandsSeparator:&quot;,&quot;}});this.setAttributeConfig(&quot;dateOptions&quot;,{value:{format:&quot;%m/%d/%Y&quot;,locale:&quot;en&quot;}});this.setAttributeConfig(&quot;numberOptions&quot;,{value:{decimalPlaces:0,thousandsSeparator:&quot;,&quot;}});},_bInit:true,_nIndex:null,_nTrCount:0,_nTdCount:0,_sId:null,_oChainRender:null,_elContainer:null,_elMask:null,_elTable:null,_elCaption:null,_elColgroup:null,_elThead:null,_elTbody:null,_elMsgTbody:null,_elMsgTr:null,_elMsgTd:null,_oDataSource:null,_oColumnSet:null,_oRecordSet:null,_oCellEditor:null,_sFirstTrId:null,_sLastTrId:null,_elTrTemplate:null,_aDynFunctions:[],clearTextSelection:function(){var I;if(window.getSelection){I=window.getSelection();}else{if(document.getSelection){I=document.getSelection();}else{if(document.selection){I=document.selection;}}}if(I){if(I.empty){I.empty();}else{if(I.removeAllRanges){I.removeAllRanges();}else{if(I.collapse){I.collapse();}}}}},_focusEl:function(I){I=I||this._elTbody;setTimeout(function(){try{I.focus();}catch(J){}},0);},_repaintGecko:(B.gecko)?function(J){J=J||this._elContainer;var I=J.parentNode;var K=J.nextSibling;I.insertBefore(I.removeChild(J),K);}:function(){},_repaintOpera:(B.opera)?function(){if(B.opera){document.documentElement.className+=&quot; &quot;;document.documentElement.className=YAHOO.lang.trim(document.documentElement.className);}}:function(){},_repaintWebkit:(B.webkit)?function(J){J=J||this._elContainer;var I=J.parentNode;var K=J.nextSibling;I.insertBefore(I.removeChild(J),K);}:function(){},_initConfigs:function(I){if(!I||!H.isObject(I)){I={};}this.configs=I;},_initColumnSet:function(M){var L,J,I;if(this._oColumnSet){for(J=0,I=this._oColumnSet.keys.length;J&lt;I;J++){L=this._oColumnSet.keys[J];D._oDynStyles[&quot;.&quot;+this.getId()+&quot;-col-&quot;+L.getSanitizedKey()+&quot; .&quot;+D.CLASS_LINER]=undefined;if(L.editor&amp;&amp;L.editor.unsubscribeAll){L.editor.unsubscribeAll();}}this._oColumnSet=null;this._clearTrTemplateEl();}if(H.isArray(M)){this._oColumnSet=new YAHOO.widget.ColumnSet(M);}else{if(M instanceof YAHOO.widget.ColumnSet){this._oColumnSet=M;}}var K=this._oColumnSet.keys;for(J=0,I=K.length;J&lt;I;J++){L=K[J];if(L.editor&amp;&amp;L.editor.subscribe){L.editor.subscribe(&quot;showEvent&quot;,this._onEditorShowEvent,this,true);L.editor.subscribe(&quot;keydownEvent&quot;,this._onEditorKeydownEvent,this,true);L.editor.subscribe(&quot;revertEvent&quot;,this._onEditorRevertEvent,this,true);L.editor.subscribe(&quot;saveEvent&quot;,this._onEditorSaveEvent,this,true);L.editor.subscribe(&quot;cancelEvent&quot;,this._onEditorCancelEvent,this,true);L.editor.subscribe(&quot;blurEvent&quot;,this._onEditorBlurEvent,this,true);L.editor.subscribe(&quot;blockEvent&quot;,this._onEditorBlockEvent,this,true);L.editor.subscribe(&quot;unblockEvent&quot;,this._onEditorUnblockEvent,this,true);}}},_initDataSource:function(I){this._oDataSource=null;if(I&amp;&amp;(H.isFunction(I.sendRequest))){this._oDataSource=I;}else{var J=null;var N=this._elContainer;var K=0;if(N.hasChildNodes()){var M=N.childNodes;for(K=0;K&lt;M.length;K++){if(M[K].nodeName&amp;&amp;M[K].nodeName.toLowerCase()==&quot;table&quot;){J=M[K];break;}}if(J){var L=[];for(;K&lt;this._oColumnSet.keys.length;K++){L.push({key:this._oColumnSet.keys[K].key});}this._oDataSource=new F(J);this._oDataSource.responseType=F.TYPE_HTMLTABLE;this._oDataSource.responseSchema={fields:L};}}}},_initRecordSet:function(){if(this._oRecordSet){this._oRecordSet.reset();}else{this._oRecordSet=new YAHOO.widget.RecordSet();}},_initDomElements:function(I){this._initContainerEl(I);this._initTableEl(this._elContainer);this._initColgroupEl(this._elTable);this._initTheadEl(this._elTable);this._initMsgTbodyEl(this._elTable);this._initTbodyEl(this._elTable);if(!this._elContainer||!this._elTable||!this._elColgroup||!this._elThead||!this._elTbody||!this._elMsgTbody){return false;}else{return true;}},_destroyContainerEl:function(I){C.removeClass(I,D.CLASS_DATATABLE);G.purgeElement(I,true);I.innerHTML=&quot;&quot;;this._elContainer=null;this._elColgroup=null;this._elThead=null;this._elTbody=null;},_initContainerEl:function(J){J=C.get(J);if(J&amp;&amp;J.nodeName&amp;&amp;(J.nodeName.toLowerCase()==&quot;div&quot;)){this._destroyContainerEl(J);C.addClass(J,D.CLASS_DATATABLE);G.addListener(J,&quot;focus&quot;,this._onTableFocus,this);G.addListener(J,&quot;dblclick&quot;,this._onTableDblclick,this);this._elContainer=J;var I=document.createElement(&quot;div&quot;);I.className=D.CLASS_MASK;I.style.display=&quot;none&quot;;this._elMask=J.appendChild(I);}},_destroyTableEl:function(){var I=this._elTable;if(I){G.purgeElement(I,true);I.parentNode.removeChild(I);this._elCaption=null;this._elColgroup=null;this._elThead=null;this._elTbody=null;}},_initCaptionEl:function(I){if(this._elTable&amp;&amp;I){if(!this._elCaption){this._elCaption=this._elTable.createCaption();
 }this._elCaption.innerHTML=I;}else{if(this._elCaption){this._elCaption.parentNode.removeChild(this._elCaption);}}},_initTableEl:function(I){if(I){this._destroyTableEl();this._elTable=I.appendChild(document.createElement(&quot;table&quot;));this._elTable.summary=this.get(&quot;summary&quot;);if(this.get(&quot;caption&quot;)){this._initCaptionEl(this.get(&quot;caption&quot;));}}},_destroyColgroupEl:function(){var I=this._elColgroup;if(I){var J=I.parentNode;G.purgeElement(I,true);J.removeChild(I);this._elColgroup=null;}},_initColgroupEl:function(R){if(R){this._destroyColgroupEl();var K=this._aColIds||[],Q=this._oColumnSet.keys,L=0,O=K.length,I,N,P=document.createDocumentFragment(),M=document.createElement(&quot;col&quot;);for(L=0,O=Q.length;L&lt;O;L++){N=Q[L];I=P.appendChild(M.cloneNode(false));}var J=R.insertBefore(document.createElement(&quot;colgroup&quot;),R.firstChild);J.appendChild(P);this._elColgroup=J;}},_insertColgroupColEl:function(I){if(H.isNumber(I)&amp;&amp;this._elColgroup){var J=this._elColgroup.childNodes[I]||null;this._elColgroup.insertBefore(document.createElement(&quot;col&quot;),J);}},_removeColgroupColEl:function(I){if(H.isNumber(I)&amp;&amp;this._elColgroup&amp;&amp;this._elColgroup.childNodes[I]){this._elColgroup.removeChild(this._elColgroup.childNodes[I]);}},_reorderColgroupColEl:function(K,J){if(H.isArray(K)&amp;&amp;H.isNumber(J)&amp;&amp;this._elColgroup&amp;&amp;(this._elColgroup.childNodes.length&gt;K[K.length-1])){var I,M=[];for(I=K.length-1;I&gt;-1;I--){M.push(this._elColgroup.removeChild(this._elColgroup.childNodes[K[I]]));}var L=this._elColgroup.childNodes[J]||null;for(I=M.length-1;I&gt;-1;I--){this._elColgroup.insertBefore(M[I],L);}}},_destroyTheadEl:function(){var J=this._elThead;if(J){var I=J.parentNode;G.purgeElement(J,true);this._destroyColumnHelpers();I.removeChild(J);this._elThead=null;}},_initTheadEl:function(S){S=S||this._elTable;if(S){this._destroyTheadEl();var N=(this._elColgroup)?S.insertBefore(document.createElement(&quot;thead&quot;),this._elColgroup.nextSibling):S.appendChild(document.createElement(&quot;thead&quot;));G.addListener(N,&quot;focus&quot;,this._onTheadFocus,this);G.addListener(N,&quot;keydown&quot;,this._onTheadKeydown,this);G.addListener(N,&quot;mouseover&quot;,this._onTableMouseover,this);G.addListener(N,&quot;mouseout&quot;,this._onTableMouseout,this);G.addListener(N,&quot;mousedown&quot;,this._onTableMousedown,this);G.addListener(N,&quot;mouseup&quot;,this._onTableMouseup,this);G.addListener(N,&quot;click&quot;,this._onTheadClick,this);var U=this._oColumnSet,Q,O,M,K;var T=U.tree;var L;for(O=0;O&lt;T.length;O++){var J=N.appendChild(document.createElement(&quot;tr&quot;));for(M=0;M&lt;T[O].length;M++){Q=T[O][M];L=J.appendChild(document.createElement(&quot;th&quot;));this._initThEl(L,Q);}if(O===0){C.addClass(J,D.CLASS_FIRST);}if(O===(T.length-1)){C.addClass(J,D.CLASS_LAST);}}var I=U.headers[0]||[];for(O=0;O&lt;I.length;O++){C.addClass(C.get(this.getId()+&quot;-th-&quot;+I[O]),D.CLASS_FIRST);}var P=U.headers[U.headers.length-1]||[];for(O=0;O&lt;P.length;O++){C.addClass(C.get(this.getId()+&quot;-th-&quot;+P[O]),D.CLASS_LAST);}if(B.webkit&amp;&amp;B.webkit&lt;420){var R=this;setTimeout(function(){N.style.display=&quot;&quot;;},0);N.style.display=&quot;none&quot;;}this._elThead=N;this._initColumnHelpers();}},_initThEl:function(M,L){M.id=this.getId()+&quot;-th-&quot;+L.getSanitizedKey();M.innerHTML=&quot;&quot;;M.rowSpan=L.getRowspan();M.colSpan=L.getColspan();L._elTh=M;var I=M.appendChild(document.createElement(&quot;div&quot;));I.id=M.id+&quot;-liner&quot;;I.className=D.CLASS_LINER;L._elThLiner=I;var J=I.appendChild(document.createElement(&quot;span&quot;));J.className=D.CLASS_LABEL;if(L.abbr){M.abbr=L.abbr;}if(L.hidden){this._clearMinWidth(L);}M.className=this._getColumnClassNames(L);if(L.width){var K=(L.minWidth&amp;&amp;(L.width&lt;L.minWidth))?L.minWidth:L.width;if(D._bDynStylesFallback){M.firstChild.style.overflow=&quot;hidden&quot;;M.firstChild.style.width=K+&quot;px&quot;;}else{this._setColumnWidthDynStyles(L,K+&quot;px&quot;,&quot;hidden&quot;);}}this.formatTheadCell(J,L,this.get(&quot;sortedBy&quot;));L._elThLabel=J;},formatTheadCell:function(I,M,K){var Q=M.getKey();var P=H.isValue(M.label)?M.label:Q;if(M.sortable){var N=this.getColumnSortDir(M,K);var J=(N===D.CLASS_DESC);if(K&amp;&amp;(M.key===K.key)){J=!(K.dir===D.CLASS_DESC);}var L=this.getId()+&quot;-href-&quot;+M.getSanitizedKey();var O=(J)?this.get(&quot;MSG_SORTDESC&quot;):this.get(&quot;MSG_SORTASC&quot;);I.innerHTML='&lt;a href=&quot;'+L+'&quot; title=&quot;'+O+'&quot; class=&quot;'+D.CLASS_SORTABLE+'&quot;&gt;'+P+&quot;&lt;/a&gt;&quot;;}else{I.innerHTML=P;}},_destroyDraggableColumns:function(){var K,L;for(var J=0,I=this._oColumnSet.tree[0].length;J&lt;I;J++){K=this._oColumnSet.tree[0][J];if(K._dd){K._dd=K._dd.unreg();C.removeClass(K.getThEl(),D.CLASS_DRAGGABLE);}}},_initDraggableColumns:function(){this._destroyDraggableColumns();if(A.DD){var L,M,J;for(var K=0,I=this._oColumnSet.tree[0].length;K&lt;I;K++){L=this._oColumnSet.tree[0][K];M=L.getThEl();C.addClass(M,D.CLASS_DRAGGABLE);J=D._initColumnDragTargetEl();L._dd=new YAHOO.widget.ColumnDD(this,L,M,J);}}else{}},_destroyResizeableColumns:function(){var J=this._oColumnSet.keys;for(var K=0,I=J.length;K&lt;I;K++){if(J[K]._ddResizer){J[K]._ddResizer=J[K]._ddResizer.unreg();C.removeClass(J[K].getThEl(),D.CLASS_RESIZEABLE);}}},_initResizeableColumns:function(){this._destroyResizeableColumns();if(A.DD){var O,J,M,P,I,Q,L;for(var K=0,N=this._oColumnSet.keys.length;K&lt;N;K++){O=this._oColumnSet.keys[K];if(O.resizeable){J=O.getThEl();C.addClass(J,D.CLASS_RESIZEABLE);M=O.getThLinerEl();P=J.appendChild(document.createElement(&quot;div&quot;));P.className=D.CLASS_RESIZERLINER;P.appendChild(M);I=P.appendChild(document.createElement(&quot;div&quot;));I.id=J.id+&quot;-resizer&quot;;I.className=D.CLASS_RESIZER;O._elResizer=I;Q=D._initColumnResizerProxyEl();O._ddResizer=new YAHOO.util.ColumnResizer(this,O,J,I,Q);L=function(R){G.stopPropagation(R);};G.addListener(I,&quot;click&quot;,L);}}}else{}},_destroyColumnHelpers:function(){this._destroyDraggableColumns();this._destroyResizeableColumns();},_initColumnHelpers:function(){if(this.get(&quot;draggableColumns&quot;)){this._initDraggableColumns();}this._initResizeableColumns();},_destroyTbodyEl:function(){var I=this._elTbody;if(I){var J=I.parentNode;G.purgeElement(I,true);J.removeChild(I);this._elTbody=null;}},_initTbodyEl:function(J){if(J){this._destroyTbodyEl();var I=J.appendChild(document.createElement(&quot;tbody&quot;));I.tabIndex=0;I.className=D.CLASS_DATA;
@@ -18,6 +18,7 @@ J--){this.unselectCell(K.cells[J]);}}}}else{if(I==39){K=this.getNextTrEl(R.el);i
 if(J&amp;&amp;J.length&gt;0){for(var I=J.length-1;I&gt;-1;I--){if(J[I].recordId&amp;&amp;J[I].columnKey){return J[I];}}}},highlightRow:function(K){var I=this.getTrEl(K);if(I){var J=this.getRecord(I);C.addClass(I,D.CLASS_HIGHLIGHTED);this.fireEvent(&quot;rowHighlightEvent&quot;,{record:J,el:I});return;}},unhighlightRow:function(K){var I=this.getTrEl(K);if(I){var J=this.getRecord(I);C.removeClass(I,D.CLASS_HIGHLIGHTED);this.fireEvent(&quot;rowUnhighlightEvent&quot;,{record:J,el:I});return;}},highlightCell:function(I){var L=this.getTdEl(I);if(L){if(this._elLastHighlightedTd){this.unhighlightCell(this._elLastHighlightedTd);}var K=this.getRecord(L);var J=this.getColumn(L.cellIndex).getKey();C.addClass(L,D.CLASS_HIGHLIGHTED);this._elLastHighlightedTd=L;this.fireEvent(&quot;cellHighlightEvent&quot;,{record:K,column:this.getColumn(L.cellIndex),key:this.getColumn(L.cellIndex).getKey(),el:L});return;}},unhighlightCell:function(I){var K=this.getTdEl(I);if(K){var J=this.getRecord(K);C.removeClass(K,D.CLASS_HIGHLIGHTED);this._elLastHighlightedTd=null;this.fireEvent(&quot;cellUnhighlightEvent&quot;,{record:J,column:this.getColumn(K.cellIndex),key:this.getColumn(K.cellIndex).getKey(),el:K});return;}},getCellEditor:function(){return this._oCellEditor;},showCellEditor:function(P,Q,L){P=this.getTdEl(P);if(P){L=this.getColumn(P);if(L&amp;&amp;L.editor){var J=this._oCellEditor;if(J){if(this._oCellEditor.cancel){this._oCellEditor.cancel();}else{if(J.isActive){this.cancelCellEditor();}}}if(L.editor instanceof YAHOO.widget.BaseCellEditor){J=L.editor;var N=J.attach(this,P);if(N){J.move();N=this.doBeforeShowCellEditor(J);if(N){J.show();this._oCellEditor=J;}}}else{if(!Q||!(Q instanceof YAHOO.widget.Record)){Q=this.getRecord(P);}if(!L||!(L instanceof YAHOO.widget.Column)){L=this.getColumn(P);}if(Q&amp;&amp;L){if(!this._oCellEditor||this._oCellEditor.container){this._initCellEditorEl();}J=this._oCellEditor;J.cell=P;J.record=Q;J.column=L;J.validator=(L.editorOptions&amp;&amp;H.isFunction(L.editorOptions.validator))?L.editorOptions.validator:null;J.value=Q.getData(L.key);J.defaultValue=null;var K=J.container;var O=C.getX(P);var M=C.getY(P);if(isNaN(O)||isNaN(M)){O=P.offsetLeft+C.getX(this._elTbody.parentNode)-this._elTbody.scrollLeft;M=P.offsetTop+C.getY(this._elTbody.parentNode)-this._elTbody.scrollTop+this._elThead.offsetHeight;}K.style.left=O+&quot;px&quot;;K.style.top=M+&quot;px&quot;;this.doBeforeShowCellEditor(this._oCellEditor);K.style.display=&quot;&quot;;G.addListener(K,&quot;keydown&quot;,function(S,R){if((S.keyCode==27)){R.cancelCellEditor();R.focusTbodyEl();}else{R.fireEvent(&quot;editorKeydownEvent&quot;,{editor:R._oCellEditor,event:S});}},this);var I;if(H.isString(L.editor)){switch(L.editor){case&quot;checkbox&quot;:I=D.editCheckbox;break;case&quot;date&quot;:I=D.editDate;break;case&quot;dropdown&quot;:I=D.editDropdown;break;case&quot;radio&quot;:I=D.editRadio;break;case&quot;textarea&quot;:I=D.editTextarea;break;case&quot;textbox&quot;:I=D.editTextbox;break;default:I=null;}}else{if(H.isFunction(L.editor)){I=L.editor;}}if(I){I(this._oCellEditor,this);if(!L.editorOptions||!L.editorOptions.disableBtns){this.showCellEditorBtns(K);}J.isActive=true;this.fireEvent(&quot;editorShowEvent&quot;,{editor:J});return;}}}}}},_initCellEditorEl:function(){var I=document.createElement(&quot;div&quot;);I.id=this._sId+&quot;-celleditor&quot;;I.style.display=&quot;none&quot;;I.tabIndex=0;C.addClass(I,D.CLASS_EDITOR);var K=C.getFirstChild(document.body);if(K){I=C.insertBefore(I,K);}else{I=document.body.appendChild(I);}var J={};J.container=I;J.value=null;J.isActive=false;this._oCellEditor=J;},doBeforeShowCellEditor:function(I){return true;},saveCellEditor:function(){if(this._oCellEditor){if(this._oCellEditor.save){this._oCellEditor.save();}else{if(this._oCellEditor.isActive){var I=this._oCellEditor.value;var J=this._oCellEditor.record.getData(this._oCellEditor.column.key);if(this._oCellEditor.validator){I=this._oCellEditor.value=this._oCellEditor.validator.call(this,I,J,this._oCellEditor);if(I===null){this.resetCellEditor();this.fireEvent(&quot;editorRevertEvent&quot;,{editor:this._oCellEditor,oldData:J,newData:I});return;}}this._oRecordSet.updateRecordValue(this._oCellEditor.record,this._oCellEditor.column.key,this._oCellEditor.value);this.formatCell(this._oCellEditor.cell.firstChild);this._oChainRender.add({method:function(){this.validateColumnWidths();},scope:this});this._oChainRender.run();this.resetCellEditor();this.fireEvent(&quot;editorSaveEvent&quot;,{editor:this._oCellEditor,oldData:J,newData:I});}}}},cancelCellEditor:function(){if(this._oCellEditor){if(this._oCellEditor.cancel){this._oCellEditor.cancel();}else{if(this._oCellEditor.isActive){this.resetCellEditor();this.fireEvent(&quot;editorCancelEvent&quot;,{editor:this._oCellEditor});}}}},destroyCellEditor:function(){if(this._oCellEditor){this._oCellEditor.destroy();this._oCellEditor=null;}},_onEditorShowEvent:function(I){this.fireEvent(&quot;editorShowEvent&quot;,I);},_onEditorKeydownEvent:function(I){this.fireEvent(&quot;editorKeydownEvent&quot;,I);},_onEditorRevertEvent:function(I){this.fireEvent(&quot;editorRevertEvent&quot;,I);},_onEditorSaveEvent:function(I){this.fireEvent(&quot;editorSaveEvent&quot;,I);},_onEditorCancelEvent:function(I){this.fireEvent(&quot;editorCancelEvent&quot;,I);},_onEditorBlurEvent:function(I){this.fireEvent(&quot;editorBlurEvent&quot;,I);},_onEditorBlockEvent:function(I){this.fireEvent(&quot;editorBlockEvent&quot;,I);},_onEditorUnblockEvent:function(I){this.fireEvent(&quot;editorUnblockEvent&quot;,I);},onEditorBlurEvent:function(I){if(I.editor.disableBtns){if(I.editor.save){I.editor.save();}}else{if(I.editor.cancel){I.editor.cancel();}}},onEditorBlockEvent:function(I){this.disable();},onEditorUnblockEvent:function(I){this.undisable();},doBeforeLoadData:function(I,J,K){return true;},onEventSortColumn:function(K){var I=K.event;var M=K.target;var J=this.getThEl(M)||this.getTdEl(M);if(J){var L=this.getColumn(J);if(L.sortable){G.stopEvent(I);this.sortColumn(L);}}else{}},onEventSelectColumn:function(I){this.selectColumn(I.target);},onEventHighlightColumn:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.highlightColumn(I.target);}},onEventUnhighlightColumn:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.unhighlightColumn(I.target);}},onEventSelectRow:function(J){var I=this.get(&quot;selectionMode&quot;);
 if(I==&quot;single&quot;){this._handleSingleSelectionByMouse(J);}else{this._handleStandardSelectionByMouse(J);}},onEventSelectCell:function(J){var I=this.get(&quot;selectionMode&quot;);if(I==&quot;cellblock&quot;){this._handleCellBlockSelectionByMouse(J);}else{if(I==&quot;cellrange&quot;){this._handleCellRangeSelectionByMouse(J);}else{this._handleSingleCellSelectionByMouse(J);}}},onEventHighlightRow:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.highlightRow(I.target);}},onEventUnhighlightRow:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.unhighlightRow(I.target);}},onEventHighlightCell:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.highlightCell(I.target);}},onEventUnhighlightCell:function(I){if(!C.isAncestor(I.target,G.getRelatedTarget(I.event))){this.unhighlightCell(I.target);}},onEventFormatCell:function(I){var L=I.target;var J=this.getTdEl(L);if(J){var K=this.getColumn(J.cellIndex);this.formatCell(J.firstChild,this.getRecord(J),K);}else{}},onEventShowCellEditor:function(I){this.showCellEditor(I.target);},onEventSaveCellEditor:function(I){if(this._oCellEditor){if(this._oCellEditor.save){this._oCellEditor.save();}else{this.saveCellEditor();}}},onEventCancelCellEditor:function(I){if(this._oCellEditor){if(this._oCellEditor.cancel){this._oCellEditor.cancel();}else{this.cancelCellEditor();}}},onDataReturnInitializeTable:function(I,J,K){if((this instanceof D)&amp;&amp;this._sId){this.initializeTable();this.onDataReturnSetRows(I,J,K);}},onDataReturnReplaceRows:function(M,L,N){if((this instanceof D)&amp;&amp;this._sId){this.fireEvent(&quot;dataReturnEvent&quot;,{request:M,response:L,payload:N});var J=this.doBeforeLoadData(M,L,N),K=this.get(&quot;paginator&quot;),I=0;if(J&amp;&amp;L&amp;&amp;!L.error&amp;&amp;H.isArray(L.results)){this._oRecordSet.reset();if(this.get(&quot;dynamicData&quot;)){if(N&amp;&amp;N.pagination&amp;&amp;H.isNumber(N.pagination.recordOffset)){I=N.pagination.recordOffset;}else{if(K){I=K.getStartIndex();}}}this._oRecordSet.setRecords(L.results,I|0);this._handleDataReturnPayload(M,L,N);this.render();}else{if(J&amp;&amp;L.error){this.showTableMessage(this.get(&quot;MSG_ERROR&quot;),D.CLASS_ERROR);}}}},onDataReturnAppendRows:function(J,K,L){if((this instanceof D)&amp;&amp;this._sId){this.fireEvent(&quot;dataReturnEvent&quot;,{request:J,response:K,payload:L});var I=this.doBeforeLoadData(J,K,L);if(I&amp;&amp;K&amp;&amp;!K.error&amp;&amp;H.isArray(K.results)){this.addRows(K.results);this._handleDataReturnPayload(J,K,L);}else{if(I&amp;&amp;K.error){this.showTableMessage(this.get(&quot;MSG_ERROR&quot;),D.CLASS_ERROR);}}}},onDataReturnInsertRows:function(J,K,L){if((this instanceof D)&amp;&amp;this._sId){this.fireEvent(&quot;dataReturnEvent&quot;,{request:J,response:K,payload:L});var I=this.doBeforeLoadData(J,K,L);if(I&amp;&amp;K&amp;&amp;!K.error&amp;&amp;H.isArray(K.results)){this.addRows(K.results,(L?L.insertIndex:0));this._handleDataReturnPayload(J,K,L);}else{if(I&amp;&amp;K.error){this.showTableMessage(this.get(&quot;MSG_ERROR&quot;),D.CLASS_ERROR);}}}},onDataReturnUpdateRows:function(J,K,L){if((this instanceof D)&amp;&amp;this._sId){this.fireEvent(&quot;dataReturnEvent&quot;,{request:J,response:K,payload:L});var I=this.doBeforeLoadData(J,K,L);if(I&amp;&amp;K&amp;&amp;!K.error&amp;&amp;H.isArray(K.results)){this.updateRows((L?L.updateIndex:0),K.results);this._handleDataReturnPayload(J,K,L);}else{if(I&amp;&amp;K.error){this.showTableMessage(this.get(&quot;MSG_ERROR&quot;),D.CLASS_ERROR);}}}},onDataReturnSetRows:function(M,L,N){if((this instanceof D)&amp;&amp;this._sId){this.fireEvent(&quot;dataReturnEvent&quot;,{request:M,response:L,payload:N});var J=this.doBeforeLoadData(M,L,N),K=this.get(&quot;paginator&quot;),I=0;if(J&amp;&amp;L&amp;&amp;!L.error&amp;&amp;H.isArray(L.results)){if(this.get(&quot;dynamicData&quot;)){if(N&amp;&amp;N.pagination&amp;&amp;H.isNumber(N.pagination.recordOffset)){I=N.pagination.recordOffset;}else{if(K){I=K.getStartIndex();}}this._oRecordSet.reset();}this._oRecordSet.setRecords(L.results,I|0);this._handleDataReturnPayload(M,L,N);this.render();}else{if(J&amp;&amp;L.error){this.showTableMessage(this.get(&quot;MSG_ERROR&quot;),D.CLASS_ERROR);}}}else{}},handleDataReturnPayload:function(J,I,K){return K;},_handleDataReturnPayload:function(K,J,L){L=this.handleDataReturnPayload(K,J,L);if(L){var I=this.get(&quot;paginator&quot;);if(I){if(this.get(&quot;dynamicData&quot;)){if(E.Paginator.isNumeric(L.totalRecords)){I.set(&quot;totalRecords&quot;,L.totalRecords);}}else{I.set(&quot;totalRecords&quot;,this._oRecordSet.getLength());}if(H.isObject(L.pagination)){I.set(&quot;rowsPerPage&quot;,L.pagination.rowsPerPage);I.set(&quot;recordOffset&quot;,L.pagination.recordOffset);}}if(L.sortedBy){this.set(&quot;sortedBy&quot;,L.sortedBy);}else{if(L.sorting){this.set(&quot;sortedBy&quot;,L.sorting);}}}},showCellEditorBtns:function(K){var L=K.appendChild(document.createElement(&quot;div&quot;));C.addClass(L,D.CLASS_BUTTON);var J=L.appendChild(document.createElement(&quot;button&quot;));C.addClass(J,D.CLASS_DEFAULT);J.innerHTML=&quot;OK&quot;;G.addListener(J,&quot;click&quot;,function(N,M){M.onEventSaveCellEditor(N,M);M.focusTbodyEl();},this,true);var I=L.appendChild(document.createElement(&quot;button&quot;));I.innerHTML=&quot;Cancel&quot;;G.addListener(I,&quot;click&quot;,function(N,M){M.onEventCancelCellEditor(N,M);M.focusTbodyEl();},this,true);},resetCellEditor:function(){var I=this._oCellEditor.container;I.style.display=&quot;none&quot;;G.purgeElement(I,true);I.innerHTML=&quot;&quot;;this._oCellEditor.value=null;this._oCellEditor.isActive=false;},getBody:function(){return this.getTbodyEl();},getCell:function(I){return this.getTdEl(I);},getRow:function(I){return this.getTrEl(I);},refreshView:function(){this.render();},select:function(J){if(!H.isArray(J)){J=[J];}for(var I=0;I&lt;J.length;I++){this.selectRow(J[I]);}},onEventEditCell:function(I){this.onEventShowCellEditor(I);},_syncColWidths:function(){this.validateColumnWidths();}});D.prototype.onDataReturnSetRecords=D.prototype.onDataReturnSetRows;D.prototype.onPaginatorChange=D.prototype.onPaginatorChangeRequest;D.formatTheadCell=function(){};D.editCheckbox=function(){};D.editDate=function(){};D.editDropdown=function(){};D.editRadio=function(){};D.editTextarea=function(){};D.editTextbox=function(){};})();(function(){var C=YAHOO.lang,F=YAHOO.util,E=YAHOO.widget,A=YAHOO.env.ua,D=F.Dom,J=F.Event,I=F.DataSourceBase,G=E.DataTable,B=E.Paginator;E.ScrollingDataTable=function(N,M,K,L){L=L||{};if(L.scrollable){L.scrollable=false;}E.ScrollingDataTable.superclass.constructor.call(this,N,M,K,L);
 this.subscribe(&quot;columnShowEvent&quot;,this._onColumnChange);};var H=E.ScrollingDataTable;C.augmentObject(H,{CLASS_HEADER:&quot;yui-dt-hd&quot;,CLASS_BODY:&quot;yui-dt-bd&quot;});C.extend(H,G,{_elHdContainer:null,_elHdTable:null,_elBdContainer:null,_elBdThead:null,_elTmpContainer:null,_elTmpTable:null,_bScrollbarX:null,initAttributes:function(K){K=K||{};H.superclass.initAttributes.call(this,K);this.setAttributeConfig(&quot;width&quot;,{value:null,validator:C.isString,method:function(L){if(this._elHdContainer&amp;&amp;this._elBdContainer){this._elHdContainer.style.width=L;this._elBdContainer.style.width=L;this._syncScrollX();this._syncScrollOverhang();}}});this.setAttributeConfig(&quot;height&quot;,{value:null,validator:C.isString,method:function(L){if(this._elHdContainer&amp;&amp;this._elBdContainer){this._elBdContainer.style.height=L;this._syncScrollX();this._syncScrollY();this._syncScrollOverhang();}}});this.setAttributeConfig(&quot;COLOR_COLUMNFILLER&quot;,{value:&quot;#F2F2F2&quot;,validator:C.isString,method:function(L){this._elHdContainer.style.backgroundColor=L;}});},_initDomElements:function(K){this._initContainerEl(K);if(this._elContainer&amp;&amp;this._elHdContainer&amp;&amp;this._elBdContainer){this._initTableEl();if(this._elHdTable&amp;&amp;this._elTable){this._initColgroupEl(this._elHdTable);this._initTheadEl(this._elHdTable,this._elTable);this._initTbodyEl(this._elTable);this._initMsgTbodyEl(this._elTable);}}if(!this._elContainer||!this._elTable||!this._elColgroup||!this._elThead||!this._elTbody||!this._elMsgTbody||!this._elHdTable||!this._elBdThead){return false;}else{return true;}},_destroyContainerEl:function(K){D.removeClass(K,G.CLASS_SCROLLABLE);H.superclass._destroyContainerEl.call(this,K);this._elHdContainer=null;this._elBdContainer=null;},_initContainerEl:function(L){H.superclass._initContainerEl.call(this,L);if(this._elContainer){L=this._elContainer;D.addClass(L,G.CLASS_SCROLLABLE);var K=document.createElement(&quot;div&quot;);K.style.width=this.get(&quot;width&quot;)||&quot;&quot;;K.style.backgroundColor=this.get(&quot;COLOR_COLUMNFILLER&quot;);D.addClass(K,H.CLASS_HEADER);this._elHdContainer=K;L.appendChild(K);var M=document.createElement(&quot;div&quot;);M.style.width=this.get(&quot;width&quot;)||&quot;&quot;;M.style.height=this.get(&quot;height&quot;)||&quot;&quot;;D.addClass(M,H.CLASS_BODY);J.addListener(M,&quot;scroll&quot;,this._onScroll,this);this._elBdContainer=M;L.appendChild(M);}},_initCaptionEl:function(K){},_destroyHdTableEl:function(){var K=this._elHdTable;if(K){J.purgeElement(K,true);K.parentNode.removeChild(K);this._elBdThead=null;}},_initTableEl:function(){if(this._elHdContainer){this._destroyHdTableEl();this._elHdTable=this._elHdContainer.appendChild(document.createElement(&quot;table&quot;));}H.superclass._initTableEl.call(this,this._elBdContainer);},_initTheadEl:function(L,K){L=L||this._elHdTable;K=K||this._elTable;this._initBdTheadEl(K);H.superclass._initTheadEl.call(this,L);},_initThEl:function(L,K){H.superclass._initThEl.call(this,L,K);L.id=this.getId()+&quot;-fixedth-&quot;+K.getSanitizedKey();},_destroyBdTheadEl:function(){var K=this._elBdThead;if(K){var L=K.parentNode;J.purgeElement(K,true);L.removeChild(K);this._elBdThead=null;this._destroyColumnHelpers();}},_initBdTheadEl:function(S){if(S){this._destroyBdTheadEl();var O=S.insertBefore(document.createElement(&quot;thead&quot;),S.firstChild);var U=this._oColumnSet,T=U.tree,N,K,R,P,M,L,Q;for(P=0,L=T.length;P&lt;L;P++){K=O.appendChild(document.createElement(&quot;tr&quot;));for(M=0,Q=T[P].length;M&lt;Q;M++){R=T[P][M];N=K.appendChild(document.createElement(&quot;th&quot;));this._initBdThEl(N,R,P,M);}}this._elBdThead=O;}},_initBdThEl:function(N,M){N.id=this.getId()+&quot;-th-&quot;+M.getSanitizedKey();N.rowSpan=M.getRowspan();N.colSpan=M.getColspan();if(M.abbr){N.abbr=M.abbr;}var L=M.getKey();var K=C.isValue(M.label)?M.label:L;N.innerHTML=K;},_initTbodyEl:function(K){H.superclass._initTbodyEl.call(this,K);K.style.marginTop=(this._elTbody.offsetTop&gt;0)?&quot;-&quot;+this._elTbody.offsetTop+&quot;px&quot;:0;},_focusEl:function(L){L=L||this._elTbody;var K=this;this._storeScrollPositions();setTimeout(function(){setTimeout(function(){try{L.focus();K._restoreScrollPositions();}catch(M){}},0);},0);},_runRenderChain:function(){this._storeScrollPositions();this._oChainRender.run();},_storeScrollPositions:function(){this._nScrollTop=this._elBdContainer.scrollTop;this._nScrollLeft=this._elBdContainer.scrollLeft;},clearScrollPositions:function(){this._nScrollTop=0;this._nScrollLeft=0;},_restoreScrollPositions:function(){if(this._nScrollTop){this._elBdContainer.scrollTop=this._nScrollTop;this._nScrollTop=null;}if(this._nScrollLeft){this._elBdContainer.scrollLeft=this._nScrollLeft;this._nScrollLeft=null;}},_validateColumnWidth:function(N,K){if(!N.width&amp;&amp;!N.hidden){var P=N.getThEl();if(N._calculatedWidth){this._setColumnWidth(N,&quot;auto&quot;,&quot;visible&quot;);}if(P.offsetWidth!==K.offsetWidth){var M=(P.offsetWidth&gt;K.offsetWidth)?N.getThLinerEl():K.firstChild;var L=Math.max(0,(M.offsetWidth-(parseInt(D.getStyle(M,&quot;paddingLeft&quot;),10)|0)-(parseInt(D.getStyle(M,&quot;paddingRight&quot;),10)|0)),N.minWidth);var O=&quot;visible&quot;;if((N.maxAutoWidth&gt;0)&amp;&amp;(L&gt;N.maxAutoWidth)){L=N.maxAutoWidth;O=&quot;hidden&quot;;}this._elTbody.style.display=&quot;none&quot;;this._setColumnWidth(N,L+&quot;px&quot;,O);N._calculatedWidth=L;this._elTbody.style.display=&quot;&quot;;}}},validateColumnWidths:function(S){var U=this._oColumnSet.keys,W=U.length,L=this.getFirstTrEl();if(A.ie){this._setOverhangValue(1);}if(U&amp;&amp;L&amp;&amp;(L.childNodes.length===W)){var M=this.get(&quot;width&quot;);if(M){this._elHdContainer.style.width=&quot;&quot;;this._elBdContainer.style.width=&quot;&quot;;}this._elContainer.style.width=&quot;&quot;;if(S&amp;&amp;C.isNumber(S.getKeyIndex())){this._validateColumnWidth(S,L.childNodes[S.getKeyIndex()]);}else{var T,K=[],O,Q,R;for(Q=0;Q&lt;W;Q++){S=U[Q];if(!S.width&amp;&amp;!S.hidden&amp;&amp;S._calculatedWidth){K[K.length]=S;}}this._elTbody.style.display=&quot;none&quot;;for(Q=0,R=K.length;Q&lt;R;Q++){this._setColumnWidth(K[Q],&quot;auto&quot;,&quot;visible&quot;);}this._elTbody.style.display=&quot;&quot;;K=[];for(Q=0;Q&lt;W;Q++){S=U[Q];T=L.childNodes[Q];if(!S.width&amp;&amp;!S.hidden){var N=S.getThEl();if(N.offsetWidth!==T.offsetWidth){var V=(N.offsetWidth&gt;T.offsetWidth)?S.getThLinerEl():T.firstChild;var P=Math.max(0,(V.offsetWidth-(parseInt(D.getStyle(V,&quot;paddingLeft&quot;),10)|0)-(parseInt(D.getStyle(V,&quot;paddingRight&quot;),10)|0)),S.minWidth);
-var X=&quot;visible&quot;;if((S.maxAutoWidth&gt;0)&amp;&amp;(P&gt;S.maxAutoWidth)){P=S.maxAutoWidth;X=&quot;hidden&quot;;}K[K.length]=[S,P,X];}}}this._elTbody.style.display=&quot;none&quot;;for(Q=0,R=K.length;Q&lt;R;Q++){O=K[Q];this._setColumnWidth(O[0],O[1]+&quot;px&quot;,O[2]);O[0]._calculatedWidth=O[1];}this._elTbody.style.display=&quot;&quot;;}if(M){this._elHdContainer.style.width=M;this._elBdContainer.style.width=M;}}this._syncScroll();this._restoreScrollPositions();},_syncScroll:function(){this._syncScrollX();this._syncScrollY();this._syncScrollOverhang();if(A.opera){this._elHdContainer.scrollLeft=this._elBdContainer.scrollLeft;if(!this.get(&quot;width&quot;)){document.body.style+=&quot;&quot;;}}},_syncScrollY:function(){var K=this._elTbody,L=this._elBdContainer;if(!this.get(&quot;width&quot;)){this._elContainer.style.width=(L.scrollHeight&gt;L.clientHeight)?(K.parentNode.clientWidth+19)+&quot;px&quot;:(K.parentNode.clientWidth+2)+&quot;px&quot;;}},_syncScrollX:function(){var K=this._elTbody,L=this._elBdContainer;if(!this.get(&quot;height&quot;)&amp;&amp;(A.ie)){L.style.height=(L.scrollWidth&gt;L.offsetWidth)?(K.parentNode.offsetHeight+18)+&quot;px&quot;:K.parentNode.offsetHeight+&quot;px&quot;;}if(this._elTbody.rows.length===0){this._elMsgTbody.parentNode.style.width=this.getTheadEl().parentNode.offsetWidth+&quot;px&quot;;}else{this._elMsgTbody.parentNode.style.width=&quot;&quot;;}},_syncScrollOverhang:function(){var L=this._elBdContainer,K=1;if((L.scrollHeight&gt;L.clientHeight)&amp;&amp;(L.scrollWidth&gt;L.clientWidth)){K=18;}this._setOverhangValue(K);},_setOverhangValue:function(N){var P=this._oColumnSet.headers[this._oColumnSet.headers.length-1]||[],L=P.length,K=this._sId+&quot;-fixedth-&quot;,O=N+&quot;px solid &quot;+this.get(&quot;COLOR_COLUMNFILLER&quot;);this._elThead.style.display=&quot;none&quot;;for(var M=0;M&lt;L;M++){D.get(K+P[M]).style.borderRight=O;}this._elThead.style.display=&quot;&quot;;},getHdContainerEl:function(){return this._elHdContainer;},getBdContainerEl:function(){return this._elBdContainer;},getHdTableEl:function(){return this._elHdTable;},getBdTableEl:function(){return this._elTable;},disable:function(){var K=this._elMask;K.style.width=this._elBdContainer.offsetWidth+&quot;px&quot;;K.style.height=this._elHdContainer.offsetHeight+this._elBdContainer.offsetHeight+&quot;px&quot;;K.style.display=&quot;&quot;;this.fireEvent(&quot;disableEvent&quot;);},removeColumn:function(M){var K=this._elHdContainer.scrollLeft;var L=this._elBdContainer.scrollLeft;M=H.superclass.removeColumn.call(this,M);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=L;return M;},insertColumn:function(N,L){var K=this._elHdContainer.scrollLeft;var M=this._elBdContainer.scrollLeft;var O=H.superclass.insertColumn.call(this,N,L);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=M;return O;},reorderColumn:function(N,L){var K=this._elHdContainer.scrollLeft;var M=this._elBdContainer.scrollLeft;var O=H.superclass.reorderColumn.call(this,N,L);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=M;return O;},setColumnWidth:function(L,K){L=this.getColumn(L);if(L){this._storeScrollPositions();if(C.isNumber(K)){K=(K&gt;L.minWidth)?K:L.minWidth;L.width=K;this._setColumnWidth(L,K+&quot;px&quot;);this._syncScroll();this.fireEvent(&quot;columnSetWidthEvent&quot;,{column:L,width:K});}else{if(K===null){L.width=K;this._setColumnWidth(L,&quot;auto&quot;);this.validateColumnWidths(L);this.fireEvent(&quot;columnUnsetWidthEvent&quot;,{column:L});}}this._clearTrTemplateEl();}else{}},scrollTo:function(M){var L=this.getTdEl(M);if(L){this.clearScrollPositions();this.getBdContainerEl().scrollLeft=L.offsetLeft;this.getBdContainerEl().scrollTop=L.parentNode.offsetTop;}else{var K=this.getTrEl(M);if(K){this.clearScrollPositions();this.getBdContainerEl().scrollTop=K.offsetTop;}}},showTableMessage:function(O,K){var P=this._elMsgTd;if(C.isString(O)){P.firstChild.innerHTML=O;}if(C.isString(K)){D.addClass(P.firstChild,K);}var N=this.getTheadEl();var L=N.parentNode;var M=L.offsetWidth;this._elMsgTbody.parentNode.style.width=this.getTheadEl().parentNode.offsetWidth+&quot;px&quot;;this._elMsgTbody.style.display=&quot;&quot;;this.fireEvent(&quot;tableMsgShowEvent&quot;,{html:O,className:K});},_onColumnChange:function(K){var L=(K.column)?K.column:(K.editor)?K.editor.column:null;this._storeScrollPositions();this.validateColumnWidths(L);},_onScroll:function(M,L){L._elHdContainer.scrollLeft=L._elBdContainer.scrollLeft;if(L._oCellEditor&amp;&amp;L._oCellEditor.isActive){L.fireEvent(&quot;editorBlurEvent&quot;,{editor:L._oCellEditor});L.cancelCellEditor();}var N=J.getTarget(M);var K=N.nodeName.toLowerCase();L.fireEvent(&quot;tableScrollEvent&quot;,{event:M,target:N});},_onTheadKeydown:function(N,L){if(J.getCharCode(N)===9){setTimeout(function(){if((L instanceof H)&amp;&amp;L._sId){L._elBdContainer.scrollLeft=L._elHdContainer.scrollLeft;}},0);}var O=J.getTarget(N);var K=O.nodeName.toLowerCase();var M=true;while(O&amp;&amp;(K!=&quot;table&quot;)){switch(K){case&quot;body&quot;:return;case&quot;input&quot;:case&quot;textarea&quot;:break;case&quot;thead&quot;:M=L.fireEvent(&quot;theadKeyEvent&quot;,{target:O,event:N});break;default:break;}if(M===false){return;}else{O=O.parentNode;if(O){K=O.nodeName.toLowerCase();}}}L.fireEvent(&quot;tableKeyEvent&quot;,{target:(O||L._elContainer),event:N});}});})();(function(){var C=YAHOO.lang,F=YAHOO.util,E=YAHOO.widget,B=YAHOO.env.ua,D=F.Dom,I=F.Event,H=E.DataTable;E.BaseCellEditor=function(K,J){this._sId=this._sId||&quot;yui-ceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;this._sType=K;this._initConfigs(J);this._initEvents();this.render();};var A=E.BaseCellEditor;C.augmentObject(A,{_nCount:0,CLASS_CELLEDITOR:&quot;yui-ceditor&quot;});A.prototype={_sId:null,_sType:null,_oDataTable:null,_oColumn:null,_oRecord:null,_elTd:null,_elContainer:null,_elCancelBtn:null,_elSaveBtn:null,_initConfigs:function(K){if(K&amp;&amp;YAHOO.lang.isObject(K)){for(var J in K){if(J){this[J]=K[J];}}}},_initEvents:function(){this.createEvent(&quot;showEvent&quot;);this.createEvent(&quot;keydownEvent&quot;);this.createEvent(&quot;invalidDataEvent&quot;);this.createEvent(&quot;revertEvent&quot;);this.createEvent(&quot;saveEvent&quot;);this.createEvent(&quot;cancelEvent&quot;);this.createEvent(&quot;blurEvent&quot;);this.createEvent(&quot;blockEvent&quot;);this.createEvent(&quot;unblockEvent&quot;);},asyncSubmitter:null,value:null,defaultValue:null,validator:null,resetInvalidData:true,isActive:false,LABEL_SAVE:&quot;Save&quot;,LABEL_CANCEL:&quot;Cancel&quot;,disableBtns:false,toString:function(){return&quot;CellEditor instance &quot;+this._sId;
-},getId:function(){return this._sId;},getDataTable:function(){return this._oDataTable;},getColumn:function(){return this._oColumn;},getRecord:function(){return this._oRecord;},getTdEl:function(){return this._elTd;},getContainerEl:function(){return this._elContainer;},destroy:function(){this.unsubscribeAll();var K=this.getColumn();if(K){K.editor=null;}var J=this.getContainerEl();I.purgeElement(J,true);J.parentNode.removeChild(J);},render:function(){if(this._elContainer){YAHOO.util.Event.purgeElement(this._elContainer,true);this._elContainer.innerHTML=&quot;&quot;;}var J=document.createElement(&quot;div&quot;);J.id=this.getId()+&quot;-container&quot;;J.style.display=&quot;none&quot;;J.tabIndex=0;J.className=H.CLASS_EDITOR;document.body.insertBefore(J,document.body.firstChild);this._elContainer=J;I.addListener(J,&quot;keydown&quot;,function(M,K){if((M.keyCode==27)){var L=I.getTarget(M);if(L.nodeName&amp;&amp;L.nodeName.toLowerCase()===&quot;select&quot;){L.blur();}K.cancel();}K.fireEvent(&quot;keydownEvent&quot;,{editor:this,event:M});},this);this.renderForm();if(!this.disableBtns){this.renderBtns();}this.doAfterRender();},renderBtns:function(){var L=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));L.className=H.CLASS_BUTTON;var K=L.appendChild(document.createElement(&quot;button&quot;));K.className=H.CLASS_DEFAULT;K.innerHTML=this.LABEL_SAVE;I.addListener(K,&quot;click&quot;,function(M){this.save();},this,true);this._elSaveBtn=K;var J=L.appendChild(document.createElement(&quot;button&quot;));J.innerHTML=this.LABEL_CANCEL;I.addListener(J,&quot;click&quot;,function(M){this.cancel();},this,true);this._elCancelBtn=J;},attach:function(N,L){if(N instanceof YAHOO.widget.DataTable){this._oDataTable=N;L=N.getTdEl(L);if(L){this._elTd=L;var M=N.getColumn(L);if(M){this._oColumn=M;var J=N.getRecord(L);if(J){this._oRecord=J;var K=J.getData(this.getColumn().getField());this.value=(K!==undefined)?K:this.defaultValue;return true;}}}}return false;},move:function(){var M=this.getContainerEl(),L=this.getTdEl(),J=D.getX(L),N=D.getY(L);if(isNaN(J)||isNaN(N)){var K=this.getDataTable().getTbodyEl();J=L.offsetLeft+D.getX(K.parentNode)-K.scrollLeft;N=L.offsetTop+D.getY(K.parentNode)-K.scrollTop+this.getDataTable().getTheadEl().offsetHeight;}M.style.left=J+&quot;px&quot;;M.style.top=N+&quot;px&quot;;},show:function(){this.resetForm();this.isActive=true;this.getContainerEl().style.display=&quot;&quot;;this.focus();this.fireEvent(&quot;showEvent&quot;,{editor:this});},block:function(){this.fireEvent(&quot;blockEvent&quot;,{editor:this});},unblock:function(){this.fireEvent(&quot;unblockEvent&quot;,{editor:this});},save:function(){var K=this.getInputValue();var L=K;if(this.validator){L=this.validator.call(this.getDataTable(),K,this.value,this);if(L===undefined){if(this.resetInvalidData){this.resetForm();}this.fireEvent(&quot;invalidDataEvent&quot;,{editor:this,oldData:this.value,newData:K});return;}}var M=this;var J=function(O,N){var P=M.value;if(O){M.value=N;M.getDataTable().updateCell(M.getRecord(),M.getColumn(),N);M.getContainerEl().style.display=&quot;none&quot;;M.isActive=false;M.getDataTable()._oCellEditor=null;M.fireEvent(&quot;saveEvent&quot;,{editor:M,oldData:P,newData:M.value});}else{M.resetForm();M.fireEvent(&quot;revertEvent&quot;,{editor:M,oldData:P,newData:N});}M.unblock();};this.block();if(C.isFunction(this.asyncSubmitter)){this.asyncSubmitter.call(this,J,L);}else{J(true,L);}},cancel:function(){if(this.isActive){this.getContainerEl().style.display=&quot;none&quot;;this.isActive=false;this.getDataTable()._oCellEditor=null;this.fireEvent(&quot;cancelEvent&quot;,{editor:this});}else{}},renderForm:function(){},doAfterRender:function(){},handleDisabledBtns:function(){},resetForm:function(){},focus:function(){},getInputValue:function(){}};C.augmentProto(A,F.EventProvider);E.CheckboxCellEditor=function(J){this._sId=&quot;yui-checkboxceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.CheckboxCellEditor.superclass.constructor.call(this,&quot;checkbox&quot;,J);};C.extend(E.CheckboxCellEditor,A,{checkboxOptions:null,checkboxes:null,value:null,renderForm:function(){if(C.isArray(this.checkboxOptions)){var M,N,P,K,L,J;for(L=0,J=this.checkboxOptions.length;L&lt;J;L++){M=this.checkboxOptions[L];N=C.isValue(M.value)?M.value:M;P=this.getId()+&quot;-chk&quot;+L;this.getContainerEl().innerHTML+='&lt;input type=&quot;checkbox&quot;'+' id=&quot;'+P+'&quot;'+' value=&quot;'+N+'&quot; /&gt;';K=this.getContainerEl().appendChild(document.createElement(&quot;label&quot;));K.htmlFor=P;K.innerHTML=C.isValue(M.label)?M.label:M;}var O=[];for(L=0;L&lt;J;L++){O[O.length]=this.getContainerEl().childNodes[L*2];}this.checkboxes=O;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){I.addListener(this.getContainerEl(),&quot;click&quot;,function(J){if(I.getTarget(J).tagName.toLowerCase()===&quot;input&quot;){this.save();}},this,true);},resetForm:function(){var N=C.isArray(this.value)?this.value:[this.value];for(var M=0,L=this.checkboxes.length;M&lt;L;M++){this.checkboxes[M].checked=false;for(var K=0,J=N.length;K&lt;J;K++){if(this.checkboxes[M].value===N[K]){this.checkboxes[M].checked=true;}}}},focus:function(){this.checkboxes[0].focus();},getInputValue:function(){var J=[];for(var L=0,K=this.checkboxes.length;L&lt;K;L++){if(this.checkboxes[L].checked){J[J.length]=this.checkboxes[L].value;}}return J;}});C.augmentObject(E.CheckboxCellEditor,A);E.DateCellEditor=function(J){this._sId=&quot;yui-dateceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.DateCellEditor.superclass.constructor.call(this,&quot;date&quot;,J);};C.extend(E.DateCellEditor,A,{calendar:null,calendarOptions:null,defaultValue:new Date(),renderForm:function(){if(YAHOO.widget.Calendar){var K=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));K.id=this.getId()+&quot;-dateContainer&quot;;var L=new YAHOO.widget.Calendar(this.getId()+&quot;-date&quot;,K.id,this.calendarOptions);L.render();K.style.cssFloat=&quot;none&quot;;if(B.ie){var J=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));J.style.clear=&quot;both&quot;;}this.calendar=L;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){this.calendar.selectEvent.subscribe(function(J){this.save();},this,true);},resetForm:function(){var K=this.value;var J=(K.getMonth()+1)+&quot;/&quot;+K.getDate()+&quot;/&quot;+K.getFullYear();this.calendar.cfg.setProperty(&quot;selected&quot;,J,false);
-this.calendar.render();},focus:function(){},getInputValue:function(){return this.calendar.getSelectedDates()[0];}});C.augmentObject(E.DateCellEditor,A);E.DropdownCellEditor=function(J){this._sId=&quot;yui-dropdownceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.DropdownCellEditor.superclass.constructor.call(this,&quot;dropdown&quot;,J);};C.extend(E.DropdownCellEditor,A,{dropdownOptions:null,dropdown:null,multiple:false,size:null,renderForm:function(){var M=this.getContainerEl().appendChild(document.createElement(&quot;select&quot;));M.style.zoom=1;if(this.multiple){M.multiple=&quot;multiple&quot;;}if(C.isNumber(this.size)){M.size=this.size;}this.dropdown=M;if(C.isArray(this.dropdownOptions)){var N,L;for(var K=0,J=this.dropdownOptions.length;K&lt;J;K++){N=this.dropdownOptions[K];L=document.createElement(&quot;option&quot;);L.value=(C.isValue(N.value))?N.value:N;L.innerHTML=(C.isValue(N.label))?N.label:N;L=M.appendChild(L);}if(this.disableBtns){this.handleDisabledBtns();}}},handleDisabledBtns:function(){if(this.multiple){I.addListener(this.dropdown,&quot;blur&quot;,function(J){this.save();},this,true);}else{I.addListener(this.dropdown,&quot;change&quot;,function(J){this.save();},this,true);}},resetForm:function(){var P=this.dropdown.options,M=0,L=P.length;if(C.isArray(this.value)){var K=this.value,J=0,O=K.length,N={};for(;M&lt;L;M++){P[M].selected=false;N[P[M].value]=P[M];}for(;J&lt;O;J++){if(N[K[J]]){N[K[J]].selected=true;}}}else{for(;M&lt;L;M++){if(this.value===P[M].value){P[M].selected=true;}}}},focus:function(){this.getDataTable()._focusEl(this.dropdown);},getInputValue:function(){var M=this.dropdown.options;if(this.multiple){var J=[],L=0,K=M.length;for(;L&lt;K;L++){if(M[L].selected){J.push(M[L].value);}}return J;}else{return M[M.selectedIndex].value;}}});C.augmentObject(E.DropdownCellEditor,A);E.RadioCellEditor=function(J){this._sId=&quot;yui-radioceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.RadioCellEditor.superclass.constructor.call(this,&quot;radio&quot;,J);};C.extend(E.RadioCellEditor,A,{radios:null,radioOptions:null,renderForm:function(){if(C.isArray(this.radioOptions)){var J,K,Q,N;for(var M=0,O=this.radioOptions.length;M&lt;O;M++){J=this.radioOptions[M];K=C.isValue(J.value)?J.value:J;Q=this.getId()+&quot;-radio&quot;+M;this.getContainerEl().innerHTML+='&lt;input type=&quot;radio&quot;'+' name=&quot;'+this.getId()+'&quot;'+' value=&quot;'+K+'&quot;'+' id=&quot;'+Q+'&quot; /&gt;';N=this.getContainerEl().appendChild(document.createElement(&quot;label&quot;));N.htmlFor=Q;N.innerHTML=(C.isValue(J.label))?J.label:J;}var P=[],R;for(var L=0;L&lt;O;L++){R=this.getContainerEl().childNodes[L*2];P[P.length]=R;}this.radios=P;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){I.addListener(this.getContainerEl(),&quot;click&quot;,function(J){if(I.getTarget(J).tagName.toLowerCase()===&quot;input&quot;){this.save();}},this,true);},resetForm:function(){for(var L=0,K=this.radios.length;L&lt;K;L++){var J=this.radios[L];if(this.value===J.value){J.checked=true;return;}}},focus:function(){for(var K=0,J=this.radios.length;K&lt;J;K++){if(this.radios[K].checked){this.radios[K].focus();return;}}},getInputValue:function(){for(var K=0,J=this.radios.length;K&lt;J;K++){if(this.radios[K].checked){return this.radios[K].value;}}}});C.augmentObject(E.RadioCellEditor,A);E.TextareaCellEditor=function(J){this._sId=&quot;yui-textareaceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.TextareaCellEditor.superclass.constructor.call(this,&quot;textarea&quot;,J);};C.extend(E.TextareaCellEditor,A,{textarea:null,renderForm:function(){var J=this.getContainerEl().appendChild(document.createElement(&quot;textarea&quot;));this.textarea=J;if(this.disableBtns){this.handleDisabledBtns();}},handleDisabledBtns:function(){I.addListener(this.textarea,&quot;blur&quot;,function(J){this.save();},this,true);},move:function(){this.textarea.style.width=this.getTdEl().offsetWidth+&quot;px&quot;;this.textarea.style.height=&quot;3em&quot;;YAHOO.widget.TextareaCellEditor.superclass.move.call(this);},resetForm:function(){this.textarea.value=this.value;},focus:function(){this.getDataTable()._focusEl(this.textarea);this.textarea.select();},getInputValue:function(){return this.textarea.value;}});C.augmentObject(E.TextareaCellEditor,A);E.TextboxCellEditor=function(J){this._sId=&quot;yui-textboxceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.TextboxCellEditor.superclass.constructor.call(this,&quot;textbox&quot;,J);};C.extend(E.TextboxCellEditor,A,{textbox:null,renderForm:function(){var J;if(B.webkit&gt;420){J=this.getContainerEl().appendChild(document.createElement(&quot;form&quot;)).appendChild(document.createElement(&quot;input&quot;));}else{J=this.getContainerEl().appendChild(document.createElement(&quot;input&quot;));}J.type=&quot;text&quot;;this.textbox=J;I.addListener(J,&quot;keypress&quot;,function(K){if((K.keyCode===13)){YAHOO.util.Event.preventDefault(K);this.save();}},this,true);if(this.disableBtns){this.handleDisabledBtns();}},move:function(){this.textbox.style.width=this.getTdEl().offsetWidth+&quot;px&quot;;E.TextboxCellEditor.superclass.move.call(this);},resetForm:function(){this.textbox.value=C.isValue(this.value)?this.value.toString():&quot;&quot;;},focus:function(){this.getDataTable()._focusEl(this.textbox);this.textbox.select();},getInputValue:function(){return this.textbox.value;}});C.augmentObject(E.TextboxCellEditor,A);H.Editors={checkbox:E.CheckboxCellEditor,&quot;date&quot;:E.DateCellEditor,dropdown:E.DropdownCellEditor,radio:E.RadioCellEditor,textarea:E.TextareaCellEditor,textbox:E.TextboxCellEditor};E.CellEditor=function(K,J){if(K&amp;&amp;H.Editors[K]){C.augmentObject(A,H.Editors[K]);return new H.Editors[K](J);}else{return new A(null,J);}};var G=E.CellEditor;C.augmentObject(G,A);})();YAHOO.register(&quot;datatable&quot;,YAHOO.widget.DataTable,{version:&quot;@VERSION@&quot;,build:&quot;@BUILD@&quot;});
\ No newline at end of file
+var X=&quot;visible&quot;;if((S.maxAutoWidth&gt;0)&amp;&amp;(P&gt;S.maxAutoWidth)){P=S.maxAutoWidth;X=&quot;hidden&quot;;}K[K.length]=[S,P,X];}}}this._elTbody.style.display=&quot;none&quot;;for(Q=0,R=K.length;Q&lt;R;Q++){O=K[Q];this._setColumnWidth(O[0],O[1]+&quot;px&quot;,O[2]);O[0]._calculatedWidth=O[1];}this._elTbody.style.display=&quot;&quot;;}if(M){this._elHdContainer.style.width=M;this._elBdContainer.style.width=M;}}this._syncScroll();this._restoreScrollPositions();},_syncScroll:function(){this._syncScrollX();this._syncScrollY();this._syncScrollOverhang();if(A.opera){this._elHdContainer.scrollLeft=this._elBdContainer.scrollLeft;if(!this.get(&quot;width&quot;)){document.body.style+=&quot;&quot;;}}},_syncScrollY:function(){var K=this._elTbody,L=this._elBdContainer;if(!this.get(&quot;width&quot;)){this._elContainer.style.width=(L.scrollHeight&gt;L.clientHeight)?(K.parentNode.clientWidth+19)+&quot;px&quot;:(K.parentNode.clientWidth+2)+&quot;px&quot;;}},_syncScrollX:function(){var K=this._elTbody,L=this._elBdContainer;if(!this.get(&quot;height&quot;)&amp;&amp;(A.ie)){L.style.height=(L.scrollWidth&gt;L.offsetWidth)?(K.parentNode.offsetHeight+18)+&quot;px&quot;:K.parentNode.offsetHeight+&quot;px&quot;;}if(this._elTbody.rows.length===0){this._elMsgTbody.parentNode.style.width=this.getTheadEl().parentNode.offsetWidth+&quot;px&quot;;}else{this._elMsgTbody.parentNode.style.width=&quot;&quot;;}},_syncScrollOverhang:function(){var L=this._elBdContainer,K=1;if((L.scrollHeight&gt;L.clientHeight)&amp;&amp;(L.scrollWidth&gt;L.clientWidth)){K=18;}this._setOverhangValue(K);},_setOverhangValue:function(N){var P=this._oColumnSet.headers[this._oColumnSet.headers.length-1]||[],L=P.length,K=this._sId+&quot;-fixedth-&quot;,O=N+&quot;px solid &quot;+this.get(&quot;COLOR_COLUMNFILLER&quot;);this._elThead.style.display=&quot;none&quot;;for(var M=0;M&lt;L;M++){D.get(K+P[M]).style.borderRight=O;}this._elThead.style.display=&quot;&quot;;},getHdContainerEl:function(){return this._elHdContainer;},getBdContainerEl:function(){return this._elBdContainer;},getHdTableEl:function(){return this._elHdTable;},getBdTableEl:function(){return this._elTable;},disable:function(){var K=this._elMask;K.style.width=this._elBdContainer.offsetWidth+&quot;px&quot;;K.style.height=this._elHdContainer.offsetHeight+this._elBdContainer.offsetHeight+&quot;px&quot;;K.style.display=&quot;&quot;;this.fireEvent(&quot;disableEvent&quot;);},removeColumn:function(M){var K=this._elHdContainer.scrollLeft;var L=this._elBdContainer.scrollLeft;M=H.superclass.removeColumn.call(this,M);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=L;return M;},insertColumn:function(N,L){var K=this._elHdContainer.scrollLeft;var M=this._elBdContainer.scrollLeft;var O=H.superclass.insertColumn.call(this,N,L);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=M;return O;},reorderColumn:function(N,L){var K=this._elHdContainer.scrollLeft;var M=this._elBdContainer.scrollLeft;var O=H.superclass.reorderColumn.call(this,N,L);this._elHdContainer.scrollLeft=K;this._elBdContainer.scrollLeft=M;return O;},setColumnWidth:function(L,K){L=this.getColumn(L);if(L){this._storeScrollPositions();if(C.isNumber(K)){K=(K&gt;L.minWidth)?K:L.minWidth;L.width=K;this._setColumnWidth(L,K+&quot;px&quot;);this._syncScroll();this.fireEvent(&quot;columnSetWidthEvent&quot;,{column:L,width:K});}else{if(K===null){L.width=K;this._setColumnWidth(L,&quot;auto&quot;);this.validateColumnWidths(L);this.fireEvent(&quot;columnUnsetWidthEvent&quot;,{column:L});}}this._clearTrTemplateEl();}else{}},scrollTo:function(M){var L=this.getTdEl(M);if(L){this.clearScrollPositions();this.getBdContainerEl().scrollLeft=L.offsetLeft;this.getBdContainerEl().scrollTop=L.parentNode.offsetTop;}else{var K=this.getTrEl(M);if(K){this.clearScrollPositions();this.getBdContainerEl().scrollTop=K.offsetTop;}}},showTableMessage:function(O,K){var P=this._elMsgTd;if(C.isString(O)){P.firstChild.innerHTML=O;}if(C.isString(K)){D.addClass(P.firstChild,K);}var N=this.getTheadEl();var L=N.parentNode;var M=L.offsetWidth;this._elMsgTbody.parentNode.style.width=this.getTheadEl().parentNode.offsetWidth+&quot;px&quot;;this._elMsgTbody.style.display=&quot;&quot;;this.fireEvent(&quot;tableMsgShowEvent&quot;,{html:O,className:K});},_onColumnChange:function(K){var L=(K.column)?K.column:(K.editor)?K.editor.column:null;this._storeScrollPositions();this.validateColumnWidths(L);},_onScroll:function(M,L){L._elHdContainer.scrollLeft=L._elBdContainer.scrollLeft;if(L._oCellEditor&amp;&amp;L._oCellEditor.isActive){L.fireEvent(&quot;editorBlurEvent&quot;,{editor:L._oCellEditor});L.cancelCellEditor();}var N=J.getTarget(M);var K=N.nodeName.toLowerCase();L.fireEvent(&quot;tableScrollEvent&quot;,{event:M,target:N});},_onTheadKeydown:function(N,L){if(J.getCharCode(N)===9){setTimeout(function(){if((L instanceof H)&amp;&amp;L._sId){L._elBdContainer.scrollLeft=L._elHdContainer.scrollLeft;}},0);}var O=J.getTarget(N);var K=O.nodeName.toLowerCase();var M=true;while(O&amp;&amp;(K!=&quot;table&quot;)){switch(K){case&quot;body&quot;:return;case&quot;input&quot;:case&quot;textarea&quot;:break;case&quot;thead&quot;:M=L.fireEvent(&quot;theadKeyEvent&quot;,{target:O,event:N});break;default:break;}if(M===false){return;}else{O=O.parentNode;if(O){K=O.nodeName.toLowerCase();}}}L.fireEvent(&quot;tableKeyEvent&quot;,{target:(O||L._elContainer),event:N});}});})();(function(){var C=YAHOO.lang,F=YAHOO.util,E=YAHOO.widget,B=YAHOO.env.ua,D=F.Dom,I=F.Event,H=E.DataTable;E.BaseCellEditor=function(K,J){this._sId=this._sId||&quot;yui-ceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;this._sType=K;this._initConfigs(J);this._initEvents();this.render();};var A=E.BaseCellEditor;C.augmentObject(A,{_nCount:0,CLASS_CELLEDITOR:&quot;yui-ceditor&quot;});A.prototype={_sId:null,_sType:null,_oDataTable:null,_oColumn:null,_oRecord:null,_elTd:null,_elContainer:null,_elCancelBtn:null,_elSaveBtn:null,_initConfigs:function(K){if(K&amp;&amp;YAHOO.lang.isObject(K)){for(var J in K){if(J){this[J]=K[J];}}}},_initEvents:function(){this.createEvent(&quot;showEvent&quot;);this.createEvent(&quot;keydownEvent&quot;);this.createEvent(&quot;invalidDataEvent&quot;);this.createEvent(&quot;revertEvent&quot;);this.createEvent(&quot;saveEvent&quot;);this.createEvent(&quot;cancelEvent&quot;);this.createEvent(&quot;blurEvent&quot;);this.createEvent(&quot;blockEvent&quot;);this.createEvent(&quot;unblockEvent&quot;);},_initContainerEl:function(){if(this._elContainer){YAHOO.util.Event.purgeElement(this._elContainer,true);this._elContainer.innerHTML=&quot;&quot;;}var J=document.createElement(&quot;div&quot;);J.id=this.getId()+&quot;-container&quot;;
+J.style.display=&quot;none&quot;;J.tabIndex=0;J.className=H.CLASS_EDITOR;document.body.insertBefore(J,document.body.firstChild);this._elContainer=J;},_initShimEl:function(){if(this.useIFrame){if(!this._elIFrame){var J=document.createElement(&quot;iframe&quot;);J.src=&quot;javascript:false&quot;;J.frameBorder=0;J.scrolling=&quot;no&quot;;J.style.display=&quot;none&quot;;J.className=H.CLASS_EDITOR_SHIM;J.tabIndex=-1;J.role=&quot;presentation&quot;;J.title=&quot;Presentational iframe shim&quot;;document.body.insertBefore(J,document.body.firstChild);this._elIFrame=J;}}},_hide:function(){this.getContainerEl().style.display=&quot;none&quot;;if(this._elIFrame){this._elIFrame.style.display=&quot;none&quot;;}this.isActive=false;this.getDataTable()._oCellEditor=null;},asyncSubmitter:null,value:null,defaultValue:null,validator:null,resetInvalidData:true,isActive:false,LABEL_SAVE:&quot;Save&quot;,LABEL_CANCEL:&quot;Cancel&quot;,disableBtns:false,useIFrame:false,toString:function(){return&quot;CellEditor instance &quot;+this._sId;},getId:function(){return this._sId;},getDataTable:function(){return this._oDataTable;},getColumn:function(){return this._oColumn;},getRecord:function(){return this._oRecord;},getTdEl:function(){return this._elTd;},getContainerEl:function(){return this._elContainer;},destroy:function(){this.unsubscribeAll();var K=this.getColumn();if(K){K.editor=null;}var J=this.getContainerEl();I.purgeElement(J,true);J.parentNode.removeChild(J);},render:function(){this._initContainerEl();this._initShimEl();I.addListener(this.getContainerEl(),&quot;keydown&quot;,function(L,J){if((L.keyCode==27)){var K=I.getTarget(L);if(K.nodeName&amp;&amp;K.nodeName.toLowerCase()===&quot;select&quot;){K.blur();}J.cancel();}J.fireEvent(&quot;keydownEvent&quot;,{editor:this,event:L});},this);this.renderForm();if(!this.disableBtns){this.renderBtns();}this.doAfterRender();},renderBtns:function(){var L=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));L.className=H.CLASS_BUTTON;var K=L.appendChild(document.createElement(&quot;button&quot;));K.className=H.CLASS_DEFAULT;K.innerHTML=this.LABEL_SAVE;I.addListener(K,&quot;click&quot;,function(M){this.save();},this,true);this._elSaveBtn=K;var J=L.appendChild(document.createElement(&quot;button&quot;));J.innerHTML=this.LABEL_CANCEL;I.addListener(J,&quot;click&quot;,function(M){this.cancel();},this,true);this._elCancelBtn=J;},attach:function(N,L){if(N instanceof YAHOO.widget.DataTable){this._oDataTable=N;L=N.getTdEl(L);if(L){this._elTd=L;var M=N.getColumn(L);if(M){this._oColumn=M;var J=N.getRecord(L);if(J){this._oRecord=J;var K=J.getData(this.getColumn().getField());this.value=(K!==undefined)?K:this.defaultValue;return true;}}}}return false;},move:function(){var M=this.getContainerEl(),L=this.getTdEl(),J=D.getX(L),N=D.getY(L);if(isNaN(J)||isNaN(N)){var K=this.getDataTable().getTbodyEl();J=L.offsetLeft+D.getX(K.parentNode)-K.scrollLeft;N=L.offsetTop+D.getY(K.parentNode)-K.scrollTop+this.getDataTable().getTheadEl().offsetHeight;}M.style.left=J+&quot;px&quot;;M.style.top=N+&quot;px&quot;;if(this._elIFrame){this._elIFrame.style.left=J+&quot;px&quot;;this._elIFrame.style.top=N+&quot;px&quot;;}},show:function(){var K=this.getContainerEl(),J=this._elIFrame;this.resetForm();this.isActive=true;K.style.display=&quot;&quot;;if(J){J.style.width=K.offsetWidth+&quot;px&quot;;J.style.height=K.offsetHeight+&quot;px&quot;;J.style.display=&quot;&quot;;}this.focus();this.fireEvent(&quot;showEvent&quot;,{editor:this});},block:function(){this.fireEvent(&quot;blockEvent&quot;,{editor:this});},unblock:function(){this.fireEvent(&quot;unblockEvent&quot;,{editor:this});},save:function(){var K=this.getInputValue();var L=K;if(this.validator){L=this.validator.call(this.getDataTable(),K,this.value,this);if(L===undefined){if(this.resetInvalidData){this.resetForm();}this.fireEvent(&quot;invalidDataEvent&quot;,{editor:this,oldData:this.value,newData:K});return;}}var M=this;var J=function(O,N){var P=M.value;if(O){M.value=N;M.getDataTable().updateCell(M.getRecord(),M.getColumn(),N);M._hide();M.fireEvent(&quot;saveEvent&quot;,{editor:M,oldData:P,newData:M.value});}else{M.resetForm();M.fireEvent(&quot;revertEvent&quot;,{editor:M,oldData:P,newData:N});}M.unblock();};this.block();if(C.isFunction(this.asyncSubmitter)){this.asyncSubmitter.call(this,J,L);}else{J(true,L);}},cancel:function(){if(this.isActive){this._hide();this.fireEvent(&quot;cancelEvent&quot;,{editor:this});}else{}},renderForm:function(){},doAfterRender:function(){},handleDisabledBtns:function(){},resetForm:function(){},focus:function(){},getInputValue:function(){}};C.augmentProto(A,F.EventProvider);E.CheckboxCellEditor=function(J){this._sId=&quot;yui-checkboxceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.CheckboxCellEditor.superclass.constructor.call(this,&quot;checkbox&quot;,J);};C.extend(E.CheckboxCellEditor,A,{checkboxOptions:null,checkboxes:null,value:null,renderForm:function(){if(C.isArray(this.checkboxOptions)){var M,N,P,K,L,J;for(L=0,J=this.checkboxOptions.length;L&lt;J;L++){M=this.checkboxOptions[L];N=C.isValue(M.value)?M.value:M;P=this.getId()+&quot;-chk&quot;+L;this.getContainerEl().innerHTML+='&lt;input type=&quot;checkbox&quot;'+' id=&quot;'+P+'&quot;'+' value=&quot;'+N+'&quot; /&gt;';K=this.getContainerEl().appendChild(document.createElement(&quot;label&quot;));K.htmlFor=P;K.innerHTML=C.isValue(M.label)?M.label:M;}var O=[];for(L=0;L&lt;J;L++){O[O.length]=this.getContainerEl().childNodes[L*2];}this.checkboxes=O;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){I.addListener(this.getContainerEl(),&quot;click&quot;,function(J){if(I.getTarget(J).tagName.toLowerCase()===&quot;input&quot;){this.save();}},this,true);},resetForm:function(){var N=C.isArray(this.value)?this.value:[this.value];for(var M=0,L=this.checkboxes.length;M&lt;L;M++){this.checkboxes[M].checked=false;for(var K=0,J=N.length;K&lt;J;K++){if(this.checkboxes[M].value===N[K]){this.checkboxes[M].checked=true;}}}},focus:function(){this.checkboxes[0].focus();},getInputValue:function(){var J=[];for(var L=0,K=this.checkboxes.length;L&lt;K;L++){if(this.checkboxes[L].checked){J[J.length]=this.checkboxes[L].value;}}return J;}});C.augmentObject(E.CheckboxCellEditor,A);E.DateCellEditor=function(J){this._sId=&quot;yui-dateceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.DateCellEditor.superclass.constructor.call(this,&quot;date&quot;,J);};C.extend(E.DateCellEditor,A,{calendar:null,calendarOptions:null,defaultValue:new Date(),renderForm:function(){if(YAHOO.widget.Calendar){var K=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));
+K.id=this.getId()+&quot;-dateContainer&quot;;var L=new YAHOO.widget.Calendar(this.getId()+&quot;-date&quot;,K.id,this.calendarOptions);L.render();K.style.cssFloat=&quot;none&quot;;if(B.ie){var J=this.getContainerEl().appendChild(document.createElement(&quot;div&quot;));J.style.clear=&quot;both&quot;;}this.calendar=L;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){this.calendar.selectEvent.subscribe(function(J){this.save();},this,true);},resetForm:function(){var K=this.value;var J=(K.getMonth()+1)+&quot;/&quot;+K.getDate()+&quot;/&quot;+K.getFullYear();this.calendar.cfg.setProperty(&quot;selected&quot;,J,false);this.calendar.render();},focus:function(){},getInputValue:function(){return this.calendar.getSelectedDates()[0];}});C.augmentObject(E.DateCellEditor,A);E.DropdownCellEditor=function(J){this._sId=&quot;yui-dropdownceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.DropdownCellEditor.superclass.constructor.call(this,&quot;dropdown&quot;,J);};C.extend(E.DropdownCellEditor,A,{dropdownOptions:null,dropdown:null,multiple:false,size:null,renderForm:function(){var M=this.getContainerEl().appendChild(document.createElement(&quot;select&quot;));M.style.zoom=1;if(this.multiple){M.multiple=&quot;multiple&quot;;}if(C.isNumber(this.size)){M.size=this.size;}this.dropdown=M;if(C.isArray(this.dropdownOptions)){var N,L;for(var K=0,J=this.dropdownOptions.length;K&lt;J;K++){N=this.dropdownOptions[K];L=document.createElement(&quot;option&quot;);L.value=(C.isValue(N.value))?N.value:N;L.innerHTML=(C.isValue(N.label))?N.label:N;L=M.appendChild(L);}if(this.disableBtns){this.handleDisabledBtns();}}},handleDisabledBtns:function(){if(this.multiple){I.addListener(this.dropdown,&quot;blur&quot;,function(J){this.save();},this,true);}else{I.addListener(this.dropdown,&quot;change&quot;,function(J){this.save();},this,true);}},resetForm:function(){var P=this.dropdown.options,M=0,L=P.length;if(C.isArray(this.value)){var K=this.value,J=0,O=K.length,N={};for(;M&lt;L;M++){P[M].selected=false;N[P[M].value]=P[M];}for(;J&lt;O;J++){if(N[K[J]]){N[K[J]].selected=true;}}}else{for(;M&lt;L;M++){if(this.value===P[M].value){P[M].selected=true;}}}},focus:function(){this.getDataTable()._focusEl(this.dropdown);},getInputValue:function(){var M=this.dropdown.options;if(this.multiple){var J=[],L=0,K=M.length;for(;L&lt;K;L++){if(M[L].selected){J.push(M[L].value);}}return J;}else{return M[M.selectedIndex].value;}}});C.augmentObject(E.DropdownCellEditor,A);E.RadioCellEditor=function(J){this._sId=&quot;yui-radioceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.RadioCellEditor.superclass.constructor.call(this,&quot;radio&quot;,J);};C.extend(E.RadioCellEditor,A,{radios:null,radioOptions:null,renderForm:function(){if(C.isArray(this.radioOptions)){var J,K,Q,N;for(var M=0,O=this.radioOptions.length;M&lt;O;M++){J=this.radioOptions[M];K=C.isValue(J.value)?J.value:J;Q=this.getId()+&quot;-radio&quot;+M;this.getContainerEl().innerHTML+='&lt;input type=&quot;radio&quot;'+' name=&quot;'+this.getId()+'&quot;'+' value=&quot;'+K+'&quot;'+' id=&quot;'+Q+'&quot; /&gt;';N=this.getContainerEl().appendChild(document.createElement(&quot;label&quot;));N.htmlFor=Q;N.innerHTML=(C.isValue(J.label))?J.label:J;}var P=[],R;for(var L=0;L&lt;O;L++){R=this.getContainerEl().childNodes[L*2];P[P.length]=R;}this.radios=P;if(this.disableBtns){this.handleDisabledBtns();}}else{}},handleDisabledBtns:function(){I.addListener(this.getContainerEl(),&quot;click&quot;,function(J){if(I.getTarget(J).tagName.toLowerCase()===&quot;input&quot;){this.save();}},this,true);},resetForm:function(){for(var L=0,K=this.radios.length;L&lt;K;L++){var J=this.radios[L];if(this.value===J.value){J.checked=true;return;}}},focus:function(){for(var K=0,J=this.radios.length;K&lt;J;K++){if(this.radios[K].checked){this.radios[K].focus();return;}}},getInputValue:function(){for(var K=0,J=this.radios.length;K&lt;J;K++){if(this.radios[K].checked){return this.radios[K].value;}}}});C.augmentObject(E.RadioCellEditor,A);E.TextareaCellEditor=function(J){this._sId=&quot;yui-textareaceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.TextareaCellEditor.superclass.constructor.call(this,&quot;textarea&quot;,J);};C.extend(E.TextareaCellEditor,A,{textarea:null,renderForm:function(){var J=this.getContainerEl().appendChild(document.createElement(&quot;textarea&quot;));this.textarea=J;if(this.disableBtns){this.handleDisabledBtns();}},handleDisabledBtns:function(){I.addListener(this.textarea,&quot;blur&quot;,function(J){this.save();},this,true);},move:function(){this.textarea.style.width=this.getTdEl().offsetWidth+&quot;px&quot;;this.textarea.style.height=&quot;3em&quot;;YAHOO.widget.TextareaCellEditor.superclass.move.call(this);},resetForm:function(){this.textarea.value=this.value;},focus:function(){this.getDataTable()._focusEl(this.textarea);this.textarea.select();},getInputValue:function(){return this.textarea.value;}});C.augmentObject(E.TextareaCellEditor,A);E.TextboxCellEditor=function(J){this._sId=&quot;yui-textboxceditor&quot;+YAHOO.widget.BaseCellEditor._nCount++;E.TextboxCellEditor.superclass.constructor.call(this,&quot;textbox&quot;,J);};C.extend(E.TextboxCellEditor,A,{textbox:null,renderForm:function(){var J;if(B.webkit&gt;420){J=this.getContainerEl().appendChild(document.createElement(&quot;form&quot;)).appendChild(document.createElement(&quot;input&quot;));}else{J=this.getContainerEl().appendChild(document.createElement(&quot;input&quot;));}J.type=&quot;text&quot;;this.textbox=J;I.addListener(J,&quot;keypress&quot;,function(K){if((K.keyCode===13)){YAHOO.util.Event.preventDefault(K);this.save();}},this,true);if(this.disableBtns){this.handleDisabledBtns();}},move:function(){this.textbox.style.width=this.getTdEl().offsetWidth+&quot;px&quot;;E.TextboxCellEditor.superclass.move.call(this);},resetForm:function(){this.textbox.value=C.isValue(this.value)?this.value.toString():&quot;&quot;;},focus:function(){this.getDataTable()._focusEl(this.textbox);this.textbox.select();},getInputValue:function(){return this.textbox.value;}});C.augmentObject(E.TextboxCellEditor,A);H.Editors={checkbox:E.CheckboxCellEditor,&quot;date&quot;:E.DateCellEditor,dropdown:E.DropdownCellEditor,radio:E.RadioCellEditor,textarea:E.TextareaCellEditor,textbox:E.TextboxCellEditor};E.CellEditor=function(K,J){if(K&amp;&amp;H.Editors[K]){C.augmentObject(A,H.Editors[K]);return new H.Editors[K](J);}else{return new A(null,J);}};var G=E.CellEditor;C.augmentObject(G,A);
+})();YAHOO.register(&quot;datatable&quot;,YAHOO.widget.DataTable,{version:&quot;@VERSION@&quot;,build:&quot;@BUILD@&quot;});
\ No newline at end of file</diff>
      <filename>build/datatable/datatable-min.js</filename>
    </modified>
    <modified>
      <diff>@@ -2685,6 +2685,17 @@ lang.augmentObject(DT, {
     CLASS_EDITOR : &quot;yui-dt-editor&quot;,
 
     /**
+     * Class name assigned to CellEditor container shim.
+     *
+     * @property DataTable.CLASS_EDITOR_SHIM
+     * @type String
+     * @static
+     * @final
+     * @default &quot;yui-dt-editor-shim&quot;
+     */
+    CLASS_EDITOR_SHIM : &quot;yui-dt-editor-shim&quot;,
+
+    /**
      * Class name assigned to paginator container elements.
      *
      * @property DataTable.CLASS_PAGINATOR
@@ -15536,7 +15547,65 @@ _initEvents : function() {
     this.createEvent(&quot;unblockEvent&quot;);
 },
 
+/**
+ * Initialize container element.
+ *
+ * @method _initContainerEl
+ * @private
+ */
+_initContainerEl : function() {
+    if(this._elContainer) {
+        YAHOO.util.Event.purgeElement(this._elContainer, true);
+        this._elContainer.innerHTML = &quot;&quot;;
+    }
 
+    var elContainer = document.createElement(&quot;div&quot;);
+    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
+    elContainer.style.display = &quot;none&quot;;
+    elContainer.tabIndex = 0;
+    elContainer.className = DT.CLASS_EDITOR;
+    document.body.insertBefore(elContainer, document.body.firstChild);
+    this._elContainer = elContainer;
+},
+
+/**
+ * Initialize container shim element.
+ *
+ * @method _initShimEl
+ * @private
+ */
+_initShimEl : function() {
+    // Iframe shim
+    if(this.useIFrame) {
+        if(!this._elIFrame) {
+            var elIFrame = document.createElement(&quot;iframe&quot;);
+            elIFrame.src = &quot;javascript:false&quot;;
+            elIFrame.frameBorder = 0;
+            elIFrame.scrolling = &quot;no&quot;;
+            elIFrame.style.display = &quot;none&quot;;
+            elIFrame.className = DT.CLASS_EDITOR_SHIM;
+            elIFrame.tabIndex = -1;
+            elIFrame.role = &quot;presentation&quot;;
+            elIFrame.title = &quot;Presentational iframe shim&quot;;
+            document.body.insertBefore(elIFrame, document.body.firstChild);
+            this._elIFrame = elIFrame;
+        }
+    }
+},
+
+/**
+ * Hides CellEditor UI at end of interaction.
+ *
+ * @method _hide
+ */
+_hide : function() {
+    this.getContainerEl().style.display = &quot;none&quot;;
+    if(this._elIFrame) {
+        this._elIFrame.style.display = &quot;none&quot;;
+    }
+    this.isActive = false;
+    this.getDataTable()._oCellEditor =  null;
+},
 
 
 
@@ -15638,6 +15707,14 @@ LABEL_CANCEL : &quot;Cancel&quot;,
  */
 disableBtns : false,
 
+/**
+ * True if iframe shim for container element should be enabled.
+ *
+ * @property useIFrame
+ * @type Boolean
+ * @default false
+ */
+useIFrame : false,
 
 
 
@@ -15755,22 +15832,11 @@ destroy : function() {
  * @method render
  */
 render : function() {
-    if(this._elContainer) {
-        YAHOO.util.Event.purgeElement(this._elContainer, true);
-        this._elContainer.innerHTML = &quot;&quot;;
-    }
+    this._initContainerEl();
+    this._initShimEl();
 
-    // Render Cell Editor container element as first child of body
-    var elContainer = document.createElement(&quot;div&quot;);
-    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
-    elContainer.style.display = &quot;none&quot;;
-    elContainer.tabIndex = 0;
-    elContainer.className = DT.CLASS_EDITOR;
-    document.body.insertBefore(elContainer, document.body.firstChild);
-    this._elContainer = elContainer;
-    
     // Handle ESC key
-    Ev.addListener(elContainer, &quot;keydown&quot;, function(e, oSelf) {
+    Ev.addListener(this.getContainerEl(), &quot;keydown&quot;, function(e, oSelf) {
         // ESC cancels Cell Editor
         if((e.keyCode == 27)) {
             var target = Ev.getTarget(e);
@@ -15784,7 +15850,7 @@ render : function() {
         // Pass through event
         oSelf.fireEvent(&quot;keydownEvent&quot;, {editor:this, event:e});
     }, this);
-    
+
     this.renderForm();
 
     // Show Save/Cancel buttons
@@ -15887,6 +15953,11 @@ move : function() {
 
     elContainer.style.left = x + &quot;px&quot;;
     elContainer.style.top = y + &quot;px&quot;;
+
+    if(this._elIFrame) {
+        this._elIFrame.style.left = x + &quot;px&quot;;
+        this._elIFrame.style.top = y + &quot;px&quot;;
+    }
 },
 
 /**
@@ -15895,9 +15966,16 @@ move : function() {
  * @method show
  */
 show : function() {
+    var elContainer = this.getContainerEl(),
+        elIFrame = this._elIFrame;
     this.resetForm();
     this.isActive = true;
-    this.getContainerEl().style.display = &quot;&quot;;
+    elContainer.style.display = &quot;&quot;;
+    if(elIFrame) {
+        elIFrame.style.width = elContainer.offsetWidth + &quot;px&quot;;
+        elIFrame.style.height = elContainer.offsetHeight + &quot;px&quot;;
+        elIFrame.style.display = &quot;&quot;;
+    }
     this.focus();
     this.fireEvent(&quot;showEvent&quot;, {editor:this});
 },
@@ -15952,9 +16030,7 @@ save : function() {
             oSelf.getDataTable().updateCell(oSelf.getRecord(), oSelf.getColumn(), oNewValue);
             
             // Hide CellEditor
-            oSelf.getContainerEl().style.display = &quot;none&quot;;
-            oSelf.isActive = false;
-            oSelf.getDataTable()._oCellEditor =  null;
+            oSelf._hide();
             
             oSelf.fireEvent(&quot;saveEvent&quot;,
                     {editor:oSelf, oldData:oOrigValue, newData:oSelf.value});
@@ -15983,9 +16059,7 @@ save : function() {
  */
 cancel : function() {
     if(this.isActive) {
-        this.getContainerEl().style.display = &quot;none&quot;;
-        this.isActive = false;
-        this.getDataTable()._oCellEditor =  null;
+        this._hide();
         this.fireEvent(&quot;cancelEvent&quot;, {editor:this});
     }
     else {</diff>
      <filename>build/datatable/datatable.js</filename>
    </modified>
    <modified>
      <diff>@@ -82,6 +82,6 @@ th.yui-dt-hidden .yui-dt-resizer {
 }
 
 /* editing */
-.yui-dt-editor {
+.yui-dt-editor, .yui-dt-editor-shim {
     position:absolute;z-index:9000;
 }</diff>
      <filename>src/datatable/assets/datatable-core.css</filename>
    </modified>
    <modified>
      <diff>@@ -211,7 +211,65 @@ _initEvents : function() {
     this.createEvent(&quot;unblockEvent&quot;);
 },
 
+/**
+ * Initialize container element.
+ *
+ * @method _initContainerEl
+ * @private
+ */
+_initContainerEl : function() {
+    if(this._elContainer) {
+        YAHOO.util.Event.purgeElement(this._elContainer, true);
+        this._elContainer.innerHTML = &quot;&quot;;
+    }
 
+    var elContainer = document.createElement(&quot;div&quot;);
+    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
+    elContainer.style.display = &quot;none&quot;;
+    elContainer.tabIndex = 0;
+    elContainer.className = DT.CLASS_EDITOR;
+    document.body.insertBefore(elContainer, document.body.firstChild);
+    this._elContainer = elContainer;
+},
+
+/**
+ * Initialize container shim element.
+ *
+ * @method _initShimEl
+ * @private
+ */
+_initShimEl : function() {
+    // Iframe shim
+    if(this.useIFrame) {
+        if(!this._elIFrame) {
+            var elIFrame = document.createElement(&quot;iframe&quot;);
+            elIFrame.src = &quot;javascript:false&quot;;
+            elIFrame.frameBorder = 0;
+            elIFrame.scrolling = &quot;no&quot;;
+            elIFrame.style.display = &quot;none&quot;;
+            elIFrame.className = DT.CLASS_EDITOR_SHIM;
+            elIFrame.tabIndex = -1;
+            elIFrame.role = &quot;presentation&quot;;
+            elIFrame.title = &quot;Presentational iframe shim&quot;;
+            document.body.insertBefore(elIFrame, document.body.firstChild);
+            this._elIFrame = elIFrame;
+        }
+    }
+},
+
+/**
+ * Hides CellEditor UI at end of interaction.
+ *
+ * @method _hide
+ */
+_hide : function() {
+    this.getContainerEl().style.display = &quot;none&quot;;
+    if(this._elIFrame) {
+        this._elIFrame.style.display = &quot;none&quot;;
+    }
+    this.isActive = false;
+    this.getDataTable()._oCellEditor =  null;
+},
 
 
 
@@ -313,6 +371,14 @@ LABEL_CANCEL : &quot;Cancel&quot;,
  */
 disableBtns : false,
 
+/**
+ * True if iframe shim for container element should be enabled.
+ *
+ * @property useIFrame
+ * @type Boolean
+ * @default false
+ */
+useIFrame : false,
 
 
 
@@ -430,22 +496,11 @@ destroy : function() {
  * @method render
  */
 render : function() {
-    if(this._elContainer) {
-        YAHOO.util.Event.purgeElement(this._elContainer, true);
-        this._elContainer.innerHTML = &quot;&quot;;
-    }
+    this._initContainerEl();
+    this._initShimEl();
 
-    // Render Cell Editor container element as first child of body
-    var elContainer = document.createElement(&quot;div&quot;);
-    elContainer.id = this.getId() + &quot;-container&quot;; // Needed for tracking blur event
-    elContainer.style.display = &quot;none&quot;;
-    elContainer.tabIndex = 0;
-    elContainer.className = DT.CLASS_EDITOR;
-    document.body.insertBefore(elContainer, document.body.firstChild);
-    this._elContainer = elContainer;
-    
     // Handle ESC key
-    Ev.addListener(elContainer, &quot;keydown&quot;, function(e, oSelf) {
+    Ev.addListener(this.getContainerEl(), &quot;keydown&quot;, function(e, oSelf) {
         // ESC cancels Cell Editor
         if((e.keyCode == 27)) {
             var target = Ev.getTarget(e);
@@ -459,7 +514,7 @@ render : function() {
         // Pass through event
         oSelf.fireEvent(&quot;keydownEvent&quot;, {editor:this, event:e});
     }, this);
-    
+
     this.renderForm();
 
     // Show Save/Cancel buttons
@@ -563,6 +618,11 @@ move : function() {
 
     elContainer.style.left = x + &quot;px&quot;;
     elContainer.style.top = y + &quot;px&quot;;
+
+    if(this._elIFrame) {
+        this._elIFrame.style.left = x + &quot;px&quot;;
+        this._elIFrame.style.top = y + &quot;px&quot;;
+    }
 },
 
 /**
@@ -571,9 +631,16 @@ move : function() {
  * @method show
  */
 show : function() {
+    var elContainer = this.getContainerEl(),
+        elIFrame = this._elIFrame;
     this.resetForm();
     this.isActive = true;
-    this.getContainerEl().style.display = &quot;&quot;;
+    elContainer.style.display = &quot;&quot;;
+    if(elIFrame) {
+        elIFrame.style.width = elContainer.offsetWidth + &quot;px&quot;;
+        elIFrame.style.height = elContainer.offsetHeight + &quot;px&quot;;
+        elIFrame.style.display = &quot;&quot;;
+    }
     this.focus();
     this.fireEvent(&quot;showEvent&quot;, {editor:this});
     YAHOO.log(&quot;CellEditor shown&quot;, &quot;info&quot;, this.toString()); 
@@ -633,9 +700,7 @@ save : function() {
             oSelf.getDataTable().updateCell(oSelf.getRecord(), oSelf.getColumn(), oNewValue);
             
             // Hide CellEditor
-            oSelf.getContainerEl().style.display = &quot;none&quot;;
-            oSelf.isActive = false;
-            oSelf.getDataTable()._oCellEditor =  null;
+            oSelf._hide();
             
             oSelf.fireEvent(&quot;saveEvent&quot;,
                     {editor:oSelf, oldData:oOrigValue, newData:oSelf.value});
@@ -667,9 +732,7 @@ save : function() {
  */
 cancel : function() {
     if(this.isActive) {
-        this.getContainerEl().style.display = &quot;none&quot;;
-        this.isActive = false;
-        this.getDataTable()._oCellEditor =  null;
+        this._hide();
         this.fireEvent(&quot;cancelEvent&quot;, {editor:this});
         YAHOO.log(&quot;CellEditor canceled&quot;, &quot;info&quot;, this.toString());
     }</diff>
      <filename>src/datatable/js/CellEditor.js</filename>
    </modified>
    <modified>
      <diff>@@ -255,6 +255,17 @@ lang.augmentObject(DT, {
     CLASS_EDITOR : &quot;yui-dt-editor&quot;,
 
     /**
+     * Class name assigned to CellEditor container shim.
+     *
+     * @property DataTable.CLASS_EDITOR_SHIM
+     * @type String
+     * @static
+     * @final
+     * @default &quot;yui-dt-editor-shim&quot;
+     */
+    CLASS_EDITOR_SHIM : &quot;yui-dt-editor-shim&quot;,
+
+    /**
      * Class name assigned to paginator container elements.
      *
      * @property DataTable.CLASS_PAGINATOR</diff>
      <filename>src/datatable/js/DataTable.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d4c2282e0f22fe885f84ac3abe6144f60afb3b99</id>
    </parent>
  </parents>
  <author>
    <name>Jenny Donnelly</name>
    <email>jennydonnelly@yahoo-inc.com</email>
  </author>
  <url>http://github.com/yui/yui2/commit/9b074b5f28ac312896052f97442b26c59428dacc</url>
  <id>9b074b5f28ac312896052f97442b26c59428dacc</id>
  <committed-date>2009-11-06T18:27:03-08:00</committed-date>
  <authored-date>2009-11-05T17:15:48-08:00</authored-date>
  <message>[fix bug #2528610] Support for iframe shim under cell editor. New APIs:
_initContainerEl(), _initShimEl(), _hide(), useIFrame, and CLASS_EDITOR_SHIM.</message>
  <tree>b21f607cb1c10f0b6804b85809ade92ba79dd066</tree>
  <committer>
    <name>Jenny Donnelly</name>
    <email>jennydonnelly@yahoo-inc.com</email>
  </committer>
</commit>
