
var currentTab=Array() ;
var gealTotalObjects=Array() ;

function IE9Min()
{
  var detect=navigator.userAgent.toLowerCase() ;
  var place=(detect.indexOf('msie'))+1 ;
  if (place<1) return(false) ;
  var ver=detect.charAt(place+4) ;
  return(ver=='9' || ver=='1') ;
}

function MVP()
{
}

function getCurrentTabSerie(serie)
{
  var i=0 ;
  prem=_(serie+'TabBtn'+i) ;
  if (!prem) return(0) ;
  while (prem)
  {
    if (prem.className=='geaEditTabSel') return(i) ;
    i++ ;
    prem=_(serie+'TabBtn'+i) ;
    if (!prem) return(0) ;
  }
  return(0) ;
}

function activateTab(serie, i)
{  
//  alert('activateTable('+serie+','+i+')') ;
  if (currentTab[serie]==undefined)
  {
//    alert('creation serie') ;
    currentTab[serie]=getCurrentTabSerie(serie) ;
  }
  ct=currentTab[serie] ;
//  alert('current '+serie+' = '+ct) ;
  oldbtn=_(serie+'TabBtn'+ct) ;
  if (oldbtn)
  {
//    alert('Set Class Old') ;
    oldbtn.className='geaEditTab' ;
//    oldbtn.style.display='none' ;
  }
//  alert('passold') ;
  newbtn=_(serie+'TabBtn'+i) ;
  newbtn.className='geaEditTabSel' ;
  
  oldtab=_(serie+'DivTab'+ct) ;
  if (oldtab)
  {
//    alert('Set Hide Old') ;  
    oldtab.style.display='none' ;
  }
  newtab=_(serie+'DivTab'+i) ;

  newtab.style.display='' ;
  currentTab[serie]=i ;
  MoveOverListInPlace() ;
}

function changedImageButton(nm, hd)
{
  vl=_(nm).value ;
  if (vl!='')
    plusPict(nm, hd) ;
}

function clickFileButton(nm, hd)
{
  _(nm).click() ; 
}

function enterMediaDiv(nm, hd)
{
  var top=_('mediatop_'+nm) ;
  if (top.innerHTML!='')
    top.style.display='' ;
  if (hd)
  {
    if (top.innerHTML=='' && _('imgdl_'+nm).style.display=='none')
    {
      _('mediatit_'+nm).style.display='' ;
    }
  }
}

function leaveMediaDiv(nm, hd)
{
  var top=_('mediatop_'+nm) ;
  if (top.innerHTML=='')
    _('mediatop_'+nm).style.display='none' ;
  if (hd)
  {
    if (top.innerHTML=='')
      _('mediatit_'+nm).style.display='none' ;
  }
}

function basename(path) 
{
    return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function resetMedia(nm, hd, fld)
{
  _('parmedia'+nm).innerHTML=
    "<input type='file' id='"+nm+"' name='" +
    fld + 
    "' class='filetrans' onchange=\"changedImageButton('" 
    + nm + "'," + hd+
    ")\"></input>" ;
}

function plusPict(nm, hd)
{
  return ;
//  _(nm).click() ;
  var fd=_(nm) ;
  if (fd.value!='')
  {
    _('deleteMd_'+nm).value='0' ;
    var top=_('mediatop'+nm) ;
    top.innerHTML="<font color='blue'>"+basename(fd.value)+"</font>" ;
    top.style.display='' ;
    if (hd)
    {
      var tit=_('mediatit'+nm) ;
      _('mediatit'+nm).style.display='none' ;
      _('imgdl_'+nm).style.display='' ;
      _('mnsimg'+nm).style.display='' ;
    }
    _('deleteMd_'+nm).value='0' ;
    _('backimg'+nm).style.display='' ;
    _('gbackimg'+nm).style.display='none' ;
  }
}

function delPict(nm, hd, fld)
{
  _('value_'+nm).value='' ;
  if (hd)
  {
    var nv=_('newimage_'+nm) ;
    if (nv)
      nv.style.display='none' ;
    _('imgdl_'+nm).style.display='' ;
    _('image_'+nm).style.display='' ;
    _('mediatit_'+nm).style.display='none' ;
    _('backimg_'+nm).style.display='' ;
    _('gbackimg_'+nm).style.display='none' ;
    _('mnsimg_'+nm).style.display='none' ;
    _('gmnsimg_'+nm).style.display='' ;
    _('mediatop_'+nm).style.display='none' ;
    _('mediatop_'+nm).innerHTML='' ;
  }
  else
  {
    _('mediatop_'+nm).style.display='none' ;
    _('mediatop_'+nm).innerHTML='' ;
  }
}

function backPict(nm, hd, fld)
{
  _('value_'+nm).value=_('saveValue_'+nm).value ;
  _('image_'+nm).style.display='' ;
  var dv=_('cntu_'+nm) ;
  dv.innerHTML='' ;
  if (hd)
  {    
    if (_('mediatit_'+nm).style.display=='')
    {
      _('imgdl_'+nm).style.display='' ;
      _('mediatit_'+nm).style.display='none' ;
    }
    else
    {
      _('mediatit_'+nm).style.display='' ;
      _('mediatop_'+nm).style.display='none' ;
      _('mediatop_'+nm).innerHTML='' ;
      _('imgdl_'+nm).style.display='none' ;
      _('backimg_'+nm).style.display='none' ;
      _('mnsimg_'+nm).style.display='' ;
      _('gbackimg_'+nm).style.display='' ;
      _('gmnsimg_'+nm).style.display='none' ;
    }
  }
  else
  {
    _('mediatop_'+nm).style.display='none' ;
    _('mediatop_'+nm).innerHTML='' ;
    _('backimg_'+nm).style.display='none' ;
    _('gbackimg_'+nm).style.display='' ;
  }
}

function enterGeaRow(gear, i, row)
{
  row.style.background='#a7cdf0' ;
}

function leaveGeaRow(gear, i, row)
{
  bgn='' ;
  row.style.background=bgn ;
}

function saveForm()
{
}

function CallNew(sel, tbl)
{
  var url="/geneasy/lib/editsub.php?REQUEST=NEW&geaTable="+tbl+"&geaField="+sel ;
  window.open(url, '_blank', 'titlebar=no,location=no,menubar=no,status=no,width=780,height=500,resizable=yes') ;
  return(true) ;
}

var AnimateDivsHeight=true ;

var AnimateDivsOpen=false ;//IE9Min() ;
var StepBy=25 ;
var TotalTime=250 ;

var AnimateDivsClose=false ;
var StepByClose=25 ;
var TotalTimeClose=150 ;

function DoAnimateDiv(name, val, step)
{
  var o=_(name) ;
  var s=o.style ;
  if (AnimateDivsHeight)
    s.height=''+val+'%' ;
  s.width=''+val+'%' ;

  if (val==100)
  {
    s.left='0px' ;
    if (AnimateDivsHeight)
      s.top='0px' ;
  }
  else if (val<=0)
  {
    s.left='50%' ;
    if (AnimateDivsHeight)
      s.top='50%' ;
    o.src='about:blank' ;
    _('obscur').style.display='none' ;
  }
  else
  {
    s.left=''+Math.floor(50-val/2)+'%' ;
    if (AnimateDivsHeight)
      s.top=''+Math.floor(50-val/2)+'%' ;
  } 
  if (val<100 && val>0)
  {
    val=val+step ;
    if (val>100) val=100 ;
    if (val<0) val=0 ;
    setTimeout("DoAnimateDiv('"+name+"', "+val+","+step+")", 1+Math.floor(TotalTime/(100/StepBy))) ;
  }
  
}

function OpenObs(url)
{
//  alert('OpenObs'+url) ;
  var dv=_('obscur') ;
  var frm=_('frmobscur') ;

  var ifrs=document.getElementsByTagName("iframe") ;
  var lid='' ;
  for (var i=0;i<ifrs.length;i++)
  {
    var ff=ifrs[i] ;
    if (ff.className=='iframedia') ff.style.display='none' ;
  }
  
  if (AnimateDivsOpen)
  {
    frm.src=url ;
    frm.style.width='0px' ;
    frm.style.left='50%' ;
    if (AnimateDivsHeight)
    {
      frm.style.height='0px' ;
      frm.style.top='50%' ;
    }
  }
  else
  {
//    alert('Load '+url) ; ;
    frm.src=url ;
    frm.style.width='100%' ;
    frm.style.height='100%' ;
    frm.style.top='0' ;
    frm.style.left='0' ;
  }
  dv.style.display='' ;
  if (AnimateDivsOpen)
    setTimeout("DoAnimateDiv('frmobscur', StepBy, StepBy)", 1+Math.floor(TotalTime/(100/StepBy))) ;    
}

function CallOver(idTable, gear, prm, tblParent)
{
//  alert('CallOver') ;
  var url="/geneasy/lib/editover.php?idtbl="+idTable+"&gear="+gear+"&tblback="+tblParent ;
  if (prm!='')
    url=url+"&"+prm ;
//  var url="/geneasy/lib/editover.php?idtbl="+idTable+"&tblback="+tbl+"&gear="+gear+"&"+prm ;
//  url="/geneasy/lib/editover.php?geaTable="+tbl+"&gear="+gear+'&REQUEST=NEW' ;
  //+"&"+prm ;
  OpenObs(url) ;
}

function CallTop(idTable, gear, prm, tblParent)
{
  var url="/geneasy/lib/editsml.php?idtbl="+idTable+"&gear="+gear+"&tblback="+tblParent ;
  if (prm!='')
    url=url+"&"+prm ;
//  var url='/' ;
//  url="/geneasy/lib/editsml.php?REQUEST=NEW&idtbl="+idTable+"&tblback="+tbl+"&gear="+gear+"&"+prm ;
//  alert(url) ;
  OpenObs(url) ;
}

function CloseMenuAndCallTop(gear, tbl, prm, idTable, tblParent)
{
  GeaOpenMenuCloseMenu('X'+tbl) ;
  CallTop(gear, tbl, prm, idTable) ;
}

function CallChoose(sel, tbl, frm)
{
  var url="/geneasy/lib/editsub.php?geaTable="+tbl+"&geaField="+sel+"&geaForm="+frm+"&geaList="+frm ;
  OpenObs(url) ;
  return(false) ;
}

function CallClose()
{
  var ifrs=document.getElementsByTagName("iframe") ;
  for (var i=0;i<ifrs.length;i++)
  {
    var ff=ifrs[i] ;
    if (ff.className=='iframedia') ff.style.display='' ;
  }

  var frm=_('frmobscur') ;

  if (AnimateDivsClose)
  {
//    setTimeout("DoAnimateDiv('frmobscur', 100-StepByClose, -StepByClose)", 1+Math.floor(TotalTimeClose/(100/StepByClose))) ;
  }
  else
  {
    frm.src='about:blank' ;
//    alert(frm.contentWindow.document.innerHTML) ;
//    frm.innerHTML='TUT' ;//ftm.src='about:blank' ;
//    alert('fermtur') ;
    _('obscur').style.display='none' ;
  }
}

function goToAddress(url)
{
  location=url ;
}

function Double_clic_pour_actionner()
{
}

function isControlKey()
{
  return(ControlKey) ;
}

function showDivSave(i)
{
  var div=_('divBtnSave'+i) ;
  if (div)
    div.style.display='' ;
}

function showDivSaveIf(i, fld, valtest)
{
  var div=_('divBtnSave'+i) ;
  if (div)
  {
    var fld=_(fld) ;
    if (fld.value!=valtest)
      div.style.display='' ;
  }
}

function showDivSaveCk(i, fld)
{
  vl=(_('ckb_'+fld).checked ? 1 : 0) ;
  _(fld).value=vl ;
  showDivSave(i) ;
}

function showDivSaveTime(i, fld, sec)
{
  var vl=(_(fld).value) ;
  var hms=vl.split(':') ;
  var h=0 ;
  var m=0 ;
  var s=0 ;
  if (hms.length>0) { h=hms[0] ; if (h<0) h=0 ; else if (h>23) h=23 ; }
  if (hms.length>1) { m=hms[1] ; if (m<0) m=0 ; else if (m>59) m=59 ; }
  if (hms.length>2 && sec) { s=hms[2] ; if (s<0) s=0 ; else if (s>59) s=59 ; }
  var re='' ;
  if (h<10) re=re+'0' ; 
  re=re+h+':' ;
  if (m<10) re=re+'0' ;
  re=re=m ;
  if (sec)
  {
    re=re+':' ;
    if (s<10) re=re+'0' ;
    re=re+s ;
  }
  if (re!=vl)
    _(fld).value=re ;
  showDivSave(i) ;
}
function geaTremoveAll(tbl)
{
  var al=_('removeAll'+tbl) ;
  i=0 ;
  var ck=_('removeRow'+tbl+i) ;
  while (ck)
  {
    ck.checked=al.checked ;
    i++ ;
    ck=_('removeRow'+tbl+i) ;
  }
}

var geaRowsSelections=Array() ;
var geaRowsSelectionSize=Array() ;
var geaRowsIDs=Array() ;

function assumeSelectionGeaRow(gear)
{
  if (typeof(geaRowsSelections[gear])=='undefined')
  {
    geaRowsSelections[gear]=Array() ;
    geaRowsSelectionSize[gear]=0 ;
  }
}

function selectGeaRow(gear, i, val)
{
  geaRowsSelections[gear][i]=(val ? 1 : 0) ;
}

function selectionGetFirstGeaRow(gear)
{
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!

  assumeSelectionGeaRow(gear) ;
  if (geaRowsSelectionSize[gear]==0)
    return(-1) ;
  var i=0 ;
  var mx=nbrows-1 ;
  for (i=0;i<mx;i++)
  {
    if (geaRowsSelections[gear][i]==1) return(i) ;
  }
  return(-1) ;
}

function isSelectedGeaRow(gear, ii)
{
  assumeSelectionGeaRow(gear) ;
  return(geaRowsSelections[gear][ii]>0) ; // 0 si non selectionne, position >=1 sinon
}

function resetSelectionGeaRow(gear)
{
  geaRowsSelections[gear]=Array() ; // remise a zero
  geaRowsSelectionSize[gear]=0 ;
}

function clickGeaRow(gear, ii)
{
  assumeSelectionGeaRow(gear) ;
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  var mx=nbrows-1 ;
  if (ControlKey==true)
  {
    // toggle du courant
    var np=geaRowsSelections[gear][ii] ;
    if (np>0) // 1 pour le premier...
    {
      // on les baisse tous de 1... et celui-ci a zero
      geaRowsSelections[gear][ii]=0 ;
      _('GEA_ROW'+gear+'_'+ii).className='gealist' ;
      geaRowsSelectionSize[gear]-- ;
      var i=0 ;
      for (i=0;i<mx;i++)
      {
        if (geaRowsSelections[gear][i]>np)
        {
          geaRowsSelections[gear][i]-- ;
          if (geaRowsSelections[gear][i]==0)
            _('GEA_ROW'+gear+'_'+i).className='gealist' ;
        }
      }
    }
    else
    {
      geaRowsSelectionSize[gear]++ ;
      var sz=geaRowsSelectionSize[gear] ;
      geaRowsSelections[gear][ii]=sz ;
      if (sz>=1)
        _('GEA_ROW'+gear+'_'+ii).className='gealistgr' ;
    }
  }
  else if (ShiftKey)
  {
    // on etend la selection du n° 1 au courant
    var i0=selectionGetFirstGeaRow(gear) ;
    if (ii==i0) // on clique simple en vidant le reste
    {
      for (i=0;i<mx;i++)
      {
        if (i==ii)
        {
          geaRowsSelections[gear][i]=1 ;
          _('GEA_ROW'+gear+'_'+i).className='gealistgr' ;
          
        }
        else
        {
          if (geaRowsSelections[gear][i]>0)
          {
            geaRowsSelections[gear][i]=0 ;
            rws[i+1].className='gealist' ;
          }
        }
      }
      geaRowsSelectionSize[gear]=1 ;
    }
    else
    {
      var prem=ii ;
      var dern=i0 ;
      if (i0<ii)
      {
        prem=i0 ;
        dern=ii ;
      }
      for (i=0;i<mx;i++)
      {
        if (i<prem || i>dern)
        {
          if (geaRowsSelections[gear][i]>0)
          {
            geaRowsSelections[gear][i]=0 ;
            rws[i+1].className='gealist' ;
          }
        }
        else // dans la selection
        {
          if (i!=ii)
          {
            rws[i+1].className='gealistgr' ;
          }
          geaRowsSelections[gear][i]=(i<=i0 ? i0-i+1 : i-i0+1) ;
        }
      }
      geaRowsSelectionSize[gear]=dern-prem+1 ;
    }
  }
  else
  {
    // on vide tout...
    var i=0 ;
    for (i=0;i<mx;i++)
    {
      if (i==ii)
      {
        geaRowsSelections[gear][ii]=1 ;
        rws[ii+1].className='gealistgr' ;
      }
      else
      {
        if (geaRowsSelections[gear][i]>0)
        {
          geaRowsSelections[gear][i]=0 ;
          rws[i+1].className='gealist' ;
        }
      }
    }
    geaRowsSelectionSize[gear]=1 ;
  }
}

function clickGeaRowDirect(gear, ii)
{
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  assumeSelectionGeaRow(gear) ;
  var mx=nbrows-1 ;
  window.focus() ;
  if (ControlKey==true)
  {
    // toggle du courant
    var np=geaRowsSelections[gear][ii] ;
    if (np>0) // 1 pour le premier...
    {
      // on les baisse tous de 1... et celui-ci a zero
      geaRowsSelections[gear][ii]=0 ;
      rws[ii+1].className='gealist' ;
      geaRowsSelectionSize[gear]-- ;
      var i=0 ;
      for (i=0;i<mx;i++)
      {
        if (geaRowsSelections[gear][i]>np)
        {
          geaRowsSelections[gear][i]-- ;
          if (geaRowsSelections[gear][i]==0)
            rws[i+1].className='gealist' ;
        }
      }
    }
    else
    {
      geaRowsSelectionSize[gear]++ ;
      var sz=geaRowsSelectionSize[gear] ;
      geaRowsSelections[gear][ii]=sz ;
      if (sz>=1)
        rws[ii+1].className='gealistgr' ;
    }
  }
  else if (ShiftKey)
  {
    // on etend la selection du n° 1 au courant
    var i0=selectionGetFirstGeaRow(gear) ;
    if (ii==i0) // on clique simple en vidant le reste
    {
      for (i=0;i<mx;i++)
      {
        if (i==ii)
        {
          geaRowsSelections[gear][i]=1 ;
          rws[i+1].className='gealistgr' ;
        }
        else
        {
          if (geaRowsSelections[gear][i]>0)
          {
            geaRowsSelections[gear][i]=0 ;
            rws[i+1].className='gealist' ;
          }
        }
      }
      geaRowsSelectionSize[gear]=1 ;
    }
    else
    {
      var prem=ii ;
      var dern=i0 ;
      if (i0<ii)
      {
        prem=i0 ;
        dern=ii ;
      }
      for (i=0;i<mx;i++)
      {
        if (i<prem || i>dern)
        {
          if (geaRowsSelections[gear][i]>0)
          {
            geaRowsSelections[gear][i]=0 ;
            rws[i+1].className='gealist' ;
          }
        }
        else // dans la selection
        {
          if (i!=i0)
          {
            rws[i+1].className='gealistgr' ;
          }
          geaRowsSelections[gear][i]=(i<=i0 ? i0-i+1 : i-i0+1) ;
        }
      }
      geaRowsSelectionSize[gear]=dern-prem+1 ;
    }
  }
  else
  {
    // on vide tout...
    var i=0 ;
    for (i=0;i<mx;i++)
    {
      if (i==ii)
      {
        geaRowsSelections[gear][ii]=1 ;
        rws[ii+1].className='gealistgr' ;
      }
      else
      {
        if (geaRowsSelections[gear][i]>0)
        {
          geaRowsSelections[gear][i]=0 ;
          rws[i+1].className='gealist' ;
        }
      }
    }
    geaRowsSelectionSize[gear]=1 ;
  }
}

function geaTremoveOne(tbl, j)
{

  var al=_('removeAll'+tbl) ;
  i=0 ;
  nbck=0 ;
  nbnck=0 ;
  var ck=_('removeRow'+tbl+i) ;
  while (ck)
  {
    if (ck.checked) nbck++ ; else nbnck++ ;
    i++ ;
    ck=_('removeRow'+tbl+i) ;
  }
  if (nbck+nbnck!=0 && nbck*nbnck==0)
  {
    al.checked=(nbck>0 ? true : false) ;
  }
}

function initKWsearch(tbl)
{
  var ip=_('searchTableIn'+tbl) ;
  if (ip.style.fontStyle!='italic')
  {
  }
  else
  {
    ip.style.color='#575757' ;
    ip.style.fontStyle='' ;
    ip.value='' ;
  }  
}

function changeKWsearch(tbl)
{
  var ip=_('searchTableIn'+tbl) ;
  if (ip.style.fontStyle=='')
  {
    if (ip.value=='')
    {
      ip.style.color='#575757' ;
      ip.style.fontStyle='italic' ;
      ip.value=StringForSearch ;
    }
  }
}

function searchInTable(tbl, grea)
{
  var frm=_('frmsearch_'+tbl) ;
  var inp=_('searchTableIn'+tbl) ;
  var hid=_('urlosearch_'+tbl) ;

  if (inp.style.fontStyle!='italic')
  {
    if (hid.value.indexOf('?')>0)
      location=hid.value+'&SRH_'+tbl+'='+inp.value ;
    else
      location=hid.value+'?SRH_'+tbl+'='+inp.value ;
  }
  else
    location=hid.value ;
}

function resetInTable(tbl)
{
  var hid=_('urlosearch_'+tbl) ;
  location=hid.value ;
}

function deleteSelectionGR(gear, tblname)
{
  assumeSelectionGeaRow(gear) ;
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  if (geaRowsSelectionSize[gear]<1) { alert('Vous devez selectionner des lignes avant de supprimer !') ; return ; }
  var i ;
  var nb=0 ;
  var vl='' ;
  var mx=nbrows-1 ;
  for (i=0;i<mx;i++)
  {
    if (geaRowsSelections[gear][i]>=1)
    {
      if (vl!='') vl=vl+'@' ;
      var rw=rws[i+1] ;
      vl=vl+rw.cells[0].innerHTML ; 
      nb++ ;
    }
  }
  var hid=_('urldel'+tblname) ;
  if (vl!='')
  {
    cnf='Confirmez-vous la suppression de' ;
    if (nb==1) cnf=cnf+' cette ligne ?' ;
    else cnf=cnf+' ces '+nb+' lignes ?' ;
    url=hid.value+'&DLTH='+vl ;
    if (confirm(cnf))
    {

      var posi=url.indexOf('?') ;
      var urlb=url.substring(0, posi) ;
      var para=url.substring(posi+1) ;
      var method='GET' ;

      var xhr=CreateAjaxObject() ;
      if (!xhr)
        return ;
      xhr.onreadystatechange=function()
      {
        if (xhr.readyState==4)
        {
          if (xhr.status==200)
          {
            geaTablePage(gear, true, 0, tblname) ;
          }
        }
      }
      xhr.open(method, url+'?'+para, true) ;
      if (method=='POST')
      {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;
        xhr.setRequestHeader('Charset', 'UTF-8') ;
      }
      xhr.send(para) ;
    }
  }
}

function copyCutSelection(gear, tblname, part, erase)
{
  assumeSelectionGeaRow(gear) ;
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  if (geaRowsSelectionSize[gear]<1) { alert('Vous devez selectionner des lignes avant de les copier !') ; return ; }
  var i ;
  var nb=0 ;
  var vl='' ;
  var mx=nbrows-1 ;
  for (i=0;i<mx;i++)
  {
    if (geaRowsSelections[gear][i]>=1)
    {
      if (vl!='') vl=vl+'@' ;
      var rw=rws[i+1] ;
      vl=vl+rw.cells[0].innerHTML ; 
      nb++ ;
    }
  }
  var hid=_('urldel'+tblname) ;
  if (vl!='')
  {
    url=hid.value+'&COPAR='+vl+'&PART='+part+'&ERA='+erase ;
    var docont=true ;
    if (erase==1)
    {
      cnf='Confirmez-vous la suppression de' ;
      if (nb==1) cnf=cnf+' cette ligne ?' ;
      else cnf=cnf+' ces '+nb+' lignes ?' ;
      if (!confirm(cnf))
        docont=false 
    }
    if (docont)
    {

      var posi=url.indexOf('?') ;
      var urlb=url.substring(0, posi) ;
      var para=url.substring(posi+1) ;
      var method='GET' ;

      var xhr=CreateAjaxObject() ;
      if (!xhr)
        return ;
      xhr.onreadystatechange=function()
      {
        if (xhr.readyState==4)
        {
          if (xhr.status==200)
          {
//            alert(xhr.responseText) ;
            geaTablePage(gear, true, 0, tblname) ;
          }
        }
      }
      alert(url+'?'+para) ;
      xhr.open(method, url+'?'+para, true) ;
      if (method=='POST')
      {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;
        xhr.setRequestHeader('Charset', 'UTF-8') ;
      }
      xhr.send(para) ;
    }
  }
}

function pasteSelection(gear, tblname, part)
{
  assumeSelectionGeaRow(gear) ;
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  var mx=nbrows-1 ;
  var hid=_('urldel'+tblname) ;
//  if (vl!='')
  {
    url=hid.value+'&PASPAR='+part ;
    var docont=true ;
    if (docont)
    {

      var posi=url.indexOf('?') ;
      var urlb=url.substring(0, posi) ;
      var para=url.substring(posi+1) ;
      var method='GET' ;

      var xhr=CreateAjaxObject() ;
      if (!xhr)
        return ;
      xhr.onreadystatechange=function()
      {
        if (xhr.readyState==4)
        {
          if (xhr.status==200)
          {
//            alert(xhr.responseText) ;
            geaTablePage(gear, true, 0, tblname) ;
          }
        }
      }
//      alert(url+'?'+para) ;
      xhr.open(method, url+'?'+para, true) ;
      if (method=='POST')
      {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;
        xhr.setRequestHeader('Charset', 'UTF-8') ;
      }
      xhr.send(para) ;
    }
  }
}

function deleteSelection(tbl)
{
  var hid=_('urldel'+tbl) ;
  i=0 ;
  vl='' ;
  var row=_('removeRow'+tbl+i) ;
  nb=0 ;
  while (row)
  {
    if (row.checked)
    {
      if (vl!='') vl=vl+'_' ;
      vl=vl+row.value ;
      nb++ ;
    }
    i++ ;
    row=_('removeRow'+tbl+i) ;
  }
  if (vl!='')
  {
    cnf='Confirmez-vous la suppression de' ;
    if (nb==1) cnf=cnf+' cet objet ?' ;
    else cnf=cnf+' ces '+nb+' objets ?' ;
    if (confirm(cnf))
    {
      url=hid.value+'&DLTH='+vl ;
      location=url ;
    }
  }
}

function ReplaceUrl(url)
{
  location.replace(url) ;
}

function SubmitAndGet(method, url, data)
{
  var xhr=CreateAjaxObject() ;
  if (!xhr)
    return ;
  xhr.onreadystatechange=function()
  {
    if (xhr.readyState==4)
    {
      if (xhr.status==200)
      {
//        alert('REP:'+xhr.responseText) ;
        if (xhr.responseText=='OK')
        {
          urlb=_('theBackUrl').value ;
          if (urlb=='reload')
          {
//            alert('A') ;
            geaTableReload() ;
          }
          else
          if (typeof(geaTableSaved)=='function')
          {
//            alert('B') ;
            geaTableSaved() ;
          }
          else if (urlb.length>2)
          {
//            alert('C') ;
            location.replace(urlb) ;
          }
          else
          {
//            alert('D') ;
            BackHistory() ;
          }
        }
        else
        {
          alert('Enregistrement impossible !\n'+xhr.responseText) ;
        }
      }
    }
  } ;
//  alert('url='+url+'\ndata='+data) ;
  xhr.open(method, url, true) ;
  if (method=='POST')
  {
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ;
    xhr.setRequestHeader('Charset', 'UTF-8') ;
  }
  xhr.send(data) ;
}

function BackHistory()
{
  var nb=1 ;
  var smem=document.getElementById('dldAjxCptr') ;
  if (smem)
    nb=_('dldAjxCptr').value ;
  window.history.go(-nb) ;
}

function insideMultiple(tbl, fid)
{
  var sem=_(fid) ;
  var hid=_('HID_'+tbl+'_'+fid) ;
  var i=0 ;
  var cb=_('CB_'+tbl+'_'+fid+'_'+i) ;
  var res='/' ;
  while (cb && i<500)
  {
    if (cb.checked)
      res=res+cb.value+'/' ;
    i++ ;
    var cb=_('CB_'+tbl+'_'+fid+'_'+i) ;
  }
  hid.value=res ;
}

function PostFormAjax(formid, url)
{
  var frm=_(formid) ;
  var url=frm.action ;
  var tab='' ;
  var data='' ;
  for (i=0;i<frm.elements.length;i++)
  {
    obj=frm.elements[i] ;
    if (obj.name!='' && obj.name.substring(0,11)!='inp_DIVEDIT' && obj.name!='undefined')
    {
//      tab=tab+obj.name+' ('+obj.type+') = '+obj.value+'\n' ;
      if (data!='')
        data=data+'&' ;
      data=data+obj.name+'='+encodeURIComponent(obj.value) ;
    }
  }
//  alert('ENVOI:'+url+' data: '+data) ;
  SubmitAndGet('POST', url, data) ;
}

function startUpload(tbl, fld, hd)
{
  var smem=document.getElementById('dldAjxCptr') ;
  if (smem)
    smem.value=1+1*smem.value ;
  _('image_'+tbl+'_'+fld).style.display='none' ;
  _('imgdld_'+tbl+'_'+fld).style.display='' ;
  var mns=_('imgdl_'+tbl+'_'+fld) ;
  if (mns)
    mns.style.display='none' ;
  var nim=_('newimage_'+tbl+'_'+fld) ;
  if (nim) nim.style.display='none' ;
}

function endReload(tbl, fld, hd)
{
  var dld=_('imgdld_'+tbl+'_'+fld) ;
  dld.style.display='none' ;
  nm=tbl+'_'+fld ;

  if (hd)
  {
    var tit=_('mediatit_'+nm) ;
    _('mediatit_'+nm).style.display='none' ;
    _('imgdl_'+nm).style.display='none' ;
    _('mnsimg_'+nm).style.display='' ;
  }

  _('backimg_'+nm).style.display='' ;
  _('gbackimg_'+nm).style.display='none' ;
}

function endUpload(tbl, fld, hd, lar, hau, wid, hei, url, tpe, name, id)
{
    // refabrication de la zone image...
  var dv=_('cntu_'+tbl+'_'+fld) ;
  if (wid>0 && hei>0 && (wid>lar || hei>hau))
  {
    var rx=lar/wid ;
    var ry=hau/hei ;
    if (ry<rx) rx=ry ;
    wid=wid*rx ;
    hei=hei*rx ;
  }
  st="<img id='newimage_"+tbl+'_'+fld+"' src='"+url+"' width="
  +wid+" height="+hei+" style='position:absolute;left:"+(lar/2-wid/2)
  +"px;top:"+(hau/2-hei/2)+"px' border=0 onLoad=\"endReload('"+tbl+"', '"+fld+"', "+hd+")\">" ;
//  alert(st) ;
  dv.innerHTML=st ;
  dv.style.display='' ;

  nm=tbl+'_'+fld ;
  fdvalue=name ;
  var top=_('mediatop_'+nm) ;
  top.innerHTML="<font color='blue'>"+basename(fdvalue)+"</font>" ;
  top.style.display='' ;
  _('value_'+nm).value=tpe+';'+name+';'+id ;
}

function explainError(msg, tbl, fld, hd)
{
  var nim=_('newimage_'+tbl+'_'+fld) ;
  if (nim) 
    nim.style.display='' ;
  else
    _('image_'+tbl+'_'+fld).style.display='' ;
  _('imgdld_'+tbl+'_'+fld).style.display='none' ;
  alert(msg) ;
}

function MoveOverListInPlace()
{
  return ;
  var cptr=1 ;
  var ovl=_('geaOverList'+cptr) ;  
  while (ovl)
  {  
    var tope=0 ;
    var htit=0 ;
    var hcmt=0 ;
    var htab=0 ;
    var dTit=_('idtblTitle'+cptr) ;
    var dCmt=_('idtblComment'+cptr) ;
    var dTab=_('idtblTabs'+cptr) ;
    
    if (dTit) { htit=dTit.offsetHeight ; }
    if (dCmt) { hcmt=dCmt.offsetHeight ; }
    if (dTab) { htab=dTab.offsetHeight ; }
    
    if (dCmt) { dCmt.style.top=''+(htit)+'px' ; }
    if (dTab) { dTab.style.top=''+(htit+hcmt)+'px' ; }
    
    ovl.style.top=''+(htit+hcmt+htab)+'px' ;
    
    ovl=_('geaOverListLeft'+cptr) ;
    if (ovl)
    {
      ovl.style.top=''+(htit+hcmt+htab)+'px' ;
    }
    cptr++ ;
    ovl=_('geaOverList'+cptr) ;  
  }
  
}

function SetComment(selAdm)
{
  var vl='' ;
  var sa=_(selAdm) ;
  if (sa) { if (sa.value!='') vl=vl+'PE='+sa.value ; }
  _('commenttbl').value=vl ;
}

function ComputeNbPages(gear, total)
{
  var dv=_('geaOverList'+gear) ;
  var npp=Math.floor(((dv.offsetHeight-22)/22)) ;
  if (npp<5) npp=5 ;
  var pmax=(total>0 ? 1+Math.floor((total-1)/npp) : 1) ;
  _('geaTableNav'+gear).style.display=(pmax<=1 ? 'none' : '') ;
  gealNPPtable[gear]=npp ;
  _('geaPageLast'+gear).innerHTML=''+pmax ;
  
  var first=_('geaPageFirst'+gear) ;
  var previous=_('geaPagePrevious'+gear) ;
  var next=_('geaPageNext'+gear) ;
  var last=_('geaPageLast'+gear) ;
  var inpu=_('geaPageValue'+gear) ;
  var val=inpu.value ;
  
  first.className='geaPageFirst'+(val<=1 ? 'D' : '') ;
  first.disabled=(val<=1) ;
  previous.className='geaPagePrevious'+(val<=1 ? 'D' : '') ;
  previous.disabled=(val<=1) ;
  next.className='geaPageNext'+(val>=pmax ? 'D' : '') ;
  next.disabped=(val>=pmax) ;
  last.className='geaPageLast'+(val>=pmax ? 'D' : '') ;
  last.disabled=(val>=pmax) ;

}

function InjectResult(txt, gear)
{
//  alert('TXT:'+txt) ;
  var tdiv=_('geaOverList'+gear) ;
  var cnt=tdiv.innerHTML ;
//  alert(cnt) ;
  var deb=cnt.indexOf('<TBODY') ;
  if (deb<0) deb=cnt.indexOf('<tbody') ;
  var deb=cnt.indexOf('>', deb)+1 ;
  var fin=cnt.indexOf('</TBODY>', deb) ;
  if (fin<0) fin=cnt.indexOf('</tbody>', deb) ;

  var p=txt.indexOf(';') ;
  var total=-1 ;
  if (p>0)
  {
    total=0+1*txt.substring(0, p) ;
    txt=txt.substring(p+1) ;
  }
  var cnt=cnt.substring(0, deb)+txt+cnt.substring(fin) ;
//  alert('CNF:'+cnt) ;
  tdiv.innerHTML=cnt ;
  if (total>=0)
  {
    // calcul du nombre de pages...
    ComputeNbPages(gear, total) ;
  }
  if (typeof(parent.AfterUpdateList)=='function') parent.AfterUpdateList() ;
}

function GetPageContent(method, url, data, gear) 
{
//  alert('url:'+url+'\ndata:'+data) ;
  var xhr=CreateAjaxObject() ;
  if (!xhr) return ;
  xhr.onreadystatechange=function() { if (xhr.readyState==4 && xhr.status==200) InjectResult(xhr.responseText, gear) ; } ;
  if (method=='GET') xhr.open(method, url+'?'+data) ;
  else
  xhr.open(method, url, true) ;
  if (method=='POST') { xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') ; xhr.setRequestHeader('Charset', 'UTF-8') ; }
  xhr.send(data) ;
}

function geaToggleSort(gear, tblName, fld)
{
  var srt=_('SRT_'+tblName) ;
  if (srt.value!='')
  {
    var idold=srt.value ;
    if (idold.substr(0,1)=='-')
      idold=idold.substr(1) ;
    idold='headc_'+gear+'_'+idold ;
    if (_(idold))
    {
      var old=_(idold).innerHTML ;
      var lpo=old.indexOf(' <') ;
      old=old.substr(0,lpo)+"</a>" ;
      _(idold).innerHTML=old ;
    }
  }
  var inv='up' ;
  if (srt.value==fld || srt.value=='-'+fld)
  {
    if (srt.value==fld)
    {
      srt.value='-'+fld ;
      inv='down' ;
    }
    else
      srt.value=fld ;
  }
  else
    srt.value=fld ;
  var nvo='headc_'+gear+'_'+fld ;
  var vo=_(nvo).innerHTML ;
  var lpo=vo.indexOf('<', 2) ;
  vo=vo.substr(0, lpo)+" <img src='/geneasy/img/gear"+inv+".png' width=9 height=6 border=0></a>" ;
  _(nvo).innerHTML=vo ;
  geaTablePage(gear, true, 0, tblName) ;
}

function geaTablePage(gear, absolute, val, tblName)
{
  geaTablePageInside(gear, absolute, val, tblName, 0, '') ;
}

function geaTablePageInside(gear, absolute, val, tblName, kvl, ktb)
{
//  alert('geaTablePageInside('+gear+','+absolute+','+val+','+tblName+','+kvl+','+ktb+')') ;
  var url=gealULI[gear] ;
  var params=gealULP[gear] ;
  var tbl=_('GEALIST_'+gear) ;
  var rws=tbl.rows ;
  var nbrows=rws.length ; // 1 pour les titres.... !!!
  
  var first=_('geaPageFirst'+gear) ;
  var previous=_('geaPagePrevious'+gear) ;
  var next=_('geaPageNext'+gear) ;
  var last=_('geaPageLast'+gear) ;
  var inpu=_('geaPageValue'+gear) ;

  var pmax=0+1*last.innerHTML ;
  var npp=gealNPPtable[gear] ;
  

  if (npp<5) npp=5 ;
  if (absolute && val==-2) val=1+1*inpu.value ;
  if (absolute && val==-3) val=1*inpu.value ;
  if (absolute && val==-4) val=-1+1*inpu.value ;

  if (absolute && val==-1) val=pmax ;
  if (!absolute) val=val+1*inpu.value ;
  if (val<=1) val=1 ;
  if (val>pmax) val=pmax ;
  // validite...
  first.className='geaPageFirst'+(val<=1 ? 'D' : '') ;
  first.disabled=(val<=1) ;
  previous.className='geaPagePrevious'+(val<=1 ? 'D' : '') ;
  previous.disabled=(val<=1) ;
  next.className='geaPageNext'+(val>=pmax ? 'D' : '') ;
  next.disabped=(val>=pmax) ;
  last.className='geaPageLast'+(val>=pmax ? 'D' : '') ;
  last.disabled=(val>=pmax) ;
  // rappel !
  if (val!=1*inpu.value || absolute)
  {
    inpu.value=val ;
    var ra=Math.random() ;
    var srh='' ;
    var sr=_('searchTableIn'+tblName) ;

    if (sr && sr.style.fontStyle!='italic')
      srh='&SRH_'+tblName+'='+encodeURIComponent(sr.value) ;
    var msql=_('moresql_'+tblName) ;
    if (msql && msql.value!='')      srh=srh+'&MORESQL_'+tblName+'='+encodeURIComponent(msql.value) ;
    if (_('subtable_'+tblName))
    {
      if (_('subtable_'+tblName).value==1)
       srh=srh+'&SBTB_'+tblName+'=1' ;    
    }
    else
      alert('pas sub '+tblName) ;
    var srtm=_('SRT_'+tblName) ;
    if (srtm && srtm.value!='' || 1) srh=srh+'&SRT_'+tblName+'='+srtm.value ;
//    else if (!strm) alert('pas SRT_ pour '+tblName) ;
//    else alert('SRT vide poiur '+tblName) ;
    // appel du code ajax
    
    var prms=params+'='+(Math.floor((val-1)*npp))+'&rdm='+ra+srh+'&NPP_'+tblName+'='+gealNPPtable[gear] ;
    if (kvl!=0)
      prms=prms+'&KVL='+kvl+'&KTB='+ktb ;
    GetPageContent('GET', url, prms, gear) ; //geaovl) ;
  }
}

var tmGeaPageValue = 0 ;
function geaPageValueDirect(gear, tblName)
{
  if (tmGeaPageValue!=0) clearTimeout(tmGeaPageValue) ;
  tmGeaPageValue=setTimeout("geaPageChangedValue("+gear+",'"+tblName+"')", 750) ;
}

function geaPageChangedValue(gear, tblName)
{
  tmGeaPageValue=0 ;
  var inpu=_('geaPageValue'+gear) ;
  var val=0+1*inpu.value ;
  geaTablePage(gear, true, val, tblName) ;
}

var tmGeaPageSearch=0 ;

function geaReloadPageSearch(gear, tbl)
{
  if (tmGeaPageSearch!=0) { clearTimeout(tmGeaPageSearch) ; tmGeaPageSearch=0 ; }
  geaTablePage(gear, true, 0, tbl)
  var ip=_('searchTableIn'+tbl) ;
  {
    if (ip.style.fontStyle=='italic' || ip.value=='')
      _('caserest_'+tbl).style.display='none' ;
    else
      _('caserest_'+tbl).style.display='' ;
  }
}

function geaReloadPageSearchEnter(gear, tbl)
{
  if (tmGeaPageSearch!=0) { clearTimeout(tmGeaPageSearch) ; tmGeaPageSearch=0 ; }
  geaTablePage(gear, true, 0, tbl)
  var ip=_('searchTableIn'+tbl) ;
  if (ip.value!='')
  {
    if (ip.style.fontStyle=='italic' || ip.value=='')
      _('caserest_'+tbl).style.display='none' ;
    else
      _('caserest_'+tbl).style.display='' ;
  }
}

function geaPageKWSearch(gear, tbl)
{
  if (tmGeaPageSearch!=0) clearTimeout(tmGeaPageSearch) ;
  tmGeaPageSearch=setTimeout("geaReloadPageSearch("+gear+",'"+tbl+"')", 750) ;
}

function resetSearchInTable(gear, tbl)
{
  _('searchTableIn'+tbl).value='' ;
  changeKWsearch(tbl) ;
  geaReloadPageSearch(gear, tbl) ;
}

