var Application = (function () {

    function decorateLabels()
    {
        $$('label').each(function(l) {
            if ("" != l.accessKey) {
                l.cleanWhitespace();
                if (l.firstChild && l.firstChild.tagName)
                    return;
                var index = l.innerHTML.toUpperCase().indexOf(l.accessKey.toUpperCase());
                if (-1 != index) {
                    l.update(l.innerHTML.substr(0, index) + '<span class="accesskey">' +
                        l.innerHTML.charAt(index) + '</span>' +
                        l.innerHTML.substr(index + 1));
                }
            }
        });
    } // decorateLabels
    
    function focusFirstElement()
    {
        $$('form').each(function(form) {
            if (!form.hasClassName('skip_focus')) {
                form.focusFirstElement();
                throw $break;
            }
        });
    } // focusFirstElement
    
    function init()
    {
        decorateLabels();
        focusFirstElement();				
    } // init
    
    return {
        'init': init
    }

})();

function initialize() {
	// initializeMosaic();
} // initialize

function initializeMosaic() {
	var advertising = $('advertising');
	if(COMMERCIAL_MESSAGE) {
		if(mosaic) {
			mosaic.observe('click', function(e) {
				showCommercialMessage(COMMERCIAL_MESSAGE);	
			});			
		}
		
		if(advertising) {
			advertising.observe('click', function(e) {
				showCommercialMessage(COMMERCIAL_MESSAGE);	
			});			
		}
	}
}

function getBody() {
	return $(document.body);
}

function showCommercialMessage(message) {	
	showOverlay();
	updateInFrontOfOverlayContent(message);	
}

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) {
		closeOverlay();
	});
	
	ifoOverlay.insert({ 'top': element });
} // createCloseinFrontOfOverlayButton

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

function findOrCreateOverlay() {
  var overlay = $("overlay") || function() {
    var element = new Element("div", { id: "overlay" });
		getBody().insert({ 'top': element });
    return element;
  }()
  return overlay;
}
		
function closeOverlay(overlay) {
  var overlay = overlay || $("overlay");
  var inFrontOfOverlay = $("ifoOverlay");
  if(inFrontOfOverlay) {
		new Effect.Fade(inFrontOfOverlay, {
			afterFinish: function(e) {
				if(overlay) overlay.hide();
			}
		});
  } else {
		overlay.hide();
  }
} // closeOverlay

function clearInFrontOfOverlayContent(container) {
  var container = container || inFrontOfOverlay();

  container.childElements().each(function(child) {
    if(!child.hasClassName("close") && child.id != 'closeIfoOverlay') child.remove();
  });
} // clearInFrontOfOverlayContent

function updateInFrontOfOverlayContent(content) {
  var container = inFrontOfOverlay();
  // Indispensble pour avoir les bons calculs de hauteur.
	container.show();
  clearInFrontOfOverlayContent(container);
  if(container) {
		container.insert({ 'top': content });
  }

  return container;
} // updateInFrontOfOverlayContent

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