/******************* OVERLAY ***********************************************/
function findOrCreateOverlay() {
  var overlay = $("overlay") || function() {
    var element = new Element("div", { id: "overlay" });
    $(document.body).insert({ top: element });
    return element;
  }();
  return overlay;
}

function closeOverlay(overlay) {
  var overlay = overlay || $("overlay");
  overlay.hide();
} // closeOverlay

function closeIFO(ifo) {
  var ifo = ifo || $("ifoOverlay");
  ifo.hide();
}

function showOverlay() {
  var overlay = findOrCreateOverlay();
  overlay.show();
} // showOverlay

function hideOverlay() {
  var overlay = findOrCreateOverlay();
  overlay.hide();
} // hideOverlay

function createCloseinFrontOfOverlayButton(ifoOverlay) {
  var ifoOverlay = ifoOverlay || $("ifoOverlay");
  var element = new Element("img", { "class": "close", id: "closeIfoOverlay", src: "/images/close.png" });

  element.observe("click", function(e) {
    closeIFO();
    closeOverlay();
  });
  ifoOverlay.insert({ top: element });
} // createCloseinFrontOfOverlayButton

function inFrontOfOverlay() {
  var ifoOverlay = $("ifoOverlay") || function() {
    var element = new Element("div", { id: "ifoOverlay" });
    createCloseinFrontOfOverlayButton(element);
    $(document.body).insert({ top: element });

    return element;
  }();
  return ifoOverlay;
} // inFrontOfOverlay


function initialize() {
  var link = $('callback');
  if(link) {
    link.observe('click', function(event) {
      event.stop();
      new Ajax.Request("/rappel", {
        method: 'get',
        onSuccess: function(transport) {
          var overlay = findOrCreateOverlay();
          overlay.show();
          var ifo = inFrontOfOverlay();

          var container = ifo.down('#callback_container');
          if(container) container.remove();

          ifo.insert(transport.responseText);

          var title = ifo.down('h2');
          var form = ifo.down('form');
          if(form) {
            form.observe('submit', function(e) {
              e.stop();
              new Ajax.Request('/callback', {
                method: 'post',
                parameters: form.serialize(true),
                onSuccess: function(transport) {
                  title.className = "success";
                  title.update(transport.responseJSON.message);
                },
                onFailure: function(transport) {
                  title.className = "error";
                  title.update(transport.responseJSON.errors.join('<br/>'));
                }
              });
            });
          }

          ifo.show();
        },
        onFailure: function(transport) {
          document.location = link.href;
        }
      });
    });
  }
}

function preload() {
  $A(["bg-nav.gif", "bg-nav-hover.gif", "cliquez_pour_etre_rappele.png", "cliquez_pour_etre_rappele_hover.png", "icon-facebook.png", "icon-facebook-hover.png", "bg-blog-nav.gif", "bg-blog-nav-hover.gif"]).each(function(node) {
    var i = new Image();
    i.src = "/images/" + node;
  });
}

document.observe('dom:loaded', preload);
document.observe('dom:loaded', initialize);
