var colprec= 1
var bool=false
var pilotecherche = 0

function tri2(col,sens,idonnees,ptrs) {
// --------------------
// Objet : tri a bulles
// --------------------
  var iptrs=new Array()
  var ival=new Array()
  var ivaltri=new Array()
  var inbData=idonnees.length;
  var imax=inbData
  var i=0
  var kmax=0
  var buffer=0

  if(col!=colprec || bool)
  {
  bool=false
  for ( i= 0 ; i < inbData ; i++ )
    {
	iptrs[i] = ptrs[i]
	ival[i]=idonnees[i][col]
	if(ival[i]=="open") ival[i]=999
	}
  while( imax>1)
	{
	kmax=0
    for ( k = 0 ; k < imax -1; k++ )
		{
//  for ( i= 0 ; i < inbData ; i++ )
//    {ivaltri[i]=ival[iptrs[i]]}
        if (sens>0)
		   {if(ival[iptrs[k]] > ival[iptrs[k+1]])
		   {kmax=k+1;buffer=iptrs[k];iptrs[k]=iptrs[k+1];iptrs[k+1]=buffer;}}
	    else
		   {if(ival[iptrs[k]] < ival[iptrs[k+1]])
		   {kmax=k+1;buffer=iptrs[k];iptrs[k]=iptrs[k+1];iptrs[k+1]=buffer;}}
		}
	imax=kmax;	
    }
		}
	else
		for ( i= 0 ; i < inbData ; i++ )
			iptrs[i] = ptrs[inbData-i-1]
  return iptrs;
}
// =========================================================================
function tri(col,sens,idonnees) {
// -------------------------------------------------------------------
// Objet : tri par comptages des objets de valeur inferieure
// -------------------------------------------------------------------
  iptrs=new Array()
  inbData=idonnees.length;
  for ( i= 0 ; i < inbData ; i++ ) {
    iptrs[i] = -1 ;
  }
  for ( i= 0 ; i < inbData ; i++ ) {
    val = idonnees[i][col] ;
    for ( k = 0, n=0 ; k < inbData ; k++ ) {
      if ( sens > 0 ) {
        if ( k != i && idonnees[k][col] < val ) n++ ;
      }
      else {
        if ( k != i && idonnees[k][col] > val ) n++ ;
      }
    }
 //   iranks[i] = n ;
    while ( iptrs[n] != -1 ) {
      n++ ;
    }
    iptrs[n] = i ;
  }
  return iptrs;
}
// =========================================================================
function resultat(nomtableau,col) {
// -------------------------------------------------------------------
// Objet : tri et affichage du resultat
// -------------------------------------------------------------------

  relief(0)
  var iptrs=eval(nomtableau+'ptrs')
  var idonnees=eval(nomtableau+'data')
  var sens=eval(nomtableau+'sensTri['+col+']')

  if(sens>0)
     iptrs=tri2(col,sens,idonnees,iptrs) ;
  else
     iptrs=tri2(col,sens,idonnees,iptrs) ;
  colprec=col
  for ( ic = 1 ; ic < idonnees[0].length ; ic++ )
	  getElement(false,nomtableau+"titre_"+ic).innerHTML="<B>"+eval(nomtableau+"titres["+ic+"]")+"</B>"
  for ( it = 0 ; it < idonnees.length ; it++ )
    for ( ic = 1 ; ic < idonnees[0].length ; ic++ )
      getElement(false,nomtableau+it+"_"+ic).innerHTML = eval(nomtableau+'data['+iptrs[it]+'][ic]') ;
  relief(1)
  return iptrs;
}
// =========================================================================
function generGrid(nomtableau) {
// -------------------------------------------------------------------
// Chargement de la table initiale
// -------------------------------------------------------------------
  var iptrs=new Array()
  var isensTri=eval(nomtableau+'sensTri')
  var ititres=eval(nomtableau+'titres')
  var idonnees=eval(nomtableau+'data')
  var nl = idonnees.length + 2
  var id=0
//  affiche_attente("generation du tableau")
  // recup de l'identite des pilotes
  for ( il = 0 ; il < nl-2 ; il++ ) {
	if(ititres[2]=="pilote") // cas ou le tableau est une liste de pilotes
		{
		id=trouve(pilotes,idonnees[il][0],'')
		eval(nomtableau+'data['+il+"][2]=\""+pilotes[id][3]+' '+pilotes[id][4]+"\"")}
		}

  idonnees=eval(nomtableau+'data')
  nl = idonnees.length + 2
  nc = idonnees[0].length-1
  ncm1 = nc - 1 ;

  dw('<TABLE '+(nomtableau=="clt"?'':'width=100%')+' BORDER=0 CELLSPACING="0">')

  dw('<TR>')
  for ( ic = 1 ; ic < nc+1 ; ic++ ) {
    dw('<TD style="border-style: outset; border-width:2px" align=center id="'+nomtableau+'titre_'+ic+'"')
    if ( isensTri[ic] != 0 && nl<200)
      dw(" onClick='"+nomtableau+"ptrs=resultat(\""+nomtableau+"\","+ic+");"+nomtableau+"sensTri["+ic+"]=-"+nomtableau+"sensTri["+ic+"];'"
	   +'onmouseover="this.style.background='+"'#ffffe0'"+';"'
	   +'onmouseout="this.style.background=0;" title="cliquer pour trier" ') ;
	dw('><B>'+ititres[ic]+'</B></TD>')
  }
  dw('</TR>')

  // -----------------------------------------------------------------
  // chargement des donnees de la table
  // -----------------------------------------------------------------
  for ( il = 0 ; il < nl-2 ; il++ ) {
    iptrs[il]=il;
//	if(idonnees[il][0]==pilotecherche) couleur="bgcolor='#ffffe0'"; else couleur=""
	  dw(affichetr(nomtableau,il))
    for ( ic = 1 ; ic < nc+1 ; ic++ ) {
      dw('<TD border=0 align=center valign=top id="'+nomtableau+il+"_"+ic+'">'+idonnees[il][ic]+'</TD>')
    }
    dw('</TR>')
  }
  // -----------------------------------------------------------------
  dw('</TABLE>') ;
  relief(1)
  return iptrs;
}
// =========================================================================
function relief(quoi){
if(quoi==0) couleur='#f5f5f5'; else couleur='#ffe0ff'
if(pilotecherche>0)
	if(getElement(false,'p'))			
		if(ns6)
			getElement(false,'p').parentNode.parentNode.style.background=couleur
		else
			getElement(false,'p').parentElement.parentElement.style.background=couleur
		  }


