var container;
var scroller;
var track;
var leftButton;
var rightButton;
var page=1;
var totalPages=2;
var pageButtonsVisible=false;
var leftFadeEffect=null,rightFadeEffect=null;
var leftFadeTimer=null,rightFadeTimer=null;
var leftCanFade=true,rightCanFade=true;

function setup()
{
  container=$('news-scrollercontainer');
  if (!container)
    return;
  scroller=$('news-scroller');
  track=$('news-scrollertrack');
  scroller.style.overflowX='hidden';
  scroller.scrollLeft=0;
  leftButton=$('news-scrollerleft');
  rightButton=$('news-scrollerright');
  
  Event.observe(leftButton,'click',scrollLeft,true);
  Event.observe(rightButton,'click',scrollRight,true); 
  showPageButtons();
}

function scrollLeft()
{
  if (page>1)
    {
      new Effect.Tween(scroller,scroller.scrollLeft,scroller.scrollLeft-272,{duration:0.25,transition:Effect.Transitions.sinoidal,afterFinish:validatePageButtons},function(p){scroller.scrollLeft=p;});
      page--;
    } 
}

function scrollRight()
{
  if (page<totalPages)
    {
      new Effect.Tween(scroller,scroller.scrollLeft,scroller.scrollLeft+272,{duration:0.25,transition:Effect.Transitions.sinoidal,afterFinish:validatePageButtons},function(p){scroller.scrollLeft=p;});
      page++;
    }
}

function validatePageButtons()
{
  switch (page)
    {
      case 1:
        fadeLeft();
        appearRight();
        break;
    
      case totalPages:
        fadeRight();
        appearLeft();
        break;
      
      default:
        appearLeft();
        appearRight();
    }
}

function fadeLeftFinished()
{
  leftFadeEffect=null;
}

function fadeRightFinished()
{
  rightFadeEffect=null;
}

function appearLeftFinished()
{
  leftCanFade=true;
}

function appearRightFinished()
{
  rightCanFade=true;
}

function fadeLeft()
{
  if (leftCanFade)
    {
      if (leftFadeTimer)
        clearTimeout(leftFadeTimer);
      leftFadeTimer=null;
      leftFadeEffect=new Effect.Fade(leftButton,{duration:0.25,afterFinish:fadeLeftFinished});
    }
  else
    {
      if (leftFadeTimer)
        clearTimeout(leftFadeTimer);
      leftFadeTimer=setTimeout('fadeLeft();',250);
    }
}

function fadeRight()
{
  if (rightCanFade)
    {
      if (rightFadeTimer)
        clearTimeout(rightFadeTimer);
      rightFadeTimer=null;
      rightFadeEffect=new Effect.Fade(rightButton,{duration:0.25,afterFinish:fadeRightFinished});
    }
  else
    {
      if (rightFadeTimer)
        clearTimeout(rightFadeTimer);
      rightFadeTimer=setTimeout('fadeRight();',250);
    }
}

function appearLeft()
{
  if (leftFadeEffect)
    leftFadeEffect.cancel();
  leftCanFade=false;
  new Effect.Appear(leftButton,{duration:0.25,afterFinish:appearLeftFinished});
}

function appearRight()
{
  if (rightFadeEffect)
    rightFadeEffect.cancel();
  rightCanFade=false;
  new Effect.Appear(rightButton,{duration:0.25,afterFinish:appearRightFinished});
}

function showPageButtons()
{
  if (pageButtonsVisible)
    return;
  pageButtonsVisible=true;
  validatePageButtons();
}
  
function hidePageButtons()
{
  if (!pageButtonsVisible)
    return;
  pageButtonsVisible=false;
  fadeLeft();
  fadeRight();
}

function mouseMove(e)
{
  var leeway=50;
  var offset=container.viewportOffset();
  var mouseX=Event.pointerX(e)-offset.left;
  var mouseY=Event.pointerY(e)-offset.top;
  if (mouseX>=0&&mouseX<=(818+16+leeway)&&mouseY>=0&&mouseY<=172)
    showPageButtons();
  else
    hidePageButtons();
}

Event.observe(window,'load',setup,false);