window.addEvent('domready', function() {
  var search = $('search');
  search.focus();
  
  var testament = 0;
  var book = 0;
  
  
  var ajax = $('found');
  var ajaxAni = new Fx.Tween('ajax-loader', {property: 'opacity', duration: 400, link: 'cancel'});
  
  var bible = $('bible');
  var optionsTitle = bible.getElement('.options .title');
  
  var options = bible.getElement('.options-bar');
  
  optionsTitle.addEvent('click', function() {
    options.toggleClass('open');
    
    if(!options.hasClass('open')) {
      options.morph({height: 13});
    }
    else {
      options.morph({height: 430});
    }
  });
  
  var ps = options.getElements('p').addEvent('click', function() {
    ps.removeClass('checked');
    this.addClass('checked');
    
    var t = this.get('text');
    optionsTitle.set('text', t);
    
    if(t == 'Koko Raamattu') {
      testament = 0;
      book = 0;
    }
    else if(t.match(/Testamentti$/)) {
      testament = t;
      book = 0;
    }
    else {
      testament = 0;
      book = t;
    }
    
    run();
    
    options.removeClass('open').setStyle('height', 13);
  });
  
  
  
  var req = new Request.HTML({
    url: '/raamattuhaku/search',
    onComplete: function(response) {
      $('howToUse').setStyle('display', 'none');
      $('results').setStyle('display', 'block');
      
      ajax.empty().adopt(response);
      
      ajax.getElements('a.what').addEvent('click', function() {
        search.value = this.get('text').replace(/:\d+/, '');
        run();
      });
      
      ajax.getElements('a.addToFavorites').addEvent('click', function() {
        var one = this.getParent().getParent();
        var id = one.get('rel');
        
        one.toggleClass('favorite');
        
        if(one.hasClass('favorite')) {
          new Request({url: '/raamattuhaku/favorite'}).get({'id': id});
        }
        else {
          new Request({url: '/raamattuhaku/favorite'}).get({'delete': id});
        }
        
        this.blur();
        return(false);
      });
      
      ajaxAni.start(0);
    }
  });
  
  var timer = false;
  
  var run = function() {
    ajaxAni.start(1);
    req.post({
      testament: testament,
      book: book,
      search: search.value
    });
  };
  
  search.addEvent('keyup', function() {
    $clear(timer);
    
    if(this.value.length > 1) {
      ajaxAni.start(1);
      timer = run.delay(500);
    }
    else {
      ajaxAni.start(0);
      $('howToUse').setStyle('display', 'block');
      $('results').setStyle('display', 'none');
    }
  });
  
  $$('select').addEvent('change', run);
});
