/****************************************** Variables et Constantes *************************************/
var ns4=document.layers;		// Netscape 4
var ie4=document.all;			// A partir d'IE 4
var ns6=document.getElementBy;	// Netscape 6
var cSituSepare="||";			// Séparateur pour le nom des DIV
/******************* Variables d'affichage dynamique selon le choix du code position ********************/
var ObjetDIVDeb;				// ID du DIV de début zone dynamique
var ObjetDIV;					// Objet DIV encapsulant les champs dynamiques
var ObjetDIVFin;				// ID du DIV de fin zone dynamique
var CodeSituSave	="";		// Variable permettant de connaitre l'ancien code situ dans le OnChange
var CodeTrtSave 	="";		// Variable permettant de connaitre l'ancien code traitement dans le OnChange
var CheckIfChange 	=0;			// Permet de savoir si un champ de formulaire a été modifié pour éviter une validation de formulaire intempestive
// ****************************************** Validation d'un décimal ************************************
function ValidNumber(Valeur)
{
var NbSeparateur = 0;
var Separateur   = 0;
var NbApresDec	 = 0;
if (Valeur.length == 0)
	 {
	 return true;
	 }
for (i = 0; i < (Valeur.length); i++)
  {
	ch = Valeur.substring(i, i+1);
  if ((ch < "0" || ch > "9") &  ch != ",")
     {
		 alert("Cette zone ne peut contenir que des chiffres avec un separateur decimal.\nValeur correcte: 50 ou 55,65");
		 return false;
		 }
	// Je compte le nombre de chiffre après le séparateur décimal	
	if (Separateur == 1)
		 {
		 NbApresDec++;
		 }
	// Le chiffre doit pas finir par . ou ,
	if (ch == ",")
		 {
		 Separateur=1;
		 NbSeparateur++;
	 	 if (i >= (Valeur.length-1))
		 		{
				alert("Cette zone ne peut finir par un separateur decimal.\nValeur correcte: 50 ou 55.65");
				return false;
		 		}
		}
  }
// Un seul séparateur
if (NbSeparateur > 1)
	 {
   alert("Cette zone ne peut contenir plus d'un . ou .\nValeur correcte: 50 ou 55.65");
	 return false;
	 }
// Deux chiffres après la virgule
if (NbApresDec > 2)
	 {
     alert("Cette zone ne peut contenir que 2 chiffres apres le separateur decimal.\nValeur correcte: 50 ou 55.65");
	 return false;
	 }
return true;
}

function ChkNum(Champ)
{
if (!ValidNumber(Champ.value))
   {
   Champ.value = "";
   Champ.focus();
   return false;		
   }
return true;   
}

// ****************************************** Validation d'un Integer ************************************
function ValidInt(Valeur)
{
if (Valeur.length == 0)
	 {
	 return true;
	 }
for (i = 0; i < (Valeur.length); i++)
  {
	ch = Valeur.substring(i, i+1);
	if (ch < "0" || ch > "9")
    	{
		alert("Cette zone ne peut contenir que des chiffres, sans décimale.");
		return false;
		}
  }
return true;
}

function ChkInt(Champ)
{
if (!ValidInt(Champ.value))
   {
   Champ.value = "";
   Champ.focus();
   return false;		
   }
return true;   
}

// ************************************** Validation d'une date ******************************************
function ValidDate(Valeur)
{
if (Valeur.length == 0)
	{
	return true;
	}
// Longueur
if (Valeur.length != 10)
	{
   	alert("Cette zone doit contenir 10 caracteres.\nValeur correcte: 17/06/2000");
	return false;
	}
// Jours
if (Valeur.substring(0,2) < 1 || Valeur.substring(0,2) > 31)
   	{
   	alert("Le jour de cette date doit etre >=1 ou <=31.\nValeur correcte: 17/06/2000");
	return false;
	}
// Mois
if (Valeur.substring(3,5) < 1 || Valeur.substring(3,5) > 12)
   	{
   	alert("Le mois de cette date doit etre >=1 ou <=12.\nValeur correcte: 17/06/2000");
	return false;
	}
// Année
if (Valeur.substring(6,10) < 1900 || Valeur.substring(6,10) > 2099)
   	{
   	alert("L'annee de cette date doit etre >=1900 ou <=2099.\nValeur correcte: 17/06/2000");
	return false;
	}
// Séparateurs
if (Valeur.substring(2,3) != '/' || Valeur.substring(5,6) != '/')
	{
   	alert("Les separateurs / ne sont pas valides.\nValeur correcte: 17/06/2000");
	return false;
	}	 
return true;
}

function ChkDate(Champ)
{
if (!ValidDate(Champ.value))
   {
   Champ.value = "";
   Champ.focus();
   return false;
   }
return true;
}

function ShowResultat()
	{
	var Largeur = 250;
	var Hauteur = 150;
	var posX=(screen.width / 2) - (Largeur / 2); 
	var posY=(screen.height / 2) - (Hauteur / 2);
	ToDay = new Date();
	PopupRequete=open("../cw_popuprequete.asp","popuprequete"+ToDay.getMilliseconds(),"left="+posX+",top="+posY+",screenX="+posX+",screenY="+posY+",width="+Largeur+",height="+Hauteur+",alwaysRaised=yes,dependent=yes");
	}
	
function ShowError()
	{
	var Largeur = 250;
	var Hauteur = 250;
	var posX=(screen.width / 2) - (Largeur / 2); 
	var posY=(screen.height / 2) - (Hauteur / 2);
	ToDay = new Date();
	PopupError=open("../cw_popuperror.asp","popuperror"+ToDay.getMilliseconds(),"left="+posX+",top="+posY+",screenX="+posX+",screenY="+posY+",width="+Largeur+",height="+Hauteur+",alwaysRaised=yes,dependent=yes");
	}

function ToMajuscule(Champ)
	{
	Champ.value=Champ.value.toUpperCase();
	}
	
function Trim(ChaineTrim)
	{
	return ChaineTrim.replace(/(^\s*)|(\s*$)/g,''); 
/*
	var Chaine = ChaineTrim;
    while (Chaine.substring(0,1) == " ") { Chaine = Chaine.substring(1); }
    while (Chaine.substring(Chaine.length-1,Chaine.length) == " ") { Chaine = Chaine.substring(0,Chaine.length-1); }
	return Chaine;
*/
	}
	
/**************** Onclick sur les boutons d'envoi d'une requête ******************/	
function ChkZonesObligatoire(parRequete) {
	with (parRequete)
	/* Balayage zones: Si champs termine par un @ et si value='' j'alerte */ 	{
	for (i=0; i<elements.length; i++) {
	if ((elements[i].name.charAt(elements[i].name.length-1)=="@") & ((elements[i].value=="") || ((elements[i].value=="Choisissez") & (elements[i].type=="select-one")))) {
		alert("Une zone obligatoire est restée vide, veuillez la renseigner");
		elements[i].focus();
		return false;
		}
	}
	}
return true;
}

function OnCheckIfChange()	{
	CheckIfChange = 1;
	}

function ClickCheckIfChange()	{	
	return true; // Désactivé pour l'instant
	if (CheckIfChange!=1) {
		alert("Aucune modification n'a été faite, validation impossible !");
		return false;
		}
	return true;
	}

function ClickEnvoyerRequete(parRequete,parIsPosition)	{
	if (ClickCheckIfChange()!=true) {
		return false;
		}
	if (parIsPosition==true)
	  {
	  if (parRequete.form_C4_doss_csitu.value=="")
	  	  {
		  alert("La position doit être changée et non vide pour pouvoir valider");
		  return false;
		  }
	  }
   	var resultat = confirm("Voulez vous vraiment envoyer votre requête ?");
   	if (resultat=="1") 	{
     	if (ChkZonesObligatoire(parRequete))	{
       		return true; }
    	}
   		return false
   		}
   
/**************** Onclick divers ******************/	
function Clickzrefdebiteur()
	{
	var resultat = '1';
	if ( document.searchengine.zposerquestion.checked )
		{ resultat = confirm('Voulez-vous choisir ce dossier ?'); }
	if (resultat!='1')
		{ document.searchengine.CSzrefdebiteurchange.value='0'; }
	document.searchengine.submit();
	}

function Clickzchoixcode()
	{
	var resultat;
	resultat = confirm('Confirmez-vous votre choix ?');
	if (resultat=='1')
		{ document.searchengine.submit(); }
	else
		{
		if (document.searchengine.CSzchoixcode[0].checked==true) { document.searchengine.CSzchoixcode[1].checked=true; }
		else { document.searchengine.CSzchoixcode[0].checked=true; }
		}	
	}
	
function Clickzdeviseaffichage()
	{
	var resultat;
	var subChecked=document.searchengine.zdeviseaffichage.checked;
	document.searchengine.zdeviseaffichage.checked="1";
	resultat = confirm('Confirmez-vous votre choix ?');
	if (resultat=='1')
		{ 
		document.searchengine.zdeviseaffichage.value=subChecked?1501:1500;
		document.searchengine.submit();
		}
	else
		{
		if (subChecked==true) { document.searchengine.zdeviseaffichage.checked=false; }
		else { document.searchengine.zdeviseaffichage.checked=true; }
		}	
	}
	
/**************** MASQUES DE FORMATAGE DES SAISIES ******************/
function formatMajuscule(strField)
	{
	var LettreToUpper 	= new String("");
	LettreToUpper	 	= strField.value.substring(strField.value.length-1,strField.value.length);
	strField.value 		= strField.value.substring(0,strField.value.length-1) + 
						  LettreToUpper.toUpperCase();
	}	

/*********** AFFICHAGE DYNAMIQUE DE CHAMPS DE FORMULAIRE SELON LE CHOIX DU CODE POSITION ****************/

/* Affiche ou Cache un objet DIV (nObjet) Selon Visibility true ou false */
function Affiche_Cache(nObjet,Visibility) 
	{
	if (eval(nObjet)==null) {return false;}
	if(ie4) { // Internet explorer
   			eval(nObjet).style.visibility = (Visibility==true?'visible':'hidden');
			}
	else if(ns4) 
			{ // Netscape 4.x
		   	document.eval(nObjet).visibility = (Visibility==true?'show':'hidden');
			}
	else if(ns6) 
 			{ // Netscape 6 (mozilla)
		   	var divns6 = document.getElementsByTagName("div")
   			divns6[nObjet].style.visibility = (Visibility==true?'visible':'hidden');
 			}
	}

/* Renvoi l'objet DIV ObjetDIVDeb */
function GetDIVDebOject(IdObjetDebDIV) {
	if (ns4 || ns6) { 
		ObjetDIVDeb = document.getElementsByTagName('div');
		}
	else { 
		ObjetDIVDeb = document.getElementById(IdObjetDebDIV);
		}
}

/* Align l'objet conteneur des champs dynamiques en relatif par rapport au Top en fonction  ObjetDIVDeb */
function AlignTopObjet(IdObjetDIV/*,IdObjetFinDIV*/) {
	if (ns4 || ns6) { 
		// A gérer
		return false;
		}
	else { 
		ObjetDIV = document.getElementById(IdObjetDIV);
		if (ObjetDIV==null) {return false;}
		ObjetDIV.style.top =  ObjetDIVDeb.offsetTop;
		ObjetDIV.style.left=  ObjetDIVDeb.offsetLeft;
		return true;
		}
/*	AlignTopFin(IdObjetFinDIV); -> Non car j'ai prévu (pour l'instant) la place nécessaire en forçant la hauteur de la cellule du tableau à 160px */
}

/* Align l'objet DIV ObjetDIVFin en relatif par rapport au Top en fonction ObjetDIV */
function AlignTopFin(IdObjetFinDIV) {
	if (ns4 || ns6) { 
		// A gérer		
		}
	else { 
		ObjetDIVFin = document.getElementById(IdObjetFinDIV);
		ObjetDIVFin.style.top =  ObjetDIV.offsetHeight;
		}
}

/*Libellé situation --------------+          +------- Nom des Id <DIV...> pour l'affichage dynamique
  Code Situation -----+           |          |        sachant qu'il peut ne pas y avoir d'unicité sur le code position (merci Serfi) d'où la préseance du "1"
                      |           |          |
                     RA\\Libellé situation\\DIVPOS_RA1 */
var PosCar = 0;

function ExtractChampsDIV(Champs) {
	var i=PosCar;
	var retour="";
	while ( (i<=Champs.length-1) && (Champs.substr(i,2) != cSituSepare) ) { i++; }
	retour = Champs.substr(PosCar, i - PosCar);
	if ( (i<=Champs.length-1) && (Champs.substr(i,2)==cSituSepare) ) { i=i+2; }
	PosCar = i;
	return retour;
}

function GetNameDiv(Value) {
  	var i    	= 1;
  	var Champ   = "";
	var Index	= 3;
	PosCar 		= 0;
	if (Value=="") { return ""; }
	while (PosCar<=Value.length-1) {
   		Champ=ExtractChampsDIV(Value);
		if (i==Index) { return Champ; }
	   	i++;
	}
}

/* Fonction liée au code situation */
function LoadObjetDIVSitu(Value) {
	var NameDiv = "";
	NameDiv = GetNameDiv(CodeSituSave);
	/* Remise à blanc du précédent Code Situ */
	if (CodeSituSave!='') {Affiche_Cache(NameDiv,false);}
	CodeSituSave= Value;
	NameDiv 	= GetNameDiv(Value);
	if (AlignTopObjet(NameDiv/*,"IDObjetDIVFin"*/)) {Affiche_Cache(NameDiv,true);}
	}
	
/* Fonction liée aux traitements */
function LoadObjetDIVTrt(Value) {
	var NameDiv = "";
	NameDiv = GetNameDiv(CodeTrtSave);
	/* Remise à blanc du précédent Code Situ */
	if (CodeTrtSave!='') {Affiche_Cache(NameDiv,false);}
	CodeTrtSave= Value;
	NameDiv 	= GetNameDiv(Value);
	if (AlignTopObjet(NameDiv/*,"IDObjetDIVFin"*/)) {Affiche_Cache(NameDiv,true);}
	}
	
function CheckEmailValide(Email) {
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
    var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
	if (Email=="") { return true; }
    if (!reg1.test(Email) && reg2.test(Email)) { 
        return true;
        }
    alert("\"" + Email + "\" n'est pas une adresse email valide !"); // this is also optional
    return false;
   }

function decimal(nbre,decim) {
	x=nbre.replace(',','.');
	d=Math.pow(10,decim)+'' ;
	x=Math.round(x*d)/d+'';
	if(x.indexOf('.')<0 && d>1) x = x+'.0';
	for(i=0;i<d.length;i++)
	if((x.length-x.indexOf('.'))<d.length) x = x+'0'; 
//	x=x.replace('.',',');
	return x;
	}

var Tempo = false;	
	
function delay(gap){ /* gap is in millisecs */
var then,now; then=new Date().getTime();
now=then;
while((now-then)<gap)
	{now=new Date().getTime();}
}

function imprime_zone(titre, obj, Background) 
{
var Zone = document.getElementById(obj).innerHTML;

var Largeur = screen.width - 50;
var Hauteur = screen.height - 120;
var posX=(screen.width / 2) - (Largeur / 2); 
var posY=(screen.height / 2) - (Hauteur / 2);

Fenetre = window.open("", "ZoneImpr","left="+posX+",top="+posY+",screenX="+posX+",screenY="+posY+",width="+Largeur+",height="+Hauteur+",alwaysRaised=yes,dependent=yes,scrollbars=yes,toolbar=no,menubar=no,location=no,resizable=yes");
/* Sans la ligne ci après, il peut arriver aléatoirement que que Fenetre reste null donc une petite boucle pour lui laisser le temps */
while (Fenetre.document.body==null) {};

Fenetre.document.body.style.color 			= '#000000';
Fenetre.document.body.style.backgroundColor = '#FFFFFF';
Fenetre.document.body.style.padding 		= "10px";
Fenetre.document.body.background			= Background;
Fenetre.document.title 						= titre;
Fenetre.document.body.innerHTML				= "<a href='javascript:window.print()'><img width=80 height=23 title='Sortie vers l&#180;imprimante' border=0 src='cw_images/cw_printer.gif'></a>" +
											  Zone;
var sheet 	= Fenetre.window.document.createElement("link");   
sheet.rel 	= "stylesheet";   
sheet.type 	= "text/css";   
sheet.href 	= "cw_css/cw_style1.css";   
//sheet.media = "screen";   
Fenetre.window.document.getElementsByTagName("head")[0].appendChild(sheet); 

var ListInput = Fenetre.window.document.getElementsByTagName("input");
for (var i = 0; i < ListInput.length; i++) {
	if (ListInput[i].type=="text") {
		var Element 	  = Fenetre.window.document.createElement("div");
		var Element_texte = Fenetre.window.document.createTextNode(ListInput[i].value);
 		Element.style.cssText = "font-weight:bold; font-family: Verdana, Arial, sans-serif; font-size: 8pt; position: relative; top:4px;" 
		Element.appendChild(Element_texte);
		ListInput[i].style.display = 'none';
		ListInput[i].parentNode.insertBefore(Element, ListInput[i]);
		}
	if (ListInput[i].type=="submit") {
		ListInput[i].style.display = 'none';
		}
	}

var ListSelect = Fenetre.window.document.getElementsByTagName("select");
for (var i = 0; i < ListSelect.length; i++) {
	if (ListSelect[i].options[ListSelect[i].options.selectedIndex].text !="Choisissez dans la liste") {
		var Element 	  = Fenetre.window.document.createElement("div");
		var Element_texte = Fenetre.window.document.createTextNode(ListSelect[i].options[ListSelect[i].options.selectedIndex].text);
 		Element.style.cssText = "font-weight:bold; font-family: Verdana, Arial, sans-serif; font-size: 8pt; position: relative; top:4px;" 
		Element.appendChild(Element_texte);
		ListSelect[i].parentNode.insertBefore(Element, ListSelect[i]);
	}
	ListSelect[i].style.display = 'none';
	}

var ListArea = Fenetre.window.document.getElementsByTagName("textarea");
for (var i = 0; i < ListArea.length; i++) {
	var Element 	  = Fenetre.window.document.createElement("div");
	var Element_texte = Fenetre.window.document.createTextNode(ListArea[i].value);
	Element.style.cssText = "font-weight:bold; font-family: Verdana, Arial, sans-serif; font-size: 8pt; position: relative; top:4px;" 
	Element.appendChild(Element_texte);
	ListArea[i].style.display = 'none';
	ListArea[i].parentNode.insertBefore(Element, ListArea[i]);
	}
/* repositionne le DIV dans son élément père */
fenObjetDIVDeb 	= Fenetre.document.getElementById('IDTrtObjetDIVDeb');
/* Si fenObjetDIVDeb est null cela veut dire que l'appel vient de la demande de recouvrement
   par exemple et non de la consult. (mainC4.asp) pour qui le script ci après est nécessaire */
if (fenObjetDIVDeb==null) {return;}
var _value 		= document.getElementsByName('form_C4_cmastertrt')[0].value;
fenObjetDIV		= Fenetre.document.getElementById(GetNameDiv(_value));
var varTop		= 0;
while (varTop != fenObjetDIVDeb.offsetTop) {
	varTop 	= fenObjetDIVDeb.offsetTop;
	delay(500);
	}
//alert("1) fenObjetDIVDeb.offsetTop="+fenObjetDIVDeb.offsetTop);
if (fenObjetDIV!=null){
	fenObjetDIV.style.top 	= fenObjetDIVDeb.offsetTop;
	fenObjetDIV.style.left 	= fenObjetDIVDeb.offsetLeft;
}
//alert("2) fenObjetDIVDeb.offsetTop="+fenObjetDIVDeb.offsetTop);
}
 