

function handleMouseScrollDetail(e) {
  
  if (Event.wheel(e) > 0)
    ScrollbarHandler.scrollUp();
  else
    ScrollbarHandler.scrollDown();
}
 



/**
 * Sorgt dafür, dass die Thumbnails in der oberen Foto-
 * Leiste auf der Schauspieler-Detail-Seite als Navigation
 * funktioniert.
 * 
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var FotoSwitchNavigation = {
  
  'init': function() {
    
    $$('#box_foto ul li a').each(function(thumbnail) {
      
      thumbnail.observe('click',function() { FotoSwitchNavigation.select(this); });
      
    });
    
    
    $('box_foto_active').observe('mouseover', function(e) {

      if ($('box_video').visible())
        return false;

      $('box_foto').removeClassName('only_print');
      $('box_foto').show();
      SchauspielerDetailHandler.timer_go();
      
    });
    
    
    $('big_bg_pic').observe('load', function() {
      new Effect.Appear($('big_bg_pic'),{duration: 0.5});
    });
    
    
    $('move_left').observe('click', function() {
      FotoSwitchNavigation.select_next();
      this.blur();
    });
    $('move_right').observe('click', function() {
      FotoSwitchNavigation.select_previous(); 
      this.blur();     
    });
        
   
  },//init()
  
  
  'select_next': function() {
    
    var alleLinks = $$('#box_foto ul li a');
    
    //Nach dem aktuellen Suchen und dadurch den
    //"nächsten" bestimmen.
    var nextLinkId = 0;
    alleLinks.each(function(link, key) {
      if (link.hasClassName('on')) nextLinkId = key - 1;
    });
    
    //Wenn die ID kleiner als 0 ist, wird wieder von
    //rechts angefangen.
    if (nextLinkId < 0) nextLinkId = alleLinks.length -1;
    
    //Neues Bild auswählen
    FotoSwitchNavigation.select( alleLinks[nextLinkId] );
    
    this.blur();
    
  },//select_next()
  
  
  'select_previous': function() {
    
    var alleLinks = $$('#box_foto ul li a');
    
    //Nach dem aktuellen Suchen und dadurch den
    //"nächsten" bestimmen.
    var nextLinkId = 0;
    alleLinks.each(function(link, key) {
      if (link.hasClassName('on')) nextLinkId = key + 1;
    });
    
    //Wenn die ID zu groß ist (= das letzte Bild ausgewählt
    //wurde), wird wieder von vorne angefangen.
    if (nextLinkId >= alleLinks.length) nextLinkId = 0;
    
    //Neues Bild auswählen
    FotoSwitchNavigation.select( alleLinks[nextLinkId] );
    
    
  },//select_previous()
  
  
  'select': function(thumbnail) {
    
    SchauspielerDetailHandler.timer_go();
    
    //Remove the "on" status from all other thumbnails
    $$('#box_foto ul li a').each(function(other_thumbnail) {
      other_thumbnail.removeClassName('on');
    });
    
    //Add the "on" status for the selected thumbnail
    thumbnail.addClassName('on');
    thumbnail.blur();
    
    //Display the new Photo
    var new_photo_url = thumbnail.down('img').src.replace("detail_thumb", "gross");
    this.change_photo(new_photo_url);
    
    //Add the Copyright Info
    $$('.footer_navigation .copyright')[0].innerHTML = thumbnail.down('img').alt;
    
    
  },//select()
  
  
  'change_photo': function( new_url ) {
    
    if ($('big_bg_pic').src == new_url)
      return false;
    
    new Effect.Fade($('big_bg_pic'),{
      duration: 0.2,
      afterFinish: function() {
        $('big_bg_pic').src = new_url;
      }
    });
    
  }//change_photo
  
  
}//FotoSwitchNavigation




/**
 * Stellt die Funktionalität für die verschiedenen Boxen
 * und die Fuß-Navigation auf der Schauspieler-Detail-Seite
 * zur Verfügung.
 *
 * TODO: REFACTOR!
 * 
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var SchauspielerDetailHandler = {
  
  'current_foot_nav_element': '',

  'timer': false,

  /**
   * Konstruktor
   */
  'init': function() {
    this.init_hide_buttons();
    this.init_foot_nav();
    
    if (window.navigator.userAgent.indexOf("MSIE 7.0") > -1) {
      $('box_news').setStyle("top: 100px;");
      $('box_skills').setStyle("top: 100px;");
    }
    
  },


  /**
   * Alle Links, mit der Klasse "hide_button" erhalten
   * die Fähigkeit auf Klick ihr Eltern-Element langsam
   * auszublenden.
   */
  'init_hide_buttons': function() {
    $$('.hide_button').each(function(link_element) {
        link_element.observe('click', function(event) {
          
            Effect.Fade(this.up(),{ duration: 0.2 });
            $('foot_news').removeClassName('on');
            window.setTimeout(function(e) {
               BasicScrollbarHandler.init_scrollbar();
            }, 250);
            
        });
    });
  },//init_hide_buttons()


  'jumpToVideo': function() {
  
  
        var box_id = 'box_video';
        

           /**
            * 1. alle Buttons als "nicht an" markieren
            * 2. den ausgewählten Button als "an" markieren
            * 3. den ausgewählten Button merken (das wird für die
            *    Scrolleiste benötigt!)
            */
           $$('.schauspieler_detail_footnav li a').each(function(item) {
               item.removeClassName('on');    
           });
           $('foot_video').addClassName('on');
           SchauspielerDetailHandler.current_foot_nav_element = 'box_video';
           
         
           /**
            * 4. alle "falschen" Boxen ausblenden
            * 5. die zugehörige, aktuelle Box einblenden (wenn sie nicht
            *    schon sichtbar ist)
            * 6. die Scrolleiste einblenden, falls die aktuelle
            *    Box "scrollable" ist.
            */
           $$('.photo_overlay_box').each(function(item) {
               if (item.id != 'box_video') item.hide();
           });
           
          $(box_id).removeClassName('only_print');
             
           if ($(box_id).style.display == 'none') {
             Effect.Appear($(box_id),{ duration: 0.2 });
           }
           
           window.setTimeout(function(e) {
              BasicScrollbarHandler.init_scrollbar();
           }, 250);
              
 

              
              if ($('bg').visible())
                new Effect.Fade($('bg'), {duration: 0.2});
              
              if ($$('.footer_navigation .copyright')[0].visible())
                new Effect.Fade($$('.footer_navigation .copyright')[0], {duration: 0.2});
                
              if ($$('.footer_navigation .seiten_navigation')[0].visible())
                new Effect.Fade($$('.footer_navigation .seiten_navigation')[0], {duration: 0.2});
                
              if ($$('#navigation')[0].visible())
                new Effect.Fade($$('#navigation')[0], {duration: 0.2});
            


            
              $('sprachwahl').hide();
            

              $('download_pdf').hide();
              
  },




  /**
   * Alle Links, die unten in der Fuß-Navigation sind (rechts
   * unten auf der Seite zum Wechseln der Sektion), erhalten
   * die Fähigkeit, auf Klick die zugehörige Inhalts-Box
   * anzuzeigen und sich selbst als "markiert" darzustellen.
   * Die Namenskonvention ist:
   *   Der Link hat die id "foot_{NAME}",
   *   die zugehörige Box "box_{NAME}".
   */
  'init_foot_nav': function() {
        
    $$('.schauspieler_detail_footnav li a').each(function(item) {
      
       $(item.id).observe('click',function(event) {
         
         
         
        var box_id = item.id.replace('foot','box');
        
        //Video anhalten, falls eine andere Box als die
        //Video-Box ausgewählt wird
        if (box_id != 'box_video') {
          try {
            document.getElementById("video_player").SetVariable("player:jsPause","");
          } catch(Error) { }
        }
   
         
         
           /**
            * 1. alle Buttons als "nicht an" markieren
            * 2. den ausgewählten Button als "an" markieren
            * 3. den ausgewählten Button merken (das wird für die
            *    Scrolleiste benötigt!)
            */
           $$('.schauspieler_detail_footnav li a').each(function(item) {
               item.removeClassName('on');    
           });
           $(item.id).addClassName('on');
           SchauspielerDetailHandler.current_foot_nav_element = box_id;
           
         
           /**
            * 4. alle "falschen" Boxen ausblenden
            * 5. die zugehörige, aktuelle Box einblenden (wenn sie nicht
            *    schon sichtbar ist)
            * 6. die Scrolleiste einblenden, falls die aktuelle
            *    Box "scrollable" ist.
            */
           $$('.photo_overlay_box').each(function(item) {
               if (item.id != box_id) item.hide();
           });
           
          $(box_id).removeClassName('only_print');
             
           if ($(box_id).style.display == 'none') {
             Effect.Appear($(box_id),{ duration: 0.2 });
           }
           
           window.setTimeout(function(e) {
              BasicScrollbarHandler.init_scrollbar();
           }, 250);
              
           
           /*
           if ($(box_id).hasClassName('scrollable'))
             Effect.Appear($('zoom_slider'),{ duration: 0.2 });
           else
            $('zoom_slider').hide();
  */
            
            /**
             * Sonderfall: Beim Video darf kein Foto als Hintergrund
             * zu sehen sein.
             */
            if (box_id == 'box_video') {
              
              if ($('bg').visible())
                new Effect.Fade($('bg'), {duration: 0.2});
              
              if ($$('.footer_navigation .copyright')[0].visible())
                new Effect.Fade($$('.footer_navigation .copyright')[0], {duration: 0.2});
                
              if ($$('.footer_navigation .seiten_navigation')[0].visible())
                new Effect.Fade($$('.footer_navigation .seiten_navigation')[0], {duration: 0.2});
                
              if ($$('#navigation')[0].visible())
                new Effect.Fade($$('#navigation')[0], {duration: 0.2});
            

            } else {
              
              if (!$('bg').visible())
                new Effect.Appear($('bg'), {duration: 0.2});
              
              if (!$$('.footer_navigation .copyright')[0].visible())
                new Effect.Appear($$('.footer_navigation .copyright')[0], {duration: 0.2});
                
              if (!$$('.footer_navigation .seiten_navigation')[0].visible())
                new Effect.Appear($$('.footer_navigation .seiten_navigation')[0], {duration: 0.2});
                
              if (!$$('#navigation')[0].visible())
                new Effect.Appear($$('#navigation')[0], {duration: 0.2});
            

            }
            
            
            if (box_id == 'box_video') {
              $('sprachwahl').hide();
            } else {
              $('sprachwahl').show();
            }
            
            if (box_id == 'box_vita')
              $('download_pdf').show();
            else
              $('download_pdf').hide();
              
            
            if (box_id == 'box_foto') {
              
              SchauspielerDetailHandler.timer_go();
              
            }
            
            
       });//$(item.id).observe
       
    });//$$('.schauspieler_detail_footnav li a').each

  
    $('foot_news').addClassName('on');
  
  },//init_foot_nav()



  timer_go: function(e) {
    
    clearTimeout(SchauspielerDetailHandler.timer);
    SchauspielerDetailHandler.timer = setTimeout("SchauspielerDetailHandler.timer_up()",3000);
    
  },//timer_go()

  timer_up: function(e) {
    
    try {
      
      new Effect.Fade('box_foto', {duration: 0.2});
      
      $('foot_foto').removeClassName('on');
      
    }catch(e) {}
    
  }//timer_up()

  
}//SchauspielerDetailHandler



/**
 * Stellt die Funktionalität der Scrolleiste zur Verfügung.
 * 
 * @author Florian Herlings <florian.herlings@gmail.com>
 */
var ScdrollbarHandler = {
  
  /**
   * In dieser Variable wird der Slider abgelegt,
   * da man in den scroll*() und der slide()-Methode
   * eine Referenz darauf benötigt.
   * @var Control.Slider
   */
  'slider': false,

  /**
   * Konstruktor
   */
  'init': function() {
    
    this.init_scrollbar();
    this.init_scrollbar_buttons();
    
  },//init()

  /**
   * Initialisiert die "Script.aculo.us"-Slider-Klasse.
   */
  'init_scrollbar': function() {

    
    
    if (SchauspielerDetailHandler.current_foot_nav_element == 'box_vita')
      var visible = true;
    else
      var visible = false;
    
    
      var box = $(SchauspielerDetailHandler.current_foot_nav_element);
      
      var box_content = false;
      if (box) {
        box_content = box.down('.scroll_content');     
      }

      if (box_content) {
        if (!visible || (box_content.getHeight() < box.getHeight()))
          visible = false;

        
        if (!visible && (box_content.getHeight() == 0))
            visible = true;
   
          
        //console.log(SchauspielerDetailHandler.current_foot_nav_element + " - " + visible + "-" + box_content.getHeight() + "-" + box.getHeight());
      }
      
      //box_content.style.top = "0px";
    
        
      

      
    //alert(visible);
      
    if (!visible) {
      
      $('zoom_slider').hide();    
      try {
        ScrollbarHandler.slider.setDisabled();
      }catch(e) {}
      
    } else {
      
      $('zoom_slider').show();
      ScrollbarHandler.slider = new Control.Slider(
        $('zoom_slider').down('.handle'),
        $('zoom_slider'),
        {
          axis: 'vertical',
          onSlide: ScrollbarHandler.slide,
          onChange: ScrollbarHandler.slide
        });
      
    }
    
    
    
  },//init_scrollbar()
  
  
  /**
   * Die Scorlleiste soll oben und unten so Buttons
   * haben. Wenn man auf diese klickt, soll der Scroller
   * entsprechend scrollen.
   */
  'init_scrollbar_buttons': function() {
    
    $('scroll_up_button').observe('click', ScrollbarHandler.scrollUp);
    $('scroll_down_button').observe('click', ScrollbarHandler.scrollDown);
    
  },//init_scrollbar_buttons()
  
  
  /**
   * Sorgt dafür, dass die Leiste um 10% nach oben gescrollt wird
   * und dass die Leiste nicht "zu weit" nach oben scrollt.
   */
  'scrollUp': function() {
    
    if ($('zoom_slider').visible() == false)
      return false;
    
    var newValue = ScrollbarHandler.slider.value - 0.1;
    if (newValue < 0) newValue = 0;
    ScrollbarHandler.slider.setValue( newValue );
    
    this.blur();
    
  },//scrollUp
  
  
  /**
   * Sorgt dafür, dass die Leiste um 10% nach unten gescrollt wird
   * und dass die Leiste nicht "zu weit" nach unten scrollt.
   */
  'scrollDown': function() {
    
    if ($('zoom_slider').visible() == false)
      return false;

    var newValue = ScrollbarHandler.slider.value + 0.1;
    if (newValue > 1) newValue = 1;
    ScrollbarHandler.slider.setValue( newValue );
        
    this.blur();
    
  },//scrollDown()
  
  
  /**
   * Wird aufgeruften, wenn der Wert der Leiste sich ändert
   * (durch direktes Verschieben des Sliders oder durch Anklicken
   * eines Buttons). Die Methode ermittelt, um wieviel insgesamt
   * gescrollt werden muss (= wieviel passt denn da nicht mehr
   * in die Box rein) und verschiebt den Inhalt der Box dem-
   * entsprechend
   * Wichtig zu wissen ist, dass der "value" immer einen Wert
   * zwischen 0 und 1 angibt: Hat man den Slider 1/4 herunter
   * gescrollt, ist der übergebene Wert "value" = 0.25!
   */
  'slide': function(value) {
    
    var box = $(SchauspielerDetailHandler.current_foot_nav_element);
    
    var box_content = box.down('.scroll_content');
    
    var hidden_pixels = box_content.getHeight() - box.getHeight();
    
    box_content.style.top = (-1*hidden_pixels*value)+"px";
    
  }//slide()
  
  
}//ScrollbarHandler



