var aHeaders      = $$('.header');
var aSlides       = $$('#slides span');
var iSlideWidth   = 0;
var aSlideSpans   = $$('#headSlider span');
var bSliding      = false;
var oSlideTimeout = false;

 if(aHeaders.length > 0) {
  for(i = 0; i < aSlideSpans.length; i++) {
    if(aSlideSpans[i].hasClassName('left')) {
      Event.observe(aSlideSpans[i], 'click', slide.bind(this,0));
    } else if(aSlideSpans[i].hasClassName('right')) {
      Event.observe(aSlideSpans[i], 'click', slide.bind(this,1));
    } else {
      Event.observe(aSlideSpans[i], 'click', switchHeader.bind(this,i-1,undefined));
    }
  }

  for(i = 0; i < aSlides.length; i++) {
    iSlideWidth += aSlides[i].getWidth();
  }

  $('slides').down('div').setStyle({width: iSlideWidth+'px'});

  var iSliderWidth = $('slides').getWidth();
  switchHeader(0);
}

function slide(iDirection) {
  if(!bSliding) {
    bSliding = true;
    var iStep = 200;
    var iMax  = (iSlideWidth-iSliderWidth)*(-1);

    if(!iDirection) {
      var iLeft = parseInt($('slides').down('div').getStyle('margin-left'))+iStep;
    } else {
      var iLeft = parseInt($('slides').down('div').getStyle('margin-left'))-iStep;
    }

    if(iLeft >= 0) {
      iLeft = 0;
    }

    if(iLeft <= iMax) {
      iLeft = iMax;
    }

    new Effect.Morph($('slides').down('div'),{style: 'margin: 0 0 0 '+(iLeft)+'px', duration:0.5, afterFinish: function() {bSliding = false;}});
  }
}

function centerActiveSlide(index) {
  bSliding  = true;
  var iLeft = 0;
  for(i = 0; i < index; i++) {
    iLeft += parseInt(aSlides[i].getWidth())+1;
  }

  var iCheckLeft = iLeft + parseInt(aSlides[i].getWidth());
  iLeft         -= (Math.round(iSliderWidth/2)-Math.round((parseInt(aSlides[i].getWidth()))/2));

  if(iLeft <= 0) {
    iLeft = 0;
  }

  if(iCheckLeft >= iSlideWidth) {
    iLeft = iSlideWidth-parseInt(iSliderWidth);
  }

  new Effect.Morph($('slides').down('div'),{style: 'margin: 0 0 0 -'+iLeft+'px', duration:1, afterFinish: function() {bSliding = false;}});
} 

function switchHeader(iNewIndex, iOldIndex, event) {
  if(!bSliding) {
    if(!aHeaders.length) {
      return false;
    }

    if(iNewIndex >= aHeaders.length) {
      iNewIndex = 0;
    }

    for(i = 0; i < aHeaders.length; i++) {
      aHeaders[i].setStyle({zIndex:(i == iNewIndex ? 1 : 0)});
    }

    var iHeight = aHeaders[iNewIndex].getHeight() > 200 ? aHeaders[iNewIndex].getHeight() : 388;

    $('header').setStyle({height: iHeight+'px'});

    if(event) {
      activeSlide  = $$('#slides span.active');
      activeHeader = $$('.header.active');

      if(activeHeader[0] != aHeaders[iNewIndex]) {
        new Effect.Parallel([oFade   = new Effect.Fade(activeHeader[0], {sync:true}),
                             oAppear = new Effect.Appear(aHeaders[iNewIndex], {sync:true})], {
                             duration: 1
                           });

        activeHeader[0].removeClassName('active');
        aHeaders[iNewIndex].addClassName('active');

        activeSlide[0].removeClassName('active');
        aSlides[iNewIndex].addClassName('active');
      }
    } else {
      if(iOldIndex != undefined) {
        new Effect.Parallel([oFade   = new Effect.Fade(aHeaders[iOldIndex], {sync:true}),
                             oAppear = new Effect.Appear(aHeaders[iNewIndex], {sync:true})], {
                             duration: 1
                           });

        aHeaders[iOldIndex].removeClassName('active');
        aHeaders[iNewIndex].addClassName('active');

        aSlides[iOldIndex].removeClassName('active');
        aSlides[iNewIndex].addClassName('active');
      } else {
        aHeaders[iNewIndex].show();
        aHeaders[iNewIndex].addClassName('active');
        aSlides[iNewIndex].addClassName('active');
      }
    }

    centerActiveSlide(iNewIndex);

    if(aHeaders.length > 1) {
      if(oSlideTimeout) {
        clearTimeout(oSlideTimeout);
      }
      oSlideTimeout = setTimeout('switchHeader('+(iNewIndex+1)+', '+iNewIndex+')',5000);
    }
  }
}
