3044. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 1/2/2018 11:58:57 AM Eastern Standard Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

3044.1 Files compared

# Location File Last Modified
1 Tue Jan 2 16:58:57 2018 UTC
2 HTRE_P2.zip\src.zip\output\IHTA OLH Files.zip\ihta_admin.zip\reports.zip whhost.js Tue Jan 19 13:58:38 2016 UTC

3044.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 0 0
Changed 0 0
Inserted 1 1329
Removed 0 0

3044.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

3044.4 Active regular expressions

No regular expressions were active.

3044.5 Comparison detail

        1   //      We bHelp 5.10 .002
        2   var gaChun ks=new Arr ay();
        3   var gaFake s=new Arra y();
        4   var gaData Con=null;
        5   var gaData =new Array ();
        6  
        7   var gbFind CK=false;;
        8   var gbNeed Calc=false ;
        9   var gbScrl =false;
        10   var gbProc ess=false;
        11   var gbRead y=false;
        12  
        13   var gnChec k=0;
        14   var gnNum= 0;
        15   var gnIns= -1;
        16   var gnLoad =0;
        17   var gnRef= -1;
        18   var gnMaxI tems=0;
        19   var gnMaxM argin=3200 0;
        20   var gnNeed ed=0;
        21   var gnNKI= -1;
        22   var gnRE=0 ;
        23   var gnScrl Mgn=30;
        24   var gnSE=0 ;
        25   var gnVisi ble=0;
        26   var gnItem s=0;
        27   var gnUHei ght=1;
        28  
        29   var gsBCK= null;
        30   var gsChK= null;
        31   var gsCK=n ull;
        32   var gsLoad ingDivID=" LoadingDiv ";
        33   var gsLoad ingMsg="Lo ading data , please w ait...";
        34   var gsSKA= null;
        35   var gsSKB= null;
        36  
        37   var gbLoad Info=false ;
        38  
        39   function o nLoadXMLEr ror()
        40   {
        41           if (gbLoadInf o)
        42           {
        43                    var  aChunk=new  Array();
        44                    proj Ready(aChu nk);
        45           }
        46           el se
        47           {
        48                    var  aData=new  Array();
        49                    putD ata(aData) ;
        50           }
        51   }
        52  
        53   function p utDataXML( xmlDoc,sDo cPath)
        54   {
        55           if (gbLoadInf o)
        56           {
        57                    var  node=xmlDo c.lastChil d;
        58                    if(n ode)
        59                    {
        60                             var nT otal=0
        61                             var aC hunk=new A rray();
        62                             var oC =node.firs tChild;
        63                             while( oC)
        64                             {
        65                                      if(oC.no deName=="c hunkinfo")
        66                                      {
        67                                               var item=n ew Object( );
        68                                               item.sBK=o C.getAttri bute("firs t");
        69                                               item.sEK=o C.getAttri bute("last ");
        70                                               item.sFile Name=oC.ge tAttribute ("url");
        71                                               item.nNum= parseInt(o C.getAttri bute("num" ));
        72                                               nTotal+=it em.nNum;
        73                                               item.nTota l=nTotal;
        74                                               aChunk[aCh unk.length ]=item;
        75                                      }
        76                                      oC=oC.ne xtSibling;
        77                             }
        78                             projRe ady(aChunk );
        79                    }
        80           }
        81           el se
        82           {
        83                    var  node=xmlDo c.lastChil d;
        84                    if(n ode)
        85                    {
        86                             var aD ata=new Ar ray();
        87                             var nP rev=0;
        88                             var nN ext=0;
        89                             var oC =node.firs tChild;
        90                             while( oC)
        91                             {
        92                                      nPrev=nN ext;
        93                                      if(oC.no deName=="k ey")
        94                                      {
        95                                               var sName= oC.getAttr ibute("nam e");
        96                                               if(sName&& sName.leng th>0)
        97                                               {
        98                                                       va r sTarget= oC.getAttr ibute("tar get");
        99                                                       va r item=new  Object();
        100                                                       it em.nType=2 ;
        101                                                       it em.sName=s Name;
        102                                                       if (sTarget)
        103                                                                item .sTarget=s Target;
        104                                                       it em.nPKOff= nPrev;
        105                                                       aD ata[aData. length]=it em;
        106                                                       va r nCurInde x=aData.le ngth;
        107                                                       pr ocessKey(o C,aData,it em);
        108                                                       nN ext=aData. length-nCu rIndex;
        109                                                       it em.nNKOff= nNext;
        110                                               }
        111                                      }
        112                                      else if( oC.nodeNam e=="letter ")
        113                                      {
        114                                               var name=o C.getAttri bute("name ");
        115                                               if(name&&n ame.length >0)
        116                                               {
        117                                                       va r item=new  Object();
        118                                                       it em.nType=1 ;
        119                                                       it em.sName=n ame;
        120                                                       it em.nPKOff= nPrev;
        121                                                       nN ext=0;
        122                                                       it em.nNKOff= nNext;
        123                                                       aD ata[aData. length]=it em;
        124                                               }
        125                                      }
        126                                      else if( oC.nodeNam e=="entry" )
        127                                      {
        128                                               var name=o C.getAttri bute("name ");
        129                                               var def=oC .getAttrib ute("value ");
        130                                               if(name&&n ame.length >0)
        131                                               {
        132                                                       va r item=new  Object();
        133                                                       it em.sName=n ame;
        134                                                       it em.sDef=de f;
        135                                                       it em.nPKOff= nPrev;
        136                                                       nN ext=0;
        137                                                       it em.nNKOff= nNext;
        138                                                       aD ata[aData. length]=it em;
        139                                               }
        140                                      }
        141                                      oC=oC.ne xtSibling;
        142                             }
        143                             putDat a(aData);
        144                    }
        145           }
        146   }
        147  
        148   function p rocessKey( element,aD ata,item)
        149   {
        150           va r i=0;
        151           va r nPrev=0;
        152           va r nNext=0;
        153           va r oC=eleme nt.firstCh ild;
        154           wh ile(oC)
        155           {
        156                    if(o C.nodeName =="topic")
        157                    {
        158                             var na me=oC.getA ttribute(" name");
        159                             var ur l=oC.getAt tribute("u rl");
        160                             if(url &&url.leng th!=0)
        161                             {
        162                                      if(!name ||name.len gth==0)
        163                                               name=url;
        164                                      var topi c=new Obje ct();
        165                                      topic.sN ame=name;
        166                                      topic.sU RL=url;
        167                                      if(!item .aTopics)
        168                                               item.aTopi cs=new Arr ay();
        169                                      item.aTo pics[item. aTopics.le ngth]=topi c;
        170                             }
        171                    }
        172                    else  if(oC.nod eName=="ke y")
        173                    {
        174                             nPrev= nNext;
        175                             var na me=oC.getA ttribute(" name");
        176                             if(nam e&&name.le ngth!=0)
        177                             {
        178                                      var subI tem=new Ob ject();
        179                                      subItem. sName=name ;
        180                                      subItem. nType=3;
        181                                      subItem. nPKOff=nPr ev;
        182                                      aData[aD ata.length ]=subItem;
        183                                      var nCur Index=aDat a.length;
        184                                      processK ey(oC,aDat a,subItem) ;
        185                                      nNext=aD ata.length -nCurIndex ;
        186                                      subItem. nNKOff=nNe xt;
        187                             }
        188                    }
        189                    oC=o C.nextSibl ing;
        190           }
        191   }
        192  
        193   function p utData(aDa ta)
        194   {
        195           en dLoading() ;
        196           va r oCData=g oCData;
        197           if (oCData)
        198           {
        199                    oCDa ta.aKs=aDa ta;
        200                    if(g nNKI==-1)
        201                             setTim eout("chec kReady();" ,1);
        202                    else
        203                    {
        204                             gsSKA= getKByIdx( oCData,gnN KI);
        205                             gbNeed Calc=true;
        206                             gbScrl =true;
        207                             gnNKI= -1;
        208                             if(gsS KA)
        209                                      setTimeo ut("checkR eady();",1 );
        210                             else
        211                             {
        212                                      markEnd( );
        213                                      setTimeo ut("checkA gain();",5 0);
        214                             }
        215                    }
        216           }
        217   }
        218  
        219   function m arkEnd()
        220   {
        221           if (gbProcess )
        222                    gbPr ocess=fals e;
        223   }
        224  
        225   function e ndLoading( )
        226   {
        227           va r oDiv=get Element(gs LoadingDiv ID);
        228           if (oDiv)
        229                    oDiv .style.vis ibility="h idden";
        230   }
        231  
        232   function m arkBegin()
        233   {
        234           gb Process=tr ue;
        235   }
        236  
        237   function b eginLoadin g()
        238   {
        239           va r oDiv=get Element(gs LoadingDiv ID);
        240           if (oDiv)
        241           {
        242                    oDiv .style.top =document. body.scrol lTop;
        243                    oDiv .style.vis ibility="v isible";
        244           }
        245   }
        246  
        247   function i ndexHTMLPa rt()
        248   {
        249           th is.sHTML=" ";
        250           th is.nNeeded =0;
        251           th is.nCurren t=0;
        252           th is.nConsum ed=0;
        253           th is.sFK=nul l;
        254           th is.sLK=nul l;
        255           th is.addHTML =function( sHTML,nCon sumed,bDow n,bK,sK){
        256                    if(b Down)
        257                             this.s HTML+=sHTM L;
        258                    else
        259                             this.s HTML=sHTML +this.sHTM L;
        260                    this .nCurrent+ +;                          
        261                    this .nConsumed +=nConsume d;
        262                    if(b K)
        263                    {
        264                             if(!th is.sFK)
        265                                      this.sFK =sK;
        266                             if(!th is.sLK)
        267                                      this.sLK =sK;
        268                             if(bDo wn)
        269                                      this.sLK =sK;
        270                             else
        271                                      this.sFK =sK;
        272                    }
        273           }
        274           th is.appendH TML=functi on(oHTML,b Down){
        275                    this .addSubHTM L(oHTML,bD own);
        276                    if(! this.sFK)
        277                             this.s FK=oHTML.s FK;
        278                    if(! this.sLK)
        279                             this.s LK=oHTML.s LK;
        280                    if(b Down)
        281                             this.s LK=oHTML.s LK;
        282                    else
        283                             this.s FK=oHTML.s FK;
        284           }        
        285           
        286           th is.addSubH TML=functi on(oHTML,b Down){
        287                    if(b Down)
        288                             this.s HTML+=oHTM L.sHTML;
        289                    else
        290                             this.s HTML=oHTML .sHTML+thi s.sHTML;
        291                    this .nCurrent+ =oHTML.nCu rrent;
        292                    this .nConsumed +=oHTML.nC onsumed;                           
        293           }
        294   }
        295  
        296   function g etMaxUnits ()
        297   {
        298           re turn Math. floor(gnMa xMargin/gn UHeight)+1 ;
        299   }
        300  
        301   function g etFakeItem sHTMLbyCou nt(nB,nCou nt)
        302   {
        303           va r nMU=getM axUnits();
        304           va r nNum=Mat h.floor(nC ount/nMU);
        305           va r sHTML="" ;
        306           fo r(var i=0; i<nNum;i++ )
        307                    sHTM L+=getFake ItemHTML(n B,nMU-1);
        308                    
        309           va r nRest=nC ount%nMU;
        310           sH TML+=getFa keItemHTML (nB,nRest- 1);
        311           re turn sHTML ;
        312   }
        313  
        314   function g etFakeItem HTML(nB,nN um)
        315   {
        316           re turn "<h6  name=fk"+n B+" id=fk" +nB+" styl e=\"margin -top:"+gnU Height*nNu m+";margin -bottom:0\ ">&nbsp;</ h6>";
        317   }
        318  
        319   function f akeItemsAr ea(nB,n,sK A,sKB,obj)
        320   {
        321           th is.nB=nB;
        322           th is.nNum=n;
        323           th is.sKA=sKA ;
        324           th is.sKB=sKB ;
        325           th is.obj=obj ;
        326           th is.nMargin =(n-1)*gnU Height;
        327  
        328           th is.setNum= function(n )
        329           {
        330                    var  nLastobj=- 1;
        331                    var  nDelta=thi s.nMargin;
        332                    this .nMargin=( n-1)*gnUHe ight;
        333                    nDel ta=nDelta- this.nMarg in;
        334                    if(n >0)
        335                    {
        336                             this.n Num=n;
        337                             var nM U=getMaxUn its();
        338                             nLasto bj=Math.fl oor((n-1)/ nMU);
        339                             if(thi s.obj.leng th)
        340                                      this.obj [nLastobj] .style.mar ginTop=((n -1)%nMU)*g nUHeight;
        341                             else
        342                                      this.obj .style.mar ginTop=((n -1)%nMU)*g nUHeight;
        343                    }
        344                    if(t his.obj.le ngth)
        345                    {
        346                             for(va r i=this.o bj.length- 1;i>nLasto bj;i--)
        347                                      removeTh is(this.ob j[i]);
        348                    }
        349                    else
        350                    {
        351                             if(nLa stobj==-1)
        352                                      removeTh is(this.ob j);
        353                    }
        354                    retu rn nDelta;
        355           }
        356           th is.insertA djacentHTM L=function (sWhere,sH TML)
        357           {
        358                    if(s Where=="be foreBegin" )
        359                    {
        360                             if(thi s.obj.leng th)
        361                                      this.obj [0].insert AdjacentHT ML(sWhere, sHTML);
        362                             else
        363                                      this.obj .insertAdj acentHTML( sWhere,sHT ML);
        364                    }
        365                    else  if(sWhere =="afterEn d")
        366                    {
        367                             if(thi s.obj.leng th)
        368                             {
        369                                      if(gbMac &&gbIE5&&t his.obj[th is.obj.len gth-1].nex tSibling)
        370                                               this.obj[t his.obj.le ngth-1].ne xtSibling. insertAdja centHTML(" beforeBegi n",sHTML);
        371                                      else
        372                                               this.obj[t his.obj.le ngth-1].in sertAdjace ntHTML(sWh ere,sHTML) ;
        373                             }
        374                             else
        375                             {
        376                                      if(gbMac &&gbIE5&&t his.obj.ne xtSibling)
        377                                               this.obj.n extSibling .insertAdj acentHTML( "beforeBeg in",sHTML) ;
        378                                      else
        379                                               this.obj.i nsertAdjac entHTML(sW here,sHTML );
        380                             }
        381                    }
        382           }
        383           th is.getBtm= function()
        384           {
        385           if (gbSafari3 )
        386           {
        387                    if(t his.obj.le ngth)
        388                             return  findPosit ion(this.o bj[this.ob j.length-1 ]);
        389                    else
        390                             return  findPosit ion(this.o bj);
        391           }
        392                    if(t his.obj.le ngth)
        393                             return  this.obj[ this.obj.l ength-1].o ffsetTop;
        394                    else
        395                             return  this.obj. offsetTop;
        396           }
        397           th is.getTop= function()
        398           {
        399                    retu rn this.ge tBtm()-thi s.nMargin;
        400           }
        401   }
        402  
        403   function u sedItems(n B,nE)
        404   {
        405           th is.nB=nB;
        406           th is.nE=nE;
        407           th is.oN=null ;
        408   }
        409  
        410   function c heckReady( )
        411   {
        412           va r len=gaCh unks.lengt h;
        413           va r bNeedLoa d=false;
        414           va r aDataCon ;
        415           va r s=0;
        416           va r bDown=(g sSKB==null );
        417           va r sK=bDown ?gsSKA:gsS KB;
        418           if (sK==null)
        419           {
        420                    mark End();
        421                    setT imeout("ch eckAgain() ;",50);
        422                    retu rn;
        423           }
        424           if (!gsChK||s K!=gsChK|| gnNum==0)
        425           {
        426                    gnCh eck=0;
        427                    gsCh K=sK;
        428                    aDat aCon=new A rray();
        429           }
        430           el se{
        431                    s=gn Num;
        432                    aDat aCon=gaDat aCon;
        433           }
        434           fo r(var i=gn Check;i<le n;i++)
        435           {
        436                    var  oCData=get ChunkedDat a(i,bDown, sK);
        437                    if(o CData)
        438                    {
        439                             if(!oC Data.aKs&& oCData.sFi leName!=nu ll)
        440                             {
        441                                      bNeedLoa d=true;
        442                                      goCData= oCData;
        443                                      gnNum=s;
        444                                      gnCheck= i;
        445                                      gaDataCo n=aDataCon ;
        446                                      oCData.n ProjId=i;
        447                                      gbLoadIn fo=false;
        448                                      beginLoa ding();
        449                                      loadData 2(gaData[i ].sPPath+g aData[i].s DPath+oCDa ta.sFileNa me);
        450                                      return;
        451                             }
        452                             else{
        453                                      aDataCon [s++]=oCDa ta;
        454                             }
        455                    }
        456           }
        457           if (!bNeedLoa d)
        458           {
        459                    gnNu m=0;
        460                    gsSK A=gsSKB=gs ShowK=null ;
        461                    
        462                    var  oHTML=new  indexHTMLP art();
        463                    var  aPos=new A rray();
        464                    var  aOriPos=ne w Array();
        465                    var  aMaxPos=ne w Array();
        466                    var  aMinPos=ne w Array();
        467                    
        468                    if(g bNeedCalc| |gbFindCK)  gnIns=0;
        469                    for( i=0;i<aDat aCon.lengt h;i++)
        470                    {
        471                             aPos[i ]=getIdxPo s(aDataCon [i],bDown, sK);
        472                             if(gbN eedCalc||g bFindCK)
        473                             {
        474                                      gnIns+=a Pos[i]+aDa taCon[i].n Total-aDat aCon[i].nN um;
        475                                      if(!bDow n)
        476                                      {
        477                                               if(aPos[i] !=-1)
        478                                               {
        479                                                       if (aDataCon[ i].aKs)
        480                                                                gnIn s+=aDataCo n[i].aKs[a Pos[i]].nN KOff;
        481                                                       el se
        482                                                       {
        483                                                                var  n=aPos[i]+ 1;
        484                                                                whil e(n<aDataC on[i].aKsO nly.length &&!aDataCo n[i].aKsOn ly[n])
        485                                                                         n++;
        486                                                                n=n- aPos[i]-1;
        487                                                                gnIn s+=n;
        488                                                       }
        489                                               }
        490                                      }
        491                             }
        492                             aOriPo s[i]=aPos[ i];
        493                             getLim it(aDataCo n,aPos,aMa xPos,aMinP os,i);
        494                    }
        495                    if(( gbNeedCalc ||gbFindCK )&&!bDown& &gnIns!=-1 )
        496                    {
        497                             gnIns+ =(aDataCon .length-1)
        498                    }
        499                    if(g nIns!=-1|| gbFindCK)
        500                    {
        501                             oHTML. nNeeded=gn Needed;
        502                             var bD one=writeI tems(oHTML ,aDataCon, aPos,aMinP os,aMaxPos ,bDown,1);
        503                             if(oHT ML.nConsum ed!=0)
        504                             {
        505                                      var nB;
        506                                      if(!bDow n)
        507                                               nB=gnIns-o HTML.nCons umed+1;
        508                                      else
        509                                               nB=gnIns;
        510                                              
        511                                      var oldS crollPos=d ocument.bo dy.scrollT op;
        512                                      if(inser tIdxKs(nB, oHTML,gbSc rl))
        513                                      {
        514                                               updateUsed K(aDataCon ,aOriPos,a Pos,bDown) ;
        515                                               if(!gbScrl &&gbMac)
        516                                               {
        517                                                       wh ile(docume nt.body.sc rollTop!=o ldScrollPo s)
        518                                                                docu ment.body. scrollTop= oldScrollP os;
        519                                               }
        520                                               gbScrl=fal se;
        521                                      }
        522                                      if(gbFin dCK)
        523                                      {
        524                                               gbFindCK=f alse;
        525                                               gbNeedCalc =true;
        526                                               gsSKB=oHTM L.sFK;
        527                                               gnIns=-1;
        528                                               setTimeout ("checkRea dy();",50) ;
        529                                               return;
        530                                      }
        531                             }
        532                             else i f(gbFindCK )
        533                             {
        534                                      gbFindCK =false;
        535                                      gbNeedCa lc=true;
        536                                      gsSKB=ge tFirstKeyF romPos(aDa taCon,aPos );
        537                                      gnIns=-1 ;
        538                                      setTimeo ut("checkR eady();",5 0);
        539                                      return;
        540                             }
        541                             if(!fi ndCKInDom( )) return;
        542  
        543                             gnNeed ed=gnNeede d-oHTML.nC urrent;
        544                             gnIns= -1;
        545                             markEn d();
        546                             setTim eout("chec kAgain();" ,50);
        547                             gbNeed Calc=false ;
        548                    }
        549                    else
        550                    {
        551                             if(!fi ndCKInDom( )) return;
        552                             markEn d();
        553                             setTim eout("chec kAgain();" ,50);
        554                    }
        555           }
        556   }
        557  
        558   function g etFirstKey FromPos(aD ataCon,aPo s)
        559   {
        560           va r sCurrent K=getBigge stChar();
        561           fo r(var i=0; i<aPos.len gth;i++)
        562           {
        563                    if(a DataCon[i] .aKs&&aDat aCon[i].aK s.length>0 &&aPos[i]> =0&&aPos[i ]<aDataCon [i].aKs.le ngth)
        564                    {
        565                             if(sCu rrentK=="" ||
        566                                      compare( sCurrentK, aDataCon[i ].aKs[aPos [i]].sName )>0)
        567                             {
        568                                      sCurrent K=aDataCon [i].aKs[aP os[i]].sNa me;
        569                             }
        570                    }
        571           }
        572           re turn sCurr entK;
        573   }
        574  
        575   function c heckAgain( )
        576   {
        577           if (!gbProces s)
        578           {
        579                    if(g sBCK!=null )
        580                    {
        581                             gsCK=g sBCK;
        582                             gsBCK= null;
        583                             findCK ();
        584                    }
        585                    else
        586                    {
        587                             markBe gin();
        588                         getUnitIdx (document. body.scrol lTop,getCl ientHeight ());
        589                    }
        590           }
        591           el se
        592                    setT imeout("ch eckAgain() ",50);
        593   }
        594  
        595   function g etLimit(aD ataCon,aPo s,aMaxPos, aMinPos,i)
        596   {
        597           aM axPos[i]=a DataCon[i] .nNum;
        598           aM inPos[i]=- 1;
        599           va r oPNode=n ull;
        600           if (aDataCon[ i].oUsedIt ems)
        601           {
        602                    var  oUsedItems =aDataCon[ i].oUsedIt ems;
        603                    do{
        604                             if(oUs edItems.nB >aPos[i])
        605                             {
        606                                      aMaxPos[ i]=oUsedIt ems.nB;
        607                                      break;
        608                             }
        609                             oPNode =oUsedItem s;
        610                             oUsedI tems=oUsed Items.oN;
        611                    }whi le(oUsedIt ems!=null) ;
        612                    if(o PNode)
        613                             aMinPo s[i]=oPNod e.nE;
        614           }
        615           el se if(aDat aCon[i].aK s==null)
        616           {
        617                    aMax Pos[i]=aMi nPos[i]=aP os[i];
        618           }
        619           if (aMinPos[i ]>=aPos[i] ||aMaxPos[ i]<=aPos[i ])
        620           {
        621                    aMax Pos[i]=aMi nPos[i]=aP os[i];
        622           }
        623   }
        624  
        625   function g etIdxPos(o Idx,bDown, sK)
        626   {
        627           va r aKs=oIdx .aKs;
        628           va r nIdx;
        629           if (bDown)
        630                    nIdx =oIdx.nNum ;
        631           el se
        632                    nIdx =-1;
        633           if (aKs!=null )
        634           {
        635                    for( var i=0;i< aKs.length ;i++)
        636                    {        
        637                             if(bDo wn)
        638                             {
        639                                      if(compa re(aKs[i]. sName,sK)> 0)
        640                                      {
        641                                               nIdx=i;
        642                                               break;
        643                                      }
        644                             }
        645                             else
        646                             {
        647                                      if(compa re(aKs[i]. sName,sK)< 0)
        648                                               nIdx=i;
        649                                      else
        650                                               break;
        651                             }
        652                             i+=aKs [i].nNKOff ;
        653                    }
        654           }
        655           el se if(oIdx .aKsOnly)
        656           {
        657                    var  aKsOnly=oI dx.aKsOnly ;
        658                    for( var i=0;i< aKsOnly.le ngth;i++)
        659                    {        
        660                             if(aKs Only[i])
        661                             {
        662                                      if(bDown )
        663                                      {
        664                                               if(compare (aKsOnly[i ],sK)>0)
        665                                               {
        666                                                       nI dx=i;
        667                                                       br eak;
        668                                               }
        669                                      }
        670                                      else
        671                                      {
        672                                               if(compare (aKsOnly[i ],sK)<0)
        673                                                       nI dx=i;
        674                                               else
        675                                                       br eak;
        676                                      }
        677                             }
        678                    }
        679           }
        680           re turn nIdx;
        681   }
        682  
        683   function w riteItems( oHTML,aDat aCon,aPos, aMinPos,aM axPos,bDow n,nLevel)
        684   {
        685           va r aOldPos= new Array( );
        686           fo r(var i=0; i<aPos.len gth;i++)
        687           {
        688                    aOld Pos[i]=aPo s[i];
        689           }
        690           va r p;
        691           do {
        692                    var  sCurrentK= "";
        693                    var  aCurIdxSet =new Array ();
        694                    p=0;
        695                    for( i=0;i<aDat aCon.lengt h;i++)
        696                    {
        697                             if(aDa taCon[i].a Ks&&aDataC on[i].aKs. length&&aP os[i]!=-1& &
        698                                      (bDown&& aPos[i]<aM axPos[i])| |(!bDown&& aPos[i]>aM inPos[i]))
        699                             {
        700                                      if(sCurr entK==""||
        701                                               (bDown&&co mpare(sCur rentK,aDat aCon[i].aK s[aPos[i]] .sName)>0) ||
        702                                               (!bDown&&c ompare(sCu rrentK,aDa taCon[i].a Ks[aPos[i] ].sName)<0 ))
        703                                      {
        704                                               sCurrentK= aDataCon[i ].aKs[aPos [i]].sName ;
        705                                               p=0;
        706                                               aCurIdxSet [p++]=i;
        707                                      }
        708                                      else if( compare(sC urrentK,aD ataCon[i]. aKs[aPos[i ]].sName)= =0){
        709                                               aCurIdxSet [p++]=i;
        710                                      }
        711                             }
        712                             else i f(nLevel== 1&&aMaxPos [i]!=aMinP os[i]){
        713                                      if(bDown &&aPos[i]= =aMaxPos[i ])
        714                                      {
        715                                               if(aDataCo n[i].aKs)
        716                                               {
        717                                                       gs SKA=aDataC on[i].aKs[ aOldPos[i] ].sName;
        718                                                       re turn false ;
        719                                               }
        720                                      }
        721                                      else if( !bDown&&aP os[i]==aMi nPos[i])
        722                                      {
        723                                               if(aDataCo n[i].aKs)
        724                                               {
        725                                                       gs SKB=aDataC on[i].aKs[ aOldPos[i] ].sName;
        726                                                       re turn false ;
        727                                               }
        728                                      }
        729                             }
        730                    }
        731                    if(p >=1){
        732                             for(va r s=0;s<p; s++)
        733                             {
        734                                      aOldPos[ aCurIdxSet [s]]=aPos[ aCurIdxSet [s]];
        735                             }
        736                             mergeI tems(oHTML ,bDown,aDa taCon,aCur IdxSet,p,a Pos,nLevel );
        737                             adjust Position(b Down,aData Con,aCurId xSet,p,aPo s);
        738                             
        739                             if(nLe vel==1&&oH TML.nNeede d<=oHTML.n Current){
        740                                      return t rue;
        741                             }
        742                    }
        743           }w hile(p>0);
        744           re turn true;
        745   }
        746  
        747   function u pdateUsedK (aDataCon, aOriPos,aO ldPos,bDow n)
        748   {
        749           fo r(var i=0; i<aDataCon .length;i+ +)
        750           {
        751                    if ( aOldPos[i] !=aOriPos[ i])
        752                    {
        753                             var nB P=0;
        754                             var nE P=0;
        755                             if(bDo wn)
        756                             {
        757                                      nBP=aOri Pos[i];
        758                                      nEP=aOld Pos[i]-1;
        759                             }
        760                             else
        761                             {
        762                                      if (aOld Pos[i]!=-1 )
        763                                               nBP=aOldPo s[i]+aData Con[i].aKs [aOldPos[i ]].nNKOff+ 1;
        764                                      else
        765                                               nBP=0;
        766                                      nEP=aOri Pos[i]+aDa taCon[i].a Ks[aOriPos [i]].nNKOf f;
        767                             }
        768                             if(nBP <=nEP)
        769                             {
        770                                      setConte ntsUsed(aD ataCon[i], nBP,nEP);
        771                                      
        772                                      var oFir stPair=aDa taCon[i].o UsedItems;
        773                                      if(oFirs tPair.oN== null&&oFir stPair.nB= =0&&oFirst Pair.nE==a DataCon[i] .nNum-1)
        774                                      {
        775                                               storeKeysO nly(aDataC on[i]);
        776                                               aDataCon[i ].oUsedIte ms=aDataCo n[i].aKs=a DataCon[i] .sFileName =null;
        777                                      }
        778                             }
        779                    }
        780           }
        781   }
        782  
        783   function s toreKeysOn ly(oCData)
        784   {
        785           oC Data.aKsOn ly=new Arr ay();
        786           fo r(var i=0; i<oCData.a Ks.length; i++)
        787           {
        788                    oCDa ta.aKsOnly [i]=oCData .aKs[i].sN ame;
        789                    i+=o CData.aKs[ i].nNKOff;
        790           }
        791   }
        792  
        793   function s etContents Used(oIdx, nB,nE)
        794   {
        795           if (!oIdx.oUs edItems)
        796                    oIdx .oUsedItem s=new used Items(nB,n E);
        797           el se
        798           {
        799                    var  oUsedItems =oIdx.oUse dItems;
        800                    var  oPNode=nul l;
        801                    do{
        802                             if(oUs edItems.nB >nB)
        803                             {
        804                                      if(oUsed Items.nB== nE+1)
        805                                      {
        806                                               oUsedItems .nB=nB;
        807                                      }
        808                                      else{
        809                                               var oNewNo de=new use dItems(oUs edItems.nB ,oUsedItem s.nE);
        810                                               oNewNode.o N=oUsedIte ms.oN;
        811                                               oUsedItems .nB=nB;
        812                                               oUsedItems .nE=nE;
        813                                               oUsedItems .oN=oNewNo de;
        814                                      }
        815                                      break;
        816                             }
        817                             oPNode =oUsedItem s;
        818                             oUsedI tems=oUsed Items.oN;
        819                    }whi le(oUsedIt ems);
        820                    if(! oUsedItems )
        821                    {
        822                             if(oPN ode!=null)
        823                                      oPNode.o N=new used Items(nB,n E);
        824                    }
        825                    if(o PNode!=nul l){
        826                             if(oPN ode.nE==oP Node.oN.nB -1)
        827                             {
        828                                      oPNode.n E=oPNode.o N.nE;
        829                                      oPNode.o N=oPNode.o N.oN;
        830                             }
        831                    }
        832           }
        833   }
        834  
        835   function p rojInfo(sP Path,sDPat h,sFile)
        836   {
        837           th is.sPPath= sPPath;
        838           th is.sDPath= sDPath;
        839           th is.sFile=s File;
        840   }
        841  
        842   function a ddProjInfo (sPPath,sD Path,sFile )
        843   {
        844           va r oIdxInfo =new projI nfo(sPPath ,sDPath,sF ile);
        845           ga Data[gaDat a.length]= oIdxInfo;
        846           re turn oIdxI nfo;
        847   }
        848  
        849   function w riteDataIF rame()
        850   {
        851           if (gnLoad<ga Data.lengt h)
        852           {
        853                    gbLo adInfo=tru e;
        854                    load Data2(gaDa ta[gnLoad] .sPPath+ga Data[gnLoa d].sDPath+ gaData[gnL oad].sFile );
        855           }
        856           el se{
        857                    if(g nItems!=0)
        858                    {
        859                             markBe gin();
        860                             writeF akeItems() ;
        861                             gsSKA= "";
        862                             gnNeed ed=gnVisib le;
        863                             gnIns= 0;
        864                             checkR eady();
        865                    }
        866           }
        867   }
        868  
        869   function g etH6ById(n Pos)
        870   {
        871           if (document. all)
        872                    retu rn documen t.all("fk" +nPos);
        873           el se if(docu ment.getEl ementsByNa me)
        874                    retu rn documen t.getEleme ntsByName( "fk"+nPos) ;
        875           re turn null;              
        876   }
        877  
        878   function s howItemsIn Evaluation (nBP)
        879   {
        880           va r bRtn=tru e;
        881           va r fPer=nBP /gnItems;
        882           va r nB=Math. floor(fPer *gnMaxItem s);
        883           va r oCData=g etChunkByI dx(gnRef,n B);
        884           if (oCData)
        885           {
        886                    if(! oCData.aKs &&oCData.s FileName!= null)
        887                    {
        888                             gnNKI= nB;
        889                             goCDat a=oCData;
        890                             oCData .nProjId=g nRef;
        891                             gbLoad Info=false ;
        892                             beginL oading();
        893                             loadDa ta2(gaData [gnRef].sP Path+gaDat a[gnRef].s DPath+oCDa ta.sFileNa me);
        894                    }
        895                    else {
        896                             gsSKA= getKByIdx( oCData,nB) ;
        897                             if(gsS KA)
        898                             {
        899                                      gsSKB=nu ll;
        900                                      gbNeedCa lc=true;
        901                                      gbScrl=t rue;
        902                                      checkRea dy()
        903                             }
        904                             else
        905                             {
        906                                      markEnd( );
        907                                      bRtn=fal se;
        908                             }
        909                    }
        910           }
        911           el se
        912           {
        913                    mark End();
        914                    bRtn =false;
        915           }
        916           re turn bRtn;
        917   }
        918  
        919   function i sUsed(oCDa ta,nPos)
        920   {
        921           va r oUsed=oC Data.oUsed Items;
        922           wh ile(oUsed& &oUsed.nB< =nPos)
        923           {
        924                    if(o Used.nE>=n Pos) retur n true;
        925                    oUse d=oUsed.oN ;
        926           }
        927           re turn false ;
        928   }
        929  
        930   function g etKByIdx(o CData,nB)
        931   {
        932           va r nRelPos= nB-(oCData .nTotal-oC Data.nNum) ;
        933           va r aIKs=oCD ata.aKs;
        934           if (nRelPos>= 0&&aIKs&&n RelPos<aIK s.length)
        935           {
        936                    var  oK=null;
        937                    do{
        938                             oK=aIK s[nRelPos+ +];
        939                    }        
        940                    whil e((oK.nTyp e==3||isUs ed(oCData, nRelPos-1) )&&nRelPos <aIKs.leng th);
        941                    if(o K.nType!=3 )
        942                    {
        943                             return  oK.sName;
        944                    }
        945                    else {
        946                             nRelPo s=nB-(oCDa ta.nTotal- oCData.nNu m)-1;
        947                             if(nRe lPos>=0)
        948                             {
        949                                      do{
        950                                               oK=aIKs[nR elPos--];
        951                                      }
        952                                      while((o K.nType==3 ||isUsed(o CData,nRel Pos+1))&&n RelPos>=0) ;
        953                             }
        954                             if(oK. nType!=3)
        955                             {
        956                                      return o K.sName;
        957                             }
        958                    }
        959           }
        960           re turn null;
        961   }
        962  
        963   function l oadData2(s FileName)
        964   {
        965           di sEvt();
        966           if (gbXML)
        967                    load DataXML(sF ileName);
        968           el se
        969                    load Data(sFile Name);
        970           en Evt();
        971   }
        972  
        973   function p rojReady(a Chunk)
        974   {
        975           ga Chunks[gnL oad++]=aCh unk;
        976           va r len=aChu nk.length;
        977           va r nTotal=0 ;
        978           if (len>0)
        979                    nTot al=aChunk[ len-1].nTo tal;
        980           gn Items+=nTo tal;
        981           if (nTotal>gn MaxItems)
        982           {
        983                    gnMa xItems=nTo tal;
        984                    gnRe f=gnLoad-1 ;
        985           }
        986           se tTimeout(" writeDataI Frame();", 1);
        987   }
        988  
        989   function w riteFakeIt ems()
        990   {
        991           di sEvt();
        992           gn UHeight=15 ;
        993           if (gbSafari3  && !gbMac )
        994                gnUHeigh t=1;
        995           va r sHTML=ge tFakeItems HTMLbyCoun t(0,gnItem s);
        996           do cument.bod y.insertAd jacentHTML ("beforeEn d",sHTML);
        997           va r obj=getH 6ById(0);
        998           if  (document .body != n ull)
        999           {
        1000                    gnVi sible=Math .ceil(getC lientHeigh t()/gnUHei ght);
        1001           }
        1002           ga Fakes[0]=n ew fakeIte msArea(0,g nItems,"", getEndStri ng(),obj);
        1003           en Evt();
        1004   }
        1005  
        1006   function g etEndStrin g()
        1007   {
        1008           va r sBC=getB iggestChar ();
        1009           re turn sBC+s BC+sBC+sBC +sBC+sBC+s BC+sBC;
        1010   }
        1011  
        1012   function g etUnitIdx( nScrl,nHei ght)
        1013   {
        1014           if (gaFakes.l ength==0)
        1015           {
        1016                    mark End();
        1017                    retu rn;
        1018           }
        1019           va r nB=0;
        1020           va r nE=gaFak es.length- 1;
        1021           va r nM=-1;
        1022           va r nTop=0;
        1023           va r nBtm=0;
        1024           va r bF=false ;
        1025           do {
        1026                    nM=( nB+nE)>>1;
        1027                    nBtm =gaFakes[n M].getBtm( );
        1028                    nTop =gaFakes[n M].getTop( );
        1029                             
        1030                    if(n Top>=nScrl +nHeight)
        1031                             nE=nM- 1;
        1032                    else  if(nBtm<n Scrl)
        1033                             nB=nM+ 1;
        1034                    else {
        1035                             bF=tru e;
        1036                             break;
        1037                    }
        1038           }w hile(nE>=n B);
        1039           if (bF)
        1040           {
        1041                    if(n Top>=nScrl ){
        1042                             gsSKA= gaFakes[nM ].sKA;
        1043                             gsSKB= null;
        1044                             gnNeed ed=Math.ce il((nHeigh t-nTop+nSc rl)/gnUHei ght);
        1045                             gnIns= gaFakes[nM ].nB;
        1046                             checkR eady();
        1047                    }
        1048                    else  if(nBtm<= nScrl+nHei ght){
        1049                             gsSKB= gaFakes[nM ].sKB;
        1050                             gsSKA= null;
        1051                             gnNeed ed=Math.ce il((nBtm-n Scrl+gnScr lMgn)/gnUH eight);
        1052                             gbNeed Calc=true;
        1053                             checkR eady();
        1054                    }
        1055                    else {
        1056                             gnNeed ed=gnVisib le;
        1057                             var nU nitIdx=gaF akes[nM].n B+Math.flo or((nScrl- nTop)/gnUH eight);
        1058                             if (!s howItemsIn Evaluation (nUnitIdx) )
        1059                             {
        1060                                      gsSKA=ga Fakes[nM]. sKA;
        1061                                      gsSKB=nu ll;
        1062                                      gnNeeded =Math.ceil (nHeight/g nUHeight);
        1063                                      gnIns=ga Fakes[nM]. nB;
        1064                                      checkRea dy();
        1065                             }
        1066                    }
        1067           }
        1068           el se
        1069                    mark End();
        1070   }
        1071  
        1072   function d isEvt()
        1073   {
        1074           wi ndow.onscr oll=null;
        1075           wi ndow.onres ize=null;
        1076   }
        1077  
        1078   function e nEvt()
        1079   {
        1080           wi ndow.onscr oll=window _OnScroll;
        1081           wi ndow.onres ize=window _OnResize;
        1082   }
        1083  
        1084   function i nsertIdxKs (nIns,oHTM L,bScrl)
        1085   {
        1086           va r bRtn=tru e;
        1087           di sEvt();
        1088           va r nCount=o HTML.nCons umed;
        1089           va r nB=0;
        1090           va r nE=gaFak es.length- 1;
        1091           va r nM=-1;
        1092           va r bF=false ;
        1093           do {
        1094                    nM=( nB+nE)>>1;
        1095                    if(g aFakes[nM] .nB>nIns)
        1096                             nE=nM- 1;
        1097                    else  if(gaFake s[nM].nB+g aFakes[nM] .nNum<=nIn s)
        1098                             nB=nM+ 1;
        1099                    else {
        1100                             bF=tru e;
        1101                             break;
        1102                    }
        1103           }w hile(nE>=n B);
        1104           if (bF)
        1105           {
        1106                    var  oFIA=gaFak es[nM];
        1107                    var  nOffsetTop =oFIA.getT op();
        1108                    var  nOffsetBot tom=oFIA.g etBtm();
        1109                    var  nDelta=0;
        1110                    var  nHDiff=nIn s-oFIA.nB;
        1111                    var  nTDiff=oFI A.nNum+oFI A.nB-(nIns +nCount);
        1112                    if(n HDiff>0)
        1113                    {
        1114                             nDelta =oFIA.setN um(nHDiff) ;
        1115                             var sO ldKBefore= oFIA.sKB;
        1116                             oFIA.s KB=oHTML.s FK;
        1117                             if(nTD iff>0)
        1118                             {
        1119                                      var sHTM L=getFakeI temsHTMLby Count(nIns ,nTDiff);
        1120                                      oFIA.ins ertAdjacen tHTML("aft erEnd",sHT ML);
        1121                                      var obj= getH6ById( nIns);
        1122                                      insertIt emIntoArra y(gaFakes, nM+1,new f akeItemsAr ea(nIns+nC ount,nTDif f,oHTML.sL K,sOldKBef ore,obj));
        1123                             }
        1124                             oFIA.i nsertAdjac entHTML("a fterEnd",o HTML.sHTML );        
        1125                             if(bSc rl)
        1126                             {
        1127                                      if(gbMac &&gbIE4)
        1128                                      {
        1129                                               var nScrol lPos=nOffs etBottom-n Delta;
        1130                                               while(docu ment.body. scrollTop! =nScrollPo s)
        1131                                                       do cument.bod y.scrollTo p=nScrollP os;
        1132                                      }
        1133                                      else
        1134                                               window.scr ollTo(0,nO ffsetBotto m-nDelta);
        1135                             }
        1136                    }
        1137                    else {
        1138                             oFIA.i nsertAdjac entHTML("b eforeBegin ",oHTML.sH TML);
        1139                             if(bSc rl){
        1140                                      if(gbMac &&gbIE4)
        1141                                      {
        1142                                               var nScrol lPos=nOffs etTop;
        1143                                               while(docu ment.body. scrollTop! =nScrollPo s)
        1144                                                       do cument.bod y.scrollTo p=nScrollP os;
        1145                                      }
        1146                                      else
        1147                                               window.scr ollTo(0,nO ffsetTop);
        1148                             }
        1149                                              
        1150                             if(nTD iff>0)
        1151                             {
        1152                                      oFIA.nB= nIns+nCoun t;
        1153                                      nDelta=o FIA.setNum (nTDiff);
        1154                                      oFIA.sKA =oHTML.sLK ;
        1155                             }        
        1156                             else{
        1157                                      gaFakes[ nM].setNum (0);
        1158                                      removeIt emFromArra y(gaFakes, nM);
        1159                             }
        1160                    }
        1161           }
        1162           el se
        1163                    bRtn =false;
        1164           en Evt();
        1165           re turn bRtn;
        1166   }
        1167  
        1168   function w indow_OnSc roll()
        1169   {
        1170           gn SE++;
        1171           se tTimeout(" procScroll ();",50); 
        1172   }
        1173  
        1174   function p rocScroll( )
        1175   {
        1176           if (gnSE==1&& !gbProcess )
        1177           {
        1178                    mark Begin();
        1179                    getU nitIdx(doc ument.body .scrollTop ,getClient Height());
        1180           }
        1181           gn SE--;
        1182   }
        1183  
        1184   function w indow_OnRe size()
        1185   {
        1186           gn RE++;
        1187           se tTimeout(" procResize ();",50);
        1188   }
        1189  
        1190   function p rocResize( )
        1191   {
        1192           if (gnRE==1&& !gbProcess )
        1193           {
        1194                    mark Begin();
        1195                    gnVi sible=Math .ceil(getC lientHeigh t()/gnUHei ght);
        1196                    if(g nIns==-1)
        1197                             getUni tIdx(docum ent.body.s crollTop,g etClientHe ight());
        1198           }
        1199           gn RE--;
        1200   }
        1201  
        1202   function g etChunkByI dx(nIdx,nP osition)
        1203   {
        1204           va r oCData=n ull;
        1205           if (nIdx<gaCh unks.lengt h)
        1206           {
        1207                    var  len=gaChun ks[nIdx].l ength;
        1208                    if(l en>0)
        1209                    {
        1210                             var nB =0;
        1211                             var nE =len-1;
        1212                             var bF =false;
        1213                             do{
        1214                                      var nM=( nB+nE)>>1;
        1215                                      if(nPosi tion<gaChu nks[nIdx][ nM].nTotal )
        1216                                      {
        1217                                               bF=true;
        1218                                               nE=nM;
        1219                                      }
        1220                                      else
        1221                                               nB=nM+1;
        1222                             }while (nE>nB);
        1223                             if(bF)
        1224                                      oCData=g aChunks[nI dx][nE];
        1225                             else i f(nPositio n<gaChunks [nIdx][nB] .nTotal)
        1226                                      oCData=g aChunks[nI dx][nB];
        1227                    }
        1228           }
        1229           re turn oCDat a;
        1230   }
        1231  
        1232   function g etChunkedD ata(nIdx,b Down,sK)
        1233   {
        1234           va r oCData=n ull;
        1235           va r nCandId= -1;
        1236           if (nIdx<gaCh unks.lengt h)
        1237           {
        1238                    var  len=gaChun ks[nIdx].l ength;
        1239                    if(l en>0)
        1240                    {
        1241                             var nB =0;
        1242                             var nE =len-1;
        1243                             var bF =false;
        1244                             do{
        1245                                      var nM=( nB+nE+(bDo wn?0:1))>> 1;
        1246                                      if(bDown )
        1247                                      {
        1248                                               if(compare (sK,gaChun ks[nIdx][n M].sEK)<0)
        1249                                               {
        1250                                                       bF =true;
        1251                                                       nE =nM;
        1252                                               }
        1253                                               else
        1254                                                       nB =nM+1;
        1255                                      }
        1256                                      else
        1257                                      {
        1258                                               if(compare (sK,gaChun ks[nIdx][n M].sBK)>0)
        1259                                               {
        1260                                                       bF =true;
        1261                                                       nB =nM;
        1262                                               }
        1263                                               else
        1264                                                       nE =nM-1;
        1265                                      }
        1266                             }while (nE>nB);
        1267                             if(bF)
        1268                             {
        1269                                      if(bDown )
        1270                                               nCandId=nE ;
        1271                                      else
        1272                                               nCandId=nB ;
        1273                             }
        1274                             else
        1275                             {
        1276                                      if(bDown )
        1277                                      {
        1278                                               if(gaChunk s[nIdx].le ngth>nB&&c ompare(sK, gaChunks[n Idx][nB].s EK)<0)
        1279                                                       nC andId=nB;
        1280                                               else
        1281                                                       nC andId=gaCh unks[nIdx] .length-1;
        1282                                      }
        1283                                      else
        1284                                      {
        1285                                               if(0<=nE&& compare(sK ,gaChunks[ nIdx][nE]. sBK)>0)
        1286                                                       nC andId=nE;
        1287                                               else
        1288                                                       nC andId=0;
        1289                                      }
        1290                             }
        1291                             return  gaChunks[ nIdx][nCan dId];
        1292                    }
        1293           }
        1294           re turn null;
        1295   }
        1296  
        1297   function f indCK()
        1298   {
        1299           if (gsCK!=nul l)
        1300           {
        1301                    gsSK A=gsCK;
        1302                    gbFi ndCK=true;
        1303                    gnNe eded=1;
        1304                    mark Begin();
        1305                    chec kReady();
        1306           }
        1307   }
        1308  
        1309   function w riteLoadin gDiv(nIIdx )
        1310   {
        1311           re turn "<div  id=\""+gs LoadingDiv ID+"\" sty le=\"posit ion:absolu te;top:0;l eft:0;z-in dex:600;vi sibility:h idden;padd ing-left:4 px;backgro und-color: ivory;bord er-width:1 ;border-st yle:solid; border-col or:black;w idth:150px ;\">"+gsLo adingMsg+" </div>";
        1312   }
        1313  
        1314   function f indPositio n( oElemen t ) {
        1315     if( type of( oEleme nt.offsetP arent ) !=  'undefine d' ) 
        1316     {
        1317       for( v ar posY =  0; oElemen t; oElemen t = oEleme nt.offsetP arent ) 
        1318       {
        1319         posY  += oEleme nt.offsetT op;
        1320       }
        1321       return  posY ;
        1322     } 
        1323     else 
        1324     {
        1325       return  oElement. y ;
        1326     }
        1327   }
        1328  
        1329   var gbWhHo st=true;