/* VARONE: ouvre un div sur la page, simule un popup
Doit avoir accès au fct ajax (dans functions.js)
pUrl: l'url a charger via ajax
*/
var iNbScriptToLoadInPopup = 0 ;
var  xmlPopup ;
var divPopupContent;
var divPopupContainer=null;
var divPopupWaitingContainer=null;

function submitPopup(psId)
{
	waitOnEndPopup();
	document.getElementById(psId).click();
}

function waitOnEndPopup()
{
	if(!divPopupContent)
		return false;
	
	divPopupWaitingContainer = document.createElement("div");
	divPopupContent.appendChild(divPopupWaitingContainer);
	divPopupWaitingContainer.id = "divPopupWaitingContainer";
	divPopupWaitingContainer.style.position="absolute"; 
	divPopupWaitingContainer.style.top = "0px";
	divPopupWaitingContainer.style.left = "0px" ;
	
	var divPopupEnd = document.createElement("div");
	divPopupWaitingContainer.appendChild(divPopupEnd);
	divPopupEnd.id = "popupEnd";
	divPopupEnd.style.position="absolute"; 
	divPopupEnd.style.top = "0px";
	divPopupEnd.style.left = "0px";
	divPopupEnd.style.width = divPopupContent.offsetWidth + "px";
	divPopupEnd.style.height = divPopupContent.offsetHeight + "px";
	divPopupEnd.className = "opaque50" ;
	
	var divPopupWait = document.createElement("div");
	divPopupWaitingContainer.appendChild(divPopupWait);
	divPopupWait.style.position="absolute"; 
	divPopupWait.style.width = divPopupContent.offsetWidth + "px";
	divPopupWait.style.marginTop = "50px" ;
	divPopupWait.innerHTML = "<div style='text-align:center;'>" + getAjaxWait() + "</div>";
	
	return true ;	
}

//Function pour fermer la popupWaiting
function closeOnEndPopup()
{
	if(divPopupWaitingContainer!=null)
	{
		divPopupContent.removeChild(divPopupWaitingContainer);
		divPopupWaitingContainer = null;	
	}
}

function divPopup(pUrl)
{
	openDivPopup(pUrl, false);
}

function divPopupImage(pUrl)
{
	openDivPopup(pUrl, false, true);
}

function imitDivPopup(pDiv, pisIE)
{
	
	if(pisIE && navigator.appName.indexOf('Microsoft')!=-1)
		openDivPopup(pDiv, true);	
	else if(!pisIE && !(navigator.appName.indexOf('Microsoft')!=-1))
		openDivPopup(pDiv, true);	
}


function openDivPopup(pUrl, pbIsImitation, pbImage)
{
	//Commence par fermer le divpopup si il y en a 1
	divPopupClose();
	
	/*Variables initialisation*/
	var marginTop = 50; //Espace au sommet
	var resizingTimer = 10; //Vitesse du rafraichissement lors de scroll et resize du browser
	var opacity = 50;  //Pourcent de l'opacité
	var opacityTimer = 1; //Vitesse de l'opacité
	var opacityStep = 20; //Incrementation de l'opacite toutes les opacityTimer milliseconde 
	var classBgDivPopup = "bgDivPopup"; //Class pour définir la couleur de fonds des popups
	var opaqBgColor = "#000020"; //Class pour définir la couleur de fonds des popups
	
	/*DIV CONTAINER*/
	divPopupContainer = document.createElement("div");
	document.body.appendChild(divPopupContainer);
	divPopupContainer.id = "popupContainer";
	divPopupContainer.style.position="absolute"; 
	divPopupContainer.style.top = divPopupContainer.style.left="0px";
	//divPopupContainer.style.width= document.body.offsetWidth + "px";Pas de largeur au container, prends la largeur nécessaire
	divPopupContainer.style.height="100%"; //Hauteur à 100% comme ca j'ai la hauteur de la fenetre visible avec le offsetHeight
	divPopupContainer.style.zIndex= 2000;
	
	
	/*DIV OPACITY*/
	var divPopupOpaq = document.createElement("div");
	divPopupContainer.appendChild(divPopupOpaq);
	divPopupOpaq.id = "popupOpaq";
	divPopupOpaq.style.position="relative"; 
	divPopupOpaq.style.backgroundColor=opaqBgColor;
	divPopupOpaq.style.width = document.body.offsetWidth + "px";
	if(document.body.offsetHeight>document.body.parentNode.clientHeight)
		divPopupOpaq.style.height = document.body.offsetHeight + "px";
	else
		divPopupOpaq.style.height = document.body.parentNode.clientHeight + "px";
		
	/*Fermeture sur le click de div opaq
	if(divPopupOpaq.attachEvent)
		divPopupOpaq.attachEvent("onclick", function(event){document.body.removeChild(divPopupContainer);return true;});
    else if(divPopupOpaq.addEventListener)
    	divPopupOpaq.addEventListener("click", function(event){document.body.removeChild(divPopupContainer);return true;}, true);
	*/
	
    var iOpacity = 0;
	window.setOpacity = function()
	{
		if(iOpacity<opacity)
		{
			iOpacity += opacityStep;
			divPopupOpaq.style.filter = "alpha(opacity=" + iOpacity + ")"; 
			divPopupOpaq.style.opacity = iOpacity/100;
			divPopupOpaq.style.MozOpacity = iOpacity/100;
			setTimeout("setOpacity()", opacityTimer);
		}
	}
	setOpacity();
	
	/* DIV CONTENT */ 
	//Si c'est une imitation, le param pUrl est un id de div, je le recupere et traite ses propriete
	if(pbIsImitation)
	{
		divPopupContent = document.getElementById(pUrl);
		divPopupContent = divPopupContent.parentNode.removeChild(document.getElementById(pUrl));
		divPopupContainer.appendChild(divPopupContent);
		divPopupContent.style.width = divPopupContent.offsetWidth + "px";
		divPopupContent.style.zIndex= divPopupContainer.style.zIndex+1; //1001;
		divPopupOpaq.style.height = parseInt(divPopupOpaq.style.height) +  divPopupContent.offsetHeight  + "px";
		divPopupContent.style.backgroundColor="transparent"; 	
	}
	else //Sinon je creer le div
	{
		divPopupContent = document.createElement("div");
		divPopupContainer.appendChild(divPopupContent);
		divPopupContent.id = "popupContent";
		divPopupContent.style.backgroundColor="transparent"; 	
		divPopupContent.innerHTML = getAjaxWait(); //Met l'image d'attente
	}
	
	//Propriete commune au divPopupContent pour imitation ou pas
	divPopupContent.style.position="absolute"; 
	divPopupContent.className = classBgDivPopup;
	
	//Initialistation de la position
	window.initPopupPosition = function()
	{
		divPopupContent.style.left= getPopupCenteredPercentage(divPopupOpaq.offsetWidth, divPopupContent.offsetWidth);
		var posY = getPopupPosY() + marginTop; //marge de marginTop
		divPopupContent.style.top = posY + "px";
		//Recalcul la hauteur du divPopupOpaq
		if((posY + divPopupContent.offsetHeight)>parseInt(divPopupOpaq.style.height))
			divPopupOpaq.style.height = posY + divPopupContent.offsetHeight + "px";
	};
	initPopupPosition();
	
	if (pbImage)
	{
		loadImage(pUrl) ;
		return ;
	}

	//Si c'est pas une imitation, je charge l'url en ajax
	if(!pbIsImitation)
	{
		//Appeler en ajax
		var xhr = getAjaxRequest();
		
		xhr.onreadystatechange=function()
		{
		   	if(xhr.readyState == 4)
				if(xhr.status == 200)
			    {
			    	//Charge le contenu et adapte les tailles
				    //alert (" response : " + xhr.responseText) ;
				    //document.write(xhr.responseText);
				    //return;
			    	 xmlPopup = xhr.responseXML;
			    	//divPopupContent.innerHTML = xhr.responseText;
			    	
			    	
			    	//Ajout des scripts dans le header
			    	var nodes = xmlPopup.getElementsByTagName('script')[0];
			    	if(nodes.childNodes.length>0)
			    	{
			    		//recup du head et des script deja mis
			    		var head = document.getElementsByTagName("head")[0];
			    		var aCurScript = head.getElementsByTagName("script");
			    		var sCurScript = ""; //Creation d'une chaine avec les scripts deja present
			    		for(i=0;i<aCurScript.length;i++)
			    			if(aCurScript[i].src!="")
			    				sCurScript += aCurScript[i].src + ";";
			    			
			    		//Ajout des script dans le header
			    		var aAppendedScript = new Array();
			    		iNbScriptToLoadInPopup = 0 ;
			    		
			    		for(i=0; i<nodes.childNodes.length;i++)
			    		{
			    			if(nodes.childNodes[i].firstChild)
			    			{
				    			var newSrc = nodes.childNodes[i].firstChild.nodeValue;
				    			if(sCurScript.indexOf(newSrc)<0) //Si le script exist pas deja, je le creer
				    			{
				    				++iNbScriptToLoadInPopup ;
				    				aAppendedScript[aAppendedScript.length] = document.createElement("script");
					    			var idx = aAppendedScript.length-1;
					    			aAppendedScript[idx].type = "text/javascript";
					    			aAppendedScript[idx].src = newSrc;
									head.appendChild(aAppendedScript[idx]);
									//aAppendedScript[aAppendedScript.length] = newScript;
									sCurScript += newSrc + ";";
									//alert ("new script : " + newSrc ) ;
									
									aAppendedScript[idx].onload = function (){--iNbScriptToLoadInPopup;};
									aAppendedScript[idx].onreadystatechange = function (){if (this.readyState == "loaded" || this.readyState == "complete"){--iNbScriptToLoadInPopup;this.onreadystatechange=null;}};//Remet le onreadystatechange à null pour pas que ca passe de fois, si 1 fois loaded et 1 fois complete (mais pas toujour le cas) 
				    			}
			    			}
			    		}
			    	}
			    	
			    	Waitcomplete("iNbScriptToLoadInPopup==0", "loadScriptOnLoad()", 20)	;
		        }
		}
	
		xhr.open("get", pUrl, true);
		xhr.send(null);
	}
	
	
	//Resize de la popup
	window.resizePopup = function()
	{
		//Si plus de popup, je me casse
		if(divPopupContainer==null)
			return;
		//Resize le div opaq (en largeur uniquement), si la taille a changer
		var newWidth = document.body.offsetWidth + "px";
		if(newWidth != divPopupOpaq.style.width)
		{
			divPopupOpaq.style.width = newWidth;
			divPopupContent.style.left= getPopupCenteredPercentage(divPopupOpaq.offsetWidth, divPopupContent.offsetWidth);
		}
		divPopupOpaq.style.left= 0 + getPopupPosX() + "px";
			
		var newPos = getPopupPosY() + marginTop;
		if(newPos<parseInt(divPopupContent.style.top) ||  ((divPopupContent.offsetHeight+marginTop)<parseInt(divPopupContainer.offsetHeight) && (divPopupContent.offsetHeight+marginTop)<document.body.parentNode.clientHeight)) 
			divPopupContent.style.top= newPos + "px";	
		
		//Recheck toutes les resizingTimer milliseconde		
		setTimeout("resizePopup()", resizingTimer);	
	
	};
	
	resizePopup();
	
	
	
}

//renvoi la position en hauteur du control selon la hauteur de la scroll
function getPopupPosY()
{
	var body = (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	return ns ? pageYOffset : body.scrollTop;
}

//renvoi la position en largeur du control selon la largeur de la scroll
function getPopupPosX()
{
	var body = (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	return ns ? pageXOffset : body.scrollLeft;
}

//Calcul le pourcent à mettre à la propriété left (left:20%) pour que le contenu soit centré
function getPopupCenteredPercentage(pOpaqWidth, pContentWidth)
{
	return parseInt((pOpaqWidth/2 - pContentWidth/2) * 100/pOpaqWidth)+"%";
}

//Function pour fermer la popup
function divPopupClose()
{
	if(divPopupContainer!=null)
	{
		document.body.removeChild(divPopupContainer);
		divPopupContainer = null;	
	}
}

function Waitcomplete(condition, fct_after, ms)
{
	//alert (iNbScriptToLoadInPopup) ;
	if (eval(condition))
 	  	eval(fct_after) ;
  	else
    	setTimeout("Waitcomplete('" + condition + "', '" + fct_after + "', " + ms+ ")", ms);
}
		
function loadScriptOnLoad()
{
	//Contenu HTML
	nodes = xmlPopup.getElementsByTagName('html')[0]; 
	divPopupContent.innerHTML = nodes.firstChild.nodeValue;
	//alert("html : " +  divPopupContent.innerHTML) ;
	
	//Fixe la taille du divPopupContent une fois le html en place
	divPopupContent.style.width = divPopupContent.offsetWidth + "px";
	
	//Ajout du script a execute si il y en a un
	nodes = xmlPopup.getElementsByTagName('onload')[0]; 

	//Initialise la position de la popup
	initPopupPosition();

	var loadScript = document.createElement("script");
	loadScript.type = "text/javascript";
	loadScript.text = nodes.firstChild.nodeValue;
	
	divPopupContainer.appendChild(loadScript);

}
function loadImage(pUrl)
{
	//Contenu HTML
	
	oImage = new Image();
	oImage.src = pUrl ;
	var size;
	var largeur = oImage.width ;
	var hauteur = oImage.height ;
	
	if (largeur > 900)
	{
		divPopupContent.style.width = 900 + "px";;
		divPopupContent.style.overflow = "auto" ;
	}
	else
		divPopupContent.style.width = largeur + "px";
		
	if (hauteur > 500)
	{
		divPopupContent.style.height = 500 + "px";;
		divPopupContent.style.overflow = "auto" ;
	}
	else
		divPopupContent.style.height = hauteur + "px";
		
	divPopupContent.style.border = "1px solid #ffffff;" ;
		
	divPopupContent.innerHTML = '<img onclick="divPopupClose()" src="'+ pUrl + '" />';
	
	//Initialise la position de la popup
	initPopupPosition();	
}