var Site = {
  
  // initialize page and all its many wonderful functions
  start: function(){
    if($('nav')) {
      marker = $('nav-marker');
      Site.setnav();
    }
    if($('search')) {
      search = $('search');
      Site.setsearch();
    }
  },
    
    
  setsearch: function(){
  	$('search-input').setAttribute('autocomplete', 'off');
  	document.onkeypress = Site.disableEnterKey;
    $('search-form').addEvent('keydown', function(e) {
      if ($('search-input').value.length > 2) {
        if (search.getStyle('height') == '75px') {
          search.effect('height', {
            duration: 1000,
            transition: Fx.Transitions.Cubic.easeOut
          }).start(75, 300)
        }
      	var results = $('search-results').empty();
      	this.send({
      		update: results
       	});
     	}
     	if ($('search-input').value.length == 0 &&
     	  search.getStyle('height') == '300px') {
     	  Site.closesearch();
     	}
    });
    $('search-close').addEvent('click', function(){
      $('search-input').value = '';
      Site.closesearch()
    });
  },
  
  disableEnterKey: function(e) {
    var key = (window.event) ? event.keyCode : e.which;
    if (key != 13 && key != 3) {
      return key;
    }
    else return false;
  },
  
  closesearch: function(){
    search.effect('height', {
      duration: 1000,
      transition: Fx.Transitions.Cubic.easeOut
    }).start(300, 75);
  },
  
  
  setnav: function() {
    
    // set initial nav state and styles
	if($$('#nav li .current')[0]) {
	  marker.setStyle('left', 0);
	  marker.setStyle('top', $$('#nav li .current')[0].getTop()+11);
	}
	else {
	  marker.setStyle('left', -20);
    }
    $$('#nav li a').setStyle('background', 'transparent');
    
    var slide = new Fx.Style(marker, 'top', {
      duration: 1100,
      transition: Fx.Transitions.Cubic.easeOut,
      wait: false
    });

    var slideover = new Fx.Style(marker, 'left', {
      duration: 600,
      transition: Fx.Transitions.Cubic.easeOut,
      wait: false
    });

    
    // set mouseover for each nav item
    $$('#nav li a').each(function(e){
       e.addEvent('mouseenter', function(){
         // for initial home page
         if (marker.getLeft() == -20) {
           marker.setStyle('top', e.getTop()+11);
           slideover.start(-20, 0);
         }
         // for other cases
         else {
           var a = marker.getTop();
           var b = e.getTop()+11;
           slide.start(a, b);
         }
       });
       
    });
    
    // return to default when done
    $('nav').addEvent('mouseleave', function(){
      if($$('#nav li .current')[0]) {
        var a = marker.getTop();
        var b = $$('#nav li .current')[0].getTop()+13;
        slide.start(a, b);
      }
      else {
        slideover.start(0, -20);
      }
    });
  },
  

  slidemarker: function(state) {
    if (state == 'out') {
      var a = 0;
      var b = -20;
    }
    else {
      var a = -20;
      var b = 0;
    }
    marker.effect('left', {
      duration: 700,
      transition: Fx.Transitions.Cubic.easeOut,
      wait: false
    }).start(a, b);
  }

}

window.addEvent('domready', Site.start);