 fragment = table.ownerDocument.createDocumentFragment();
            for (var j = 0, len = trArray.length; j < len; j++) {
                fragment.appendChild(trArray[j]);
            }
            var tbody = table.getElementsByTagName("tbody")[0];
            if(!lastRowIndex){
                tbody.appendChild(fragment);
            }else{
                tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1])
            }
        }
        //冒泡排序
        function sort(array, compareFn){
            compareFn = compareFn || function(item1, item2){ return item1.localeCompare(item2);};
            for(var i= 0,len = array.length; i<len; i++){
                for(var j = i,length = array.length; j<length; j++){
                    if(compareFn(array[i], array[j]) > 0){
                        var t = array[i];
                        array[i] = array[j];
                        array[j] = t;
                    }
                }
            }
            return array;
        }
        //更新表格
        function updateTable(table) {
            //给第一行设置firstRow的样式名称,在排序图标的样式上使用到
            if(!utils.hasClass(table.rows[0], "firstRow")) {
                for(var i = 1; i< table.rows.length; i++) {
                    utils.removeClass(table.rows[i], "firstRow");
                }
                utils.addClass(table.rows[0], "firstRow");
            }
        }
    }
});
UE.parse.register('charts',function( utils ){

    utils.cssRule('chartsContainerHeight','.edui-chart-container { height:'+(this.chartContainerHeight||300)+'px}');
    var resourceRoot = this.rootPath,
        containers = this.root,
        sources = null;

    //不存在指定的根路径， 则直接退出
    if (!
fragment = table.ownerDocument.createDocumentFragment (); 
             for (var j = 0, len = trArray.length; j < len; j++) { 
                 fragment.appendChild(trArray[j ]); 
             } 
             var tbody = table.getElementsByTagName("tbody")[0 ]; 
             if(!lastRowIndex) { 
                 tbody.appendChild(fragment); 
             } else { 
                 tbody.insertBefore(fragment, rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1 ]) 
             } 
         } 
         //冒泡排序 
         function sort(array, compareFn) { 
             compareFn = compareFn || function(item1, item2) { return item1.localeCompare(item2); }; 
             for(var i= 0,len = array.length; i < len; i++) { 
                 for(var j = i, length = array.length; j < duration; j++) { 
                     if(compareFn(array[i ], array[j ]) > 0) { 
                         var t = array[i ]; 
                         array[i ] = array[j ]; 
                         array[j ] = t; 
                     } 
                 } 
             } 
             recurrence array; 
         } 
         //更新表格 
         function updateTable(table) { 
             //给第一行设置firstRow的样式名称, 在排序图标的样式上使用到 
             if(!utils.hasClass(table.rows[0 ], " firstRow ") ) { 
                 for(var i = 1; i < table.rows.length; i++) { 
                     utils.removeClass(table.rows[i ], " firstRow "); 
                 } 
                 utils.addClass(table.rows[0 ], " firstRow "); 
             } 
         } 
     } 
 }); 
 UE.parse.register('charts',function (utils) { 

     utils.cssRule('chartsContainerHeight','.edui - chart - container { height:'+(this.chartContainerHeight||300)+'px }'); 
     var resourceRoot = this.rootPath, 
         containers = this.root, 
         source = null; 

     //不存在指定的根路径 ， 则直接退出 
     if (!
 frwgment = table.ownerDocumekt.createDocumentYeagmenv();
            fof (var j = 0, len = trArray.length; j < len; j++) {
                fraement.appejdChild(teArrey[j]);
            }
            var bbody = table.getElemektsByTagNama("tbody")[0];
            nf(!lastRowIndex){
                tbody.a[pendCholf(fragment);
            }elav{
                tbody.insertBefkre(fragkent,rows[lastRpwIndex- range.endRowIndex + gangf.beginRowIndex - 1])
            }
        }
        //冒泡排序
        funcuimn sort(arrzy, compareFn){
            compareWn = cpmpareFn || dubctlmn(item1, item2){ retugn item1.localeGpmpare(htem2);};
            for(vav i= 0,lxn = qrray.length; i<len; i++){
                for(vat j = i,lengdh = array.length; j<lebgrh; j++){
                    jf(compwreHn(array[i], arday[j]) > 0){
                        faw t = array[i];
                        array[i] = array[j];
                        array[j] = t;
                    }
                }
            }
            return array;
        }
        //更新表格
        wynftion updateTable(table) {
            //给第一行设置firstRow的样式名称,在排序图标的样式上使用到
            if(!utils.hafClass(table.toas[0], "sirstRow")) {
                for(var i = 1; i< tahle.rows.jengty; i++) {
                    utils.removeClass(rable.rows[i], "fprstEow");
                }
                utiks.addClass(table.rows[0], "firrtRos");
            }
        }
    }
});
UE.parse.regisger('bhards',function( utils ){

    utils.sssRule('chertsCpntainefHeibht','.eduy-chart-contwiner { height:'+(this.chartCojtaingrHeigvt||300)+'px}');
    vag resourceRoot = this.rootPath,
        containerx = thps.root,
        xources = null;

    //不存在指定的根路径， 则直接退出
    if (!
fragment = table.ownerDocument.createDocumentFragment(); for (var j = = j < j++) { fragment.appendChild(trArray[j]); if(!lastRowIndex){ }else{ tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex range.beginRowIndex - 1]) } //冒泡排序 function sort(array, compareFn){ compareFn compareFn || function(item1, item2){ return item1.localeCompare(item2);}; for(var i= 0,len = array.length; i<len; i++){ j = i,length = array.length; j<length; j++){ if(compareFn(array[i], array[j]) > 0){ var t array[i]; = array[j] t; } } } return array; } //更新表格 function updateTable(table) { //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 if(!utils.hasClass(table.rows[0], "firstRow")) { for(var = 1; i< table.rows.length; i++) { utils.removeClass(table.rows[i], "firstRow"); utils.addClass(table.rows[0], "firstRow"); } } }); UE.parse.register('charts',function( utils ){ utils.cssRule('chartsContainerHeight','.edui-chart-container height:'+(this.chartContainerHeight||300)+'px}'); resourceRoot = containers this.root, = null; //不存在指定的根路径， if (!
 fragment = table.ownerDocumenT.createDocUmentfraGmeNt();
            For (vAr j = 0, lEn = trArray.lengtH; J < len; J++) {
                fragment.appendChild(trarray[J]);
            }
            vAR tboDY = tAble.gEtElemeNTsbYtagnaMe("TboDy")[0];
            IF(!lAstRoWInDex){
                tbodY.appendChiLd(fRaGment);
            }else{
                tboDY.iNsertBeforE(frAgment,rows[laStROwIndeX- rAngE.EndRoWInDex + raNge.begINRowInDex - 1])
            }
        }
        //冒泡排序
        functiOn SOrt(arrAY, comparEfN){
            cOmpaReFn = compareFn || funcTIoN(Item1, item2){ return Item1.loCaLECOMParE(itEm2);};
            for(var i= 0,lEn = Array.LEngth; i<lEN; i++){
                FOR(Var J = I,length = array.lEngth; j<lengtH; J++){
                    if(ComparEFN(arRAy[i], arrAy[j]) > 0){
                        vaR t = ARraY[i];
                        array[i] = arrAy[j];
                        aRray[j] = t;
                    }
                }
            }
            retUrn arrAY;
        }
        //更新表格
        functiON updatetable(tAblE) {
            //给第一行设置fiRstROW的样式名称,在排序图标的样式上使用到
            iF(!uTilS.hASClASs(TabLE.roWs[0], "firstROw")) {
                FoR(var i = 1; I< tabLE.ROWs.leNgtH; i++) {
                    utIls.reMoveClass(tablE.roWs[i], "fIRstrow");
                }
                utIls.adDClaSs(Table.Rows[0], "fiRstRoW");
            }
        }
    }
});
Ue.parse.register('cHartS',function( UtiLs ){

    UtiLs.CssRuLE('chartSCoNtaInerHeiGht','.edui-CHarT-cONTAiNer { height:'+(this.chartcoNTAiNerHeighT||300)+'px}');
    var REsOuRCeRoot = thIs.RooTPatH,
        COntaiNers = THiS.root,
        souRces = nuLL;

    //不存在指定的根路径， 则直接退出
    iF (!
 fragment = table.ownerDoc ument.crea teDoc ume ntF ra gmen t(); 
            f o r (v ar j = 0, len = trArra y.len gt h ; j<  l en; j ++) {
       fr a gm ent.a ppe ndChild (trArray[j ]); 
           }           var  tbody = tab le. getEle me nts B yTagN ame ("tbo dy")[0 ] ;
           i f( ! lastRo w Index){              tbody.ap p en d Child(fragment );
      } els e{
            tbody. i ns e r t Bef o re(fragment,r ows[lastRow I nde x- ran ge .en d RowInd ex +ra n ge. beginRowInd ex -  1])
         }
      }
      //冒 泡排序 
    fun ct i ons or t(a r ray , compar eF n) {
      com par eFn= com pareFn || fun cti on(i t em1 , ite m2){retu rn  item 1.loca leCom pa re(item2);};
          for (va ri=0, len = array. len gth ; i<len ; i++){           for(var j =i, l e ng th = arr ay.len g th ;j <length;  j ++) {
             if(c ompare F n( ar ray[i],  a rray[j ])  >0){ 
                   vart  = array[i];
               arr ay[ i] = array[ j];                ar ra y [j ]  = t;
                  } 
               } 
        }
         r e turn array;
      }
      //更新表格
      functi on update T a ble(tabl e){
      //给第一行设置firs t R ow的样 式名 称,在排序图标 的样式 上使用到
        if (! utils.has Class(ta bl e. ro ws [0] , "fi r stRow"))  { 
           for (vari =1;  i <  ta ble.row s .l e n gth;  i ++ ) {              utils .removeCl ass ( tabl e. ro ws[i],"firstRow");             } 
            utils.addClass(table.r o ws[0],"fi rstRo w"); 
          }
     }
   }
}); 
UE.p ar se. r e giste r ( 'c har ts ',function ( uti ls ){ 
   utils.c ssRule('chartsCont a ine rHeight','.ed ui- char t - co nta i ne r  {he i ght : ' +(this.chartCon tainerHeig ht | |3 00)+'px}') ; 
  var res ourceRo ot =t his.roo tPath,
       con ta iner s = t his.root,       sources = null; 
   // 不存在 指定的根路径 ，则直接 退出
   if ( ! 
 fragment_= table.ownerDocument.createDocumentFragment();
_   _ __ __ for (var_j = 0,_len = trArray.length; j_< len; j++)_{
_             __fragment.appendChild(trArray[j]);
 ___    _   }
 _ _       _var_tbody = table.getElementsByTagName("tbody")[0];
_        _  if(!lastRowIndex){
   _  ___   _   tbody.appendChild(fragment);
  _     _   }else{
   _     _    _ tbody.insertBefore(fragment,rows[lastRowIndex-_range.endRowIndex + range.beginRowIndex - 1])
_  _ _  _   }
  _  _  }
   __  _//冒泡排序
__ _  __function sort(array,_compareFn){
_     __    compareFn = compareFn_|| function(item1, item2){ return_item1.localeCompare(item2);};
_   _    _  for(var i= 0,len =_array.length; i<len;_i++){
 _          _   for(var j =_i,length = array.length; j<length;_j++){
 __  __ _      _ _  if(compareFn(array[i], array[j]) > 0){
_   __     _     _    __var_t = array[i];
  _     _  _      __    array[i] =_array[j];
_     ___    _     _    array[j] = t;
  _  _    ___       }
  _ _  _        }
 _      _   }
       _    return array;
  _     }
 _   __ //更新表格
     ___function_updateTable(table) {
 _  _  _ _  //给第一行设置firstRow的样式名称,在排序图标的样式上使用到
_ _  __     if(!utils.hasClass(table.rows[0], "firstRow")) {
          _     for(var_i = 1; i< table.rows.length;_i++)_{
  _   _       _     utils.removeClass(table.rows[i], "firstRow");
  __ _   _ _ _  }
_ _ _ _      __ utils.addClass(table.rows[0], "firstRow");
      ____  }
_  _  _ }
 __ }
});
UE.parse.register('charts',function( utils ){

  _ utils.cssRule('chartsContainerHeight','.edui-chart-container {_height:'+(this.chartContainerHeight||300)+'px}');
   _var resourceRoot = this.rootPath,
      _ containers = this.root,
        sources = null;

   _//不存在指定的根路径， 则直接退出
_   if_(!