//
//  _IdxNav.js
// 
//  
//  Catégories : Html(0),Image(1),Fichier(2),Erreur(3)
//
//
//
var CurCat,CurPage,CurDomain,FirstPage,LastPage,Images;       

CurPage   =  0;
FirstPage = -1;
LastPage  = -1;

Categories = ['_ixh','_ixi','_ixo','_ixe'];

LoadImages('_bhtml' ,  // 0
           '_bimg'  , // 1
           '_bfile'  , // 2
           '_berror'  , // 3
           '_bback' , // 4
           '_bfwd'  ,	// 5
           '_bfback', // 6
           '_bffwd' ,	// 7
           '_burl'  ,	// 8
           '_binfo' , // 9
           '_bsite'	// 10
            );
            
 
// Recharge la page d'index suite à un click sur une page HTML puis un back!
function OnLoadDocument()
{
  c1 = ReadLocalCookie(document,'IDXCURDOMAIN');
  c2 = ReadLocalCookie(document,'IDXCURCAT');
  c3 = ReadLocalCookie(document,'IDXCURPAGE');
  
  if ((c1!= null) && (c2!= null) && (c3!= null))
     LoadDomain(c1,c2,c3)
  else
     LoadDomain(0,-1,-1);
}

              
function ClickButton(no)
{
 switch(no)
 {
  case 4 :GoPrevPage();break;
  case 5 :GoNextPage();break;
  case 6 :GoFirstPage();break;
  case 7 :GoLastPage();break; 
  // pour l'instant rien
  case 9,10 : break;
  default :
      ChangePageCat(no,-1);
 }	
}

// Demande le changement  d'état d'un bouton
function onButtonEvent(no,state)
{ 
  canchange = true;	
  switch(no) 
  {
    case 0:
    case 1:
    case 2:
    case 3:
    {
      // Toujours enfoncé 	
      if(no == CurCat) 
          state = 2
      else
         canchange = (GetFirstPage(no) > - 1);	
      break;	
    } 	 
   	 
    case 4 : canchange = (CurPage > FirstPage);break;     
    case 5 : canchange = (CurPage < LastPage);break;          
    case 6 : canchange = (CurPage != 0);break;
    case 7 : canchange = (CurPage != LastPage);break;
  }
  if(canchange) ChangeButton(no,state);
}


// Change de domaine
function LoadDomain(index,cat,page)
{
 if ((index < 0) || (index > DomainInfos.length)) index = 0;
 CurDomain = index;
 
 if ((cat < 0) || (cat >= DomainInfos.length)) 
     ChangePageCat(FindValidCat(),-1)
 else
     ChangePageCat(FindValidCat(),page)
 UpdateCatButtons(); 	
}



function PageChanged()
{
  s = Categories[CurCat] + CurPage + '.htm';
  v = CurPage - FirstPage + 1;
  pc = LastPage - FirstPage + 1;
  window.parent.bottom.document.location.href = s;
  window.document.SelectionForm.TheEditValue.value = v + '/'+ pc;
  UpdateArrowButtons();
  UpdateCatButtons();
  WriteLocalCookie(document,'IDXCURDOMAIN',CurDomain);
  WriteLocalCookie(document,'IDXCURCAT'   ,CurCat);
  WriteLocalCookie(document,'IDXCURPAGE'  ,CurPage);
}



function GetMinMax(no ,min)
{
  s = DomainInfos[CurDomain];
  p2 = -1;
  do {
    p1  = p2+1;
    p2  = s.indexOf(';',p1);
    if(p2 == -1) p2 = s.length;
    no--;
  } while(no >= 0);
  
  s = s.substring(p1,p2);
  
  p1 = s.indexOf(',');
  if(min)
    s = s.substring(0,p1)
  else
    s = s.substring(p1+1,s.length);
    
  
  return parseInt(s,10);
}

function GetFirstPage(cat)
{
  return GetMinMax(cat,true);
}

function GetLastPage(cat)
{
  return GetMinMax(cat,false);
}

// Recherche la première catégorie non vide
function FindValidCat()
{ 
 // Catégorie priorité	
 if(DefaultCat) 
  if(GetMinMax(DefaultCat,true) != -1) 
     return DefaultCat;
     
 // 
  
 for(i = 0; i < 4 ; i++)
  if(GetMinMax(i,true) != -1)
    return i;	
  return -1;
}


function CustomPage(edit)
{
  pos = parseInt(edit.value,10);
  if(isNaN(pos))
  {
    pos = 1;
  } 
  else
  {
    if(pos < 1)  pos = 1;

   if (pos > (LastPage - FirstPage + 1)) 
       pos = (LastPage - FirstPage + 1);     
  }
  edit.value = pos;

  if(CurPage != (pos + FirstPage -1))
  {
    CurPage = pos + FirstPage -1;
    PageChanged();
  }
}


function GoFirstPage()  
{ 
  if(CurPage != FirstPage)
  {
    CurPage = FirstPage;
    PageChanged();
  } 
}

function GoLastPage()  
{ 
  if (CurPage != LastPage)
  {
    CurPage = LastPage;
    PageChanged();
  } 
}
function GoNextPage()  
{ 
  if(CurPage < LastPage)
  {
    CurPage++;
    PageChanged();
  } 

}

function GoPrevPage() 
{  
  if(CurPage > FirstPage)
  {
    CurPage--;
    PageChanged();
  }   
}

function ChangePageCat(cat,page)
{
  if(GetMinMax(cat,true) != -1)
  {
    CurCat    = cat;
    FirstPage = GetMinMax(cat,true);
    LastPage  = GetMinMax(cat,false);
    CurPage   = page;
    if((page < FirstPage) || (page > LastPage)) CurPage = FirstPage;
    PageChanged();
  }
}





// Change d'état d'un bouton
// 0 = normal, 1 = focused, 2 = pushed , 3 = grayed
function ChangeButton(no,state)  
{
  document ['btn_' + no].src = Images[no][state].src;
}


// Grise les boutons en fonctions de la possibilité de navigation
function UpdateCatButtons()
{
  for(c = 0; c < 4 ; c++)
  {
    if(c == CurCat)
      ChangeButton(c,2)
    else
      ChangeButton(c,(GetFirstPage(c) > -1)? 0 : 3 );
  }
}

// Grises fléches en fonctions de la navigation
function UpdateArrowButtons()
{
  ChangeButton(4,((CurPage > FirstPage) ? 0 : 3));
  ChangeButton(5,((CurPage < LastPage)  ? 0 : 3));  
  ChangeButton(6,((CurPage != FirstPage) ? 0 : 3));
  ChangeButton(7,((CurPage != LastPage)  ? 0 : 3));  
}



//
// Charge les différentes états d'une image
// exe : LoadImages('arleft,arright)
// charge -> _arleft0.gif ... _arLeft3.gif , idem pour arright
//           
function  LoadImages()
{
  Images = new Array(arguments.length);
  for(i = 0; i < arguments.length ; i++)
  {
    Images[i] =  new Array(4);
    for(j = 0; j < 4 ; j++)
    {
       Images[i][j] = new Image(30,30);
       s = arguments[i] + j + '.gif';
       Images[i][j].src = s;
    }
  }
}


function WriteLocalCookie(doc,name,value)
{
  s = name +"=" + escape(value);
  s = s + ';path=/';
  doc.cookie = s;
}


function ReadLocalCookie(doc,name)
{
  allcookies = doc.cookie;
  pos = allcookies.indexOf(name+'=');
  if(pos!=-1)
  {
   start = pos + name.length + 1;
   end   = allcookies.indexOf(";",start);
   if(end == -1) end = allcookies.length;
   result = allcookies.substring(start,end);
   result = unescape(result);
   return result;
  } else
    return null;	
}



