// Procédures globales du projet
function PGNPORTAILFAMILLES_PGNINITBLOC(VPLISTEBLOCS )
{
	{
	PGNJS_INIT_BLOC(VPLISTEBLOCS);
}
}
function PGNPORTAILFAMILLES_OLDPGNINITLIENS( )
{
	{
	old_PGNJS_INIT_LIENS(clWDAJAXMain.AJAXExecuteSynchrone("old_PG_INIT_LIENS", ""));
}
}
// Déclaration de variables globales
var gTabBloc = new Array(); // Tableau global à la page en cours qui contient les différents blocs.
var gIdTimer = 0;
var xHauteurBlocReduit = 25;
//var xCompteur = 



function PGNJS_INIT_BLOC(pListeBlocs,pSansMenu) {


	var xListeBlocs = pListeBlocs.split("\r\n");
	var xNbBloc = xListeBlocs.length - 1;
	var xBloc;
	var xDivBloc;
	var xNomBloc;
	var xBlocVisible;
	var xTitreBloc;
	var xLibelleTitreBloc;
	
	// au cas ou le serveur renvoie un message d'erreur
	if (pListeBlocs.split("\t")[0] == "ERREUR"){
		alert(pListeBlocs);
		return;
	}
	
	// parcour de tous les blocs
	for(var i=0; i<xNbBloc; i++) {
	
		xBloc = xListeBlocs[i].split(";");		
		xNomBloc = xBloc[0];
		xBlocVisible = (xBloc[1]=="1");
		xTitreBloc = (xBloc[2]);
		//alert(xNomBloc+ " - "+xBlocVisible)
		
		xDivBloc = document.getElementById(xNomBloc) || document.getElementsByName(xNomBloc)[0];
		
		if(xDivBloc) {
			
			//Si le bloc est contenu dans un div alors le contenant du bloc sera repositionné sinon le bloc lui même
			if(xDivBloc.parentNode.tagName=="DIV") xDivBloc = xDivBloc.parentNode;
			//while(xDivBloc.parentNode.tagName!="FORM"){xDivBloc = xDivBloc.parentNode;}
			
			// Placement du calque
			xDivBloc.style.position		= "absolute";
			//xDivBloc.style.top			= gPositionVert+"px"; 
			if (pSansMenu){
				xDivBloc.style.left			= "0px";
			}else{
				xDivBloc.style.left			= "200px";
			}
			xDivBloc.style.border		= "1px solid transparent"
			//xDivBloc.Hauteur			= xDivBloc.offsetHeight ;
			xDivBloc.Index				= gTabBloc.length;
			xDivBloc.ID					= xNomBloc;
			xDivBloc.id					= xNomBloc;
			xDivBloc.Visible			= xBlocVisible;
			xDivBloc.Reduit				= false;
//			$(xDivBloc).load(function(){
//				alert("resize : "+this.ID);
//			});
			gTabBloc.push(xDivBloc);

			xLibelleTitreBloc = $(xDivBloc).find(".Titre-Cadre").first();
			
			// Modification du titre du bloc s'il y en a un
			if (xTitreBloc !=""){
				xLibelleTitreBloc.text(xTitreBloc);
			}
			
			// Cas particulier du bloc Message en haut de certaine page => on cache le bloc s'il n'y a pas de message
			if (xNomBloc == "BLOC_F_1_MESSAGE"){
				var xLbMsg = $("#LB_MESSAGE")
				if (xLbMsg.length>0 && xLbMsg.text() == "" ){
					xDivBloc.Visible = false;
				}
			}
			
			//xLibelleTitreBloc.append("<a bloc='"+xDivBloc.ID+"' class='BoutonToggleBloc ToggleBloc ui-corner-all' style='float:right;'><span class='ui-icon ui-icon-circle-minus'>Réduire</span></a>");
			//$(xLibelleTitreBloc).attr("bloc",xDivBloc.ID).addClass('ToggleBloc');
			

		}
	}
	
	
	//$(".BoutonToggleBloc").hover(function(){$(this).addClass("ui-state-hover");},function(){$(this).removeClass("ui-state-hover");})
//	$(".ToggleBloc").toggle(
//	function(){
//	
//		$(this).removeClass("ui-icon-circle-minus").addClass("ui-icon-circle-plus")
//		
//		xDivBloc = $("#"+$(this).attr("bloc"));
//		
//		$(xDivBloc).attr("maHauteurAvantReduction",$(xDivBloc).css("height")).css("height","").find("table").each(function(){
//			
//			var xLignesTable = this.rows;
//			
//			if (xLignesTable.length > 1 ){
//				for (var xIndice=1 ; xIndice < xLignesTable.length ; xIndice++){
//					$(xLignesTable[xIndice]).hide();
//					}
//				}
//			}).find("td[height]").each(function(){
//			$(this).attr("maHauteurAvantReduction",$(this).attr("height")).attr("height","");
//			});
//		},
//	function(){
//		
//		$(this).removeClass("ui-icon-circle-plus").addClass("ui-icon-circle-minus")
//		//$(this).button("option","icons",{primary: 'ui-icon-circle-minus'})
//	
//		xDivBloc = $("#"+$(this).attr("bloc"));
//		
//		$(xDivBloc).css("height",$(xDivBloc).attr("maHauteurAvantReduction")).find("table").each(function(){
//			
//			var xLignesTable = this.rows;
//			
//			if (xLignesTable.length > 1 ){
//				for (var xIndice=1 ; xIndice < xLignesTable.length ; xIndice++){
//					$(xLignesTable[xIndice]).show();
//					}
//				}
//			}).find("td[height]").each(function(){
//			$(this).attr("height",$(this).attr("maHauteurAvantReduction"));
//			})
//		}
//	)
	
	gTabBloc.Display();
	
//	gTabBloc.ChampTimer = document.getElementById("SA_TIMER_MAJ_HAUTEUR_BLOC");
//	if (!gTabBloc.ChampTimer){gTabBloc.ChampTimer = document.getElementsByName("SA_TIMER_MAJ_HAUTEUR_BLOC")[0];}
//	if (gTabBloc.ChampTimer){

		gIdTimer = window.setInterval(gTabBloc.Timer,300);
		//gIdTimer = window.setInterval(gTabBloc.Timer,2000);
//	}
	
}




// Timer qui permet de ré adapter l'affichage des blocs (en cas d'agrandissement d'un bloc par exemple)
gTabBloc.Timer = function(){	
	var xHauteur;
	// parcour de tous les blocs
	for(var i=0; i< gTabBloc.length ; i++) {			
		if (gTabBloc[i].Visible){
			xHauteur = $(gTabBloc[i]).outerHeight() ;	
			
			if (!gTabBloc[i].Reduit){					
				// On regarde si parmis les enfants il n'y en a pas un qui est plus grand et dans ce cas on garde sa hauteur...
				$(gTabBloc[i]).children().each(function(i){xHauteur = Math.max(xHauteur,  $(this).outerHeight() ); });				
				if (xHauteur != gTabBloc[i].Hauteur){gTabBloc.Display(i); break; }
			}
			
			
		}
	}	
}

// Afficher ou ré afficher les blocs en tenant compte de la taille (sur le navigateur) des blocs
gTabBloc.Display = function(pIndice){ // pIndice => si on passe un indice, réaffiche(deplace) seulement les bloc en dessous
	var xPositionVert = 160; // => 1er bloc à 150 
	var xEcartBloc  = 5 ;
	var xNbBloc = this.length;
	var xDivBloc;
	
	if (!pIndice) {pIndice = 0;}
	else {xPositionVert = $(this[pIndice]).position().top;}
	
	// parcour de tous les blocs
	for(var i=pIndice ; i<gTabBloc.length; i++) {
	
		xDivBloc = this[i];
		
		if (gTabBloc[i].Visible){
			// Placement du calque		
			gTabBloc[i].style.top			= xPositionVert+"px"; 
			gTabBloc[i].style.display		=  "block";
			
			gTabBloc[i].Hauteur = $(gTabBloc[i]).outerHeight() ;
			// On regarde si parmis les enfants il n'y en a pas un qui est plus grand et dans ce cas on garde sa hauteur...
			$(gTabBloc[i]).children().each(function(){gTabBloc[i].Hauteur = Math.max(gTabBloc[i].Hauteur,  $(this).outerHeight() ); });				
			
			if (!gTabBloc[i].HauteurDeBase) {
				gTabBloc[i].HauteurDeBase = gTabBloc[i].Hauteur;
			}
						
			if (!gTabBloc[i].Reduit){				
				// Incrémentation de la hauteur			
				if(gTabBloc[i].ID.search("_SE_") >= 0){
					xPositionVert += gTabBloc[i].Hauteur;
				}else{
					xPositionVert += gTabBloc[i].Hauteur+xEcartBloc;
				}
			}else{
				xPositionVert += xHauteurBlocReduit+xEcartBloc;
			}
		}else{
			gTabBloc[i].style.display		= "none";		
		}
	}
	
	// repositionnement des tooltips des champs de formulaire 	
	$("[monToolTipChampExiste]").tooltip("close").tooltip("open")
		
}	
	
// Renvoie le bloc correpondant à l'indice ou au nom du bloc
// pIndice est soit l'indice du bloc dans le tableau soit le nom du bloc.
gTabBloc.getBloc = function(pIndice) {
	switch(typeof(pIndice)) {
		case "string" :
			for(var i=0; i<this.length; i++) if(this[i].ID == pIndice) return this[i];
			break;
		case "number" :
			if((0 <= pIndice) && (pIndice < this.length)) return this[pIndice];
			break;
	}
	
	return null;
}

// Permet d'afficher ou de masquer un bloc 
// pIndice est soit l'indice du bloc dans le tableau soit le nom du bloc.
// pAffiche est un booléen indiquant si le champ doit-être affiché ou pas.	
gTabBloc.AfficheBloc = function(pIndice, pAffiche) {
	
	var xDivBloc	= this.getBloc(pIndice);
	var xReactualiseAffichage;
	
	if (xDivBloc){
	
		if (xDivBloc.Visible == pAffiche) return; // Le bloc est déjà dans l'état attendu.
	
		xDivBloc.Visible = pAffiche;
	
		// Réactualise l'affichage des blocs
		this.Display();
	}else{
		//Impossible de trouver ce bloc
	}
}




//function TestReductionBloc(){
//	var xBoutonReduire = "";
//	// parcour de tous les blocs
//	for(var i=0 ; i<gTabBloc.length; i++) {
//		
//		// ni sur le bloc lien, ni sur les blocs SE
//		if( ( gTabBloc[i].ID.search("_LIENS")		< 0 ) 
//		&&  (gTabBloc[i].ID.search("_SE_") 		< 0 ) 
//		&&  (gTabBloc[i].ID.search("_MESSAGE")	< 0 ) 
//		&&  (gTabBloc[i].ID.search("_BOUTONS") 	< 0 ) 
//		){
//		
//			if (gTabBloc[i].Visible){
//			
//				xBoutonReduire = "<div class='boutonReduireBloc'> <A href='#'  title='Tout enrouler' numBloc='"+i+"'>";
//				xBoutonReduire+= "<img src='/PORTAIL_FAMILLES_WEB/haut_16-20.png' width=20 height=20 hspace=0 vspace=0 border=0 >";
//				xBoutonReduire+= "</a>";
//				xBoutonReduire+= "<div>";
//				
//				xDivBloc = gTabBloc[i];
//				$(xBoutonReduire).insertBefore(xDivBloc.children[0]);
//		
//			}
//		}
//	}
//	
//	$(".boutonReduireBloc a").click(function(){
//		
//		var xDivBloc = this.parentNode.parentNode;
//		var xNouvelleHauteur;
//		
//		//$(xDivBloc).hide();		
//		if (xDivBloc.Reduit){
//			xDivBloc.Reduit = false;
//			xNouvelleHauteur = xDivBloc.HauteurDeBase;
//			this.children[0].src = '/PORTAIL_FAMILLES_WEB/haut_16-20.png';
//		}else{
//			xDivBloc.Reduit = true;
//			xNouvelleHauteur = xHauteurBlocReduit;
//			this.children[0].src = '/PORTAIL_FAMILLES_WEB/bas_16-20.png';
//		}
//		
//		
//		$(xDivBloc).children().each().css("height",xNouvelleHauteur);
//		$(xDivBloc).css("height",xNouvelleHauteur);		
//		//gTabBloc.Display();		
//		
//		$(xDivBloc).animate({height: xNouvelleHauteur  }, 600 , "easeOutBounce" , FinAnimationBloc);
//		
//	
//	});
//}
//
//function FinAnimationBloc(){
//	gTabBloc.Display();
//}
function old_PGNJS_INIT_LIENS(pListeLiens) {

	//alert(pListeLiens)

	var xTabLiens = pListeLiens.split("#RC#");
	var xNbLiens = xTabLiens.length - 1;
	var xLien;
	var xRegExp = new RegExp("_LIENS$","gi")
	
	var xBlocLiensCorps;
	var xBlocLiensCorpsExiste;
	var xBlocLiensMenu;
	var xBlocLiensMenuExiste;
	var xAuMoinsUnLienCorps;
	var xAuMoinsUnLienmenu;
	
	var xConteneur;
	var xTexteAvant;
	var xTexteLien;
	var xTexteApres;
	var xURL;
	var xDestination; 
	var xEmplacement;
	var xOrdre;

	var xContenuLiensCorps = "";
	var xContenuLiensMenu = "";
	var xContenu = "";
	var xFichier;
	var xHref;
	
	// Recherche du bloc de lien dans le corps
//	for (var i = 0 ; i < gTabBloc.length ; i ++ ){if (xRegExp.test(gTabBloc[i].ID)) {xBlocLiensCorps = gTabBloc[i];}}	
//	if (typeof(xBlocLiensCorps) != "undefined" ) {
//		xBlocLiensCorpsExiste = true ;
//		// Au cas ou webdev genere une table au lieu d'un div => on essaye de recuperer le parent ou sinon on recupere la premiere cellule
//		if (xBlocLiensCorps.tagName == "TABLE"){if (xBlocLiensCorps.parentNode.tagName == "DIV") {xBlocLiensCorps = xBlocLiensCorps.parentNode;}else{ xBlocLiensCorps = xBlocLiensCorps.rows[0].cells[0];}}		
//	
//	}else {xBlocLiensCorpsExiste = false ;}
//	
//	
//	// Recherche du bloc lien du menu
//	xBlocLiensMenu = document.getElementById("CEL_MENU_LIEN_PERSO");	
//	if (typeof(xBlocLiensMenu) != "undefined" ) {
//		xBlocLiensMenuExiste = true ;
//		// Au cas ou webdev genere une table au lieu d'un div => on essaye de recuperer le parent ou sinon on recupere la premiere cellule
//		if (xBlocLiensMenu.tagName == "TABLE"){if (xBlocLiensMenu.parentNode.tagName == "DIV") {xBlocLiensMenu = xBlocLiensMenu.parentNode;}else{ xBlocLiensMenu = xBlocLiensMenu.rows[0].cells[0];}}
//		
//	}else {xBlocLiensMenuExiste = false ;}
	
	
	
	
	// Parcours de tous les liens existant
//	for(var i=0; i < xNbLiens; i++) {	
//		xLien = xTabLiens[i].split("#TAB#");
//
//		xTexteAvant = xLien[0].replace(/<\/p>$/,"");
//		xTexteLien = xLien[1];
//		xTexteApres = xLien[2].replace(/^<p>/,"");
//		xURL = xLien[3];
//		xDestination = xLien[4]; 
//		xEmplacement = xLien[5];
//		xOrdre = xLien[6];
//		
//		
//		// Construction de l'url
//		if (xURL.substr(0,9) == "fichier::"){
//			xFichier= xURL.substr(9,xURL.length)		
//			xHref = "href='javascript:PIN_EXEC_LIEN_PERSO(\""+xFichier+"\")' "
//		}else{
//			xHref = "href='"+xURL+"' target='"+xDestination+"' " ;
//		}
//		
//		
//		if (xEmplacement == "BasPage"){
//			xAuMoinsUnLienCorps = true;
//			if (xContenuLiensCorps!= ""){xContenuLiensCorps+="<hr align='center' size=1 style='width: 96%; height: 1px; color: #777777; background-color: #777777;	border:0; '/>";}
//			xContenuLiensCorps+= xTexteAvant + "<a "+xHref+" class='Lien-Type1-9-gauche'>"+xTexteLien+"</a>"+xTexteApres;
//			
//		}else{
//			xAuMoinsUnLienmenu = true;
//			
//			xContenuLiensMenu += "<a "+xHref+" class='Lien-Menu'>"+xTexteLien+"</a>";
//		}
//		
//	}
//	
//	// Affichage ou pas du bloc liens corps
//	if (xBlocLiensCorpsExiste) {
//		if (!xAuMoinsUnLienCorps){
//			xBlocLiensCorps.style.display = "none";
//		}else{
//			xContenu = "<table cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; border:1px solid #E7E7E7;' >";
//			xContenu+= "<tbody><tr><td width='598px'>";
//			
//			xContenu+= "<table cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; border:1px solid #777777;' >";
//			xContenu+= "<tbody><tr><td width='596px'>";
//			
//			xContenu+= "<table width='596px' cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; ' >";
//			xContenu+= "<tbody><tr><td class='Paragraphe-9-GrisFonce-Gauche Lien-Perso' style=''  bgcolor='#f8f8f8'>";
//			xContenu += xContenuLiensCorps;
//			xContenu += "</td></tr></tbody></table> </td></tr></tbody></table> </td></tr></tbody></table>";	
//			xBlocLiensCorps.innerHTML = xContenu;
//		}
//	}	
//	// Affichage ou pas du bloc liens menu
//	if (xBlocLiensMenuExiste) {
//		if (!xAuMoinsUnLienmenu){
//			xBlocLiensMenu.style.display = "none";
//		}else{
//			xContenu = "<table cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; border:1px solid #E7E7E7;' >";
//			xContenu+= "<tbody><tr><td width='188px'>";
//	
//			xContenu+= "<table cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; border:1px solid #777777;' >";
//			xContenu+= "<tbody><tr><td width='186px'>";
//	
//			xContenu+= "<table width='186px' cellspacing='0' cellpadding='0' border='0' style='border-collapse: separate; ' >";
//			xContenu+= "<tbody><tr><td>";
//			xContenu += xContenuLiensMenu;
//			xContenu += "</td></tr></tbody></table> </td></tr></tbody></table> </td></tr></tbody></table>";
//			xBlocLiensMenu.innerHTML = xContenu;
//		}
//	}
	
}
function PGNJS_AFFICHE_BLOC(pIndiceOuNomDuBloc)
{
	// pIndiceOuNomDuBloc = > si on passe l'indice, il faut compter les blocs de la page en comptant que le premier à l'indice 0(zéro)
	// pIndiceOuNomDuBloc = > si on passe le nom, il faut le nom complet (ou alias) de la cellule
	gTabBloc.AfficheBloc(pIndiceOuNomDuBloc,true);
}

function PGNJS_CACHE_BLOC(pIndiceOuNomDuBloc)
{
	// pIndiceOuNomDuBloc = > si on passe l'indice, il faut compter les blocs de la page en comptant que le premier à l'indice 0(zéro)
	// pIndiceOuNomDuBloc = > si on passe le nom, il faut le nom complet (ou alias) de la cellule
	gTabBloc.AfficheBloc(pIndiceOuNomDuBloc,false);
}

function PGNJS_INIT_STYLE_JQUERY()
{	
	$(document).ready(function(){
		// On retire la derniere balise link car webdev ajoute plusieurs fois cette balise dans le head 
		$("link[href='/PORTAIL_FAMILLES_WEB/PORTAIL_FAMILLES.css']:gt(0)").remove();
		
		// Modification du titre de la page
		$("td.Titre-Page").addClass("ui-widget-header");
		
		// modification du style des blocs	
		$("td[bgColor='#fafafa']").removeAttr("bgColor").addClass("ui-widget-content").each(function(){
			// redimensionner les blocs car webdev les genere n'importe comment
			if ($(this).attr("width")=="598") $(this).attr("width","590")
		}).find("[width=598]").attr("width","590")
		
		$("td.Titre-Cadre").addClass("ui-widget-header")//.css("padding-left","6px").prepend("<span class='ui-icon ui-icon-circle-arrow-e' style='float:left; margin-right:10px;' />");;
		$("td.Sous-Titre").addClass("ui-widget-content").prepend("<span class='ui-icon ui-icon-circle-arrow-e' style='float:left; margin-right:10px;' />");
		
		// modification du style des tables memoire
		$(".Table-Titre-Colonne").addClass("ui-state-default");
		$(".TitreTableDouble").addClass("ui-state-default");
		$(".TitreTableDouble th").addClass("ui-state-default");
		$(".tablePagination").addClass("ui-state-default");
		
		// Modif des puces
		$(".Puce").addClass("ui-icon ui-icon-circle-arrow-e").attr("src","/PORTAIL_FAMILLES_WEB/vide.gif");
		PGNJS_INIT_BOUTONS();
		PGNJS_INIT_TOOLTIP_AIDE();
		
		// Modification des liens
		$("a.Menu").button();
		$(".LienMenuDynamique").click(function(){$("#PageLienMenu").val( $(this).attr("Page"));PIN_EXEC_LIEN_MENU(); })
		
		$(".LienMenuDynamiqueInactif").button("widget").unbind("click.button mouseenter.button mouseleave.button focus.button blur.button change.button mousedown.button mouseup.button")
			.addClass("ui-state-active")//.click(function(){$(this).addClass("ui-state-active"); ;return false;})
		
		$(".LienMenuPerso[fichier]").click(function(){$("#FichierLienMenu").val( $(this).attr("fichier"));PIN_EXEC_LIEN_PERSO(); })
		
		$("a[class^='Lien']").addClass("ui-corner-all").css("padding","2px").hover(function(){$(this).addClass("ui-state-highlight")},function(){$(this).removeClass("ui-state-highlight")})
	
		
		

		
		//$(gTabBloc).each(function(){$(this).addClass("ui-widget-content")})
		
		//.each(function(){
		//$(gTabBloc).each()..addClass("ui-widget-content").each(function(){
		
			//$(this).parents("table").first().css("background-color","#FF0000");
			//$(this).parents("table").first().css("border","0px solid").css("height","100%");
			
			//$(this).css("border","0px solid");
			
			//alert(this.tagName+" - "+$(this).css("border"));
		//	if ($(this).css("border")="1px solid #AAAAAA";
		//})
	});	
}


function PGNJS_INIT_CHECKBOX()
{
		$(".checkbox-coche-32").live("click",function(event){$(this).removeClass("checkbox-coche-32").addClass("checkbox-vide-32").attr("checked","0") })
		$(".checkbox-coche-22").live("click",function(event){$(this).removeClass("checkbox-coche-22").addClass("checkbox-vide-22").attr("checked","0") })
		
		$(".checkbox-vide-32").live("click",function(event){ $(this).removeClass("checkbox-vide-32").addClass("checkbox-coche-32").attr("checked","1") })
		$(".checkbox-vide-22").live("click",function(event){ $(this).removeClass("checkbox-vide-22").addClass("checkbox-coche-22").attr("checked","1") })
}


//function PGNJS_AFFICHER_MESSAGE_FORMULAIRE(pChaineRegrouppantTousLesParametres)
// On utilise ici une chaine qui regroupe tous les parametres séparés par #SEP# necessaires afin de pouvoir appeler cette fonction directement en retour de ajaxexecuteasynchrone 
// pChaineRegrouppantTousLesParametres doit etre de la forme : 
// pIdChamp + "#SEP#" + pTypeMessage + "#SEP#" + pPosition + "#SEP#" +  pMessage

//	var xTabParam = pChaineRegrouppantTousLesParametres.split("#SEP#")	
//	var pIdChamp 		= xTabParam[0];
//	var pTypeMessage 	= xTabParam[1];
//	var pPosition		= xTabParam[2];
//	var pMessage 		= xTabParam[3];


function PGNJS_AFFICHER_MESSAGE_FORMULAIRE(pIdChamp, pMessage , pTypeMessage , pPosition , pFermetureAuFocus)
{
	// pIdChamp 		: L'identifiant HTML du champ
	// pMessage 		: le message à afficher à coté du champ	
	// pTypeMessage 	: "ok" / "pasok" / "alert" / "info" / "attente" / ""
	// pPosition		: "droite" / "gauche" / "dessous" / "dessus"
	
	// recherche du champ
	var xChamp = $("#"+pIdChamp+":visible");	
//	var xChamp = $("#"+pIdChamp+"");	
	// Si le champ existe
	if (xChamp.length > 0) {
		// Definition de la position du message par rapport au champ
		// Valeures par defaut
		var xMy				= "left center";
		var xAt				= "right center";
		var xOffset			= "2 0";
		switch (pPosition){
			case "droite":
				xMy		= "left center";
				xAt		= "right center";
				xOffset	= "2 0";
				break;
			
			case "gauche":
				xMy		= "right center";
				xAt		= "left center";
				xOffset	= "-2 0";
				break;
			
			case "dessus":
				xMy		= "center bottom";
				xAt		= "center top";		
				xOffset	= "0 2";
				break;
			
			case "dessous":
				xMy		= "center top";
				xAt		= "center bottom"
				xOffset	= "0 -2";;		
				break;
		}
		
		// Definition du style du message et de l'image
		// Valeures par defaut	
		var xClassSpan		= ""
		var xClassIcon		= ""

		switch (pTypeMessage){
			case "ok" :
				xClassSpan		= ""
				xClassIcon		= "ui-icon-ok"	
				break;
				
			case "pasok" :
				xClassSpan		= ""
				xClassIcon		= "ui-icon-pasok"	
				break;
				
			case "alert" :
				xClassSpan		= "ui-state-error"
				xClassIcon		= "ui-icon-alert"		
				xChamp.addClass("ui-state-error");
				break;
	
			case "info" :
				xClassSpan		= "ui-state-highlight"
				xClassIcon		= "ui-icon-info"			
				break;
	
			case "attente" :
				xClassSpan		= ""
				xClassIcon		= "ui-icon-loading"
				break;
		}
		
		
		// 
		var xContenuMsg = ""
		if (xClassIcon != "")  xContenuMsg += "<span style='float: left; margin-right: 0.3em;' class='ui-icon "+xClassIcon+"'></span>"
		xContenuMsg += pMessage
		xChamp.attr("msginfo",xContenuMsg)
		
		
		if (xChamp.attr("monToolTipChampExiste") == "1" ){
			xChamp.tooltip("close");
		}else{
			// création du tooltip
			xChamp.tooltip({
				items: "[msginfo]",
				content: function() {return $(this).attr("msginfo");} ,
				position: {
					my: xMy,
					at: xAt,
					of : xChamp,
					offset : xOffset					
				}
				
				})
//				.bind("open",function(event, ui) { // pour repositionner le tooltip à l'ouverture 
//				$(this).tooltip("widget").position({
//					my: xMy,
//					at: xAt,
//					of : xChamp,
//					offset : xOffset
//					});
//				});			

			xChamp.attr("monToolTipChampExiste","1");			
			// On detache ces evenements, car on veut gerer mannuellement l'affichage et la fermeture de ce tooltip
			xChamp.unbind("focus.tooltip mouseover.tooltip mouseenter.tooltip").unbind("blur.tooltip mouseout.tooltip mouseleave.tooltip");		
		}
		
		// positionnement attribution des styles du tooltip 

		
		if ( (pMessage && pMessage != "") || (pTypeMessage && pTypeMessage != "" )) {
			xChamp.tooltip("open");
			
			if (typeof(pFermetureAuFocus) != "boolean" ) pFermetureAuFocus = true;
			if (pFermetureAuFocus) xChamp.bind('click.myEvents dblclick.myEvents keydown.myEvents keypress.myEvents',FermerInfoMessage);
			
			xChamp.tooltip("widget")
			.removeClass("ui-state-highlight ui-state-error") // on retire d'abord tous les styles possibles au cas ou on aurait changé le style de la tooltip 
			.addClass(xClassSpan)
//			.position({	
//				my: xMy,
//				at: xAt,
//				of : xChamp,
//				offset : xOffset
//				})
			
		}
	}
}

function FermerInfoMessage(){
	var	xChamp = $(this);
	xChamp.tooltip("close");
	
	if (xChamp.attr("obligatoire") == "1" ) PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xChamp.attr("id"), gInfoChampObligatoire , "" , "droite" , false )
	
	xChamp.removeClass("ui-state-error");
	xChamp.unbind('click.myEvents dblclick.myEvents keydown.myEvents keypress.myEvents')
}




function PGNJS_INIT_CHAMPS_OBLIGATOIRES(pListeChamps)
{
	// pListeChamps doit etre de la forme
	// Nom du champ + tab + type du champ + tab + obligatoire ? +tab + controle en sortie ? + tab + fonction JS a appeler apres le controle + rc
	// 
	
	xTabChamp = pListeChamps.split("\r\n")
	var xChamp ;
	var xNomChamp,xTypeChamp,xObligatoire,xControleEnSortie,xMethodCallBack;
	
	gInfoChampObligatoire = "<span class='AideObligatoire'>*</span>";
	
	for (var i = 0 ; i < xTabChamp.length ; i++){
		
		xChamp = xTabChamp[i].split("\t");
		
		xNomChamp = xChamp[0];
		xTypeChamp = xChamp[1];
		xObligatoire = (xChamp[2] == "1");
		xControleEnSortie = (xChamp[3] == "1");
		xMethodCallBack = xChamp[4];
		
		xChamp = $("#"+xNomChamp+":visible");
		
		if (xChamp.length > 0 ) {
			
			xChamp.attr("typeControle",xTypeChamp)
			xChamp.attr("MethodCallBack",xMethodCallBack)
			
			if (xObligatoire) { 
				xChamp.attr("obligatoire","1");
				PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xNomChamp,gInfoChampObligatoire,"","droite",false);
			}
			
			if (xControleEnSortie){
				xChamp.bind('blur.controleChampObligatiore',function(){PGNJS_VERIF_CHAMPS_OBLIGATOIRES($(this).attr("id")) });
			}
		}		
	}
	
	
	$(".AideObligatoire")
	.live("mouseover  ",function(){$(this).html("Obligatoire")})
	.live("mouseout" , function(){$(this).html("*")})
	 
}


function PGNJS_VERIF_CHAMPS_OBLIGATOIRES(pIdChamp)
{
	var xRenvoi = true ;
	var xSelecteur ;
	var xValidationFormulaire;
	
	// Si on a un id de champ, on controle que ce champ, sinon, on controle tous les champs obligatoires
	if (pIdChamp) {
		xSelecteur = "#"+pIdChamp
		xValidationFormulaire = false;
	}else{
		xSelecteur = "input[obligatoire]"
		xValidationFormulaire = true;
	}
	
//	alert("PGNJS_VERIF_CHAMPS_OBLIGATOIRES("+pIdChamp+")")
	
	$(xSelecteur+":visible").each(function(){
		
		var xIdChamp = $(this).attr("id");
		var xTypeControle = $(this).attr("typeControle");
		var xValeur = $(this).val();
		var xResult = true ;
	
		// on retire systematique tous les espace avant et après la valeur (equivalent sansespace() )
		xValeur = PGN_SANS_ESPACE(xValeur)
		$(this).val(xValeur)
	
	
		switch ($(this).attr("typeControle")){
			case "mail" : 
				if ( ! PGNJS_VERIF_EMAIL(xValeur) ) {
					PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"Adresse invalide","alert");
					xResult = false;
				}
				break;

			case "pass" : 
				if (xValeur.length <6){
					PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"Le mot de passe doit contenir <br><strong>minimum 6 caractères</strong>","alert");
					xResult = false;
				}
				break;

			case "text" : 
				if (xValeur.length <1){
					PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"","pasok");
					xResult = false;
				}
				break;

			case "tel" : 
				if (xValeur.length <1){
					PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"","pasok");
					xResult = false;
				}
				break;

			case "date" : 
				if ( ! PGNJS_VERIF_DATE(xValeur) ){
					PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"Date invalide","alert");
					xResult = false;
				}
				break;
			
			case "num" : 
				break;
		}
		
		if  (xResult) {
			// on test s'il y a une methode callback a appeler			
			var xMethodCallBack = eval($(this).attr("MethodCallBack"));
			if ( (xMethodCallBack != "undefined") && $.isFunction(xMethodCallBack) && !xMethodCallBack.call($(this),xValidationFormulaire) ) {
				xRenvoi = false;
			}else{
				PGNJS_AFFICHER_MESSAGE_FORMULAIRE(xIdChamp,"","ok");
			}
		}else{
			xRenvoi = false;
		}
	});
	

	return xRenvoi
}

function PGNJS_CACHER_MESSAGE_FORMULAIRE(pIdChamp,pDetruireToolTips)
{
	var xSelecteur ;
		
	// Si on a un id de champ, on masque le message du champ, sinon, on masque tous les messages de tous les champs obligatoires
	if (pIdChamp && pIdChamp != "") {
		xSelecteur = "#"+pIdChamp
	}else{
		xSelecteur = "input[montooltipchampexiste]"
	}
	
	//alert("PGNJS_CACHER_MESSAGE_FORMULAIRE("+pIdChamp+","+pDetruireToolTips+") => "+xSelecteur + " : "+$(xSelecteur).length +" elements" )
	
	if (pDetruireToolTips)	$(xSelecteur).tooltip("destroy");
	else 					$(xSelecteur).tooltip("close");
	
					
}

function PGNJS_INIT_TOOLTIP_AIDE()
{
	$(".Aide").removeAttr("href").tooltip({
		open: function(event, ui) { // pour repositionner le tooltip à l'ouverture 
			$(this).tooltip("widget").position({
				my: "left center",
				at: "right center",
				offset: "10 10",
				of: event
				}).css("zIndex",10000);
			}
		});	
}

function PGNJS_DESACTIVE_SUBMIT_FORM()
{
	// Fonction permettant de desactiver la validation automatique du formulaire de la page 
	// explication : webdev genere un <input type=image> (qui est appeler automatiquement par le navigateur lorsqu'on frappe la touche entree) 
	// lorsqu'il n'y a qu'un seul lien qui envoie les champs du formulaire au serveur dans la page
	// ceci peut être génant dans certaine page, donc on utilise cette fonction pour supprimer ces input
	
	$("input[type='image']").each(function(){
		var xEventOnClick =  $(this).attr("onclick");
		var xRegExp = new RegExp("[_LK_EXEC_LIEN_MENU_CLI]","gi") 
		if ( xRegExp.test(xEventOnClick)) $(this).remove(); // suppression du input
	})
}

function PGNJS_INIT_BOUTONS()
{
	// On retire la class des cellules de table (car webdev attribut la class au lien et à la cellule de table qui contient le lien)
	$("td.Bouton,div.Bouton").removeClass("Bouton")
	$("td.Bouton-Valider,div.Bouton-Valider").removeClass("Bouton-Valider")
	$("td.Bouton-Annuler,div.Bouton-Annuler").removeClass("Bouton-Annuler")
	$("td.Bouton-Plus,div.Bouton-Plus").removeClass("Bouton-Plus")
	$("td.Bouton-Ajouter,div.Bouton-Ajouter").removeClass("Bouton-Ajouter")
	$("td.Bouton-Modifier,div.Bouton-Modifier").removeClass("Bouton-Modifier")
	$("td.Bouton-Supprimer,div.Bouton-Supprimer").removeClass("Bouton-Supprimer")
	$("td.Bouton-Retour,div.Bouton-Retour").removeClass("Bouton-Retour")
	$("td.Bouton-Continuer,div.Bouton-Continuer").removeClass("Bouton-Continuer")
	$("td.Bouton-Imprimer,div.Bouton-Imprimer").removeClass("Bouton-Imprimer")
	$("td.Bouton-Up,div.Bouton-Up").removeClass("Bouton-Up")
	$("td.Bouton-Down,div.Bouton-Down").removeClass("Bouton-Down")
	
	// Création des boutons JQuery UI
	$(".Bouton").button();
	
	$(".Bouton-Up").button({icons: {primary:'ui-icon-circle-triangle-n'}, text: false, label: "&nbsp;"});
	$(".Bouton-Down").button({icons: {primary:'ui-icon-circle-triangle-s'}, text: false, label: "&nbsp;"});
	
	$(".Bouton-Valider").button({icons: {primary:'ui-icon-check'}});
	$(".Bouton-Annuler").button({icons: {primary:'ui-icon-close'}});
	$(".Bouton-Plus").button({icons: {primary:'ui-icon-plus'}});
	
	$(".Bouton-Ajouter").button({icons: {primary:'ui-icon-plus'}});
	$(".Bouton-Modifier").button({icons: {primary:'ui-icon-modif'}});
	$(".Bouton-Supprimer").button({icons: {primary:'ui-icon-delete'}});
	
	$(".Bouton-Retour").button({icons: {primary:'ui-icon-arrowreturnthick-1-w'}});
	$(".Bouton-Continuer").button({icons: {primary:'ui-icon-circle-arrow-e'}});	
	
	$(".Bouton-Imprimer").button({icons: {primary:'ui-icon-print'}});
	
	$(".Bouton-Param-1").button({icons: {primary:'ui-icon-wrench'}});
	$(".Bouton-Param-2").button({icons: {primary:'ui-icon-gear'}});
	
	$(".Bouton-CheckBox").button({icons: {primary:'ui-icon-checkbox22'}});
	$(".Bouton-CheckBox-Petit").button({icons: {primary:'ui-icon-checkbox18'}});
	
	//$(".Bouton-Aide").button().hover(function(){$.cursorMessage(this.bulleAide); },	function(){	$.hideCursorMessage();}).each(function(){this.bulleAide = this.title;this.title=""});
	
	//$(".Bouton-Aide").button({icons: {primary:'ui-icon-help'} , label: "&nbsp;"}).hover(function(){$.cursorMessage(this.bulleAide); },	function(){	$.hideCursorMessage();}).each(function(){this.bulleAide = this.title;this.title=""});
	$(".Bouton-Aide").button({icons: {primary:'ui-icon-help'} , label: "&nbsp;"}).addClass("Aide").removeAttr("href").click(function(){return false;})
	
		
	$(".Bouton-Tout-Enrouler").addClass("Bouton-20").button({icons: {primary:'ui-icon-collapseAll'} , text: false })	
	$(".Bouton-Tout-Derouler").addClass("Bouton-20").button({icons: {primary:'ui-icon-expandAll'} , text: false  })
	
	
	
	//$(".ui-button.ui-widget.ui-state-disabled").live("mouseenter",function(){ $(this).unbind("mouseenter.button");})
	
	
	
	
	
}


