/*globals Cufon YAHOO WALDORF */

WALDORF = function() {

  var $E  = YAHOO.util.Event;
  var $D  = YAHOO.util.Dom;
  var $   = YAHOO.util.Dom.get;

  return {
    init: function() {

      var c;

      $E.onAvailable('primary', function(e) {
        c = new Cufon(this.getElementsByTagName('a'), { hover: true });
      });

      $E.onAvailable('secondary', function(e) {
        var lis = $D.getChildren(this);
        var els = [];
        for (var i = 0; i < lis.length; i++) {
          els.push($D.getFirstChild(lis[i]));
        }
        c = new Cufon(els, { hover: true });
      });

      c = new Cufon(document.getElementsByTagName('h1'), { hover: true });
      c = new Cufon(document.getElementsByTagName('h2'), { hover: true });
      c = new Cufon($D.getElementsByClassName('cufon'));

      $E.onAvailable('gallery', function(e) {
        var lis = this.getElementsByTagName('li');
        if(lis.length > 1) {
          $D.setStyle(lis, 'display', 'none');
          $D.setStyle(lis[0], 'display', 'block');
          var nav = document.createElement('ul');
          nav.id = 'gallery-controls';
          var next = document.createElement('li');
          var prev = document.createElement('li');
          next.id = 'next';
          prev.id = 'prev';
          next.appendChild(document.createTextNode('nächstes Bild »'));
          prev.appendChild(document.createTextNode('« vorheriges Bild'));
          nav.appendChild(prev);
          nav.appendChild(next);
          this.parentNode.appendChild(nav);
          $D.setStyle($('prev'), 'opacity', 0.5);
        }
        $E.on(nav, 'click', function(e) {
          $E.stopEvent(e);
          var t = $E.getTarget(e);
          var lis = $('gallery').getElementsByTagName('li');
          var next, current;
          for (var i = 0; i < lis.length; i++) {
            if($D.getStyle(lis[i], 'display') == 'block') {
              current = lis[i];
              if(t.id == 'next' && lis[i+1]) {
                next = lis[i+1];
              } else if(t.id == 'prev' && lis[i-1]) {
                next = lis[i-1];
              }
              break;
            }
          }
          if(next) {
            $D.setStyle(['next', 'prev'], 'opacity', 1);
            var next_img = next.getElementsByTagName('img')[0];
            var current_img = current.getElementsByTagName('img')[0];
            var fadeOut = new YAHOO.util.Anim(current_img, { 
              opacity: {
                from: 1,
                to: 0
              }}, 0.7);
            var fadeIn = new YAHOO.util.Anim(next_img, { 
              opacity: {
                from: 0,
                to: 1
              }}, 0.7);
            fadeIn.onStart.subscribe(function() {
              $D.setStyle(next_img, 'opacity', 0);
              $D.setStyle(next_img, 'display', 'block');
            });      
            fadeIn.onComplete.subscribe(function() {
              $D.setStyle(current_img, 'display', 'none');
            });      
            fadeIn.animate();
            fadeOut.animate();
            if(next_img.height != current_img.height) {
              var anim = new YAHOO.util.Anim(next_img, { 
                height: { 
                  from: current_img.height, 
                  to: next_img.height }}, 0.25);
              anim.animate();
            }
            $D.setStyle(current, 'display', 'none');
            $D.setStyle(next, 'display', 'block');
            if(next == lis[lis.length-1]) {
              $D.setStyle($('next'), 'opacity', 0.5);
            } else if(next == lis[0]) {
              $D.setStyle($('prev'), 'opacity', 0.5);
            }
          }
        });
      });

    }
  };

}();

YAHOO.util.Event.onDOMReady(WALDORF.init);

