// Procédures globales du projet
var _FT_=null;
var _NT_="";
function _TRD()
{
	var b=false;
	if(_FT_!=null)if(_FT_.closed)_NT_="";
	if(_NT_=="")
	{
		b=true;
		_NT_="_TW_";
		if(window.name==_NT_)_NT_+="_";
		_FT_=window.open("",_NT_,"alwaysRaised=1,dependent=1,scrollbars=1,resizable=1,screenX=0,screenY=0,width=388,height=1");
		_FT_.document.writeln("<HTML><HEAD><TITLE>"+STD_TITRE_TRACE+"</TITLE></HEAD><BODY bgcolor='#FFFF00'>");
		if(b)_FT_.document.writeln(""+STD_INFO_TRACE+"<BR><HR>");
		_FT_.document.writeln("<font face='Courier New,Courier,mono' size='-1'>")
	}
}
function _TRC(p)
{
	_TRD();
	_FT_.document.write(p);
	_FT_.document.writeln("<BR>");
	_FT_.scroll(_FT_.innerWidth, _FT_.innerHeight);
}
function _TRF()
{
	if(_FT_)
	{
		_FT_.close();
		_FT_=null;
		_NT_="";
	}
}
function PGNUTIL_PGNTRACE(VPTRACE )
{
	{
	_TRC(VPTRACE);
}
}
function PGNUTIL_PGNCOMBOSAISIESIMPLE(VPFICHIER, VPRUBAFFICHE, VPIDINPUT, VPCHAMPID, VPLARGEURCOMBO, VPCHOISIRPREMIER, VPMINCARACTERES )
{
	{
	if (VPCHAMPID==undefined) VPCHAMPID="";
	if (VPLARGEURCOMBO==undefined) VPLARGEURCOMBO=0;
	if (VPCHOISIRPREMIER==undefined) VPCHOISIRPREMIER=false;
	if (VPMINCARACTERES==undefined) VPMINCARACTERES=1;
	{
		clWDAJAXMain.AJAXExecuteAsynchrone("PGA_INIT_COMBO_SAISIE_SIMPLE","PGNJS_INIT_COMBO_SAISIE_SIMPLE", "",VPFICHIER,VPRUBAFFICHE,VPIDINPUT,VPCHAMPID,VPLARGEURCOMBO,VPCHOISIRPREMIER,VPMINCARACTERES);
	}
}
}
function PGN_FALSE() { return false; }
function PGN_TRUE() { return true; }
function PGNJS_LISTE_AJOUTE(pListeCombo, pValeurAAjouter , pValue)
{ 	// Liste Ajoute en JS 
	// pListeCombo et l'objet JS SELECT 
	var xOption = document.createElement("option");
	
	xOption.text = pValeurAAjouter ;
	xOption.value = (typeof(pValue)!="undefined")?pValue:pValeurAAjouter;
	
	try
	{
		pListeCombo.add(xOption,null); // standards compliant
		}
	catch(ex)
	{
		pListeCombo.add(xOption); // IE only
		}
	
	return pListeCombo.options.length-1;
	
	//	 Ancienne version
	//	if(!document.all){
		//		//alert(" !  document.all  " + pValeurAAjouter);
		//		pListeCombo.add(xOption,pListeCombo.options[pListeCombo.options.length]);
		//	}else{
		//		//alert("document.all " + pValeurAAjouter);
		//		pListeCombo.add(xOption);
		//	}
}


function PGN_EN_MODE_SSL()
{
	if (window.location.href.substr(0,5) == "https") {
		return true;
	}else{
		return false;
	}
}

function PGNJS_COMBO_SAISIE_VILLES(pIdInputVille,pIdInputCodePostal,pLargeurInputVille,pLargeurInputCodePostal) {
	
	var xInputVille = $("#"+pIdInputVille).get(0);
	var xInputCodePostal = $("#"+pIdInputCodePostal).get(0);
	
	$(xInputVille).autocomplete(gTableauCommunes,{
		selectFirst: false,
		max: 25,
		width: pLargeurInputVille?pLargeurInputVille:"183px",
		matchContains: true,
		autoFill: false,
		formatItem: function(row) {
			return row.c + " - " + row.v;
		},
		formatResult: function(row) {
			return row.v;
		}
	}).result(function(event,data) {
		if (data) xInputCodePostal.value = data.c;
	});
	
	$(xInputCodePostal).autocomplete(gTableauCommunes,{
		selectFirst: false,
		max: 25,
		width: pLargeurInputCodePostal?pLargeurInputCodePostal:"238px",
		matchContains: true,
		autoFill: false,
		formatItem: function(row) {
			return row.c + " - " + row.v;
		},
		formatResult: function(row) {
			return row.c;
		}
	}).result(function(event,data) {
		if (data) xInputVille.value = data.v;
	});
	
}
function PGNJS_INIT_COMBO_SAISIE_SIMPLE(pRetour)
{
	
	var xTableauValeurs = new Array();
	var xTableauRetour = pRetour.split("|");
	var xTableauContenu = xTableauRetour[0].split("$");
	var xTableauParam = xTableauRetour[1].split(";");
	var xDetailContenu;
	var xId;
	var xLib;
	var xObjInput;
	var xObjChampId;
	var xLargeurCombo;
	var xChoisirPremier;
	var xMinCaracteres;
	
	for (var xIndice in xTableauContenu) {
		
		xDetailContenu = xTableauContenu[xIndice].split("#");
		
		xId = xDetailContenu[0];
		xLib = xDetailContenu[1];
		
		xTableauValeurs[xIndice] = new Array();
		
		xTableauValeurs[xIndice]["id"] = xId;
		xTableauValeurs[xIndice]["lib"] = xLib;
		
	}
	
	//Récupérer les paramètres
	xObjInput = $("#"+xTableauParam[0]).get(0);
	xObjChampId = $("#"+xTableauParam[1]).get(0);
	xLargeurCombo = xTableauParam[2];
	xChoisirPremier = parseInt(xTableauParam[3],10);
	xMinCaracteres = parseInt(xTableauParam[4],10);
	
	if (xObjInput) {
	
		$(xObjInput).autocomplete(xTableauValeurs,{
			width: xLargeurCombo,
			selectFirst: xChoisirPremier,
			minChars: xMinCaracteres,
			matchContains: true,
			autoFill: false,
			formatItem: function(row) {
				return row.lib + "";
			},
			formatResult: function(row) {
				return row.lib;
			}
		}).result(function(event,data) {
			if (data) {
				if (xObjChampId) { xObjChampId.value = data.id; ; xObjInput.style.color = ""; }
			} else {
				if (xObjChampId) { xObjChampId.value = 0; xObjInput.style.color = "#FF0000"; }
			}
		}).blur(function(){
			$(this).search();
		});
	
	}
	
}
// Fonction Javascript qui permet de faire de l'heritage d'objet ou de classe JS
// Elle recopie toutes les variables et toutes les méthode de pSource dans pDestination
// pSource 		: la classe mere
// pDestination	: la classe fille
function PGNJS_Heriter(pDestination, pSource)
{
	for (var element in pSource) {
		pDestination[element] = pSource[element];
	}
}

function PGNJS_VERIF_EMAIL(pAdresseEmail)// vérif de la validité de l'email par REGEXP
{

	var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	
	//alert(pAdresseEmail+" : " + (reg.exec(pAdresseEmail)!=null))
	
	return (reg.exec(pAdresseEmail)!=null);
}

// Corrige le bug sur les Zones Repetées Non Ajax lorsque l'on essaye de les modifier en code Ajax
// et que la zone repetée est mal générée, c'est à dire le conteneur (div) n'a pas d'ID (con-ZR_XXX ou ctz-ZR_XXX)
WDAJAXMain.prototype.oGetConteneurParent = function(sNomChamp){

	var oConteneurParent = oGetId("con-" + sNomChamp);
	if (oConteneurParent) return oConteneurParent;
	oConteneurParent = oGetId("ctz" + sNomChamp);
	if (oConteneurParent) return oConteneurParent;		
	
	if (oGetId(sNomChamp)){
		oConteneurParent = oGetId(sNomChamp).parentNode;
	}else if(document.getElementsByName(sNomChamp)[0]){
		oConteneurParent = $("input[name='"+sNomChamp+"'] ~ table")[0];
	}
	if (oConteneurParent) return oConteneurParent;

}
function isString(obj)
{
		return !!obj.charAt;
}
function PGNJS_NUM_PORT()
{
		var xServeur = window.location.href.split("/")[2];
		var xNumPort = xServeur.split(":")[1];
		
		if (xNumPort) return xNumPort;
		return "";
}

function PGNJS_VERIF_DATE(pDate)
{
	// Cette fonction test la validité d'une date au format JJ/MM/AAAA avec gestion des années bissextiles
	
	// 1er controle par un expression reguliere que la date respecte le format
	var xRegEx	= new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g");	
	if ( ! xRegEx.test(pDate) ) return false;		
	
	// Puis on verifie que la date est valide
	var xTabNbJours = new Array( 0 ,31,28,31,30,31,30,31,31,30,31,30,31);
	var xDate = pDate.split('/');
	var xJour	= parseInt(xDate[0],10);
	var xMois	= parseInt(xDate[1],10);
	var xAnnee	= parseInt(xDate[2],10);
	
	// Si c'est une année bissextile, le mois de fevrier a 29 jours
	if ( xAnnee%4 == 0 && xAnnee%100 > 0 || xAnnee%400 == 0 )	xTabNbJours[2] = 29;	
	
	if ( xMois > 12 || xMois < 1 ) return false;
	if ( xJour > xTabNbJours[xMois] || xJour < 1 ) return false;
	
	return true ;
}


