
var searchbox = new Class(
{
  initialize: function()
  {
    this.t   = false;
    this.fx  = new Fx.Morph( $('searchwrapper'), { duration:500, wait:false, transition: Fx.Transitions.Sine.easeOut });
    this.fx2 = new Fx.Morph( $('searchresult'), { duration:500, wait:false, transition: Fx.Transitions.Sine.easeOut });
    
    
    $('s').set('autocomplete','off');
    $('s').addEvent('focus',this.grow.bind(this));
    $('s').addEvent('blur',this.shrink.bind(this));
    $('s').addEvent('keyup',this.keyup.bind(this));
    $('searchreset').addEvent('click',this.reset.bind(this));
    
    if ($("s").value == "")
    {
      $("searchsample").setStyle("display","block");
      $("searchreset").removeClass("reset");
    }
    else
    {
      $("searchsample").setStyle("display","none");
      $("searchreset").addClass("reset");
    }
    
    $("searchresult").setStyle("display","none");
  },
  
  grow : function()
  { 
    this.fx.start({ 'width':  250 });
    $('searchsample').setStyle('display','none');
    
    if ($("s").value != "")
      this.delaySearch();
  },
  
  shrink : function()
  {
    this.fx.start({ 'width':  110 });
    
    if ($("s").value == "")
    {
      $("searchsample").setStyle('display','block');
      $("searchreset").removeClass('reset');
    }
    
    this.fx2.start({ 'opacity':  0 , 'onComplete' : function(){
      (function(){
        $("searchresult").setStyle("display","none"); 
      }).delay(1000)       
    }});
  },
  
  keyup : function()
  {
    if ($("s").value == "")
      $("searchreset").removeClass('reset');
    else
      $("searchreset").addClass('reset');

    this.delaySearch();     
  },
  
  reset : function()
  {
    $("s").value = "";
    $("searchreset").removeClass("reset");    
    $("searchsample").setStyle('display','block');   
  },
  
  delaySearch : function()
  {
    clearTimeout(this.t);  
    this.t = this.getJson.delay(500, this);
  },
    
  buildHtml : function(responseObject)
  {
      var textBuffer = "";;

      for(var i = 0; i < responseObject.length; i++)
      {
        if (responseObject[i].type == "header")
        {
          textBuffer = textBuffer + '<h4 class="searchhead">' + responseObject[i].title + "</h4> <ul>";
        }
        else if ( responseObject[i].type == "noresult")
        {
          textBuffer = textBuffer +
          '<ul><li><strong>'
          + responseObject[i].title 
          + "</strong></li>"
        }        
        else if (responseObject[i].type == "cat" )
        {
          textBuffer = textBuffer +
          '<li class="cat">'
          + responseObject[i].title 
          + "</li>"
        }
        else
        {
        
          textBuffer = textBuffer +
          '<li><a href="'+responseObject[i].link+'">'
          + responseObject[i].title + '</a>'
          + "</li>"
  
        }
      }
      textBuffer = textBuffer + "</ul>";    
    
    return textBuffer;
  },
  
  getJson : function()
  {
    if ( $("s").value == "")
      return;
    
    if ( $("searchreset").hasClass("reset") )
    {
      $("searchreset").removeClass("reset");
      $("searchreset").addClass("had_reset");
    }
    $("searchreset").addClass("spinner");
    
    var jsonRequest = new Request.JSON({
      url: "/wp-content/plugins/moosearch/mootools_results.php",
      onSuccess: function(obj,txt)
      {
        $("searchresult").setStyle("display","block");
          this.fx2.start({ 'opacity':  0.8 });
    
        $("sresultinner").innerHTML = this.buildHtml(obj);
      }.bind(this),
      onComplete: function()
      {
        $("searchreset").removeClass("spinner");
        
        if ( $("searchreset").hasClass("had_reset") )
          $("searchreset").addClass("reset");
     
      }.bind(this),      
      onFailure: function () { 
				
			}
    }).get({'s': $("s").value});

  }  

});

var menueffect = new Class({
  
  initialize: function()
  {
    $$(".page_item").addEvent('mouseenter',this.moveup.bind(this));
    $$(".page_item").addEvent('mouseleave',this.movedown.bind(this)); 
  },
  
  moveup : function(e)
  {
    var element = e.target;
    while (!$(element).hasClass("page_item")) element = element.parentNode;
    
    element.morph({ marginTop: 0});
  },
  
  movedown : function(e)
  {
    var element = e.target;
    while (!$(element).hasClass("page_item")) element = element.parentNode;
    
    element.morph({ marginTop: 10});
  }
  
});

var pagemenu = new Class({
  
  Implements: [Options],
  
  options:
  {   
    button : "postmenubutton",
    layer  : "postmenumiddle"
  },
  
  initialize: function(options)
  {
    this.setOptions(options);
    
    if ($(this.options.button))
    {
      $(this.options.button).addEvent('click',this.click.bind(this));
      this.slide = new Fx.Slide( this.options.layer ).hide();
    }
  },
  
  click : function(e)
  {
    e.stop();
		
    if ( $(this.options.button).hasClass("open") )
    {
      $(this.options.button).addClass("close");
      $(this.options.button).removeClass("open");
      this.slide.slideOut();

    }
    else
    {
      $(this.options.button).addClass("open");
      $(this.options.button).removeClass("close");
      this.slide.slideIn();
    }
  }
});

var teaser = new Class(
{
  Implements: [Options],
  
  options:
  {   
    ulid   : "teaser",
    lid    : "teaserlinks",
    num    : 0
  },
  
  initialize: function()
  {
    // init
    this.timer   = false
    this.current = 0;
    this.force   = false;
    
    // die background divs halb tranzparent
    $$('span.tbg').each(function(el){
      el.setStyle('opacity',0.5);
    });
    
    // blöcke durchsichtig bis auf den ersten
    $$('li.teaserblock').each(function(el){
      if (this.options.num == 0)
      {
        el.setStyle('display','block');
        el.setStyle('opacity',1);
      }
      else
      {
        el.setStyle('display','none');
        el.setStyle('opacity',0);
      }
        
      // blöcke zählen
      this.options.num++
    }.bind(this));
    
    this.createLinkList();
    
    $$('li.teaserli')[this.current].addClass("current");
    
    this.swapPage();
  },
  
  createLinkList: function()
  {
    var myUL = new Element('UL', {
        'id': 'teaserlinks'
    });
    
    myUL.inject($('teaser'), 'after');
    
    
    // populate
    var c = 0;
    $$('li.teaserblock').each(function(el){
      
      var text = el.getElement('span.h3').get('text');      
      var myLI = new Element('LI', {
          'class': 'teaserli',
          'mynum' : c++,
          'text' : text ,
          'events':
          {
            'click': function(e){
                var el = e.target;
                this.force = el.get('mynum');
                this.turnPage();                
            }.bind(this),
            'mouseover': function(){
                //console.log('mouseovered');
            }
          }
          
      });
      myLI.inject($('teaserlinks'));      
    }.bind(this));


  },
  
  swapPage: function()
  {
    clearTimeout(this.timer);  
    this.timer = this.turnPage.delay(5000, this);
  },
  
  turnPage: function()
  {
    if ( (this.fxn && this.fxn.timer != null) )
    {
      clearTimeout(this.timer);
      this.timer = this.turnPage.delay(500, this);
      return;
    }
    
    var next = this.current + 1;
    if (next >= this.options.num) next = 0;    
    if (this.force)
    {
      next = this.force
      this.force = false;
    }
           
    this.fxc = new Fx.Morph( $$('li.teaserblock')[this.current], { duration:1000, wait:false, transition: Fx.Transitions.Sine.easeOut ,
                             complete: function(e){ e.setStyle('display','none');  } });
    this.fxn = new Fx.Morph( $$('li.teaserblock')[next], { duration:1000, wait:false, transition: Fx.Transitions.Sine.easeOut });
    
    $$('li.teaserblock')[next].setStyle('display','block');
    
    this.fxc.start({ 'opacity':  0 });
    this.fxn.start({ 'opacity':  1 });
    
    $$('li.teaserli')[this.current].removeClass("current");
    $$('li.teaserli')[next].addClass("current");
    
    this.current = next;
    this.swapPage();
  }
});



window.addEvent('domready', function(){
  
  if ($('teaser'))
  {
    var t = new teaser();
  }
  
  if ($('searchwrapper'))
  {
    var sb = new searchbox();
  }
	
  var me = new menueffect();
  
  if ($("postmenubutton"))
  {
    var pm = new pagemenu();
  }
});
