var fadeDiv;

function fadeBody(func) {
  $(document).bind("keypress", fadeKeyPress);
  fadeDiv.show().fadeTo(0, 0).fadeTo("fast", 0.3, function(){
    if(typeof func == "function") {
      func();
    } else if(typeof func == "string") {
      eval(func);
    }
  });
}

function unfadeBody() {
  $(window).unbind("keypress", fadeKeyPress);
  
  fadeDiv.fadeTo("fast", 0, function(){
    fadeDiv.hide();
  });
  
  $(window).trigger('unfadeBodyTrigger');
}

function fadeKeyPress (event) {
  if(event.keyCode == 27) { 
    // esc
    unfadeBody();
  }
}

$(function(){
  fadeDiv = $("<div></div>");
  fadeDiv.css({
    position: "fixed",
    left:     "0px",
    top:      "-10px",
    right:    "0px",
    bottom:   "0px",
    zIndex:   "10",
    backgroundColor: "#000"
  });
  
  fadeDiv.hide().appendTo(document.body);
  fadeDiv.click(unfadeBody);
});
