/**
 * @author Vlad Yakovlev
 * @requires jQuery 1.2
 * @requires jTweener 0.2
 */

$(function() {
  var fader = $('#page_fader');
  if ('block' == fader.css('display')) {
    jTweener.addTween(fader, {
      opacity: 0,
      time: 1,
      onComplete: function() {
        fader.css('display', 'none');
      }
    });
  }
  
  var isFaded = false;
  var isLoaded = false;
  var href;
  var isKeyPressed = false;
  
  $(document).keydown(function() {
    isKeyPressed = true;
  });
  
  $(document).keyup(function() {
    isKeyPressed = false;
  });
  
  $('body').click(function(event) {
    if (isKeyPressed) {
      return;
    }
    
    var el = $(event.target);
    
    while (el.size()) {
      if (el.attr('href') && 'mailto:' != el.attr('href').substr(0, 7) && !el.attr('target')) {
        href = el.attr('href');
        fader.css({
          opacity: 0,
          display: 'block'
        });
        
        jTweener.addTween(fader, {
          opacity: 1,
          time: 0.5,
          onComplete: function() {
            isFaded = true;
            if (isLoaded) {
              loadPage();
            }
          }
        });
        
        $.ajax({
          timeout: 1000,
          url: href,
          complete: function(req, status) {
            isLoaded = true;
            if (isFaded) {
              loadPage();
            }
          }
        });
        return false;
        } else {
          el = el.parent();
        }
      }
    });
    
    function loadPage() {
      location.href = href;
    }
});
