YAHOO.namespace ("promo");
    
    var $E = YAHOO.util.Event;
    var $D = YAHOO.util.Dom;
    
    var $elemActive;
    var $elemNext;
    var $isFading;
    var $doPlay;
    var $isPlaying;         
    var $arrayPromoElems = new Array();
    
    
    function PromoElem(link, image, description, price, index){
      this.index = index;    
      this.elemLink = link;
      this.elemImage = image;
      this.elemDesc = description;
      this.elemPrice = price; 
    }
    
    
    YAHOO.promo.init = function() {                 
      
      $isFading = false;
      $isPlaying = false;      
      
      
      elemBox=$D.get("promo-box");     
      if(elemBox){
        // Alle Links sammeln ->
        elemThumbs = $D.get("promo-thumbs");     
        collLinks = $D.getElementsByClassName("ptlnk_norm", "a", elemThumbs);
        
        // Alle Bilder sammeln ->
        elemImageBox = $D.get("promo-img-box");     
        collImages = $D.getElementsByClassName("promo-img", "img", elemImageBox);
        
        // Alle Bezeichnungen sammeln ->
        elemDescriptionBox = $D.get("promo-descs");
        collDescs = $D.getElementsByClassName("promo-desc", "span", elemDescriptionBox); 
        
        // Alle Preise sammeln ->
        elemPriceBox = $D.get("promo-prices");
        collPrices = $D.getElementsByClassName("promo-price", "div", elemPriceBox); 
        
        
        // Aktives Objekt setzen
        if (collLinks.length > 0){
          $elemActive = new PromoElem(collLinks[0], collImages[0], collDescs[0], collPrices[0], 0);
          $elemActive.elemImage.style.display="inline";
          $elemActive.elemDesc.style.display="inline";
          $elemActive.elemPrice.style.display="block";
          $elemActive.elemLink.className="ptlnk_active";                
        }
         
        // Verknüpfung zwischen den Elementen herstellen (Objekte erstellen)
        for (var i = 0; i < collLinks.length; i++){
          newPromoElem = new PromoElem(collLinks[i], collImages[i], collDescs[i], collPrices[i], i);
          $arrayPromoElems[i] = newPromoElem;
          $E.on(collLinks[i], 'click', YAHOO.promo.clickLink, newPromoElem, true);
          $E.on(collLinks[i], 'mouseover', YAHOO.promo.mouseOverLink, newPromoElem, true);
          $E.on(collLinks[i], 'mouseout', YAHOO.promo.mouseOutLink, newPromoElem, true);                       
        }  
        
        collMovieStopper = $D.getElementsByClassName("movie-stopper");      
        for(var i = 0; i < collMovieStopper.length; i++){
          $E.on(collMovieStopper[i], 'mouseover', YAHOO.promo.loopStop);
          $E.on(collMovieStopper[i], 'mouseout', YAHOO.promo.loopStart);       
        }
        
        $D.get("promo-box-loading").style.display="none";
        $D.get("pb_interface").style.display="block";
        
        YAHOO.promo.loopStart();
      }  
                      
    };
    
    YAHOO.promo.fadeOut = function() {      
      var myAnim = new YAHOO.util.Anim('promo-img-box', {opacity: {to: 0}}, 0.1);
      myAnim.onComplete.subscribe(YAHOO.promo.afterFadeOut);
      myAnim.animate();            
    };
    
    YAHOO.promo.fadeIn = function() {      
      var myAnim = new YAHOO.util.Anim('promo-img-box', {opacity: {to: 1}}, 0.3);
      myAnim.onComplete.subscribe(YAHOO.promo.afterFadeIn);      
      myAnim.animate();     
    };
    
       
    YAHOO.promo.afterFadeOut = function() {                   
      if($elemActive){ 
        $elemActive.elemImage.style.display="none";
        $elemActive.elemPrice.style.display="none";        
      }                
      if($elemNext){
        $elemNext.elemImage.style.display="inline";
        $elemNext.elemPrice.style.display="block";                
      }     
      $elemActive = $elemNext;      
      YAHOO.promo.fadeIn();        
    }
    
    YAHOO.promo.afterFadeIn = function() {     
      $isFading = false;   
    }
    
    YAHOO.promo.clickLink = function(e, obj){          
      if(e){
        $E.stopEvent(e);
      }  
      
      if((!$isFading) &&(obj.elemImage != $elemActive.elemImage)){
        
        $isFading = true;
        
        if($elemActive){
          $elemActive.elemLink.className="ptlnk_norm";
          $elemActive.elemDesc.style.display="none";
        }
        
        $elemNext = obj;        
        $elemNext.elemDesc.style.display="inline";
        
        $elemNext.elemLink.className="ptlnk_active";                          
        YAHOO.promo.fadeOut();
      }                                        
    }
    
    YAHOO.promo.mouseOverLink = function(e, obj){
      /*$E.stopEvent(e);*/     
      
      for(var i = 0; i < $arrayPromoElems.length; i++){
        $arrayPromoElems[i].elemDesc.style.display="none";        
      }                                           
      obj.elemDesc.style.display="inline";      
    }           
    
    YAHOO.promo.mouseOutLink = function(e, obj){
      /*$E.stopEvent(e);*/
           
      for(var i = 0; i < $arrayPromoElems.length; i++){
        $arrayPromoElems[i].elemDesc.style.display="none";        
      }
      if($elemActive){
        $elemActive.elemDesc.style.display="inline";
      }          
    }
    
    /* Playback */       
    YAHOO.promo.loopStart = function(){      
      $doPlay=true;
      YAHOO.promo.nextFrame(-1);                                                         
    }
    
    YAHOO.promo.waitFor = function(){
      $isPlaying = false;
      YAHOO.promo.nextFrame(0);      
    }
    
    YAHOO.promo.nextFrame = function(shift){
      if((!$isPlaying) && $doPlay && $elemActive){
        for(var i = 0; i < $arrayPromoElems.length; i++){          
          if($elemActive.index == i){            
            nextIndex = i + 1 + shift;
            if (nextIndex >= $arrayPromoElems.length){
              nextIndex = 0;
            }                         
            YAHOO.promo.clickLink(null, $arrayPromoElems[nextIndex]);
            
            $isPlaying = true;
            setTimeout("YAHOO.promo.waitFor()", 6000); /*YAHOO.promo.loopStart();*/                                                           
            break;           
          }
        }
      }
    }
   
    YAHOO.promo.loopStop = function(){
      $doPlay = false;            
    }
    
    
    YAHOO.util.Event.on(window, 'load', YAHOO.promo.init, YAHOO.promo, true);                                                                                                          