/*
* File : forms.js
* Date : 01/09/2004
* Author : Bertrand AGIER
* Compagny : Enyware
* Comment : Vérification des données soumises dans les formulaires
*/

/* Date : 14/12/04
* Author : Bertrand AGIER
* Comment : ajout de CHK_RADIO_SELECTED pour vérifier les bouton radio 
*/

/* Date : 04/01/2005
* Author : Bertrand AGIER
* Comment : ajout de la vérification que le champs de config existe bien (on sort avec alerte s'il n'existe pas)
*/

/*
* Date : 12/01/2005
* Author : Bertrand AGIER
* Comment : Ajout de CHK_EXTENSION + changement de la structure
*/

/*
* Date : 13/01/2005
* Author : Bertrand AGIER
* Comment : Modification de CHK_DATE : les 3 champs jour, mois, annee sont passé dans un tableau
*/

/* Date : 17/07/2006
* Author : Nicolas VIGIER
* Comment : ajout de la vérification de saisie d'au moins 1 des 2 champs données
*/

/* Date : 25/01/2007
* Author : Benoit MONTUELLE
* Comment : ajout support CSS externe
*/

/* Date : 25/01/2007
* Author : Benoit MONTUELLE
* Comment : ajout de CHK_NON_NULL
*/

/* Date : 26/01/2007
* Author : Benoit MONTUELLE
* Comment : ajout de la vérification de l'antériorité d'une date sur une autre (début<fin)
*/

/* Date : 29/01/2007
* Author : Benoit MONTUELLE
* Comment : ajout du support des tableaux de champs pour les types CHK_NON_EMPTY, CHK_NON_NULL, CHK_INT, CHK_FLOAT
* avant ca ne marchais que pour les premier champ (Firefox), maintenant ca marche pour tous, seule la coloration reste encore à faire
*/

/* Date : 06/03/2007
* Author : Benoit MONTUELLE
* Comment : ajout de CHK_HTTP_URL pour vérifier une url http ou https
*/

/* Date : 18/04/2007
* Author : Benoit MONTUELLE
* Comment : ajout d'un nouveau type pour les <select TYPE_SELECT,
* Corrigé un bug dans  higlightWrongField quand on ne veut pas utiliser de classe CSS, mettre une chaine vide : FORM_DATE_CLASS = '';
*/

/* Date : 03/07/2007
* Author : Benoit MONTUELLE
* Comment : ajout de CHK_MAC_ADDR pour vérifier une adresse MAC (spécial datakit)
*/

/* Date : 05/07/2007
* Author : Benoit MONTUELLE
* Comment : Bug dans le support des champs tableau avec [] dans le nom du champ
*/

/************************ 
  Common vars
*************************/
//CSS
var FORM_TEXT_CLASS = '';
var FORM_DATE_CLASS = '';
var FORM_TEXTAREA_CLASS = '';
var FORM_SELECT_CLASS = '';

var FORM_TEXT_CLASS_HL = '';
var FORM_DATE_CLASS_HL = '';
var FORM_TEXTAREA_CLASS_HL = '';
var FORM_SELECT_CLASS_HL = '';

//Type de champs 
var TYPE_TEXT = 0;
var TYPE_DATE = 1;
var TYPE_TEXTAREA = 2;
var TYPE_SELECT = 3;

var CSS = new Array();
CSS[TYPE_TEXT] =  FORM_TEXT_CLASS;
CSS[TYPE_DATE] = FORM_DATE_CLASS;
CSS[TYPE_TEXTAREA] = FORM_TEXTAREA_CLASS;
CSS[TYPE_SELECT] = FORM_SELECT_CLASS;

var CSS_HL = new Array();
CSS_HL[TYPE_TEXT] =  FORM_TEXT_CLASS_HL;
CSS_HL[TYPE_DATE] = FORM_DATE_CLASS_HL;
CSS_HL[TYPE_TEXTAREA] = FORM_TEXTAREA_CLASS_HL;
CSS_HL[TYPE_SELECT] = FORM_SELECT_CLASS_HL;

// Types de vérifications
var CHK_NON_EMPTY 		= 1;
var CHK_FLOAT 	    	= 2;
var CHK_INT	 			= 3;
var CHK_EXTENSION 		= 4;
var CHK_SELECT 			= 5;
var CHK_EMAIL       	= 6;
var CHK_DATE        	= 7;
var CHK_PASSWD_CONFIRM  = 8;
var CHK_PHOTO           = 9;
var CHK_RADIO_SELECTED  = 10;
var CHK_ATLEAST_ONE_NON_EMPTY = 11;
var CHK_NON_NULL = 12;
var CHK_DATE_ANTE = 13;
var CHK_HTTP_URL = 14;
var CHK_MAC_ADDR = 15;
//var CHK_NON_EMPTY_ARRAY = 14;

//Messages d'erreur
chk_err_msg = new Array();
chk_err_msg[CHK_NON_EMPTY]      = "Vous devez remplir le champs '<#field_name#>'.";
//chk_err_msg[CHK_NON_EMPTY_ARRAY] = "Vous devez remplir le champs '<#field_name#>'.";
chk_err_msg[CHK_FLOAT]          = "Le champs '<#field_name#>' doit être un nombre flottant.\nUtilisez le point et non la virgule séparateur.";
chk_err_msg[CHK_INT]            = "Le champs '<#field_name#>' doit être un nombre entier.";
chk_err_msg[CHK_EXTENSION]      = "Le fichier du champs '<#field_name#>' doit avoir une des extensions suivantes : ";
chk_err_msg[CHK_SELECT]         = "Vous devez sélectionner un élément pour le champs '<#field_name#>'.";
chk_err_msg[CHK_EMAIL]          = "L'adresse email saisie dans le champs '<#field_name#>' n'est pas valide.\nVous devez utiliser une adresse de type utilisateur@domaine.com";
chk_err_msg[CHK_DATE]           = "La date saisie dans le champs '<#field_name#>' n'est pas valide.\nVous devez utiliser le format jj/mm/aaaa";

chk_err_msg[CHK_DATE_ANTE]			= "La date saisie dans le champ '<#field_name#>' doit être antérieure à la date saisie dans le champ 'date de fin'";
chk_err_msg[CHK_PASSWD_CONFIRM] = "Le mot de passe du champs '<#field_name#>' et sa confirmation ne correspondent pas.";
chk_err_msg[CHK_PHOTO]          = "Le fichier du champs '<#field_name#>' doit être une photo au format JPEG.\nL'extension du fichier doit être .jpg ou .jpeg";
chk_err_msg[CHK_RADIO_SELECTED] = "Vous devez selectionner une option pour le champs '<#field_name#>'.";
chk_err_msg[CHK_NON_NULL] = "La valeur du champ '<#field_name#>' ne doit pas être nulle.";
chk_err_msg[CHK_ATLEAST_ONE_NON_EMPTY] = "Au moins un des champs <#field_name#> doit être rempli.";
chk_err_msg[CHK_HTTP_URL] = "Le champ '<#field_name#>' doit être une adresse internet valide.\nUne adresse valide commence par http:// ou https:// et comprend une extension (par ex .com ou .fr)";
chk_err_msg[CHK_MAC_ADDR] = "Le champ '<#field_name#>' doit être une adresse MAC valide.\nUne adresse comporte 12 caractères hexadécimaux (0-9, a-f)";

chk_err_msg_uk = new Array();
chk_err_msg_uk[CHK_NON_EMPTY]      = "You must complete this '<#field_name#>' field before we continue.";
//chk_err_msg_uk[CHK_NON_EMPTY_ARRAY] = "You must complete this '<#field_name#>' field before we continue.";
chk_err_msg_uk[CHK_FLOAT]          = "You must use a floating number for this '<#field_name#>' field.\nPlease use a comma as a separator.";
chk_err_msg_uk[CHK_INT]            = "You must use an integer number for this '<#field_name#>' field.";
chk_err_msg_uk[CHK_EXTENSION]      = "You must use one of the following file types for this '<#field_name#>' field: ";
chk_err_msg_uk[CHK_SELECT]         = "You must select an answer for the field '<#field_name#>'.";
chk_err_msg_uk[CHK_EMAIL]          = "You must use a valid e-mail address.\nPlease make sure that the one in this '<#field_name#>' field matches the user@domain.com format.";
chk_err_msg_uk[CHK_DATE]           = "You must use a valid date.\nPlease make sure that the one in this '<#field_name#>' field matches the dd/mm/yyyy format.";
chk_err_msg_uk[CHK_DATE_ANTE]			= "The date in field '<#field_name#>' must be set before the field 'End date'";
chk_err_msg_uk[CHK_PASSWD_CONFIRM] = "Your password -'<#field_name#>' field- and confirmation don’t match.\nPlease re-type them, and submit again.";
chk_err_msg_uk[CHK_PHOTO]          = "You must use a JPEG format picture in this '<#field_name#>' field.\nPlease check the file extension, and submit again.";
chk_err_msg_uk[CHK_RADIO_SELECTED] = "You must select an option in this field '<#field_name#>'.";
chk_err_msg_uk[CHK_NON_NULL] = "The value in field '<#field_name#>' can't be null.";
chk_err_msg_uk[CHK_ATLEAST_ONE_NON_EMPTY] = "At least one of the fields <#field_name#> must be filled.";
chk_err_msg_uk[CHK_HTTP_URL] = "The value in field '<#field_name#>' must be a valid internet location.\nA valid location begins with http:// or https:// and has an extension (ie .com or .net)";
chk_err_msg_uk[CHK_MAC_ADDR] = "The value in field '<#field_name#>' must be a valid MAC adress.\nA valid MAC adress contains 12 hexadecimal caracters ";

var wrongInput_bgColor = "#00AEC3";


/************************ 
   User functions
*************************/
var internetexplorer = navigator.userAgent.toLowerCase().indexOf('msie')>=0?true:false;
function form_verif(form,check_config,langue){
	
	if(langue=='')
	{
		langue='fr';
	}
	
	var err_msg = new String();
	for (var i=0;i<check_config.length;i++){
    check_type  = check_config[i][0];   
		check_libelle = check_config[i][1];        
		check_object = check_config[i][2];		
		/* Si un champs dans config n'exisre pas dans le form on sort avec alerte */
//		alert(check_object + ' type de chk_object' + typeof(check_object) + ' type form.elements[check_object]' + typeof(form.elements[check_object]));
		if(typeof(check_object) == "object"){			
			//Si le champs a tester est un tableau (date par exemple)
		//	alert('check_object est peut etre un tableau');
			for(var k=0;k<check_object.length;k++){
				if( typeof(form.elements[check_object[k]]) != "object"){
					if(langue=='uk')
					{
						alert('form.config Error : The field \''+check_object[k]+'\' doesn\'t exist!');
					}
					else
					{
						alert('form.config Error : Le champs \''+check_object[k]+'\' n\'existe pas !');
					}
					
					return false;
				}
			}
		}else{
			//si on a passé un tableau de champs a tester, IE a des problèmes avec
			if (internetexplorer == true && check_object.match(/\[\]/)!=null) {
				//	alert('dans la config de ' + check_object + '  on a un tableau, on s\'adapte pour IE\nValeur de dist_id, méthode alternative, ='+document.form1.dist_id.value);
						
						var cnt = 0;
						var tst_chk_obj = new Array(); 

						var dbg = '';
						var inputs = document.getElementsByTagName('input');
						for (var l = 0;  l < inputs.length; l++) {
								if (inputs[l] && inputs[l].id && (inputs[l].name == check_object)) {
									tst_chk_obj[cnt] = inputs[l];
									//dbg += 'input id : ' + inputs[l].id + '\n';
									cnt++;
								}
						}

						var check_obj = tst_chk_obj;//ref copy

			}
			else {
				if( typeof(form.elements[check_object]) != "object"){
					if(langue=='uk')
						{
							alert('form.config Error : The field \''+check_object+'\' doesn\'t exist!');
						}
						else
						{
							alert('form.config Error : Le champs \''+check_object+'\' n\'existe pas !');
						}
					return false;			
				}else{
					//alert('check_object \'' +check_object+ '\' est utilisé avec form.elements');
					check_obj   = form.elements[check_object];
				}
			}
		}
		
	
		
		switch(check_type){
             
           case CHK_NON_EMPTY:                                 
									//alert();
                check_value = check_obj.value;
							//si le champ est un tableau (ex : pays_id[])
							if (check_obj.length && check_obj.length > 0) {
								verif_function  = function(){
									
									err_msg = get_err_msg(check_type,check_libelle,langue);

									for (var i = 0; i < check_obj.length; i++) {
										if (window.console) { console.log('field array value : ' + check_obj[i].value) };
										if (isEmpty(check_obj[i].value)) {
											return false;
										}
									}
									return true;
								}
								
							}
							else {
								verif_function  = function(){
									err_msg = get_err_msg(check_type,check_libelle,langue);
									return !isEmpty(check_obj.value);
								}
							}
					 break;

					case CHK_NON_NULL:
							check_value = check_obj.value;
							if (check_obj.length && check_obj.length > 0) {
								verif_function  = function(){
									
									err_msg = get_err_msg(check_type,check_libelle,langue);

									for (var i = 0; i < check_obj.length; i++) {
										//alert('field array value : ' + check_obj[i].value);
										if (isNull(check_obj[i].value)) {
											return false;
										}
									}
									return true;
								}
								
							}
							else {
								verif_function  = function(){
									err_msg = get_err_msg(check_type,check_libelle,langue);
									return !isNull(check_obj.value);
								}
							}
                          
           break;
                                    
            case CHK_SELECT:                
            	verif_function  = function(){
						err_msg = get_err_msg(check_type,check_libelle,langue);
						return !isEmpty(check_obj.value);
				}               
                break;
			
			case CHK_RADIO_SELECTED:
				verif_function  = function(){
						err_msg = get_err_msg(check_type,check_libelle,langue);
						return getRadioValue(check_obj) != '';
				} 			
				break;
				
      case CHK_FLOAT:
							if (check_obj.length && check_obj.length > 0) {
								verif_function  = function(){
									
									err_msg = get_err_msg(check_type,check_libelle,langue);

									for (var i = 0; i < check_obj.length; i++) {
										//alert('field array value : ' + check_obj[i].value);
										if (!isFloat(check_obj[i].value)) {
											return false;
										}
									}
									return true;
								}
								
							}
							else {
								verif_function  = function(){
									if(!(isEmpty(check_obj.value)) && !(isFloat(check_obj.value))){ 
										err_msg = get_err_msg(check_type,check_libelle,langue);
										return false;
									}else{ return true; }
								} 			
							}
				break;
            
      case CHK_INT:
						if (check_obj.length && check_obj.length > 0) {
								verif_function  = function(){
									
									err_msg = get_err_msg(check_type,check_libelle,langue);

									for (var i = 0; i < check_obj.length; i++) {
										//alert('field array value : ' + check_obj[i].value);
										if (!isInt(check_obj[i].value)) {
											return false;
										}
									}
									return true;
								}
								
							}
							else {
								verif_function  = function(){
									if(!(isEmpty(check_obj.value)) && !(isInt(check_obj.value))){
										err_msg = get_err_msg(check_type,check_libelle,langue);
										return false;
									}else{ return true; }
								}				 
							}
			break;
                
     case CHK_EMAIL:
				verif_function  = function(){
					if(!(isEmpty(check_obj.value)) && !(isMail(check_obj.value))){
						err_msg = get_err_msg(check_type,check_libelle,langue);
						return false;
					}else{ return true; }
				}			            
			break;
            
     case CHK_PASSWD_CONFIRM:
                if( typeof(form.elements[check_config[i][2]]) == "object" && typeof(form.elements[check_config[i][3]]) == "object"){
                    
					
					check_obj_passwd   = form.elements[check_config[i][2]];  
                    check_obj_passwd2   = form.elements[check_config[i][3]];                      
                    field_label = check_config[i][1];
                    verif_function = function(){
						if(!(isEmpty(check_obj_passwd.value)) && !(isEmpty(check_obj_passwd2.value)) && !(check_obj_passwd.value == check_obj_passwd2.value)){
							err_msg = get_err_msg(check_type,field_label,langue);
							return false;
						}else{ return true;}
					}
				}
				break;
            
      case CHK_EXTENSION:
				var valid_extensions = new Array();
				var verif_function  = function(){
					resultat = true;
					if(!(isEmpty(check_obj.value))){
						resultat = false;
						valid_extensions = check_config[i][3]; 
						if(!valid_extensions.length > 0){
								alert('ERREUR CONFIG CHK_EXTENSION');
								return false;
						}else{
							resultat = false;
							for(var k=0;k<valid_extensions.length;k++){
								if(check_extension(check_obj.value,valid_extensions[k])){
									resultat = true;
								}
							}							
						}
					}
					if(resultat == false){
					   	err_msg = get_err_msg(check_type,check_libelle,langue);
						err_msg = err_msg + valid_extensions.join(", "); //Ajoute la liste des extensions valide en fin de message...
					  }
					return resultat;
				}								
				break;
				
			case CHK_DATE:
                
				objet_date = check_config[i][2];
				
         if( typeof(objet_date) == "object" && objet_date.length == 3){
                    
					
                    check_obj_day   = form.elements[objet_date[0]];
                    check_obj_month   = form.elements[objet_date[1]];                    
                    check_obj_year   = form.elements[objet_date[2]];
                    
                    day = check_obj_day.value;
                    month = check_obj_month.value;
                    year = check_obj_year.value;
                    
                    //field_label = check_config[i][1];
							check_obj = check_obj_day; //Pour mettre l'alerte sur le champs jour
					
             verif_function  = function(){
									if( ((!isEmpty(year)) || (!isEmpty(month)) || (!isEmpty(day))) && !(isValidDate(year,month,day))){
											err_msg = get_err_msg(check_type,check_libelle,langue);
											return false;
									}else{ return true; }
								}				
											}else{
								if(langue=='uk')
								{
									alert('Error in config of CHK_DATE.\n The third argument must be an array [\"jour\",\"mois\",\"annee\"].');
								}
								else
								{
									alert('Erreur dans config de CHK_DATE.\n L\'argument 3 doit etre un tableau [\"jour\",\"mois\",\"annee\"].');
								}
								
								return false;
							}
                
                break;
								
				case CHK_DATE_ANTE:
								//alert('config ok');
                
								objet_date = check_config[i][2];
				
             if( typeof(objet_date) == "object" && objet_date.length == 6){
                    
					
                    check_obj_day   = form.elements[objet_date[0]];
                    check_obj_month   = form.elements[objet_date[1]];                    
                    check_obj_year   = form.elements[objet_date[2]];
                    
                    day = check_obj_day.value;
                    month = check_obj_month.value;
                    year = check_obj_year.value;
                    
										check_obj_day2   = form.elements[objet_date[3]];
                    check_obj_month2   = form.elements[objet_date[4]];                    
                    check_obj_year2   = form.elements[objet_date[5]];
                    
                    day2 = check_obj_day2.value;
                    month2 = check_obj_month2.value;
                    year2 = check_obj_year2.value;
										
                    //field_label = check_config[i][1];
					check_obj = check_obj_day; //Pour mettre l'alerte sur le champs jour
					
                    verif_function  = function(){
						if( !isBeforeDate(year, month, day, year2, month2, day2) ){
								err_msg = get_err_msg(check_type,check_libelle,langue);
								return false;
						}else{ return true; }
					}				
                }else{
					if(langue=='uk')
					{
						alert('Error in config of CHK_DATE_ANTE.\n The third argument must be an array [\"jour\",\"mois\",\"annee\", \"jour\",\"mois\",\"annee\"].');
					}
					else
					{
						alert('Erreur dans config de CHK_DATE_ANTE.\n L\'argument 3 doit etre un tableau [\"jour\",\"mois\",\"annee\", \"jour\",\"mois\",\"annee\"].');
					}
					
					return false;
				}
                
                break;
            
      case CHK_PHOTO:
				verif_function  = function(){
					if(!(isEmpty(check_obj.value)) && !(checkJpegExtension(check_obj.value))){ 
						err_msg = get_err_msg(check_type,check_libelle,langue);
						return false;
					}else{ return true; }
				}				
			break;
			
			case CHK_ATLEAST_ONE_NON_EMPTY:			
				verif_function = function() {
					fields = check_config[i][2];
					for (var j = 0; j < fields.length; j++) {
						le_field = form.elements[fields[j]];
					//	alert(le_field.name);
						if (le_field.name && !isEmpty(le_field.value)) {
								return true;																	 
						}
					}	
				//	alert('nothin right, cancelling submit');
					err_msg = get_err_msg(check_type,check_libelle,langue);
				//	alert(err_msg);
					return false;
				}
			break;
				
			case CHK_HTTP_URL:
				verif_function  = function(){
					if(!(isEmpty(check_obj.value)) && !(isUrl(check_obj.value))){
						err_msg = get_err_msg(check_type,check_libelle,langue);
						return false;
					}else{ return true; }
				}		
				break;
				
			case CHK_MAC_ADDR:
				if (check_obj.length && check_obj.length > 0) {
					verif_function  = function(){
						err_msg = get_err_msg(check_type,check_libelle,langue);
				//		alert(check_obj.length + ' fields to test');
						for (var i = 0; i < check_obj.length; i++) {
								
										//alert('field array value : ' + check_obj[i].value);
										if (!isEmpty(check_obj[i].value) && !isMacAdress(check_obj[i].value)) {
												if (window.console) { console.log('CHK_MAC_ADDR checking obj ' + check_obj[i].id + ' false') }
											return false;
										}	
						}
						return true;
					}	
					
				}
				else { //un seul champ
						//	alert(check_obj.length + ' (1) fields to test');
					verif_function  = function(){
						
							if (window.console) { console.log('CHK_MAC_ADDR checking obj ' + check_obj.id) }
						if(!(isEmpty(check_obj.value)) && !(isMacAdress(check_obj.value))){
							err_msg = get_err_msg(check_type,check_libelle,langue);
							return false;
						}else{ 
							return true; 
						}
						
					}
				}
			break;
    } //Fin du switch
		
		// On exécute la fonction de vérification sur ce champs
		if(typeof(verif_function) == "function"){
			var input_type = TYPE_TEXT;

			if (check_config[i][3] && ((check_config[i][3] == TYPE_TEXT) || (check_config[i][3] == TYPE_DATE) || (check_config[i][3] == TYPE_TEXTAREA)|| (check_config[i][3] == TYPE_SELECT))){
				input_type = check_config[i][3];
			}
		//	alert (input_type);
			
		//	alert(" input_type=" + input_type); 
			if(verif_function() == false){
				alert(err_msg);					
				class_name = CSS_HL[input_type];
				
				//a revoir
				if(check_type == CHK_ATLEAST_ONE_NON_EMPTY){					
					return false;
					/*higlightWrongField(form.elements[check_config[i][2]], class);
					higlightWrongField(form.elements[check_config[i+1][2]], class);
					higlightWrongField(form.elements[check_config[i+2][2]], class);*/
				}
					
					higlightWrongField(check_obj, class_name);
				///}
				return false;
			}else{
				class_name = CSS[input_type];
				unHighLightWrongField(check_obj, class_name);
			}
		}
        
    }
}


function higlightWrongField(object, class_name){
	if (class_name == undefined) {
		class_name = FORM_TEXT_CLASS_HL;
	}
	//alert ('class name : ' + class_name);
	try{object.focus();}
	catch(e){// alert(e) 
	}

	if (class_name != '') {
		//alert('highlight object class=' + object.className);
		try{object.className=class_name;}
		catch(e){ //alert(e) 
		}		
		//alert('highlight object class=' + object.className);
	}
}

function unHighLightWrongField(object, class_name){
	if (class_name == undefined) {
		class_name = FORM_TEXT_CLASS;
	}
	
	if (class_name != '') {
		try{object.className=class_name;}catch(e){ alert(e) }			
	}
}

function get_err_msg(check_type,field_name,langue){     
    /* Remplace le nom du champ par sa valeur dans le message d'erreur */    
    var reg = new RegExp("<#field_name#>", "g");
	if(langue=='uk')
	{
		 err_msg = chk_err_msg_uk[check_type].replace(reg,field_name);   
	}
	else
	{
		 err_msg = chk_err_msg[check_type].replace(reg,field_name);   
	}
    return err_msg;
}

function dump_object(objet){
   /* Pour dumper un objet */
   for(var list in objet){       
         try{alert(list+' : '+list.value+'\n');}catch(e){}
   }   
}

/********************************************************************************
 Private functions to check values
*********************************************************************************/

function isValidDate (year, month, day) {        
	// month argument must be in the range 1 - 12
    month = month - 1; // javascript month range : 0- 11
    var tempDate = new Date(year,month,day);
    
    if (!((year == tempDate.getFullYear()) && (month == tempDate.getMonth()) &&	(day == tempDate.getDate()))){
            return false;
    }
    return true;
}

function isBeforeDate (year, month, day, year2, month2, day2) {        
	// month argument must be in the range 1 - 12
    month = month - 1; // javascript month range : 0- 11
		month2 = month2 - 1;
		var dt1 = new Date();
		dt1.setYear(year);
		dt1.setMonth(month);
		dt1.setDate(day);
    var dt2 = new Date();
		dt2.setYear(year2);
		dt2.setMonth(month2);
		dt2.setDate(day2);

		dt1 = Date.parse(dt1);
		dt2 = Date.parse(dt2);
	
	//alert (dt1 + '::' + dt2);
		if (dt1 < dt2) return true;
		return false; 
}

function isEmpty(value){
	return (trim(value) == "");
}
//Vérifie la syntaxe d'une adresse email
function isMail(email) {
	r = trim(email).match(/^[A-Za-z0-9_.-]+@([A-Za-z0-9_-]+\.)+[A-Za-z]{2,4}$/)!=null;
	return r;
	
}
//Vérifie la syntaxe d'une adresse email
function isUrl(url) {
	r = url.match(/^(http|https):\/\/[\w\.\-]+\.[\w]{2,4}[\w\-%&\?\/\.\=\+\,\:\;\@\#]+$/)!=null;
	return r;
}

function isMacAdress(txt) {
	
	r = txt.match(/^([A-Fa-f0-9]{12})$/)!=null
	
//	alert('is '+txt+' mac adress ? ' + r);
	return r;
}

//Vérifie que la chaine passée finie par .jpg pou .jpeg
function checkJpegExtension(fileName) {
	return fileName.match(/^(.)*(.jpg|.jpeg|.JPG|.JPEG)$/)!=null;
}

function check_extension(filename,extension,case_sensitive){
	if(case_sensitive == true){
		var expr = new RegExp("^(.)*(" + extension + ")$");
	}else{
		var expr = new RegExp("^(.)*(" + extension + ")$","i");
	}
	return expr.test(filename);
}

function isInt(elm) {
    if (elm == "") {
        return false;
    }
    for (var i = 0; i < elm.length; i++) {
        if (elm.charAt(i) < "0" || elm.charAt(i) > "9") {
            return false;
        }
    }
    return true;
}

function isFloat (s){
  var decimalPointDelimiter = "." ;
  var i;
  var seenDecimalPoint = false;
  if (isEmpty(s)) 
    if (isFloat.arguments.length == 1) return defaultEmptyOK;
    else return (isFloat.arguments[1] == true);
  if (s == decimalPointDelimiter) return false;
  for (i = 0; i < s.length; i++){   
    var c = s.charAt(i);
    if ((c == decimalPointDelimiter) && !seenDecimalPoint) 
	  seenDecimalPoint = true;
    else if (!isDigit(c)) return false;
  }
  return true;
}

function isDigit (c){
  return ((c >= "0") && (c <= "9"))
}

function isNull(s) {
	if (parseFloat(s) == 0) {
		return true;
	}
	return false;
}

function getRadioValue(radios) {
  for(var i=0; i<radios.length; ++i) {
    if(radios[i].checked){
			return radios[i].value;
	}
  } 
  return '';
}

function trim(s){
  while (s.substring(0,1) == ' '){
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' '){
    s = s.substring(0,s.length-1);
  }
  return s;
}

