/*=========================================================================
|
| file:     phm-dom.js
| site:     hochklappdings.de
| descr:    DOM-Manipluation
| version:  1.0 - 2008/08/01 15:36
|
| ------------------------------------------------------------------------
|
| author:     Christoph Schüßler
| author url: http://herr-schuessler.de
|
==========================================================================*/

// firebug console output
//------------------------------------------------------------------------------
function debug(text) {
    if (window.console && window.console.log) {
        window.console.log(text);
    }
}

/* 
|
| zanmantou-integration
| 
--------------------------------------------------------------------------*/
function initAV(){
  document.audioplayer = new Zanmantou('zanmantou');
}


/* 
|
| load...
| 
--------------------------------------------------------------------------*/
 window.addEvent('load', function(){
 
  //init zanmantou
  if($('zanmantou')) {
    initAV();
  }
  
});


/* 
|
| domready...
| 
--------------------------------------------------------------------------*/

window.addEvent('domready', function(){


  //submenu
  $$('.nav-sub-hover').addClass('hidden');
  $$('.nav-sub-hover').each(function(item, index){
    item.getParent('li').addEvents({
      'mouseenter': function(){
        item.toggleClass('hidden');
        $$('.nav-sub-open').toggleClass('hidden');
        $$('.nav-sub-open').getPrevious().toggleClass('closed');
        item.getPrevious().toggleClass('open');
      },
      'mouseleave': function(){
        item.toggleClass('hidden');
        $$('.nav-sub-open').toggleClass('hidden');
        $$('.nav-sub-open').getPrevious().toggleClass('closed');
        item.getPrevious().toggleClass('open');
      }
    });
  });

  //set up audio display
  if($('zanmantou')) {
    var kategorieAccordion = new Accordion('.kategorie', '.tracks', {
      opacity: true,
      duration: 'short',
      transition: Fx.Transitions.Sine.easeInOut,
      fixedHeight: 250,
      onActive: function(kategorie, tracks){
        kategorie.getParent().addClass('kategorie-active');
        tracks.setStyle('overflow', 'auto');
      },
      onBackground: function(kategorie, tracks){
        kategorie.getParent().removeClass('kategorie-active');
        tracks.setStyle('overflow', 'hidden');
      }
    });
    
    var promoAccordion = new Accordion('.promo-toggler', '.promo', {
      opacity: true,
      duration: 'short',
      alwaysHide: true,
      show: -1,
      transition: Fx.Transitions.Sine.easeInOut
    });
   
  }
  
  // set up termin display
  if($('termine')) { 
    var termineAccordion = new Accordion('.more-toggler', '.more', {
      opacity: true,
      duration: 'short',
      alwaysHide: true,
      show: -1,
      transition: Fx.Transitions.Sine.easeInOut,
      onActive: function(toggler, element){
        toggler.set('text', 'Danke, das reicht!');
      },
      onBackground: function(toggler, element){
        toggler.set('text', 'Mehr Info!');
      }
    });
    
  }
  //open vergangene Termine
  if($('vergangene-termine-toggler')) {
    $('vergangene-termine-toggler').addEvents({
      'click': function(){
        $$('.ganz-alte-termine').toggleClass('hidden');
        this.getParent('tr').destroy();
      }
    });
  }
  
  //MuFuPlay behaviour
  if($('nav-mufuplay')) {
    $('mufuplay-kaufen').addEvents({
      'mouseenter': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      },
      'mouseleave': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      }
    });
    $('mufuplay-hoeren').addEvents({
      'mouseenter': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      },
      'mouseleave': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      }
    });
    $('mufuplay-laden').addEvents({
      'mouseenter': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      },
      'mouseleave': function(e){
        $('nav-mufuplay').toggleClass('nav-mufuplay-hover');
      }
    });
  }
  
  //add player popup
  $(document.body).getElements('a[rel="popup"]').addEvents({
    'click': function(e){
      new Event(e).stop();
      window.open(this.href, 'popup', 'width=810,height=540,status=no,scrollbars=no,resizable=no');
    }
  });
  
  //add parent link behavior
  $(document.body).getElements('a[rel="parent"]').addEvents({
    'click': function(e){
        debug(this.href);
      new Event(e).stop();
      self.opener.location = this.href;
    }
  });
  
  //add external link behavioru
  $(document.body).getElements('a[rel="extern"]').addEvents({
    'click': function(e){
      new Event(e).stop();
      window.open(this.href, 'extern');
    }
  });
  
  //add tooltips
  var tooltips = new Tips('.has-tooltip', {
    'showDelay':    0,
    'className':    'tooltip',
    'fixed':        true,
    'offsets':      {'x': 200, 'y': -40}
  });
  var tooltips = new Tips('.has-title', {
    'showDelay':    0,
    'className':    'titletip',
    'fixed':        true,
    'offsets':      {'x': 10, 'y': -45}
  });
  
  
  //add A-Z behaviour
  $$('#abc-select dt a').addEvents({
    'click': function(e){
      new Event(e).stop();
      //get viewport size
      var x = Window.getSize().x;
      var y = Window.getSize().y;
      var scrollY = Window.getScroll().y
      //get definition text
      var dd = this.getParent().getNext().get('text');
      //create elements
      var abcShow = new Element('div', {
        'id': 'abc-show',
        'styles': {
            'width':        x,
            'height':       y,
            'position':     'absolute',
            'z-index':      '100',
            'top':          scrollY,
            'left':         '0px',
            'opacity':      '0'
        },
        'events': {
          'click': function(){
              this.destroy();
          }
        }
      });
      var abcContent = new Element('div', {
        'class': 'vert-content',
        'html': dd
      });
      //insert into DOM
      abcShow.grab(abcContent);
      abcShow.inject($$('body')[0],'bottom');
      //get Element Height
      var abcContentY =  abcContent.getSize().y;
      var marginTop = (y - abcContentY) / 2;
      //adjust vertical alignement
      abcContent.setStyle('padding-top', marginTop);
      //morph opacity
      var abcShowMorph = new Fx.Morph(abcShow, {duration: 150});
 
      abcShowMorph.start({
          'opacity': [0, 0.9]
      });
      
    }
  });

});
