AI.articleScroller =
{
 elt:null,
 eltHeader:null,
 currentElt:null,
 currentPos:null,
 largeurBloc:0,
 autoplay:(function()
 {
  var
   button, toid, delay, maxPos,
   actif = true;
  function clearToid() { if ( toid ) { toid = window.clearTimeout(toid); } }
  function stop()
  {
   clearToid();
   actif = false;
   AI.DOM.CSS.add("pause", button);
  }
  function go()
  {
   clearToid();
   if ( actif )
   {
    AI.DOM.CSS.remove("pause", button);
    toid = window.setTimeout(nextOne, delay);
   }
  }
  function nextOne()
  {
   var pos = AI.articleScroller.currentPos;
   if ( actif )
   {
    pos++;
    if ( pos >= maxPos ) { pos = 0; }
    AI.articleScroller.scrollTo(pos, go);
   }
  }
  function toggle()
  {
   clearToid();
   actif = !actif;
   if ( actif ) { go(); }
   else { stop(); }
  }
  return {
   stop:stop,
   init:function(elt, nb, ms)
   {
    delay = ms;
    maxPos = nb;
    button = AI.DOM.getById(elt);
    button.onclick = toggle;
    go();
   }
  };
 })(),
 getPosLI:function(li)
 {
  var
   i,
   posWhiteSpace = 0,
   childs = li.parentNode.childNodes;
  for ( i = 0; i < childs.length; i++ )
  {
   if ( childs[posWhiteSpace] == li ) { return posWhiteSpace; }
   if ( childs[i].nodeName == "LI" ) { posWhiteSpace++; }
  }
  return null;
 },
 getLIPos:function(pos)
 {
  var
   i,
   posWhiteSpace = 0,
   childs = AI.articleScroller.eltHeader.childNodes;
  for ( i = 0; i < childs.length; i++ )
  {
   if ( childs[i].nodeName == "LI" )
   {
    if ( posWhiteSpace == pos ) { return childs[i]; }
    posWhiteSpace++;
   }
  }
  return null;
 },
 scrollTo:function(position, oncomplete)
 {
  var
   anime, selected,
   F = 0,
   T = 0;
  oncomplete = oncomplete || function(){};
  if ( position != AI.articleScroller.currentPos )
  {
   selected = AI.articleScroller.getLIPos(position);
   AI.DOM.CSS.remove("selected", AI.articleScroller.currentElt);
   F = AI.articleScroller.largeurBloc * AI.articleScroller.currentPos;
   T = AI.articleScroller.largeurBloc * position;
   AI.articleScroller.currentPos = position;
   anime = new AI.ANIMATION(
    {
     step:20,
     duration:500,
     onComplete:oncomplete
    }
   );
   AI.articleScroller.currentElt = selected;
   AI.DOM.CSS.add("selected", selected);
   anime.addSubject(new AI.ANIMATION.numericalTransition(AI.articleScroller.elt, "left", -F, -T, "px"));
   anime.play();
  } else {
   return true;
  }
  return false;
 },
 init:function(largeurBloc, eltHeader, eltMain, eltButton)
 {
  function nbChilds(elt)
  {
   var
    i,
    nb = 0,
    childs = AI.DOM.getById(elt).childNodes;
   for ( i = childs.length; i--; ) { if ( childs[i].nodeName == "LI" ) { nb++; } }
   return nb;
  }
  AI.articleScroller.largeurBloc = largeurBloc;
  AI.articleScroller.eltHeader = AI.DOM.getById(eltHeader);
  AI.articleScroller.elt = AI.DOM.getById(eltMain).firstChild;
  AI.articleScroller.autoplay.init(eltButton, nbChilds(eltHeader), 5000);
  AI.articleScroller.eltHeader.onclick = function(e)
  {
   var
    pos, anime,
    F = 0,
    T = 0,
    li = AI.DOM.parent(AI.EVT.getTarget(e), "LI");
   if ( li )
   {
    AI.articleScroller.autoplay.stop();
    pos = AI.articleScroller.getPosLI(li);
    return AI.articleScroller.scrollTo(pos);
   }
   return false;
  };
  AI.articleScroller.scrollTo(0);
 }
};
