/*
*/
//yyyy
//with(elems[i]){ //this
//}
//alert(xx);
//--------------------------------//
var mMot='';
var mWord=false;
var mStrict=false;
var mRXP_Find='';
var mRXP_Flag='';
//--------------------------------//
var oNodes=null; //
//--------------------------------//
var mURL='';    //url du document courant présent dans la frame <frR>
var mBody='';   //body du document courant présent dans la frame <frR>
//--------------------------------//
//ajout d'une méthode Trim à l'objet String
String.prototype.trim=function(){
  return this.replace(/^\s+/,'').replace(/\s+$/,'');
}
//--------------------------------//
//xxx
//nodeType, nodeName, nodeValue, parentNode
//hasChildNodes, childNodes
function parseDOM(pNode){ //,pArr
  with(pNode){
    switch(nodeName){
    case '#comment':
      return; //mzz
    case 'A':
      return; //mzz
    case 'IMG':
      return; //mzz
    case 'SCRIPT':
      return; //mzz
    default:
      break;
    }
    
    if(hasChildNodes){ //==true
      for(var i=0,childs=childNodes,j=childs.length;i<j;i++){
        parseDOM(childs[i]); //MZZ: attention, récursivité !
      }
    }else{
      //mzz
    }
    
    if(nodeType==3){ //3=#text
      if(nodeValue.trim()!=''){ //nodes non vides (ou "blancs")
        oNodes.push(pNode); //mzz: pArr, oNodes
      }
    }
  }
}
//--------------------------------//
//xxx
function do_Highlight(pDOC){
  var vCnt=0;
  var elem=null;
  var vArr=null;
  var range=null;
  var fragment=null;
  var vTR=null;
  var vRexp=null;
  var vFlags=0; //0=Default. Match partial words.
  
  oNodes=new Array();
  parseDOM(pDOC.body); //,oNodes
  //cnt=oNodes.length;
  
  vRexp=new RegExp(mRXP_Find,mRXP_Flag); //mzz
  
  if((document.layers)||(window.sidebar)){
    for(var i=0,j=oNodes.length;i<j;i++){
      elem=oNodes[i];
      with(elem){
        vArr=nodeValue.match(vRexp); //mzz
        if(vArr!=null){ //vRexp.test(nodeValue)
          vCnt+=vArr.length;
          //--------------------------------
          //range=document.createRange();
          range=document.createRange();
          range.setStartBefore(elem);
          fragment=range.createContextualFragment(nodeValue.replace(vRexp,'<span id="high" class="warn">$1</span>'));
          parentNode.replaceChild(fragment,elem);
          //--------------------------------
        }
      }
    }
  }else if(document.all){
    for(var i=0,j=oNodes.length;i<j;i++){
      elem=oNodes[i];
      with(elem){
        vArr=nodeValue.match(vRexp); //mzz
        if(vArr!=null){ //vRexp.test(nodeValue)
          vCnt+=vArr.length;
          //var newNode=pDOC.createTextNode('XX')
          //var newNode=pDOC.createElement('span');
          //newNode.pasteHTML('<span id="high" class="warn">'+'XX'+'</span>');
          //newNode.nodeValue=nodeValue.replace(vRexp,'<span id="high" class="warn">$1</span>');
          //alert('newNode:'+newNode.nodeType);
          //parentNode.appendChild(newNode);
          //parentNode.replaceChild(newNode,elem);
          
          //var newNode=pDOC.createElement('span');
          //range=pDOC.body.createTextRange();
          //range.pasteHTML('<u>'+'XX'+'</u>');
          //parentNode.appendChild(range);
          //--------------------------------
          //MZZ: TODO
          //--------------------------------
        }
      }
    }
    
    vTR=pDOC.body.createTextRange();
    if(mWord){
      vFlags+=2; //2=Match whole words only.
    }
    if(mStrict){
      vFlags+=4; //4=Match case.
    }
    with(vTR){
      while(findText(mMot,1,vFlags)!=false){
        pasteHTML('<span id="high" class="warn">'+text+'</span>');
      }
    }
    vTR=null;
/*
*/
  }
  
  if(vCnt!=0){
    pDOC.getElementById('high').scrollIntoView(false); //false, 1, cnt
  }
  
  oNodes=null;
  return vCnt;
}
//--------------------------------//
//yyyy: PUBLIC
function highlight(){
  var oDOC=null;
  var oBAR=null;
  var cnt=0;
  var tmp='';
  
  //alert('coucou');
  
  var vOk=get_Params(); //Assigne: <mMot,mWord,mStrict> et <mRXP_Find,mRXP_Flag>
  if(vOk){ //MZZ:  && mMot!=''
    //alert(mMot+','+mWord+','+mStrict);
  }else{
    //alert(vOk);
    return false;
  }
  
  oDOC=parent.frR; //mzz: frR
  if(oDOC==null){return;}
  oDOC=oDOC.document; //document
  if(oDOC==null){return;}
  
  with(oDOC.location){
    if(href!=mURL){ //le document a changé...
      //alert('mURL');
      mURL=href; //on assigne <mURL>
      mBody='';  //on initialise <mBody>
      //alert('mURL');
    }
  }
  
  if(oDOC.body!=null){
    with(oDOC.body){
      if(mBody==''){
        //alert('mBody');
        mBody=innerHTML; //le document est nouveau, on le sauve dans <mBody>
        //alert('mBody');
      }else{
        //alert('innerHTML');
        innerHTML=mBody; //on restaure le document original
      }
    }
  }
  
  if(mMot!=''){
    cnt=do_Highlight(oDOC); //MZZ
  }else{
    //alert('scrollTop');
    if(oDOC.body!=null){
      with(oDOC.body){
        innerHTML=mBody; //on restaure le document original
        //style.top=scrollTop;
        scrollTop=0;
        //alert(scrollTop);
      }
    }
  }
  
  oBAR=parent.frT; //mzz: frT
  if(oBAR==null){return;}
  oBAR=oBAR.document; //document
  if(oBAR==null){return;}
  switch(cnt){
  case 0:
    tmp='<b title="sur la page">Texte pas trouvé</b>';
    break;
  default:
    tmp=''+'<span title="Nombre d\'occurrences sur la page" class="warn2">'+cnt+'</span>';
    break;
  }
  with(oBAR.getElementById('result')){
    innerHTML=''+tmp; //innerText,innerHTML
  }
}
//--------------------------------//
//yyyy: PUBLIC
function scanAllFiles(){
  alert('scan');
}
//--------------------------------//
//xxx
function setIma_Title(){
  var oIMGS=document.images; //mzz
  //alert(oIMGS.length);
  if(oIMGS!=null){
    for(var i=0,j=oIMGS.length;i<j;i++){
      with(oIMGS[i]){
        title=alt; //mzz
/*
        if(complete){
          //alert(title+'\n'+src+' ('+width+' x '+height+')');
        }else{
          alert(title+'\n'+src+' (loading...)');
        }
*/
      }
    }
  }else{
    alert('oIMGS==null');
  }
}
//--------------------------------//
//xxx
//Assigne: <mMot,mWord,mStrict> et <mRXP_Find,mRXP_Flag>
function get_Params(){
  var vOk=false;
  
  mMot='';
  mWord=false;
  mStrict=false;
  mRXP_Find='';
  mRXP_Flag='';
  
  var vObj=parent.frT; //mzz: frT
  if(vObj!=null){
    vObj=vObj.document; //document
  }else{
    //window.location=window.location.pathname; //MZZ
    alert('frT'); //MZZ
  }
  if(vObj!=null){
    vObj=vObj.forms['find']; //mzz: forms['find']
  }
  if(vObj!=null){
    with(vObj){
      mMot=txt.value; //mzz: txt
      mWord=chk1.checked; //mzz: chk1
      mStrict=chk2.checked; //mzz: chk2
      
      if(mWord){
        mRXP_Find='('+mMot+')(?![a-zA-Z0-9ŠŒŽšœžŸ°À-Ýà-ÿ-])'; //MZZ: \\b, ^, $
      }else{
        mRXP_Find='('+mMot+')';
      }
      //alert(mRXP_Find);
      
      if(mStrict){
        mRXP_Flag='g'; //case sensitive
      }else{
        mRXP_Flag='gi'; //case non-sensitive
      }
      //alert(mRXP_Flag);
      
      if(mMot!=''){
      }else{
      }
      
      vOk=true; //mzz
      //alert(mMot+','+mWord+','+mStrict);
    }
  }
  
  return vOk;
}
//--------------------------------//
//yyyy: PUBLIC
function volko(){
  //var a=new Array();
  //return a;
  //alert(window.name=='frR');
  
  setIma_Title();
/*
  var oIMG=document.images;
  if(oIMG!=null){
    //alert(oIMG.length);
    for(var i=0;i<oIMG.length;i++){
      with(oIMG[i]){
        title=alt;
        //alert(title);
      }
      //oIMG[i].title=oIMG[i].alt;
    }
  }
*/
  
  var vObj=parent.frT; //mzz: frT
  if(vObj!=null){
    if(vObj.document!=null){
      with(vObj.window){
        vObj=highlight(); //MZZ: appeler une fonction d'un autre module
      }
    }
  }
  
/*
    alert(wtop.document.forms[0].name+''); //forms[0]
*/
    //var oDOC=document; //mzz: frR
    //do_Highlight(oDOC,vMot,vStrict); //MZZ
}
/*--------------------------------*/
//yyyy: PUBLIC
function popup(num){
  var url='popup.asp?f='+num; //MZZ
  var name='popup';
  var features='left='+30+',top='+30+',width=10,height=10'; //screen.width, screen.height
  features+=','+'scrollbars=no,directories=no,menubar=no,resizable=yes,status=no,toolbar=no';
/*
  var features='left='+screen.width+',top='+screen.height+',width=10,height=10';
  features+=','+'scrollbars=no,directories=no,menubar=no,resizable=yes,status=no,toolbar=no';
*/
  var win=window.open(url,name,features);
  win.focus();
  return false;
}
/*--------------------------------*/
//
function winResize(pw,ph){
  resizeTo(pw+12,ph+31);
  //return false;
}
//--------------------------------//
//xxx
function menuAll(pexpand){
  var oULS=document.getElementsByTagName('UL'); //mzz
  if(oULS!=null){
    for(var i=0,j=oULS.length;i<j;i++){
      with(oULS[i].style){
        if(pexpand){
          display='list-item';
        }else{
          display='none';
        }
      }
    }
  }
}
//--------------------------------//
//yyyy: PUBLIC
function menuOne(pid){
  var vexpand=false;
  var oUL=document.getElementById(pid);
  if(oUL!=null){
    with(oUL.style){
      vexpand=(display=='none');
      if(vexpand){
        display='list-item';
      }else{
        display='none';
      }
    }
  }
  return false;
}
//--------------------------------//
//yyyy: PUBLIC
function menuInit(){
  var vexpand=false; //false,true
  menuAll(vexpand);
  if(!vexpand){
    menuOne('home'); //mzz: home
    menuOne('qdn');  //mzz: qdn
  }
}
//--------------------------------//
/*
//YYYY
//new Array(dim-1);
function fun(){
  var arr=null;
  if(arguments[0]){ //il y a au moins 1 argument
    //(on suppose que tous les arguments sont des Arrays)
    //détermine la dimension de l'argument le moins peuplé
    var len=arguments.length; //len=nombre d'arguments
    var dim=arguments[0].length; //dim=dimension de l'argument le moins peuplé
    for(var j=1;j<len;j++){ //j=0 convient aussi
      dim=Math.min(dim,arguments[j].length);
    }
    //construction de la réponse
    var arr2=null;
    arr=new Array(dim);
    for(var j=0;j<dim;j++){
      arr2=new Array(len);
      for(var k=0;k<len;k++){
        arr2[k]=arguments[k][j];
      }
      arr[j]=arr2;
    }
    
  }
  
  if(!Array.prototype.map){
    Array.prototype.map=function(fun){ //,thisp
      if(typeof fun!='function'){
        throw new TypeError();
      }
      var len=this.length;
      var res=new Array(len);
      var thisp=arguments[1];
      for(var i=0;i<len;i++){
        if(i in this){
          res[i]=fun.call(thisp,this[i],i,this);
        }
      }
      return res;
    }
  }
  
  var args=Array.prototype.slice.call(arguments); //conversion "arguments array" to Array
  var len1=Math.min.apply(Math,args.map(function(a){return a.length;}));
  //var toto=args.map(function(a){return a.length;});
  alert(len1); //toto[0]
  //document.write
  
  return arr;
}
function car(make,model,year){
  this.make=make;
  this.model=model;
  this.year=year;
}
function hireCar(carNo,make,model,year){
  this.carNo=carNo;
  car.call(this,make,model,year);
}
*/
/*
  var a=[2];a[0]=[2];a[1]=[2];a[2]=[2];
  for(var i=0,j=0;i<3;i++,j++){
    //document.write(a[i][j]+'<br>');
  }
  for(var i=0,j=0;i<3;i++,j++){
    document.write(a[i,j]+'<br>');
  }
  
  myCar=new hireCar(2134,"Ford","Mustang",1998);
  //alert(myCar.make);
  //alert("Your car is a "+myCar.year+" "+myCar.make+" "+myCar.model+".");
  
  var sentence='Je suis certain qu\'il est au courant';
  //var heights=sentence.length-sentence.split(' ').length+1;
  var result=sentence.split(' ').join('').length
  var sentence="Javascript is the most used script language in the internet";
  var result=sentence.split(' ').sort(function compare(a,b){if(a.length>b.length){return -1}if(a.length<b.length){return 1}return 0})[0];
  //alert(result);
  var a1=['John','Marie','Eric','Charly'];
  var a2=['Smith','Simpson','Tabarly'];
  var a3=['aa','bb','cc','dd'];
  //alert(fun(a1,a2,a3).length); //a1,a2,a3, [2]
*/
//--------------------------------//
//--------------------------------//
window.onload=volko; //mzz
//--------------------------------//
//--------------------------------//
