// Fichier JScript

//Fonction pour le control Ugo2.Controls.UITools.UIDate //
function fOpenCalandar(pDivCalandar) 
{
	var oDiv = document.getElementById(pDivCalandar);
	if (oDiv) {
		if( oDiv.style.display == "none")	oDiv.style.display = ""; 
		else											oDiv.style.display = "none"; 
	}
}


//Fonction pour le treeview de ComponentArt.UI.TreeView 
//dans Ugo2.Controls.Pagelets.Site.Editor.
function nodeSelect(node)
{
	document.getElementById('txtDropDown').value = node.Text; 
	Menu1.Hide(); 
}



//fonction de gestion d'ouverture de fenêtre
function OpenSimpleWindow(pUrl, pWidth, pHeight)
{
	var strFeatures		= "height=" + pHeight + ",width=" + pWidth + ",status=no,toolbar=no,menubar=no,location=no,scrollbars = no";
	window.open(pUrl , "PopUp", strFeatures);
}

function OpenScrollWindow(pUrl, pWidth, pHeight)
{
	var strFeatures		= "height=" + pHeight + ",width=" + pWidth + ",status=no,toolbar=no,menubar=no,location=no,scrollbars = yes";
	window.open(pUrl , "PopUp", strFeatures);
}

function OpenEditionWysiwygWindow(pUrl, pName)
{
	var strFeatures		= "status=yes,toolbar=no,menubar=no,location=yes,scrollbars=yes,resizable=yes";
	window.open(pUrl , "PopUp", strFeatures);
}


function OpenShowModalDialog(pUrl, ParmAId) 
{		
        var ParmA = ParmAId.value;        
        var MyArgs = new Array(ParmA);
        var WinSettings = "center:yes;resizable:yes;dialogHeight:600px;dialogWidth:1000px;"
        //ALTER BELOW LINE - supply correct URL for Child Form
        if (window.showModalDialog) {
                MyArgs = window.showModalDialog(pUrl, MyArgs, WinSettings);
        }
        else {
               window.open(pUrl,'name','modal=yes' );
        }

        
        if (MyArgs == null)
        {
            window.alert( "Nothing returned from child. No changes made to input boxes");
        }
        else
        {
            ParmAId.value = MyArgs[0].toString();          
        }
        return false; 
}


/*
Propriété Affectation de valeur État Signification 
dependent= yes|no  Si oui (yes), la fenêtre sera fermée si sa fenêtre parent est fermée. Si non (no = réglage par défaut), la fenêtre reste ouverte si sa fenêtre parent est fermée . 
height= [pixels]  hauteur de la nouvelle fenêtre en pixels par exemple height=200. 
hotkeys= yes|no  Si non (no), les raccourcis clavier pour commander le navigateur dans la fenêtre sont désactivés. Si oui(yes= réglage par défaut), les raccourcis clavier du navigateur dans la fenêtre restent actifs. 
innerHeight= [pixels]  hauteur du domaine d'affichage de la nouvelle fenêtre en pixels par exemple innerHeight=200. 
innerWidth= [pixels]  largeur du domaine d'affichage de la nouvelle fenêtre en pixels par exemple innerWidth=200. 
left= [pixels]  Valeur horizontale du coin supérieur gauche de la nouvelle fenêtre en pixels par exemple left=100. 
location= yes|no  Si oui (yes), la fenêtre reçoit sa propre barre d'adresse URL. Si non (no = réglage par défaut), elle ne reçoit pas de barre d'adresse, pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. Netscape 6.1 n'interprète pas cette mention. 
menubar= yes|no  Si oui (yes), la fenêtre reçoit sa propre barre de menus avec les commandes du navigateur. Si non (no = réglage par défaut), elle ne reçoit pas de barre de menus, pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. 
resizable= yes|no  Si oui (yes),l'utilisateur peut modifier la taille de la fenêtre. Si non (no), l'utilisateur ne peut pas modifier la taille de la fenêtre. Le réglage par défaut est no, pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. 
screenX= [pixels]  valeur horizontale du coin en haut et à gauche de la nouvelle fenêtre en pixels par exemple screenX=100. 
screenY= [pixels]  valeur verticale du coin en haut et à gauche de la nouvelle fenêtre en pixels par exemple screenY=30. 
scrollbars= yes|no  Si oui (yes), la fenêtre reçoit des barres de défilement. Si non, (no), l'utilisateur ne peut pas faire défiler la fenêtre. Le réglage par défaut est no, pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. 
status= yes|no  Si oui (yes), la fenêtre reçoit sa propre barre d'état. Si non (no= réglage par défaut), elle ne reçoit pas de barre d'état; pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. 
toolbar= yes|no  Si oui (yes), la fenêtre reçoit sa propre barre d'outils. Si non (no= réglage par défaut), elle ne reçoit pas de barre d'outils; pour l'Explorer Internet cependant seulement si la chaîne de caractères facultative contient au moins une option. 
top= [pixels]  Valeur verticale du coin supérieur gauche de la nouvelle fenêtre en pixels par exemple top=100. 
width= [pixels]  largeur de la nouvelle fenêtre en pixels par exemple width=400. 

<html><head><title>Test</title>
<script type="text/javascript">
<!--
F1 = window.open("fichier.htm","fenetre1","width=310,height=400,left=0,top=0");
F2 = window.open("fichier.htm","fenetre2","width=310,height=400,left=320,top=0");
self.focus();
self.close();
//-->
</script>
</head><body>
</body></html>



*/

/**********************************************/
/*   Modal Dialog cross broswer               */
/*--------------------------------------------*/
/*   Par MaX3315                              */
/*   http://codessources.votre-web.com        */
/**********************************************/


///function: myShowModalDialog(url,mode,reference)
//  arguments:
//   -url : url to open in the popup
//   -mode : innerHTML | value | function | functionRef | style.<JS_style_property>
//   -reference :
//    	avec le mode 'innerHTML' ou 'value' il s'agit de l'id de l'element dans
//    	le DOM qu'il faudra mettre à jour
//    	en mode 'function' il s'agit du nom de la fonction sous forme de chaine
//      alors qu'avec 'functionRef' il s'agit de la function elle même (pointeur)
//   -windowParam: troisiement argument de window.open
function newShowModalDialog(url,mode,reference, referenceval, windowParam)
{
	//var winOpenned=MODAL_alreadyOpen(mode,reference);
	//if(winOpenned!=null) { winOpenned.focus(); return; }
	var id=MODAL_DIALOG_LIST.length;
	//alert('modal_'+id); 
	var newWin=window.open(url,'modal_'+id,windowParam);
	MODAL_DIALOG_LIST.push(Array(newWin,mode,reference, referenceval, true));  //format win, mode, referecene , isOpen
	return false; 
}

//Fonction que doit appeler la fenetre modale pour mettre transmettre la nouvelel valeur
// Exemple de code a placer dans votre fenetre modale :
//   window.opener.modalCallBackFunction(window.self,'MA VALEUR');
function modalCallBackFunction(winRef,newId, newVal)
{
    if(newId==null) { return; } //pas de valeur renvoyé
	if(newVal==null) { return; } //pas de valeur renvoyé
	
  	var modalObj=MODAL_findModalByWinRef(winRef);
	if(MODAL_findModalByWinRef==null)  //impossible de trouver la modal correspondante
	{
		alert('Error : unable to found window reference for callBack procedure.');
	}
	else
	{
		var modeList=Array();
		modeList=modalObj[1].split('|');	
		for(var i=0 ; i<modeList.length ; i++)
		{
			switch(modeList[i])
			{
				case 'innerHTML' :
					var tmp=document.getElementById(modalObj[2]);
					tmp.innerHTML=newId;
					break;
				case 'value' :
					var tmp2=document.getElementById(modalObj[2]);
					modalObj[2].value=newId;			
					var tmp3=document.getElementById(modalObj[3]);
					modalObj[3].innerHTML=newVal;
					
					break;
				case 'function' :
					eval(modalObj[2]+'(\''+newId+'\')');
					break;
				case 'functionRef' :
					modalObj[2](newId);
					break;
				default :
					if(modeList[i].indexOf('style.')==0)  //exemple style.backgroundColor
					{
						//ATTENTION newValue doit être correctement formatte,
						//a vous de faire en sorte que votre fenetre modale renvoie la bonne valeur avec le bon formatage
						// exemeple qu'une couleur soit au format '#ff0033' ou rgb(255,0,85) etc...
						try
						{
							eval('document.getElementById(\''+modalObj[2]+'\').'+modeList[i]+'=\''+newId+'\';');
						} catch(e) { ; }
					}
					break;
			}
		}
	}
}

//---- Inutile de regarder plus bas, seul la fonction newShowModalDialog est a appeler pour construire  une fenetre modal --//

// Variables globales du script
var MODAL_DIALOG_LIST=Array();

//méthode globales du script
function MODAL_alreadyOpen(mode,reference)
{
	for(var i=0 ; i<MODAL_DIALOG_LIST.length ; i++)
	{
		if(MODAL_DIALOG_LIST[i][1]==mode && MODAL_DIALOG_LIST[i][2]==reference && MODAL_DIALOG_LIST[i][4])
		{
		  //on test si elle est encore ouverte
		  if(MODAL_DIALOG_LIST[i][0].document) { return MODAL_DIALOG_LIST[i][0]; }
		  else   //la fenetre a été fermée sans qu'elle est pu prevenir la fenetre mere, on corrige donc le flag isOpen
		  {
		  	MODAL_DIALOG_LIST[i][4]=false;
		  }
		}
	}
	return null;
}

function MODAL_findModalByWinRef(winRef)
{
	for(var i=0 ; i<MODAL_DIALOG_LIST.length ; i++)
	{
		if(MODAL_DIALOG_LIST[i][0]==winRef && MODAL_DIALOG_LIST[i][4])
		{
		  //on test si elle est encore ouverte
		  if(MODAL_DIALOG_LIST[i][0].document) { return MODAL_DIALOG_LIST[i]; }
		  else   //la fenetre a été fermée sans qu'elle est pu prevenir la fenetre mere, on corrige donc le flag isOpen
		  {
		  	MODAL_DIALOG_LIST[i][4]=false;
		  }
		}
	}
	return null;
}

//force le focus sur les modal encore ouverte (en thoerie il ne peut y en avoir qu'une seule encore d'ouverte)
/*
function MODAL_forceFocusOnModal()
{
	for(var i=0 ; i<MODAL_DIALOG_LIST.length ; i++)
	{
		if(MODAL_DIALOG_LIST[i][4] && MODAL_DIALOG_LIST[i][0].document) { MODAL_DIALOG_LIST[i][0].focus(); }
	}
	return;
}
*/

//ajout d'un handler sur la reprise du focus, permettant d'imediatement redonner le focus a une eventuelle modal encore ouverte
//if (document.addEventListener) { document.addEventListener("focus", MODAL_forceFocusOnModal, true); }
//else if (document.attachEvent) { document.attachEvent("onfocus", MODAL_forceFocusOnModal); }


//appel a la fonction de callback
function ValidNewValue(id, clientid)
{    
    var val = document.getElementById(clientid);      
	window.opener.modalCallBackFunction(window.self, id, val.value);
	window.self.MODAL_DIALOG_LIST.pop();
	//var id1=MODAL_DIALOG_LIST.length;
	//alert('liber'+id); 
	
	return true;
}

