function redirTo (pform, pnxtpage, paction) {
	pform.next_page.value = pnxtpage;
	pform.self_affiliate_action.value = paction;
	pform.submit();
}

function limitText(limitField, limitCount, limitNum) {
	
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}

function controlField(where, lang)
{
	var flag1 = 0;
	var flag2 = 0;
	var flag3 = 0;
	var flag4 = 0;
	var flag5 = 0;
	var flag6 = 0;
	var flag7 = 0;
	var flag8 = 0;
	var flag9 = 0;
	var flag10 = 0;
	var flag11 = 0;
	var listPostalCodes;
	var i=0;
	var chr;
	var invalid_chr=0;
	var accepted_char = "1234567890,";
	
	switch (where)
	{

		case "self_affiliate_01" :
		{
			if (document.form1.niss.value == "")
			{
				alert(eval("niss_required_" + lang));
				break;
			}
			else
			{
				flag1 = 1;
			}	
			
			if (document.form1.email.value == "")
			{
				alert(eval("email_required_" + lang));
				break;
			}
			else
			{
				flag2 = 1;
			}				
			
			if (flag1==1 && flag2==1)
			{	
				document.form1.submit();
				break;					
			}
			else
			{
				document.form1.doChange.value='';
				break;
			}		
		}		
	}
}


function SetAllCheckBoxes(FormName, FieldName, CheckValue)
{
	if(!document.forms[FormName])
		return;
	var objCheckBoxes = document.forms[FormName].elements[FieldName];
	if(!objCheckBoxes)
		return;
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes)
		objCheckBoxes.checked = CheckValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)
			objCheckBoxes[i].checked = CheckValue;
}

function sumInputs(tableId, columnNumber, inputValue)
{
	var MyTable = document.getElementById(tableId);
	var val = inputValue * 1;
	var lastRowNumber = MyTable.tBodies[0].rows.length - 1;
	lastRowNumber = lastRowNumber * 1;
	
	intResult = parseInt(MyTable.tBodies[0].rows[lastRowNumber].cells[columnNumber].innerHTML) * 1;
	var intRes = intResult * 1;
	MyTable.tBodies[0].rows[lastRowNumber].cells[columnNumber].innerHTML = intRes + val;
	
	return true;
}

function sumColumn(tableId,columnNumber)
{
	var intValue = 0;
	
	columnNumber = columnNumber * 1;
	
	var MyTable = document.getElementById(tableId);
	
	for(var i = 1; i < MyTable.tBodies[0].rows.length; i++)
	{	
		intValue += MyTable.tBodies[0].rows[i].cells[columnNumber].innerHTML * 1;	
	}
	
	var a = intValue * 1;
	
	MyTable.tBodies[0].rows[i - 1].cells[columnNumber].innerHTML = a;
	
	return true;
}

// ----------------------------------------------
// Test Account Number
//
// Author: jlx
// Date: 24/09/2004
//
// ----------------------------------------------
function TestAccountNumber(lang, obj)
{
	if ( obj.value != "" )
	{
		fnOnBlur(lang, 'ACCOUNT_NUMBER', obj);
	}
}

// ----------------------------------------------
// Test Date
//
// Author: jlx
// Date: 24/11/2003
//
// Modified ame 03/02/2004 l 399, 441, 417
// ----------------------------------------------
function TestDate(lang, obj)
{
	
	if ( obj.value != "" )
	{
		fnOnBlur(lang, 'DATE', obj);
		/*
		if (IsDateValid(lang, obj))
		{
			return true;
		}
		else
		{
			obj.focus();
			return false;	
		}
		*/
	}
}

// ----------------------------------------------
// Test if the date >= today
//
// Author: jlx
// Date: 21/11/2003
// ----------------------------------------------
function IsDateValid(lang, obj)
{
	var today=new Date();
	
	anneeToday = today.getFullYear();
	moisToday = today.getMonth();
	jourToday = today.getDate();
	
	dateToday = new Date(anneeToday,moisToday,jourToday);	
	
	//alert(dateToday);
	
	if ( obj.value != "" )
	{
		tabDateSaisie = obj.value.split("/");

		anneeSaisie = tabDateSaisie[2];
		moisSaisie = tabDateSaisie[1];
		jourSaisie = tabDateSaisie[0];
		
		dateSaisie = new Date(anneeSaisie,moisSaisie - 1,jourSaisie);	
		
		//alert(dateSaisie.getTime());
		//alert(today.getTime());
		
		if (dateSaisie.getTime() >= dateToday.getTime())
		{
			return true;
		}
		else
		{
			alert( eval("date3_" + lang) );
			obj.focus();
			return false;
		}
	}
}


// ----------------------------------------------
function test(src) {
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  
  if (src == '') { return true; }
  return regex.test(src);
}
// ----------------------------------------------

//Test if all the inputs (in form obj) wich name begin with num are not empty
//empty value are exluded
function test_num(obj)
{
for (var i=0; i<obj.length; i++)
	{
	curr_name = obj.elements[i].name.substring(0,3);
	curr_value = obj.elements[i].value
	if (curr_name == "num" && curr_value.length==0) 
		{
		return false;
		}
	}
return true;
}


function testNavigateur()
{
	window.top.isIE4 =false;
	window.top.isNav4 = false;
	if (parseInt(navigator.appVersion.charAt(0)) >= 4) 
	{
	  window.top.isNav4 = (navigator.appName == "Netscape") ? true : false;
	  window.top.isIE4 = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
	 }

	if ((!isIE4) && (!isNav4) )
	{
		//envoyer vrers une page d'erreur
		alert("Erreur navigateur");
	}
	else
		{
		//alert("Ok pour le navigateur ");
		}
}	


var archValeur;
/*------------------------------------------------------------
			GESTION DES EVENEMENTS
------------------------------------------------------------ */
function fnOnFocus(type, obj)
{
	// conservation de l'ancienne valeur pour gérer le 'onchange'
	archValeur = obj.value;
	// traitement particulier de déformatage
	switch (type)
		{
		case "DATE" :
			{
			//obj.value = deformateDate( obj.value );
			break;
			}
		case "ACCOUNT_NUMBER" :
			{
			break;
			}			
		case "MONTANT" :
			{
			obj.value = deformateMontant( obj.value );
			break;
			}
			}
	// selection du texte en surbrillance
	obj.select();
}

function fnOnkeyPress(type, o, obj)
{
// out : TRUE	==> frappe est acceptée
//		 FALSE	==> frappe refusée

		
	if ( saisieEnter( o , obj ) )
		{
		// on a utilisé la touche ENTER pour valider
		return false;
		}
	else
		{
		switch (type)
			{
	case "ENTIER" :
			{
			if (isIE4)
			{return checkEntier(o , obj ); 
			break;}
			else
			break;
			}
	case "DATE" :
			{
			if (isIE4)
			{
				//return checkEntier(o , obj );
				return true;	 
				break;
			}
			else
			break;
			}
	case "ACCOUNT_NUMBER" :
			{
			if (isIE4)
			{
				return checkAccountNumber(o, obj);
				//return true;	 
				break;
			}
			else
			break;
			}			
	case "MONTANT" :
			{
			return checkMontant(o , obj); 	
			break;
			}
	default :
			{
			break;
			}
			}
		}
}

// ----------------------------------------------
// fnOnBlur
//
// Author: ?
// Modified: jlx
// Date: 24/11/2003
// ----------------------------------------------
// out : 	TRUE	==> on doit executer les règles de gestions
//		FALSE	==> on ne doit pas exécuter les règles de gestions :
//				* donnée non valide
//				* donnée non modifiée
// ----------------------------------------------
function fnOnBlur(lang, type, obj, longueur)
{

	var donneeValide;
	var dateToTest;
	var numberToTest;
	var dateTemp;
	var dd, mm, yyyy;
	
	if ( obj.value != "" )
		{
			
		//si la chaine est différente de vide
		switch (type)
			{
			case "AUTHORISATION" :
				{
				donneeValide= isAuthorNbr(obj); 
				if (!donneeValide) {msgErreur = eval("auth1_" + lang) }
				break;
				}			
			case "ENTIER" :
				{
				donneeValide = isEntier(obj,longueur);
				if (!donneeValide) {msgErreur = eval("date1_" + lang) }
				break;
				}
				
			case "ACCOUNT_NUMBER":
				{
				obj.value = deformateAccountNumber(obj.value);
				
				if (obj.value.length != 12)
				{
					msgErreur = eval("invalid_account_number_" + lang);
					
					break;
				}
				//numberToTest = AccountNumber;
				
				donneeValide = isEntier(obj,longueur);
				if (!donneeValide) { msgErreur = eval("invalid_account_number_" + lang) }
				else
				{
				obj.value = formateAccountNumber(obj.value);
				donneeValide = true;
				msgErreur='';
				}
				break;	
				}
			
			case "DATE" :
				{
				dateTemp = obj.value;
				
				if (dateTemp.length >= 8)
				{
					dd = dateTemp.substr(0,dateTemp.indexOf("/"));
					dateTemp = dateTemp.substr(dateTemp.indexOf("/")+1);
	
					mm = dateTemp.substr(0,dateTemp.indexOf("/"));
					yyyy = dateTemp.substr(dateTemp.indexOf("/")+1);
					
					if (dd.length < 2) dd = "0" + dd;
					if (mm.length < 2) mm = "0" + mm;
					
					obj.value = dd + "/" + mm + "/" + yyyy;
				}
				
				dateToTest = obj.value;
				
				donneeValide= isDate(obj); 
				if (!donneeValide) 
				{
					msgErreur = eval("date2_" + lang)
					obj.value = dateToTest;
				}
				else
				{
					obj.value  = formateDate( obj.value );
				}
				
				break;
				}				
			case "MONTANT" :
				{
				donneeValide= isMontant(obj); 	
				if (!donneeValide) {msgErreur = "Vous devez saisir un MONTANT valide" }
				else {obj.value= formateMontant( obj.value ) }
				break;
				}
			default :
				{
				donneeValide = true;
				break;
				}
			}

		if (!donneeValide)
			{
			//gestionErreur( obj , msgErreur  );
			alert( msgErreur  );
			obj.focus();
			return false;
			}
		}

	// dans ce cas, soit la chaine est vide, soit la chaine est donneeValide=true	
	//gestionOK ( obj );
	//si modification de la donnée, on renvoie true
	return ( obj.value != archValeur );
}



/*------------------------------------------------------------
				COMPOSANTS
------------------------------------------------------------ */

//***********************************************************
//			Composant : ENTIER			
//***********************************************************

function checkEntier( o , obj )
{
	
	// définition de l'expression régulière
	var regExp = new RegExp("[0-9]");

	// contrôle de l'expression régulière
	isOk = checkKeyPress(regExp,o)

	//traitements complémentaires
	return isOk
}


function isEntier(o,longueur)
{
	var objRegExp = /(^\d\d*$)/;
	if (longueur)
		{
		if (o.value.length != longueur)
			return false;
		}
	return objRegExp.test( o.value );
}

//***********************************************************
//			Composant : DATE			
//***********************************************************

function isDate(o)
{
	var objRegExp = /(^\d{8}$)/;
	
	o.value = deformateDate( o.value );
	
	if ( objRegExp.test( o.value ) )
		{
		mois = parseInt(o.value.substr ( 2 ,2 ), 10 )
		jour = parseInt(o.value.substr ( 0 ,2 ), 10 )
		annee = parseInt(o.value.substr ( 4 ,4 ), 10 )

		var jour_annee = ( (jour>0) && (annee>0) )

		// mois de 31 jours
		if ( (mois==1) || (mois==3) || (mois==5) || (mois==7) || (mois==8) || (mois==10)|| (mois==12) )  {return ((jour_annee) && (jour < 32));	}
		
		else
			{ 
			// mois de 30 jours
			if ( (mois==4) || (mois==6) || (mois==9) || (mois==11) )  { return ((jour_annee) && (jour < 31)); }	
			
			else
				{
				//mois de février
				if (mois==2)
					{
					// 29 jours
					if ( ((annee % 4) == 0)	&& ( ( (annee % 100) != 0) || ((annee % 400) == 0) )) { return ((jour_annee) && (jour < 30)); }
					
					// 28 jours
					else
						{ return ((jour_annee) && (jour < 29));	}
					}
				// erreur dans le mois
				else
					{ return false; }
				}
			}
		}
	else
		{
			return false;
		}
		
	
}

function formateDate( date )
{
	return (date.substr(0,2) + "/" + date.substr(2,2) + "/" + date.substr(4,4) )
}


function deformateDate( date )
{
	var objRegExp = /\//g; 		//recherche globale des "/"
  	return date.replace(objRegExp ,'');	
}

function formateAccountNumber( account_number )
{
	return (account_number.substr(0,3) + "-" + account_number.substr(3,7) + "-" + account_number.substr(10,2) )
}


function deformateAccountNumber( account_number )
{
	var objRegExp = /\-/g; 		//recherche globale des "-"
	//alert(account_number);
  	return account_number.replace(objRegExp ,'');	
}


//***********************************************************
//			Composant : MONTANT			
//***********************************************************


function isMontant(o)
{
	//var objRegExp = /((^\d\d*\.\d{1,2}$)|(^\d\d*$))/;
	//var objRegExp = /((^\d\d*\.\d{1,2}$)|(^\d\d*$))/;
	var objRegExp = /(^\d+[\.,]\d{1,2}$)|(^\d+$)/;
	return objRegExp.test( o.value );		
}


function checkMontant( o , obj )
{

	// définition de l'expression régulière
	var regExp = new RegExp("[0-9.,]");

	// contrôle de l'expression régulière
	isOk = checkKeyPress(regExp,o)
	// contrôle de la touche DEL pour Netscape
	if (window.top.isNav4) 
		if ( o.which == 8 ) 
			return true;
	//traitements complémentaires
	if (isOk) {
		if (obj.value.toString().indexOf(".") == -1 && obj.value.toString().indexOf(",") == -1 && obj.value.length > 9)
			if (o.keyCode == 46 || o.keyCode == 44)
				return true;
			else
				return false;
		else if (obj.value.length > 10)
			return false;
	}
}

function formateMontant( montant , type)
{

montant = montant.toString().replace(/\ /g,'');
montant = montant.toString().replace(/,/g,'.');
if (isNaN(montant) ) montant= "0";
centime = Math.floor((montant*100+0.5)%100);
montant = Math.floor(montant).toString();
if (centime<10) centime = "0" + centime;
for (var i = 0 ; i<Math.floor((montant.length-(1+i))/3) ; i++)
	montant = montant.substring(0,montant.length-(4*i+3)) + "" + montant.substring(montant.length-(4*i+3));

return (montant + "." + centime);
}

function deformateMontant( montant )
{
	var objRegExp = /\ /g; 		
  	return montant.replace(objRegExp ,'');	
}


//***********************************************************
//			Composant : AUTHORISATION			
//***********************************************************

function isAuthorNbr(o)
{
	var objRegExp = /(^\d{12}$)/;
	var the_modulus;
	var i_modulus;
	var frst_part;
	if ( objRegExp.test( o.value ) )
	{	frst_part = o.value.substring(0,10);
		the_modulus=frst_part%97;
		if (the_modulus==0) the_modulus=97;
		i_modulus = o.value.substring(10,12);
//		alert(i_modulus+":"+the_modulus);
		if (the_modulus != i_modulus)
		{ return false; }
		else { return true; }
		return true;
	}
	else
	{	return false; }
}

//***********************************************************
//			Composant : ACCOUNT NUMBER			
//***********************************************************
function checkAccountNumber( o , obj )
{

	// définition de l'expression régulière
	var regExp = new RegExp("[-0123456789]");

	// contrôle de l'expression régulière
	isOk = checkKeyPress(regExp,o)
	// contrôle de la touche DEL pour Netscape
	if (window.top.isNav4) 
		if ( o.which == 8 ) 
			return true;
	//traitements complémentaires
	if (isOk) {
		if (obj.value.toString().indexOf(".") == -1 && obj.value.toString().indexOf(",") == -1 && obj.value.length > 14)
			if (o.keyCode == 46 || o.keyCode == 44)
				return true;
			else
				return false;
		else if (obj.value.length > 14)
			return false;
	}
}



/*------------------------------------------------------------
			METHODES COMMUNES
------------------------------------------------------------ */

//***********************************************************
//*********		checkKeyPress				
//***********************************************************

function checkKeyPress(regExp,o)
{
	
	testC = (window.top.isIE4) ? o.keyCode : o.which;

	if ( (window.top.isNav4) && (testC==8 ) )
		{
		//alert("true");
		return true;
		}
	
	if (!(regExp.test(String.fromCharCode(testC))))
		{
		if (window.top.isIE4) 
			{event.returnValue=false}
			//alert ("checkKeyPress If");
			return false;
		}
		else
		{
			//alert ("checkKeyPress Else");
			return true;
		}

}


//***********************************************************
//	*********		GESTION ERREURS				
//***********************************************************


function gestionErreur( obj , msgErreur )
{
	alert( msgErreur  );
	if ( window.top.isIE4 ) {obj.style.backgroundColor = "#dddddd"};
	if ( window.top.isNav4 ) {obj.style = "background-color:#DDDDDD"};
	obj.focus();
}

function gestionOK ( obj )
{
	if ( window.top.isIE4 ) {obj.style.backgroundColor="white";}
}

//***********************************************************
//        **********    GESTION TOUCHE ENTER				
//***********************************************************

function saisieEnter( o , obj )
{

	testC = (window.top.isIE4) ? o.keyCode : o.which;
	
	if (testC==13)
		{
		if (obj.form[(getIndex(obj)+1) % obj.form.length].type != "hidden")
			{
			obj.form[(getIndex(obj)+1) % obj.form.length].focus();
			}
		return true ;
		}
	else
		{
		return false ;
		}
}


function getIndex(obj)
	{
	var index = -1, i = 0, found = false;
	while (i < obj.form.length && index == -1)
		if (obj.form[i] == obj)index = i;
		else i++;
	return index;
	}

function LongueurValide(item,longueur){
        return (item.length >= longueur);}
        


function splitDate(item)
{
if (item !="")
	{
	tab = item.split("/");
	out = tab[2]+"-"+tab[1]+"-"+tab[0];
	}
else
	{
	out = item
	}
return out;

}
				

function isDateOK (lang, dayDate)
{
tabDateSaisie = document.form2.dateVisible.value.split("/");

anneeSaisie = tabDateSaisie[2];
moisSaisie = tabDateSaisie[1];
jourSaisie = tabDateSaisie[0];
dateSaisie = new Date(anneeSaisie,moisSaisie - 1,jourSaisie);


//Verification des delais de livraison minimum et maximum
tabDateCourante = dayDate.split("/");
anneeCourante = tabDateCourante[2];
moisCourante = tabDateCourante[1];
jourCourante = tabDateCourante[0];
dateCourante = new Date(anneeCourante,moisCourante - 1,jourCourante);
//90 days
maxDate = dateCourante.getTime() + 90 * 1000 * 60 * 60 * 24;
if (dateSaisie.getTime() > maxDate)
	{ 
	alert(eval("gde8_" + lang));
	return false; 
	}
else if (dateSaisie.getTime()<dateCourante.getTime())
	{
	alert(eval("gde5_" + lang));
	return false; 
	}
else
	{return true;}
			
}

/*******************************************************************/
/* Procedure  : To check if an input fied is numeric and not empty */
/* oControl   : text control												               */
/* language   : currently selected language code                   */
/* errControl : error code corresponding to specific control       */
/*******************************************************************/
function CheckNumeric(oControl, language, oForm, ErrControl){

	var err=0;
	var err_message;
	/* Check if field is not empty */
	if(oControl.value == "") 
		{
			err_message = eval(ErrControl + "_1_" + language);
			err=1;
		} 
	
	if(!isMontant(oControl))
		{
			err_message = eval(ErrControl + "_2_" + language);
			oControl.value = "";
			err=1;
		}
	
	if (err==1)
		{
		alert(err_message);
		}
	else
		{
		oForm.submit();
		}
		
}

// Check all Checkboxes ts_p_listworks
function CheckBoxes()
{
	for (var i=0; i< document.form1.id_work.length; i++)
        {
            document.form1.id_work[i].checked = (document.form1.selectAll.checked);
        }
}

// Submit ts_p_listworks form if checkbox checked
function CheckSubmit(x)
{
var OK = 0;
	if (document.form1.id_work.length == undefined)
	{
		if (document.form1.id_work.checked)
		{OK = 1}
	}
	for (var i = 0; i < document.form1.id_work.length; i++)
        {
        	
        	if (document.form1.id_work[i].checked)
                {OK = 1}
	}
	if (OK == 1)
	{
		if (x == "print")
			{document.form1.target="_blank";}
		else
			{document.form1.target="_self"}
		document.form1.submit();
	}
	else
	{alert('Please check at least one checkbox')}
}

	//  check for valid numeric strings
	function IsNumeric(strString)		
   {
	   var strValidChars = "0123456789.-";
	   var strChar;
	   var blnResult = true;

	   if (strString.length == 0) return false;
	   for (i = 0; i < strString.length && blnResult == true; i++)
	   {
			strChar = strString.charAt(i);
			if (strValidChars.indexOf(strChar) == -1)
			{
				blnResult = false;
			}
		}
		return blnResult;
   }
// Set id_customer_id to hidden field when id_work checkbox checked -->ts_p_listworks
/*function SetId(x)
{
	document.form2.id_customer_authorisation.value = x	
}
*/
function showDelivery()
{
		if (document.form1.delivery_address.checked == true)
		{
			//alert('no display');
			document.getElementById('delivery').style.display = 'none';
		}
		else
			//alert('display');
			document.getElementById('delivery').style.display = 'block';
}