/************************************************************
* FONCTIONS & VARIABLES COMMUNES AUX FRONT ET BACK OFFICES  *
************************************************************/
var speed  = 30;
var dismax = 900;
var run    = 0;
var runb   = 0;
var temp   = 0;
var lstopn = 0;
var lstopnb= 0;

ouv        = Array();
fer        = Array();
m          = Array();
dis        = Array();
ouvb       = Array();
ferb       = Array();
mb         = Array();
disb       = Array();



/************************************************************
* FONCTION GENERIQUE : REF. AUX ELEMENTS, DETERMIN. CIBLE   *
************************************************************/
document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i].id);
}
return retnode;
}


/************************************************************
* OUVERTURE  ET FERMETURE DES MENUS DE PREMIER NIVEAU       *
************************************************************/
function panneaua(num, pere)
{
 vid = num.replace("menua", "");
 num = parseInt(vid);
 if(!run)
 {
  spec(num,"chapitre"); // seulement pour le front office
  clearTimeout(fer[num]);
  clearTimeout(ouv[num]);
  temp = m[num];
  if(m[num] < dis[num]) 
  {
   if(document.getElementById('ia'+num)) {document.getElementById('ia'+num).src = "data/canvas/dotaon.gif";}
   lstopnb = 0;
   ouvre(num, temp);
  }
  else
  {
   ferme(num);  
   if(document.getElementById('ia'+num)) {document.getElementById('ia'+num).src = "data/canvas/dota.gif";}
  }
 }
}

function ouvre(num)
{
 if(temp < dismax)
 {
  run = 1;
  temp = temp+speed;
  if(m[num] < dis[num]-30)
  {
   m[num] = m[num]+speed;
   document.getElementById("menua"+num).style.height = m[num]+"px";
  }
  if(lstopn != 0 && m[lstopn] > 30)
  {
   m[lstopn]-=speed;
   document.getElementById("menua"+lstopn).style.height = m[lstopn]+"px";
   if(document.getElementById('ia'+lstopn)) {document.getElementById('ia'+lstopn).src = "data/canvas/dota.gif";}
  }
  if(lstopn != 0 && m[lstopn] < 30)
  {
   document.getElementById("menua"+lstopn).style.height = "30px";
  }
  ouv[num] = window.setTimeout("ouvre("+num+")",20);
 }
 else
 {
  run = 0;
  document.getElementById("menua"+num).style.height = m[num]+"px";
  m[num] = dis[num];
  lstopn = num;
 }
}

function ferme(num)
{
 if(m[num] > 30)
 {
  run = 1;
  m[num] = m[num]-speed;
  document.getElementById("menua"+num).style.height = m[num]+"px";
  fer[num] = window.setTimeout("ferme("+num+")",20);
 }
 else
 {
  document.getElementById("menua"+num).style.height = "30px";
  run = 0;
  lstopn = 0;
 }
}


/************************************************************
* OUVERTURE  ET FERMETURE DES MENUS DE SECOND NIVEAU        *
************************************************************/

function panneaub(num, pere)
{ 
 vid = num.replace("menub", "");
 num = parseInt(vid); 
 vid = pere.replace("menua", "");
 pere = parseInt(vid); 
 if(!runb)
 {
  spec(num,"section");  
  clearTimeout(ferb[num]);
  clearTimeout(ouvb[num]);
  temp = mb[num];
  if(mb[num] < disb[num]) 
  {
   ouvreb(num,pere);
  }
  else
  {
   fermeb(num,pere);  
  }
 }
}

function ouvreb(num, pere)
{
 if(temp < dismax)
 {
  runb = 1;
  temp = temp+speed;
  if(mb[num] < disb[num])
  {
   mb[num] = mb[num]+speed;
   m[pere] = m[pere]+speed;
   document.getElementById("menub"+num).style.height  = mb[num]+"px";
   document.getElementById("menua"+pere).style.height = m[pere]+"px";
  }
  if(lstopnb != 0 && mb[lstopnb] > 30)
  {
   mb[lstopnb]-=speed;
   document.getElementById("menub"+lstopnb).style.height = mb[lstopnb]+"px";
   if(m[pere] > document.getElementById('eom'+pere).offsetTop)
   {
    m[pere]-=speed;
	m[pere]-=speed;
    document.getElementById("menua"+pere).style.height = m[pere]+"px";
   }
  }
  if(lstopn != 0 && mb[lstopn] < 30)
  {
   document.getElementById("menub"+lstopn).style.height = "30px";
  }
  ouvb[num] = window.setTimeout("ouvreb("+num+","+pere+")",20);
 }
 else
 {
  runb = 0;
  mb[num] = disb[num];
  lstopnb = num;
  ajuste(pere);
  document.getElementById("menua"+pere).style.height=dis[pere]+"px"
  m[pere] = dis[pere];
 }
}


function fermeb(num, pere)
{
 if(mb[num] > 30)
 {
  runb = 1;
  mb[num] = mb[num]-speed;
  document.getElementById("menub"+num).style.height = mb[num]+"px";
  if(m[pere] > document.getElementById('eom'+pere).offsetTop)
  {
   m[pere] = m[pere]-speed;
   document.getElementById("menua"+pere).style.height = m[pere]+"px";
  }
  ferb[num] = window.setTimeout("fermeb("+num+","+pere+")",20);
 }
 else
 {
  runb = 0;
  lstopnb = 0;
  dis[pere] = m[pere];
 }
}


/*************************************************************
* GESTION DES LIENS DES MENUS TERTIAIRES                     *
*************************************************************/

function panneauc(num)
{
 vid = num.replace("menuc", "");
 num = parseInt(vid); 
 spec(num,"categorie");
}


/************************************************************
* AJUSTEMENT DES HAUTEURS                                   *
************************************************************/

function ajuste(num)
{
 curseur = document.getElementById('eom'+num).offsetTop;
 for(i=0;i<31;i++)
 {
  verif = curseur / 30;
  var exp = new RegExp("^[0-9]+$","g");
  v2 = exp.test(verif);
  if(!v2)
  {
   curseur++;
  }
 }
 dis[num] = curseur + 30;
}

function ajusteb(num)
{
 curseur = document.getElementById('eomb'+num).offsetTop;
 for(i=0;i<31;i++)
 {
  verif = curseur / 30;
  var exp = new RegExp("^[0-9]+$","g");
  v2 = exp.test(verif);
  if(!v2)
  {
   curseur++;
  }
 }
 disb[num] = curseur + 30;
}