﻿  /**
   * @name EstSirenValide
   * 
   * @param   Le code SIREN dont on veut vérifier la validité.
   * 
   * @return   Un booléen qui vaut 'true' si le code SIREN passé en 
   *                           paramètre est valide, false sinon.
   */

  function EstSirenValide(siren) {
    
    var estValide;
    if ( (siren.length != 9) || (isNaN(siren)) )
		estValide = false;
    else {
		// Donc le SIREN est un numérique à 9 chiffres
		var somme = 0;
		var tmp;
		for (var cpt = 0; cpt<siren.length; cpt++) {
        if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
			tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
			if (tmp > 9) 
				tmp -= 9;  // Si le résultat est supérieur à 9, on lui soustrait 9
			} else tmp = siren.charAt(cpt);
			somme += parseInt(tmp);
		}
		estValide = ((somme % 10) == 0);  // Si la somme est un multiple de 10 alors le SIREN est valide 
	}
    return estValide;
  }
  
  function VerifierSiren(o) {
  
	if (o!=null) {
		if (trim(o.value)!='') {
			if (!EstSirenValide(o.value)) { alert('SIREN invalide'); o.value='' }
		}
	}
	
  }
  
  function verifierForm(action) {
	if (action==1) {
		var nb = document.getElementById('txtSiren').value;
		nb = nb.replace(/ /gi,"");
		nb = nb.replace(/-/gi,"");
		document.getElementById('txtSiren').value = nb.replace("- ","");
		if (EstSirenValide(document.getElementById('txtSiren').value)) {
			return true;
		} else {
		alert('Numéro SIREN incorrect');
				return false;
		}
	} else if (action==2) {		
		var nb = document.getElementById('txtSirenCabinet').value;
		nb = nb.replace(/ /gi,"");
		nb = nb.replace(/-/gi,"");
		document.getElementById('txtSirenCabinet').value = nb.replace("- ","");
		if (EstSirenValide(document.getElementById('txtSirenCabinet').value)) {
			return true;
		} else {
			alert('Numéro SIREN incorrect');
			return false;
		}
		
	} else {
		return true;
	}
  }
  function hideShowPreciserFonction() {
	if (document.getElementById('ddlFonction').value=="Autre") {
		document.getElementById('divAutreFonction').style.display='inline';
	} else {
		document.getElementById('divAutreFonction').style.display='none';
	}
  }
		

	function Int2Str(num, digit) {
	var	str, count;

		str=num.toString();
		count=digit-str.length;
		if (count>0) {
			while (--count>=0) str="0"+str;
		}
		return str;
	}

	function Str2Int(str) {
	var	c, cpt, count;

		count=str.length;
		if (count<=0) return 0;
		for (cpt=0; cpt<count; cpt++) {
			c=str.charAt(cpt);
			if (c>="0" && c<="9") return parseInt(str.substring(cpt, count), 10);
		}
		return 0;
	}
	//--------------------------------------------------------------------
	// Nom fonction		: VerifierDate(champ)
	// -----------------
	// Description		: vérifie si une date est correcte et gère la complétion
	//
	// Date de création : 12/05/2003
	// Auteur           : FG
	//--------------------------------------------------------------------

	function VerifierDate(champ)
	{

		var dateSaisie;
		var datePourValidation;
		var moisReference;
		var anneeReference;
		var temp;
		var unedate = new Date;
		var datereference ;
		var datejour;
		if (champ.value=='')
		{ return;}
		else
		{
		// par défaut
		datePourValidation = champ.value;
		// on splitte sur le séparateur de date
		datejour = new Date; // initialisé automatiquement avec la date du jour		
		datereference = datejour.getDate() + '/' + (datejour.getMonth()+1) + '/' + datejour.getFullYear();
		temp = datereference.split("/");
		// mois de référence = mois du début de la période
		// année de référence = année du début de la période
		moisReference = temp[1];
		anneeReference = temp[2];

		
		// analyse de la saisie
		dateSaisie = champ.value.split("/")
		// saisie de la forme xx/xx
		if (dateSaisie.length==2)
		{ datePourValidation = champ.value + "/" + anneeReference};
		// saisie de la forme xx/xx/
		if (dateSaisie.length==3 && dateSaisie[2]=='')
		{ datePourValidation = champ.value + anneeReference};
		// saisie de la forme xx/
		if (dateSaisie.length==2 && dateSaisie[1]=='')
		{ datePourValidation = champ.value + moisReference + "/" + anneeReference};
		// saisie de la forme xx
		if (dateSaisie.length==1)
		{ datePourValidation = champ.value + "/" + moisReference + "/" + anneeReference};
		}
		// ici on a le code standard (légèrement aménagé) de VerifierDate
		var str;
		var verifier=true;
		var oChamps;
		
		oChamps = champ;
		str = datePourValidation;
		sFormat = "Local";
		
		dArray = str.split("/");
		if (dArray.length!=3) verifier=false
		else {
			dArray[0]=Str2Int(dArray[0]);
			dArray[1]=Str2Int(dArray[1])-1;
			dArray[2]=Str2Int(dArray[2]);
			if (dArray[2]<50) dArray[2]+=2000;
			if (dArray[2]<100) dArray[2]+=1900;
				if (oChamps!=null&&sFormat=="Local") {
					oChamps.value=Int2Str(dArray[0],2)+"/"+Int2Str(1+dArray[1],2)+"/"+dArray[2];
				}
				if (oChamps!=null&&sFormat=="Us") {
					oChamps.value=Int2Str(dArray[1],2)+"/"+Int2Str(1+dArray[0],2)+"/"+dArray[2];
				}
			dt=new Date(dArray[2], dArray[1], dArray[0]);
			if (sFormat=="Local" && (dt.getMonth()!=dArray[1] || dt.getDate()!=dArray[0]||!verifier)) {verifier=false;}
			if (sFormat=="Us" && (dt.getMonth()!=dArray[0] || dt.getDate()!=dArray[1]||!verifier)) verifier=false;
			if (dt.getYear()==dArray[2]&& verifier) verifier=true;
			if (1900+dt.getYear()==dArray[2]&&verifier) verifier=true;
		}
		
		
		if (!verifier) {
			alert("Le format de la date n'est pas correct.");
			oChamps.value="";
			oChamps.select();
			oChamps.focus();
		}
	}
		function VerifierReel(oChamps,sBornes){
		var verifier=true;
		var dValue,sValue;
		var sStr="";
		var count;
		var exp;
		sValue=oChamps.value;
		count=sValue.length;
		if (count<=0) return sStr;
		while (--count>=0) {
			c=sValue.charAt(count);
			if ((c<"0" || c>"9") && (c!=",") && (c!=".") && (c!="-")){
				sValue=sValue.substring(0, count) + sValue.substring(count+1, sValue.length);
				}
			else if (c == ","){
				sValue=sValue.substring(0, count) + "." + sValue.substring(count+1, sValue.length);
				}
			
		}
		
		dValue=parseFloat(sValue); // au cas ou il y aurait un "." en trop
		oChamps.value=dValue.toString();
		if (sValue=='') {
			oChamps.value='';	
			return false;
			}
		sStr=oChamps.value;
		if (sBornes!=''){
			var i=0;
			var ld;
			var oTest;
			oTest = new Array();
			oTest = sBornes.split(",");
			var lDec=oTest[2];
			var lMin=oTest[0];
			var lMax=oTest[1];
			//on retire les décimales en trop
			i=sStr.indexOf(".")+1;
			ld=sStr.length-i;
			if ((ld>lDec)&&(i!=0)) {
				alert('Attention : seulement ' + lDec + ' décimales admises');
				sStr= sStr.substring(0,sStr.length-(ld-lDec));
				oChamps.value=sStr;
			}
			if (parseFloat(sStr)<parseFloat(lMin)) {
				alert('Valeur erron&eacute;e. Elle ne doit pas être inférieure a ' + lMin + '.');
				oChamps.value="";
				oChamps.focus();
				verifier=false;
			}
			else if (parseFloat(sStr)>parseFloat(lMax)) {
				alert('Valeur erron&eacute;e. Elle ne doit pas être supérieure a ' + lMax + '.');
				oChamps.value="";
				oChamps.focus();
				verifier=false;
			}
		}
			
		return verifier;
	}

	
	// Permet de vérifier qu'on retourne soit un réel, soit la valeur sValeur
	function VerifierReelOu(oChamps,sBornes,sValeur){
	if (trim(oChamps.value)=='')
		{
		alert('vous devez saisir un nombre');
		oChamps.focus();
		return false;
		}
	if (oChamps.value!= sValeur) {
		return VerifierReel(oChamps,sBornes);
		}
	}
		//--------------------------------------------------------------------
		// Nom de la fonction : verifierDatesInferieures
		// ------------------
		// Description : vérifie que Date1 <= Date2
		// -----------
		//
		// Paramètres : Obligatoire Date1,Date2 (valeurs des champs date)
		// ----------   (la date doit comporter jour mois et année)
		//
		// ----------------
		// Date de création : 01/09/2003 - FG
		// ----------------
		// --------------------------------------------------------------------

		function verifierDatesInferieures(Date1,Date2){
			var d1,d2;
			
			var tablo = Date1.split("/");
			Date1 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
			tablo = Date2.split("/");
			Date2 = tablo[1] + "/" + tablo[0] + "/" + tablo[2];
			
			d1 = new Date(Date1);
			d2 = new Date(Date2);

			if (Date1==""||Date2=="") return true;
			return (d1.getTime()<=d2.getTime());
		}

		//--------------------------------------------------------------------
		// Nom de la fonction : VerifierEntier
		// ------------------
		// Description : fonction qui vérifie le type d'un entier
		// -----------
		//
		// Paramètres : oChamps
		// ----------   lMax (borne maxi) et lMin (borne mini) =>optionnel
		//
		// Date de création : 29/10/1999 - Stef
		// ----------------
		// Date de dermière mise à jour : 15/02/2001 - Matt
		// ----------------------------
		// --------------------------------------------------------------------
		function VerifierEntier(oChamps,sBornes){

			var verifier=true
			var lMin, lMax, oTest
			var numero=oChamps.value;
			str="";
			count=numero.length;
			if (count<=0) verifier=false;
			
			while (--count>=0) {
				c=numero.charAt(count);
				if (c<"0" || c>"9") numero=numero.substring(0, count) + numero.substring(count+1, numero.length);
			}
			for (count=0; count<numero.length; count++) {
				
				str+=numero.charAt(count);
			}
			numero=str;
			oChamps.value = numero;
			if (sBornes!=""){
				oTest = new Array()
				oTest = sBornes.split(",")
				lMin=Str2Int(oTest[0])
				lMax=Str2Int(oTest[1])
				if (numero<lMin) {
					alert("Valeur erronée. Elle ne doit pas être inférieure à " + lMin + ".");
					oChamps.value="";
					oChamps.focus();
					verifier=false
				}
				else if (numero>lMax) {
					alert("Valeur erronée. Elle ne doit pas être supérieure à " + lMax + ".");
					oChamps.value="";
					oChamps.focus();
					verifier=false
				}
			}
			return verifier;
		}

		function trim(s) {
			var r=/\b(.*)\b/.exec(s);
			return (r==null)?"":r[1];
		}
		
		function display(calque)
		{
			document.getElementById(calque).style.display=document.getElementById(calque).style.display=="none"?"block":"none";
		}		

        function VerifierNonVide(oChamps,sNonChamp) {
        
            var res = true;
            var numero=oChamps.value;
            
		    if(numero.length<=0){
		        alert("Vous devez remplir le champ " + sNonChamp + ".");
		        res = false;
		    }
		    
		    return res;
		}
	
function AjoutDate(champCheckBox, idDate){

// cette fonction ajoute automatiquement la date du jour dans le champ Date de Publication
	var dateactuelle = new Date();
	var mois = dateactuelle.getMonth()+1;
	var jour = dateactuelle.getDate();
	var strjour = jour.toString();
	var strmois=mois.toString();
	
	if (document.getElementById(champCheckBox.id).checked){
		var mois = dateactuelle.getMonth()+1;
		var strmois=mois.toString();
		if (strmois.length==1){strmois="0"+strmois;}
		if (strjour.length==1){strjour = "0"+ strjour;}
		var chaine = strjour + "/" + strmois+ "/" + dateactuelle.getFullYear();
		document.getElementById(idDate).value=chaine;
		
	} else {
		// on veut donc décocher, on efface la date de publication
		document.getElementById(idDate).value="";
	}
}	

function PopUpContraintes(url)
{ window.open(url,'contraintes','height=300,width=500,scrollbars=1'); }
function PopUpPrevisualisation(url)
{ window.open(url,'contraintes','height=600,width=800,scrollbars=1'); }

