//***********************************************
// VLS 20/12/2004 - Gestion d'une fenêtre PopUp
//***********************************************
var NavIE5=(document.getElementById && document.all)? true : false;
var bMoveOK = false;
var offsetX = 0;
var offsetY = 0;
var heightPage = 0;
var widthPage = 0;
var curPopup = null;
var tMesPopup = new Array();
var OffsetCtrl = 5;     // Offset par rapport au contrôle
var OffsetWin = 5;      // Offset par rapport à la fenêtre

//f: Fonctions servant à sauvegarder les anciennes fonctions
function OnMouseUpSave(){return}
function OnMouseMoveSave(){return}

// Association des évènements au document
if(document.onmouseup)
    OnMouseUpSave = document.onmouseup;
document.onmouseup = stopdep;
if(document.onmousemove)
    OnMouseMoveSave = document.onmousemove;
document.onmousemove = movepopup;

//f: Déplacement de la fenêtre en même temps que la souris
// A priori ne sert plus vraiment, mais on sais jamais...
function movepopup(evt)
{
	if(bMoveOK && (offsetX > 0) && (offsetY > 0) && (curPopup != null))
	{
        // Récupération de la position de la souris
		var x = ((NavIE5) ? window.event.clientX + document.body.scrollLeft : evt.pageX);
		var y = ((NavIE5) ? window.event.clientY + document.body.scrollTop : evt.pageY);

        // Déplacement de la fenêtre courante
		curPopup.style.left = x - offsetX + 'px';
		curPopup.style.top = y - offsetY + 'px';
	}

    // Appel éventuel de l'ancien gestionnaire d'évènement
    OnMouseMoveSave(evt);
}

//f: Déplacement de la fenêtre en même temps que la souris
//pe: offX : position de la souris dans la fenêtre en X
//pe: offY : position de la souris dans la fenêtre en Y
function movepopupfromfille(offX, offY)
{
	if(bMoveOK && (offsetX > 0) && (offsetY > 0) && (curPopup != null))
	{
        // Future position
        var leftPos = parseInt(curPopup.style.left, 10) + (offX - offsetX);
        var topPos = parseInt(curPopup.style.top, 10) + (offY - offsetY);

        // On vérifie que l'on ne sort pas de la fenêtre sinon on arrête
        if((topPos < OffsetWin) || (leftPos < OffsetWin) ||
           ((parseInt(curPopup.style.height, 10) + topPos) > (heightPage - OffsetWin)) ||
           ((parseInt(curPopup.style.width, 10) + leftPos) > (widthPage - OffsetWin)))
        {
            arretdep();
            return;
        }

        // Déplacement de la fenêtre courante
		curPopup.style.left = leftPos + 'px';
		curPopup.style.top = topPos + 'px';
	}
}

//f: Début du déplacement de la fenêtre
//pe: p_idPopup : Nom du div principal de la fenêtre
//pe: offX : position de la souris dans la fenêtre en X
//pe: offY : position de la souris dans la fenêtre en Y
function startdep(p_idPopup, offX, offY)
{
    // Stockage de la fenêtre courante pour savoir laquelle déplacer
	curPopup = document.getElementById(p_idPopup);

    // Sauvegarde de l'offset
    offsetX = offX;
    offsetY = offY;

    // Sauvegarde des dimensions de la page
    heightPage = ((NavIE5) ? document.body.scrollHeight : document.height);
    widthPage = ((NavIE5) ? document.body.scrollWidth : document.width);

	bMoveOK = true;
}

// Fin du déplacement de la fenêtre
function stopdep()
{
    // Réinitialisation des variables pour indiquer la fin du déplacement
    arretdep();

    // Appel éventuel de l'ancien gestionnaire d'évènement
    OnMouseUpSave();
}

// Fin du déplacement de la fenêtre
function arretdep()
{
	bMoveOK = false;
	offsetX = 0;
	offsetY = 0;
    curPopup = null;
}

//f: Affichage de la fenêtre
//pe: p_idPopup : Nom du div principal de la fenêtre
//pe: p_idCtrl : Nom du contrôle à partir duquel positionner la fenêtre
//pe: p_sAlign : Alignement par rapport au contrôle
// top, bottom, left ou right -> autour du contrôle
// none -> en haut à gauche du contrôle
function showpopup(p_idPopup, p_idCtrl, p_sAlign)
{
	var MaPopUp = document.getElementById(p_idPopup);

    // Détermination de la position du contrôle appelant
	Ctrl = document.getElementById(p_idCtrl);
	var	PosLeftCtrl = 0;
	var	PosTopCtrl = 0;
    var WidthCtrl = Ctrl.offsetWidth;
    var HeightCtrl = Ctrl.offsetHeight;
	do
    {
	    Ctrl = Ctrl.offsetParent;
		PosLeftCtrl	+= Ctrl.offsetLeft;
		PosTopCtrl += Ctrl.offsetTop;
	}
    while(Ctrl.tagName!="BODY");

    // Récupération de la taille de la popup
    var iWidthPopup = tMesPopup[p_idPopup]['WidthPopup'];
    var iHeightPopup = tMesPopup[p_idPopup]['HeightPopup'];

    MaPopUp.style.width = iWidthPopup + 'px';
    MaPopUp.style.height = iHeightPopup + 'px';

    // Dimensionnement de l'IFrame
    var sNomVarIFrame = tMesPopup[p_idPopup]['IFrameName'];
	IFrame = document.getElementById(sNomVarIFrame);
    if(IFrame)
    {
        IFrame.style.height = iHeightPopup - 4 + 'px';
        IFrame.style.width = iWidthPopup - 4 + 'px';
    }

    // Positionnement de la popup
    if((p_sAlign == 'top') || (p_sAlign == 'bottom'))
    {
        MaPopUp.style.left = ((PosLeftCtrl + (WidthCtrl / 2)) - (iWidthPopup / 2)) + 'px';
        if(p_sAlign == 'top')
            MaPopUp.style.top = PosTopCtrl - iHeightPopup - OffsetCtrl + 'px';
        else
            MaPopUp.style.top = PosTopCtrl + HeightCtrl + OffsetCtrl + 'px';
    }
    else if((p_sAlign == 'left') || (p_sAlign == 'right'))
    {
        MaPopUp.style.top = ((PosTopCtrl + (HeightCtrl / 2)) - (iHeightPopup / 2)) + 'px';
        if(p_sAlign == 'left')
            MaPopUp.style.left = PosLeftCtrl - iWidthPopup - OffsetCtrl + 'px';
        else
            MaPopUp.style.left = PosLeftCtrl + WidthCtrl + OffsetCtrl + 'px';
    }
    else
    {
        MaPopUp.style.left = PosLeftCtrl + 'px';
        MaPopUp.style.top = PosTopCtrl + 'px';
    }

    // Affichage de la Popup
    MaPopUp.style.visibility = 'visible';
    MaPopUp.style.display = 'block';
}

//f: Fermeture de la fenêtre
//pe: p_idPopup : Nom du div principal de la fenêtre
function hidepopup(p_idPopup)
{
   // VLS 14/11/2006 - Pb avec IE7 qui désactive ce qui est sous la Pop-Up
   // En plus du visibility il faut positionner le display...
	var MaPopUp = document.getElementById(p_idPopup);
   MaPopUp.style.display = 'none';
   MaPopUp.style.visibility = 'hidden';
}
