
TRF = function() {

  var $D = YAHOO.util.Dom;
  var $E = YAHOO.util.Event;
  var $A = YAHOO.util.Anim;
  var $M = YAHOO.util.Motion;
  var $P = YAHOO.photoViewer;
  var $ = $D.get;

  var carousel;

  return {

    fader: function() {

      var Images = $('slideshow').getElementsByTagName('li');

      var Cur = 0;
      var Next = 0;
      
      for(var i = 0; i < Images.length; i++) {
        if($D.getStyle(Images[i], 'opacity') > 0) {
          Cur = i;
        } else {
          $D.setStyle(Images[i], 'opacity', 0);
        }
      }
      
      if(Cur != Images.length - 1) {
        Next = Cur + 1;
      }

      var ImageOut = new YAHOO.util.ColorAnim(Images[Cur], {opacity: { from: 1, to: 0 }});

      ImageOut.onComplete.subscribe(function(e, anim) { 
        $D.removeClass(Images[Cur], 'active');
        $D.addClass(Images[Next], 'active');
        var ImageIn = new YAHOO.util.ColorAnim(Images[Next], {opacity: { from: 0, to: 1 }});
        ImageIn.animate();
      });

      ImageOut.animate();

    },

    init: function() {

      if (YAHOO.env.ua.ie == 6) {
        var sfEls = $('first').getElementsByTagName('li');
        for (var i = 0; i < sfEls.length; i++) {
          sfEls[i].onmouseover=function() {
            this.className+=" hover";
          }
          sfEls[i].onmouseout=function() {
            this.className=this.className.replace(new RegExp(" hover\\b"), "");
          }
        }
      }

      if($('options-on')) {
        $E.on(['options-on', 'options-off'], 'click', function(e) {
          $E.stopEvent(e);
          var form = $D.getAncestorByTagName(this, 'form');
          var items = $D.getElementsByClassName('optional', 'li', form, function() {
            if($D.hasClass(this, 'show')) {
              $D.replaceClass(this, 'show', 'hide');
            } else if(!$D.hasClass(this, 'hide')) {
              $D.addClass(this, 'show');
            } else {
              $D.replaceClass(this, 'hide', 'show');
            }
          });
          if($D.getStyle('options-on', 'display') == 'block') {
            $('options-state').value = '1';
            $D.setStyle('options-on', 'display', 'none');
            $D.setStyle('options-off', 'display', 'block');
          } else {
            $('options-state').value = '0';
            $D.setStyle('options-on', 'display', 'block');
            $D.setStyle('options-off', 'display', 'none');
          }
        });
      }

      if($('sidebar')) {

        var hidden_dates = $D.getElementsByClassName('hidden', 'li', 'sidebar');
        if(hidden_dates.length > 0) {
          $D.setStyle(hidden_dates, 'display', 'none');
          var li = document.createElement('li');
          var a = document.createElement('a');
          a.innerHTML = 'alle Termine...';
          $D.addClass(a, 'more');
          li.appendChild(a);
          hidden_dates[0].parentNode.appendChild(li);
          $E.on(a, 'click', function(e) {
            $E.stopEvent(e);
            $D.setStyle(hidden_dates, 'display', 'block');
            $D.setStyle(this, 'display', 'none');
          });
        }
      }

      if($('slideshow')) {

        var Images = $('slideshow').getElementsByTagName('li');
        var Start = Math.floor(Math.random() * (Images.length));

        $D.setStyle(Images, 'opacity', 0);
        $D.removeClass(Images, 'hidden');

        $D.setStyle(Images[Start], 'opacity', 1);
        $D.addClass(Images[Start], 'active');

        $D.removeClass($('next'), 'hidden');

        fader = setInterval(TRF.fader, 6000);

      }
      
      if($('gallery')) {

        if($('next') && $('previous') && (
              YAHOO.env.ua.ie >= 8 
              || YAHOO.env.ua.webkit
              || YAHOO.env.ua.opera
              || YAHOO.env.ua.gecko)) {

          $D.setStyle($('gallery').getElementsByTagName('li'), 'display', 'block');
          $D.setStyle(['next', 'previous'], 'display', 'block');

          var carousel = new YAHOO.widget.Carousel($('gallery'), {
            numVisible: 1,
            animation: { speed: 0.5, effect: YAHOO.util.Easing.easeOut },
            navigation: { prev: 'previous', next: 'next' },
            isCircular: true
          });
          carousel.render();
          carousel.show();

          $E.on('next', 'click', function(e) {
            $E.stopEvent(e);
            carousel.scrollForward();
          });

          $E.on('previous', 'click', function(e) {
            $E.stopEvent(e);
            carousel.scrollBackward();
          });

        }

        $P.config = {
          viewers: {
            "carousel" : {
              properties: {
                id: "carousel",
                grow: 0.2,
                fade: 0.2,
                modal: true,
                dragable: false,
                fixedcenter: true,
                loadFrom: "html",
                position: "absolute",
                buttonText: { next: "nächstes Bild", prev: "vorheriges Bild", close: "schließen" }, 
                easing: YAHOO.util.Easing.easeBothStrong
              }
            }
          }
        };
        $P.controller.init();
      }

    }

  }


}();

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