/*

AUTEUR  	 : Fr?d?ric FILO (frederic.filo@veolia-proprete.fr)
LE			 : 25.04.06
SUJET		 : Fonction non-sp?cifique de l'application
MODIFICATION :

*/


// TreeView
function toogleNodeState(ndeLink)
{


	// Contrôle du paramètre
	var ndeNode = ndeLink.parentNode;
	
	if( (ndeNode === null) || (ndeNode === undefined) )
		return;
	
	ndeNode = ndeNode.parentNode;
	
	if( (ndeNode === null) || (ndeNode === undefined) || (ndeNode.className.indexOf('node') === -1))
		return;

	// Changement d'état de noeud
	if( ndeNode.className.indexOf(' collapsed') !== -1 )
	{
		ndeNode.className = ndeNode.className.replace(/ collapsed/, '');
	}
	else
	{
		ndeNode.className += ' collapsed'; 
	}
	
}		


/***  INFORMATION DE LA BARRE D'ETAT  ***/
//window.defaultStatus = "Copyright ? 2006 - VEOLIA Propret? Centre Ouest";

/*** CHARGE UNE PAGE EN PLEIN ECRAN  ***/
function FullScreen() 
{ 
	/* On agrandit la fenetre ? la taille de l'?cran */
	window.resizeTo(screen.width+10,screen.height); 
	
	/* Calcul de la hauteur des barres d'outils */
	haut=screen.height-parent.document.body.clientHeight; 
	
	/* On place la fenetre pour ne plus voir les barres de l'explorer */
	window.moveTo (-5,-haut+27) ;
	
	/* On agrandit la fenetre de fa?on ? ne voir que la page */
	window.resizeTo(screen.width+10,screen.height+haut); 
  	
	/* Ce test sert dans le cas ou la fenetre ie etait en mode agrandie */
	if ((document.body.clientHeight > 768 && screen.height == 768)  || (document.body.clientHeight > 600 && screen.height == 600) ) 
		{ 
			var eccart = parent.document.body.clientHeight - screen.height; 
			window.moveTo (-5,-haut+27+eccart); 
			window.resizeTo(screen.width+10,screen.height+haut-eccart); 
		} 
} 

/***  PERMET DE SAVOIR SI LA TOUCHE ENTREE EST APPUYEE  ***/
/***  @param : Fct = Nom de la fonction ? appeler  ***/
function process_keypress(Fct) 
{
	/* Si touche entr?e */
	if (window.event.type == "keypress" && window.event.keyCode == 13) 
		{
		 	/* Ex?cute la fonction */
			eval(Fct);
		}
};

/***  OUVRE UNE POPUP SELON DES DIMENSIONS DONNEES ***/
/***  @param : Page = Page ? ouvrir ; Haut = Hauteur de la fen?tre ; Larg = Largeur de la fen?tre  ***/
function OpenPopup(Page,Haut,Larg)
{
	/* Pour centrer la popup en fonction de ses dimensions */
	var top = (screen.height-Haut)/2;
  	var left = (screen.width-Larg)/2;
	
	/* Cr?ation de la cha?ne */
	var Option = "top="+top+", left="+left+", resizable=no, location=no, width="+Larg+", height="+Haut+", menubar=yes, status=yes, scrollbars=no";
	
	/* Ouverture de la page */
	window.open(Page,'',Option);
};

/* Fonction permettant de mettre la premi?re lettre en majuscule en passant le nom du formulaire et du champ */
function UpperLetter(Formu,Champ)
{
	/* R?cup?re les informations du formulaire */
	var Chemin = document.forms[Formu].elements[Champ].value;
	
	/* on se positionne au premier caract?re du mot */
	var ChaineInit = Chemin.substr(0,1);
	
	/* on r?cup?re le reste du mot a partir du premier caract?re et jusqu'a sa longueur totale */
	var ChaineReste = Chemin.substr(1,Chemin.length-1);
	
	/* concat?nation du tout en m?ttant en majuscule et en minuscule */
	document.forms[Formu].elements[Champ].value = ChaineInit.toUpperCase()+ChaineReste.toLowerCase();
};

/* Permet de fermer les popup avec message de confirmation, et validation du formulaire appelant */
function ClosePopup(OpenerForm)
{
	// on recharge la fenetre m?re on validant 
	window.opener.document.forms[OpenerForm].submit();
	// fermeture de la popup
	window.close();
};

/* Permet de fermer les popup avec message de confirmation */
function ClosePopupDos()
{
	window.close();
};

/* Fonction permettant la redirection vers une autre page dans un temps donn?e */
function Redirect(NomPage,Tps)
{
	setTimeout("window.location='"+NomPage+"'",Tps);
};

/* Fonction permettant la redirection vers une page donn?e */
function Location(Page)
{
	window.location.href = Page;
};

/* Fonction testant la validit? de la date */
function isDate(d) 
{
  // Cette fonction permet de v?rifier la validit? d'une date au format jj/mm/aa ou jj/mm/aaaa  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression r?guli?re pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On s?pare la date en 3 variables pour v?rification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // ann?e

  // Si l'ann?e n'est compos?e que de 2 chiffres on compl?te automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // D?finition du dernier jour de f?vrier
  // Ann?e bissextile si annn?e divisible par 4 et que ce n'est pas un si?cle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
};

/* Contr?le de la validit? du format de l'heure */
function isHeure(H)
{
	/* expression r?guli?re permettant de tester le format de l'heure : HH:MM */
	var TestHeure = new RegExp("^[0-9]{2}\:[0-9]{2}$");
	var TabH = H.split(":");	// On d?coupe la chaine pour r?cup?re l'heure et minute
	var w_h = TabH[0];			// On r?cup?re l'heure
	var w_m = TabH[1];			// On r?cup?re les minutes
	/* Test sur le format : HH:MM */
	if (!TestHeure.test(H))
	 	{
			alert("Vous avez saisie une heure incorrecte, elle doit ?tre du type : HH:MM.\nVeuillez corriger votre saisie svp.")
			return false;
		}
	/* Test sur le format : HH */
	else if((w_h < 0) || (w_h >= 24))
		{
			alert("Vous avez saisie une heure incorrecte.\nVeuillez corriger votre saisie svp.")
			return false;
		}
	/* Test sur le format : MM */
	else if((w_m < 0) || (w_m >= 60))
		{
			alert("Vous avez saisie une minute incorrecte.\nVeuillez corriger votre saisie svp.")
			return false;
		}
	else
		{
			return true;
		}
};

/* Fonction Validant automatique un formulaire au chargenement : Analyse\CreateFichier.asp */
function ValidPage(Form)
{
	document.forms[Form].submit();
};

/* Charge le focus sur un champ d'un formulaire */
function FocusChamp(Form,Chp)
{
	document.forms[Form].elements[Chp].focus();
};

/*
Function g?rant l'opacit? d'un ?l?ment
	* Opacity	=> Opacit? souhait? pour l'?l?ment
	* Element	=> Element du formulaire
*/
function ShowOpacity(Opacity, Element)
{
	document.getElementById(Element).style.filter = 'alpha(opacity=' + Opacity + ')';
};

/*
Function g?rant l'image d'un element
	* Element	=> Element du formulaire
	* Img		=> Image ? afficher
*/
function ChangeImg(Element,Img)
{
	document.getElementById(Element).src = Img;
};

/* 
Function permettant d'afficher ou de masquer une zone de champ en fonction du param?tre
	* Show 	  => Flag permettant d'afficher ou masquer l'?l?ment
	* Element => Element du formulaire 
*/
function ShowElements(Show,Element) 
{
	/* on r?cupr? l'?l?ment du formulaire portant l'id : Masque */
	var ChMasq = document.getElementById(Element);
	/* On affiche */
	if(Show == 0)
	  {
		/* Si c'est cach? on affiche */
		if(ChMasq.style.display == "none") 
			{
				ChMasq.style.display = "block";
			}
	  }
	/* On masque */
	else
	  {
		ChMasq.style.display = "none";
	  }
};

/* 
Function rempla?ant dans une chaine une valeur par une autre 
	* Page	 	 	=> Nom de la page ? appeler
	* Method 	 	=> Methode utilis?e
	* Data	 	 	=> Param?tres POST
	* arg_CallBack  => Argument suppl?mentaire
*/
function XmlRequest(Page, Method, Data, arg_CallBack)
{		
	/* D?claration d'un objet */
	var ObjXml = null;
	var CallBack = null;

	/* R?cup?re la valeur */
	CallBack = arg_CallBack;

	/* XMLHTTPRequest : Firefox */
	if(window.XMLHttpRequest)
		{
			ObjXml = new XMLHttpRequest();
		}
	/* XMLHTTPRequest : Internet Explorer */  
	else if(window.ActiveXObject)
		{
			ObjXml = new ActiveXObject("Microsoft.XMLHTTP");
		}
	/* Erreur XMLHTTPRequest */  
	else 
		{
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest.");
			return false;
		}
	
	/* Param?tre de passage de param?tre en fonction de la m?thode	*/
	ObjXml.open(Method,Page,true);
	
	/* Test du statut de la page */
	ObjXml.onreadystatechange = function() {
		if(ObjXml.readyState == 4)
			{				
				/* D?claration */
				var Valeur = ObjXml.responseText;
				var ListeOption = Valeur;
				eval(Valeur);
				/* Parcours la chaine */
				for(i=0;i<AryChars_S.length;i++)
				{
					/* Remplace les valeurs si trouv? */
					if(Valeur.indexOf(AryChars_S[i]) != -1)
					{
						if(i == 0)
						{
							ListeOption = ReplaceChars(Valeur,AryChars_S[i],AryChars_R[i]);
						}
						else
						{
							ListeOption = ReplaceChars(ListeOption,AryChars_S[i],AryChars_R[i]);
						}
					}
				}
				
				/* Execute le script */
				eval(ListeOption);
				
				/* GESTION DU CALLBACK */
				if (CallBack) {
					eval(CallBack);
				}
			}
		}
	/* Gestion de l'entete */
	ObjXml.setRequestHeader("Content-Type", "text/html; charset=utf-8");
			
	/* Ex?cution de la requ?te */
	if(Method == "POST") {
		ObjXml.setRequestHeader('Content-type', 'multipart/form-data');document.forms[0].submit();}
	
	ObjXml.send(Data);
};

/* 
Function rempla?ant dans une chaine une valeur par une autre 
	* Str_Expr	 => Expression ? modifier
	* Str_Search => Caract?re recherch?
	* Str_Change => Caract?re rempla?ant
*/
function ReplaceChars(Str_Expr,Str_Search,Str_Change)
{
	/* D?claration */
	var i = 0
	
	/* Boucle de recherche */
	while (i != -1) 
	{
		/* Position de la valeur recherch?*/
		i = Str_Expr.indexOf(Str_Search,i);
		
		/* Test si existant */
		if (i>=0) 
		{
			/* Modification de la chaine ? l'indice en cours */
			Str_Expr = Str_Expr.substring(0,i) + Str_Change + Str_Expr.substring(i + Str_Search.length);
			
			/* Incr?ment le compteur */
			i+=Str_Change.length;
	 	}
	}
	
	/* Renvoit le r?sultat */
	return Str_Expr;
};

/* Tableau contenant les valeurs recherch?es */
var AryChars_S = new Array();

/* Liste */
AryChars_S[0] = "&#160;";
AryChars_S[1] = "&#161;";
AryChars_S[2] = "&#192;";
AryChars_S[3] = "&#193;";
AryChars_S[4] = "&#194;";
AryChars_S[5] = "&#195;";
AryChars_S[6] = "&#196;";
AryChars_S[7] = "&#197;";
AryChars_S[8] = "&#198;";
AryChars_S[9] = "&#199;";
AryChars_S[10] = "&#200;";
AryChars_S[11] = "&#201;";
AryChars_S[12] = "&#202;";
AryChars_S[13] = "&#203;";
AryChars_S[14] = "&#204;";
AryChars_S[15] = "&#205;";
AryChars_S[16] = "&#206;";
AryChars_S[17] = "&#207;";
AryChars_S[18] = "&#208;";
AryChars_S[19] = "&#209;";
AryChars_S[20] = "&#210;";
AryChars_S[21] = "&#211;";
AryChars_S[22] = "&#212;";
AryChars_S[23] = "&#213;";
AryChars_S[24] = "&#214;";
AryChars_S[25] = "&#215;";
AryChars_S[26] = "&#216;";
AryChars_S[27] = "&#217;";
AryChars_S[28] = "&#218;";
AryChars_S[29] = "&#219;";
AryChars_S[30] = "&#220;";
AryChars_S[31] = "&#221;";
AryChars_S[32] = "&#222;";
AryChars_S[33] = "&#223;";
AryChars_S[34] = "&#224;";
AryChars_S[35] = "&#225;";
AryChars_S[36] = "&#226;";
AryChars_S[37] = "&#227;";
AryChars_S[38] = "&#228;";
AryChars_S[39] = "&#229;";
AryChars_S[40] = "&#230;";
AryChars_S[41] = "&#231;";
AryChars_S[42] = "&#232;";
AryChars_S[43] = "&#233;";
AryChars_S[44] = "&#234;";
AryChars_S[45] = "&#235;";
AryChars_S[46] = "&#236;";
AryChars_S[47] = "&#237;";
AryChars_S[48] = "&#238;";
AryChars_S[49] = "&#239;";
AryChars_S[50] = "&#241;";
AryChars_S[51] = "&#242;";
AryChars_S[52] = "&#243;";
AryChars_S[53] = "&#244;";
AryChars_S[54] = "&#245;";
AryChars_S[55] = "&#246;";
AryChars_S[56] = "&#249;";
AryChars_S[57] = "&#250;";
AryChars_S[58] = "&#251;";
AryChars_S[59] = "&#252;";
AryChars_S[60] = "&#253;";
AryChars_S[61] = "&#255;";
AryChars_S[62] = "&quot;";
AryChars_S[63] = "&nbsp;";

/* Tableau contenant les valeurs ? remplacer */
var AryChars_R = new Array();

/* Liste */
AryChars_R[0] = " ";
AryChars_R[1] = "i";
AryChars_R[2] = "?";
AryChars_R[3] = "?";
AryChars_R[4] = "?";
AryChars_R[5] = "?";
AryChars_R[6] = "?";
AryChars_R[7] = "?";
AryChars_R[8] = "?";
AryChars_R[9] = "?";
AryChars_R[10] = "?";
AryChars_R[11] = "?";
AryChars_R[12] = "?";
AryChars_R[13] = "?";
AryChars_R[14] = "?";
AryChars_R[15] = "?";
AryChars_R[16] = "?";
AryChars_R[17] = "?";
AryChars_R[18] = "?";
AryChars_R[19] = "?";
AryChars_R[20] = "?";
AryChars_R[21] = "?";
AryChars_R[22] = "?";
AryChars_R[23] = "?";
AryChars_R[24] = "?";
AryChars_R[25] = "?";
AryChars_R[26] = "?";
AryChars_R[27] = "?";
AryChars_R[28] = "?";
AryChars_R[29] = "?";
AryChars_R[30] = "?";
AryChars_R[31] = "?";
AryChars_R[32] = "?";
AryChars_R[33] = "?";
AryChars_R[34] = "?";
AryChars_R[35] = "?";
AryChars_R[36] = "?";
AryChars_R[37] = "?";
AryChars_R[38] = "?";
AryChars_R[39] = "?";
AryChars_R[40] = "?";
AryChars_R[41] = "?";
AryChars_R[42] = "?";
AryChars_R[43] = "?";
AryChars_R[44] = "?";
AryChars_R[45] = "?";
AryChars_R[46] = "?";
AryChars_R[47] = "?";
AryChars_R[48] = "?";
AryChars_R[49] = "?";
AryChars_R[50] = "?";
AryChars_R[51] = "?";
AryChars_R[52] = "?";
AryChars_R[53] = "?";
AryChars_R[54] = "?";
AryChars_R[55] = "?";
AryChars_R[56] = "?";
AryChars_R[57] = "?";
AryChars_R[58] = "?";
AryChars_R[59] = "?";
AryChars_R[60] = "?";
AryChars_R[61] = "?";
AryChars_R[62] = "''";
AryChars_R[62] = " ";