/*-------------------------------------------------------------
getData

Cette fonction renvoi le contenu d'un fichier.

Note : Le fichier requet� doit �tre sur le m�me domaine

fileUrl	: Url du fichier dont on veut le contenu

Auteur : SUPAD
-------------------------------------------------------------*/
function getData(fileUrl)
{
	if(window.XMLHttpRequest) // FIREFOX
		xhr_object = new XMLHttpRequest();
	else if(window.ActiveXObject) // IE
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return(false);

	xhr_object.open("GET", fileUrl, false);
	xhr_object.send(null);

	if(xhr_object.readyState == 4)
		return(xhr_object.responseText);
	else
		return(false);
}

/*-------------------------------------------------------------
testAjax

Cette fonction teste si l'AJAX est utilisable sur ce navigateur

Auteur : SUPAD
-------------------------------------------------------------*/
function testAjax()
{
	/*if(window.XMLHttpRequest) // FIREFOX
		return true;
	else if(window.ActiveXObject) // IE
		return true;
	else*/
		return false;
}


/*---------------------------------------------
Cette fonction renvoi le div transparent qui 
prend la totalit� de l'�cran pour mettre en 
valeur la popup

id		: Identifiant du div, il sera prefix� de 'bg_div_'
zIndex		: Profondeur de la position du div
color		: Couleur du div
bgImg		: Image en background
aPosition	: Array contenant dans cet ordre :
			top
			right
			bottom
			left
alpha		: Alpha du background - 0 transparent, 100 opaque - d�faut � 0

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function getBackgroundDiv(id, zIndex, color, bgImg, aPosition, alpha)
{
	var s_html;
	var s_color;
	var s_bgImg;
	var s_top;
	var s_right;
	var s_bottom;
	var s_left;
	var s_alpha;
	
	if(color != "")
		s_color = 'background-color:'+color+';';
	else
		s_color = "";
		
	if(bgImg != "")
		s_bgImg = 'background:url("'+bgImg+'");';
	else
		s_bgImg = "";
		
	if(zIndex != "")
		s_zIndex = 'z-index:'+zIndex;
	else
		s_zIndex = "";
		
	if(aPosition != "")
	{
		// Top
		if(aPosition[0] != "")
			s_top = 'top:'+aPosition[0]+';';
		else
			s_top = 'top:0px;';
			
		// Right
		if(aPosition[1] != "")
			s_right = 'right:'+aPosition[1]+';';
		else
			s_right = "";

			
		// Bottom
		if(aPosition[2] != "")
			s_bottom = 'bottom:'+aPosition[2]+';';
		else
			s_bottom = "";

			
		// Left
		if(aPosition[3] != "")
			s_left = 'left:'+aPosition[3]+';';
		else
			s_left = 'left:0px;';
	}
	else
	{
		s_top = "";
		s_right = "";
		s_bottom = "";
		s_left = "";
	}
	
	if(alpha == "")
		alpha = 0;
	else
		alpha = alpha;

	s_alpha = 'opacity:'+(alpha/100)+';-moz-opacity:'+(alpha/100)+';filter:progid:DXImageTransform.Microsoft.Alpha(opacity='+alpha+');';

	// Style concatene
	s_style = 'display:none;position:absolute;'+s_color+s_bgImg+s_top+s_right+s_bottom+s_left+s_alpha+s_zIndex;
	
	// On ouvre le div
	s_html = '<div id="bg_div_'+id+'" style="'+s_style+'"></div>';
	
	return s_html;
}

/*---------------------------------------------
Cette fonction renvoi le div dans lequel sera le contenu

id		: Identifiant du div, il sera prefix� de 'content_div_'
zIndex		: Profondeur de la position du div
height		: Hauteur voulue du background
width		: Largeur voulue du background
aPosition	: Array contenant dans cet ordre :
			top
			right
			bottom
			left
alpha		: Alpha du background - 0 transparent, 100 opaque - d�faut � 0

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function getContentDiv(id, zIndex, height, width, aPosition, alpha, sHtml)
{
	var s_html;
	var s_height;
	var s_width;
	var s_top;
	var s_right;
	var s_bottom;
	var s_left;
	var s_alpha;
	
	if(height != "")
		s_height = 'height:'+height+';';
	else
		s_height = "";

	if(width != "")
		s_width = 'width:'+width+';';
	else
		s_width = "";
	
	if(zIndex != "")
		s_zIndex = 'z-index:'+zIndex;
	else
		s_zIndex = "";
	
	if(aPosition != "")
	{
		// Top
		if(aPosition[0] != "")
			s_top = 'top:'+aPosition[0]+';';
		else
			s_top = 'top:0px;';
			
		// Right
		if(aPosition[1] != "")
			s_right = 'right:'+aPosition[1]+';';
		else
			s_right = "";

			
		// Bottom
		if(aPosition[2] != "")
			s_bottom = 'bottom:'+aPosition[2]+';';
		else
			s_bottom = "";

			
		// Left
		if(aPosition[3] != "")
			s_left = 'left:'+aPosition[3]+';';
		else
			s_left = 'left:0px;';
	}
	else
	{
		s_top = "";
		s_right = "";
		s_bottom = "";
		s_left = "";
	}
	
	if(alpha == "")
		alpha = 0;
	else
		alpha = alpha;

	s_alpha = 'opacity:'+(alpha/100)+';-moz-opacity:'+(alpha/100)+';filter:progid:DXImageTransform.Microsoft.Alpha(opacity='+alpha+');';

	// Style concatene
	s_style = 'display:none;position:absolute;'+s_height+s_width+s_top+s_right+s_bottom+s_left+s_alpha+s_zIndex;

	// On ouvre le div
	s_html = '<div id="content_div_'+id+'" style="'+s_style+'">'+sHtml+'</div>';
	
	return s_html;
}
 
/*---------------------------------------------
Cette fonction met � 100% de l'ecran en hauteur,
en largeur, ou les deux un �l�ment dont l'id est pass�

id	: Identifiant de l'�l�ment
bWidth	: Booleen indiquant si on met la largeur � 100%
bHeight	: Booleen indiquant si on met la hauteur � 100%

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function setToScreenSize(id, bWidth, bHeight)
{
	// On recup�re la taille de l'�cran du navigateur
	// Mozilla (autres pas test�)
	if (window.innerWidth)
	{
		curW = '100%';
		curH = '100%';
	}
	// IE
	if (document.all != null)
	{
		curW = document.body.clientWidth;
		curH = document.body.clientHeight;
	}	

	if(bWidth)
		document.getElementById(id).style.width=curW;
		
	if(bHeight)
		document.getElementById(id).style.height=curH;
}

/*---------------------------------------------
Cette fonction met aux coordonn�es de la fenetre pass�es
l'element dont l'id est pass�

id	: Identifiant de l'�l�ment

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function setTo(id, x, y)
{
	document.getElementById(id).style.top = y;
	document.getElementById(id).style.left = x; 
}
 
/*---------------------------------------------
Cette fonction met au milieu de la fenetre
l'element dont l'id est pass�

id	: Identifiant de l'�l�ment

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function setToCenter(id, elementWidth, elementHeight)
{
	// S'il y a une unit� pass� aux taille, on la retire
		// Unit� de la largeur
		elementWidthUnit = getCssUnits(elementWidth);
		// Unit� de la hauteur
		elementHeightUnit = getCssUnits(elementHeight);
		// Largeur
		elementWidth = noCssUnits(elementWidth);
		// Hauteur
		elementHeight = noCssUnits(elementHeight);

	// On recup�re la taille de l'�cran du navigateur
	// Mozilla (autres pas test�)
	if (window.innerWidth)
	{
		curW = window.innerWidth-20;
		curH = window.innerHeight;
	}
	// IE
	if (document.all != null)
	{
		curW = document.body.clientWidth-20;
		curH = document.body.clientHeight;
	}
	
	// On recupere le scroll actuel
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		var curScrollY = document.documentElement.scrollTop;
		var curScrollX = document.documentElement.scrollLeft;
		
		// Dans le cas ou on est pas dans une page avec un DOCTYPE, le scroll est dans document.body.scrollTop
		if(curScrollY == 0 && document.body.scrollTop > 0)
			curScrollY = document.body.scrollTop;

		if(curScrollX == 0 && document.body.scrollLeft > 0)
			curScrollX = document.body.scrollLeft;
	}
	else if (navigator.appName == "Netscape")
	{
		var curScrollY = window.pageYOffset;
		var curScrollX = window.pageXOffset;
	}

	if((curH/2)-(elementHeight/2)+curScrollY < 0)
		curTop = 10;
	else
		curTop = (curH/2)-(elementHeight/2)+curScrollY;

	// On calcul la position du top
	document.getElementById(id).style.top = curTop+elementHeightUnit;

	if((curW/2)-(elementWidth/2)+curScrollX < 0)
		curLeft = 0;
	else
		curLeft = (curW/2)-(elementWidth/2)+curScrollX;

	// On calcul la position du left
	document.getElementById(id).style.left = curLeft+elementWidthUnit;
}

/*---------------------------------------------
Cette fonction met au milieu de la fenetre
le content div dont l'id est pass�

id	: Identifiant de l'�l�ment

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function setInternalPopupToCenter(id)
{
	setToCenter("content_div_"+id, document.getElementById("content_div_"+id).style.width, document.getElementById("content_div_"+id).style.height);
	//setToCenter("bg_div_"+id, document.getElementById("bg_div_"+id).style.width, document.getElementById("bg_div_"+id).style.height);
}

/*---------------------------------------------
Cette fonction met � 100% de l'ecran en hauteur,
en largeur, ou les deux la popup internet et le background
correspondant dont l'id est pass�.
Elle surcharge la fonction setToScreenSize(id, bWidth, bHeight)

id	: Identifiant de l'�l�ment
bWidth	: Booleen indiquant si on met la largeur � 100%
bHeight	: Booleen indiquant si on met la hauteur � 100%

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function setInternalPopupToScreenSize(id, bWidth, bHeight)
{
	setToScreenSize('bg_div_'+id, bWidth, bHeight);
}

/*---------------------------------------------
Cette fonction affiche la popup interne et le fond

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function showInternalPopup(id)
{
	document.getElementById('bg_div_'+id).style.display='block';
	document.getElementById('content_div_'+id).style.display='block';
}

/*---------------------------------------------
Cette fonction cache la popup interne et le fond

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function hideInternalPopup(id)
{
	document.getElementById('bg_div_'+id).style.display='none';
	document.getElementById('content_div_'+id).style.display='none';
}

/*---------------------------------------------
Cette fonction ecrit dans le document la popup 
interne et son fond

id		: Identifiant de la popup interne et de son fond
fondColor	: Couleur du fond
fondBgImg	: Image en background du fond
fondHeight	: Hauteur voulue du fond
fondWidth	: Largeur voulue du fond
aFondPosition	: Array contenant les position du fond dans cet ordre :
			top
			right
			bottom
			left
fondAlpha	: Alpha du fond, par d�faut � 0

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function writeInternalPopup(id, contentHtml, contentWidth, contentHeight, aContentPosition, contentAlpha, fondColor, fondBgImg, aFondPosition, fondAlpha)
{
	// z-index du fond
	bgZIndex = 50000;

	// z-index de la popup interne
	contentZIndex = 51000;

	document.write(getBackgroundDiv(id, bgZIndex, fondColor, fondBgImg, aFondPosition, fondAlpha));
	document.write(getContentDiv(id, contentZIndex, contentHeight, contentWidth, aContentPosition, contentAlpha, contentHtml));

	// On met le fond � 100%
	setInternalPopupToScreenSize(id, 1, 1);

	// On met la popup interne au centre
	setInternalPopupToCenter(id);

	// On lance le checkScroll
	checkScroll(id);
	checkResize(id);
}


/*---------------------------------------------
Cette fonction renvoi le nombre sans unit� CSS

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function noCssUnits(string)
{
	if(string.indexOf('p') > 0 || string.indexOf('%') > 0 || string.indexOf('e') > 0 || string.indexOf('i') > 0 || string.indexOf('m') > 0)
		// Si c'est un pourcentage on prend la string - 1 caract�re
		if(string.indexOf('%') > 0)
			string = string.substr(0,string.length-1);
		else
			string = string.substr(0,string.length-2);

	return string;
}

/*---------------------------------------------
Cette fonction renvoi l'unit� CSS

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function getCssUnits(string)
{
	if(string.indexOf('p') > 0 || string.indexOf('%') > 0 || string.indexOf('e') > 0 || string.indexOf('i') > 0 || string.indexOf('m') > 0)
		// Si c'est un pourcentage on prend la string - 1 caract�re
		if(string.indexOf('%') > 0)
			unit = string.substr(string.length-1,string.length);
		else
			unit = string.substr(string.length-2,string.length);

	return unit;
}

var oldScrollX = 0;
var oldScrollY = 0;
var aCheckScrollTimeout = new Array();

/*---------------------------------------------
Cette fonction remplace l'evenement onScroll et
s'il y a scroll bouge la popup interne

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function checkScroll(id)
{
	// On recupere le scroll actuel
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		var curScrollY = document.documentElement.scrollTop;
		var curScrollX = document.documentElement.scrollLeft;
		
		// Dans le cas ou on est pas dans une page avec un DOCTYPE, le scroll est dans document.body.scrollTop
		if(curScrollY == 0 && document.body.scrollTop > 0)
			curScrollY = document.body.scrollTop;

		if(curScrollX == 0 && document.body.scrollLeft > 0)
			curScrollX = document.body.scrollLeft;
	}
	else if (navigator.appName == "Netscape")
	{
		var curScrollY = window.pageYOffset;
		var curScrollX = window.pageXOffset;
	}
	
	if(curScrollX != oldScrollX || curScrollY != oldScrollY)
	{
		//setInternalPopupToCenter(id);
		setTo("bg_div_"+id, curScrollX, curScrollY);
	}
	
	aCheckScrollTimeout[id] = setTimeout("checkScroll('"+id+"')", 50);
	
	oldScrollX = curScrollX;
	oldScrollY = curScrollY;
}

var oldSizeX = 0;
var oldSizeY = 0;
var aCheckSizeTimeout = new Array();

/*---------------------------------------------
Cette fonction remplace l'evenement onResize et
s'il y a resize bouge la popup interne

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function checkResize(id)
{
	// On recup�re la taille actuelle
	if (window.innerWidth)
	{
		curSizeX = window.innerWidth;
		curSizeY = window.innerHeight;
	}
	// IE
	if (document.all != null)
	{
		curSizeX = document.body.clientWidth;
		curSizeY = document.body.clientHeight;
	}

	if(curSizeX != oldSizeX || curSizeY != oldSizeY)
	{
		setInternalPopupToScreenSize(id, 1, 1);
		setInternalPopupToCenter(id);
	}
	
	aCheckSizeTimeout[id] = setTimeout("checkResize('"+id+"')", 50);
	
	oldSizeX = curSizeX;
	oldSizeY = curSizeY;
}


var bInternalPopupShowed = false;


/*---------------------------------------------
Cette fonction permet d'afficher ou cacher la
popup interne

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function switchInternalPopup(id)
{
	if(bInternalPopupShowed)
	{
		bInternalPopupShowed = false;
		hideInternalPopup(id);
		clearTimeout(aCheckScrollTimeout[id]);
	}
	else
	{
		bInternalPopupShowed = true;
		checkScroll(id);
		showInternalPopup(id);
	}
}


/*---------------------------------------------
Cette fonction renvoi la div de la popup

Auteur : SUPAD <supad@supad.net>
----------------------------------------------*/
function getIPTxtDiv(id)
{
	return document.getElementById('content_div_'+id);
}