//
// Code JavaScript pour le support des tables de données. Pour le projet Asloca.
//
// Auteur:  OrdinaSoft
//          Patrick Lanz
//          Lausanne
//          info@ordinasoft.ch
//
// Première version: 18 mai 2007
//
// Dépend de:
//   - OrdinaSoft.Table.js
//
// Note: quand Table_Initialized est défini, la bibliothèque OrdinaSoft.Table est aussi
//       initialisée.

//-----------------------------------------------------------------------------------------------
// Initialisation du namespace.

if (typeof Table == 'undefined')
  Table = new Object ();
if (typeof Table.Pager == 'undefined')
  Table.Pager = new Object ();

//-----------------------------------------------------------------------------------------------
// Initialisation.

Table.Init = function () {

  // Attend que les dépendances soient initialisées
  if (typeof OrdinaSoft_Table_Initialized == 'undefined') {
    setTimeout (Table.Init, 50);
    return false;
  }  // non initialisé 

  // Table et pager
  OrdinaSoft.Table.SelectedClass    = 'List_Select';
  OrdinaSoft.Table.Pager.Separator  = '';
  OrdinaSoft.Table.Pager.TxtFirst   = 'Premi&egrave;re';
  OrdinaSoft.Table.Pager.TxtLast    = 'Derni&egrave;re';

  OrdinaSoft.Table.Pager.FormatPageNumber = function (NoPage, Current) {
    var Txt = '&nbsp;' + NoPage.toString () + '&nbsp;';
    if (Current)
      Txt = Table.Pager.FormatEntry (Txt, Current);
    return Txt;
  } // OrdinaSoft.Table.Pager.FormatPageNumber
  
  OrdinaSoft.Table.Pager.FormatCurPage = function (NoPage, NbPages) {
    return '&nbsp;Page ' + NoPage.toString () + ' sur ' + NbPages.toString () + '&nbsp;';
  } // OrdinaSoft.Table.Pager.FormatCurPage

  return true;
} // Table.Init

Table.Init ();

//-----------------------------------------------------------------------------------------------
// Pour la pagination.

// Donne en retour le code HTML pour la pagination.
//  - CurPage est le numéro de la page courante.
//  - NbPages est le nombre total de pages.

Table.Pager.Format = function (CurPage, NbPages) {

  if (NbPages <= 1)
    return '';

  var s = [];

  s [s.length] = '<table class="Pager_Table" border="0" cellspacing="2" cellpadding="2">';
  s [s.length] = '  <tr>';
  s [s.length] = '    <td>';
  s [s.length] = OrdinaSoft.Table.Pager.Format (CurPage, NbPages);
  s [s.length] = '    </td>';
  s [s.length] = '  </tr>';
  s [s.length] = '</table>';

  return s.join ('\r\n');
} // Table.Pager.Format



// Formattage d'une cellule pour une entrée de pagination.
//  - Content est le contenu à afficher dans la cellule.
//  - CurPage indique si on est sur la page actuelle.
//  - AddlAttr contient des attributs supplémentaires.

Table.Pager.FormatEntry = function (Content, CurPage, AddlAttr) {

  var s = [];

  s [s.length] = '<td class="' + (CurPage ? 'Pager_CurPage' : 'Pager_Page') + '"';
  if (typeof AddlAttr != 'undefined')
    s [s.length] = ' ' + AddlAttr;
  s [s.length] = '>';
  s [s.length] = Content;
  s [s.length] = '</td>';

  return s.join ('');
} // Table.Pager.FormatEntry

//-----------------------------------------------------------------------------------------------

Table_Initialized = true;
