var YD = YAHOO.util.Dom;
var YE = YAHOO.util.Event;  
var Element = YAHOO.util.Element;

YE.onDOMReady(initCarousel);

var el; 
var links; 
var play_animation = true;
var carousel_mouse_over_target;


function initCarousel(){
  el = new YAHOO.util.Element('main-carousel');
  links = el.getElementsByTagName('li');
  YE.addListener("main-carousel", 'mouseover', manualCarousel);
  fadeInNextImg();
}

function setMouseOverCurrent(){
  YD.addClass(carousel_mouse_over_target, 'carousel-current');
}


function manualCarousel(e){
  var element = new YAHOO.util.Element('main-carousel');
  carousel_mouse_over_target = YE.getTarget(e);
  var all_as = YD.getElementsByClassName("carousel-current", "a");
  
  if (YD.getAncestorByTagName(carousel_mouse_over_target, "li") && carousel_mouse_over_target.nodeName.toUpperCase() == "A"){
    
    if (play_animation){play_animation = false}
    YD.removeClass(all_as, 'carousel-current');
    setTimeout("setMouseOverCurrent()", 1);
   }
}

function fadeInNextImg(){
  if (play_animation){
    
    var current_a;
    if (!(current_a = YD.getElementsByClassName("carousel-current", "a")[0])) {
      current_a = links[Math.floor(Math.random()*15)].getElementsByTagName('a')[0];
    };
    var current_li = YD.getAncestorByTagName(current_a, "li")
    var current_img = current_a.getElementsByTagName('img')[0];
    
    var next_li = YD.getNextSibling(current_li) || links[0];
    var next_img = next_li.getElementsByTagName('img')[0];
    var next_img_a = next_li.getElementsByTagName('a')[0];
  
    YD.setStyle(next_img, 'z-index', '5');
    YD.setStyle(next_img, 'display', 'block');
    YD.setStyle(next_img, 'opacity', 0);
  
    var animation = new YAHOO.util.Anim(next_img, {opacity:{to:1}}, 2);
  
    animation.onComplete.subscribe(function(){
      YD.setStyle(current_img, 'display', '');
      YD.setStyle(current_img, 'opacity', '');
      YD.removeClass(current_a, 'carousel-current');
      YD.addClass(next_img_a, 'carousel-current');
      YD.setStyle(next_img, 'z-index', '');
    })
  
    animation.animate();

    setTimeout("fadeInNextImg()", 10000);
  }
}

