/**
 * Methode permettant d'appeler un actionLink, un EventLink ou un pageLink
 */
executeActionFromOtherComponent = function(actionName) {
    var actionLink = $(actionName);
    if(actionLink != null)
    {
	    var myLink = Tapestry.findZoneManager( actionLink );
	    if (myLink){
		    myLink.updateFromURL( actionLink.href );
	    }
	    else{
	    	window.location.href = url;
	    }
    }
}

var myLiteBox;
var isShowOverlay = false;
var isShowPopup = false;

/**
 * Méthode permettant de lancer la gestion d'une popup
 * la variable parameters est une String dont les valeurs sont séparées par un virgule
 * le premier paramètre est le nom de la popup à afficher et le reste ses paramètres
 */
initPopup = function()
{
	if(!isShowPopup)
	{
		cacheLesElements();
		isShowPopup = true;
		myLiteBox = new LiteBox();
		myLiteBox.getOverlays().showOverlays();
		isShowOverlay = true;
		return true;
	}
	
	return false;
}

/**
 * Permet d'afficher le contenu d'une popup
 * Contanue à afficher en paramètre
 */
renderPopup = function(parameters)
{
	if(isShowOverlay)
	{	
		isShowOverlay = false;
		myLiteBox.getOverlays().hideOverlays();
		jQuery(".Popup01").hide();
		myLiteBox.showLiteBox(parameters);
	}
}

closePopup = function()
{
	if(myLiteBox) {
		myLiteBox.closeLiteBox();
	}/* else {
		if(litebox) {
			litebox.closeLiteBox();
		}
	}*/
	jQuery(".Popup01").hide();
	isShowPopup = false;
	isShowOverlay = false;
	afficheLesElements();
}

cacheLesElements = function()
{
	if(getByClassName('aCacherPopup')!=null)
	{
		var elements = getByClassName('aCacherPopup');
		
		for (i=0;i<elements.length;i++) 
		{
			elements[i].style.display="none";
		}
	}
}

afficheLesElements = function()
{
	if(getByClassName('aCacherPopup')!=null)
	{
		var elements = getByClassName('aCacherPopup');
		
		for (i=0;i<elements.length;i++) 
		{
			elements[i].style.display="";
		}
	}
	initShoppingList();
}

getByClassName = function(className) {

  var parentElement = document.body;
  
  var children = parentElement.getElementsByTagName('*');
  var re = new RegExp('\\b' + className + '\\b');
  var element, elements = [];
  var i = 0;
  while ( (element = children[i++]) ){
    if ( element.className && re.test(element.className)){
      elements.push(element);
    }
  }
  return elements;
}


/**
 * Ces méthodes permettent d'afficher ou de fermer les popup qui se trouve dans le composant Tapestry PopupContainer
 * sans utiliser d'appels ajax.
 */
afficherPopup = function(height, width, timeToLeave)
{
	if(document.getElementById("layer_popup") != null)
	{
		/* Permet de récupérer la hauteur et la largeur de la fenêtre pour chaque navigateur */
		var myWidth = 0, myHeight = 0;
		if( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight;
		} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			myWidth = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
		/* Fin */
		
		layer = document.getElementById("layer_popup");
		styleLayer = (layer.style);
		styleLayer.width = width;
		styleLayer.height = height;

		styleLayer.left = ((((myWidth - layer.clientWidth)/2)/ myWidth)*100) + "%";
		styleLayer.top = ((((myHeight - layer.clientHeight)/2)/ myHeight)*100) + "%";
		
		if(timeToLeave > 0)
		{
			setTimeout("executeActionFromOtherComponent('closepopup');",timeToLeave);
		}
	}
}

/**
 * Permet d'afficher le layer blanc correctement sur la page
 */
afficherLayerBlanc = function()
{
	if(document.getElementById("background-layer") != null)
	{
		styleLayer = (document.getElementById("background-layer").style);
		styleLayer.height = getDocHeight() + "px";
	}
}

/**
 * Permet de récupérer la hauteur du document. Fonctionne pour tous les navigateurs
 */
getDocHeight = function() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

