trad_formulaireX = null;
/* gVerifFrom */
GVerifForm = Class.create();
GVerifForm.prototype = {
		initialize: function(conteneur,langue,ancre,fermeture_animee) {
			this.erreur ="";
			this.conteneur = $(conteneur);
			trad_formulaireX = eval("Traduction_formulaireX."+langue);
			this.ancre = ancre;
			this.fermeture_animee = fermeture_animee;
			this.ligne_intro = '<span class="titre_verif_form">'+trad_formulaireX.gvf.infos_mal_saisies+'</span><br/><span class="intro_verif_form">Following information are missing or incorrect :</span>';
			this.liste = "";
			this.conteneur_verif = new Array;
		},
		ecrire: function(){
			this.conteneur.innerHTML = "<div>" + this.ligne_intro + this.liste + "</div>";
		},
		supprimer: function(){
			this.conteneur.innerHTML = '';
		},
		affiche: function(){
			return (this.conteneur.innerHTML == '') ? false : true
		},
		add:function(element){
			this.conteneur_verif.push(element);
		},
		traitement:function(element){
			var traitement = $A(this.conteneur_verif);
			var liste = "";
			traitement.each(function(element){
				if(element.traitement()!="")
				{
					switch(element.type)
					{
						case "select":
							liste += "<li>"+trad_formulaireX.gvf.select+element.intitule+".</li>";
						break;
						case "radio":
							liste += "<li>"+trad_formulaireX.gvf.radio+element.intitule+".</li>";
						break;
						case "condition":
							liste += "<li>"+element.intitule+".</li>";
						break;
						case "date":
							liste += "<li>"+trad_formulaireX.gvf.defaut+element.intitule+trad_formulaireX.gvf.est+" "+element.traitement()+"</li>";
						break;
						default:
							liste += "<li>"+trad_formulaireX.gvf.defaut+element.intitule+trad_formulaireX.gvf.est+element.traitement()+"</li>";
						break;
					}
					element.changeStyle(true)
				}
			});
			// si erreur
			if(liste!="")
			{
				this.liste = "<ul>"+liste+"</ul>";

				if(this.affiche())
				{
					Element.setStyle(this.conteneur,{height:'auto'});
					this.ecrire();
					if(this.ancre!="")
				    {
					   Element.scrollTo($(this.ancre))
				    }
				}
				else
				{
					//defixer la taille pour que la liste ne prenne pas toute sa place initiale
					this.ecrire();
					new Effect.BlindDown(this.conteneur,{ancre:this.ancre, afterFinish: function(){
					    if(this.ancre!="")
    				    {
    					   Element.scrollTo($(this.ancre))
    				    }
					}});
				}

				return false
			}
			else
			{
				if(this.affiche() && this.fermeture_animee)
				{
					Element.fixeElement(this.conteneur)
					this.supprimer();
					Effect.BlindUp(this.conteneur);
				}
				this.supprimer();
				return true
			}
		}
};
/* /gVerifFrom */

/* VerifFormTxt */
VerifFormTxt = Class.create();
VerifFormTxt.prototype = {
	initialize: function(element,intitule,obligatoire,taille_min,taille_max,carac_autorise,type) {
		this.element = $(element);
		this.intitule = intitule;
		this.valeur = $F(this.element);
		this.obligatoire = obligatoire;
		this.type=type;
		this.taille_min = taille_min;
		this.taille_max = (taille_max=='max') ? this.element.maxLength : taille_max;
		this.regex = null;
		switch (carac_autorise)
		{
			case "chiffre":
				this.carac_autorise = "0123456789";
			break;
			case "nombre":
				this.carac_autorise = "0123456789., -";
			break;
			case "tel":
				this.carac_autorise = "0123456789. -";
			break;
			case "alpha":
				this.carac_autorise = "abcdefghijklmnopqrstuvwxyzéèêëôöîïàâäûüùç";
			break;
			case "alphachiffre":
				this.carac_autorise = "abcdefghijklmnopqrstuvwxyzéèêëôöîïàâäûüùç0123456789";
			break;
			case "alphanombre":
				this.carac_autorise = "abcdefghijklmnopqrstuvwxyzéèêëôöîïàâäûüùç0123456789., -";
			break;
			case "alpha_2":
				this.carac_autorise = "abcdefghijklmnopqrstuvwxyzéèêëôöîïàâäûüùç0123456789.,- '()€$£%[]{}&=+@?!/°;:*~_’";
			break;
			default:
				this.carac_autorise = "";
			break;
		}
		this.type = type;
	},
	changeStyle: function(change){
		if(change)
		{
			Element.addClassName(this.element,"verif_form_erreur")
		}
		else
		{
			Element.removeClassName(this.element,"verif_form_erreur")
		}
	},
	traitement: function(){
		this.changeStyle(false)
		switch (this.type)
		{
			/* texte */
			case "texte" :
				return this.verification()
			break;

			/* email */
			case "email" :
				this.regex = /^[a-z0-9_.-]+@[a-z0-9_.-]+\.([a-z]{2,4})$/;
				return this.verification()
			break;

			/* date */
			case "date" :
				this.regex = /^([0123])([0123456789])\/([01])([0123456789])\/([012])([0123456789])([0123456789])([0123456789])$/;
				return this.verification()
			break;

			/* date_j */
			case "date_j" :
				this.regex = /^([0123])([0123456789])$/;
				return this.verification()
			break;

			/* date_m */
			case "date_m" :
				this.regex = /^([01])([0123456789])$/;
				return this.verification()
			break;

			/* date_a */
			case "date_a" :
				this.regex = /^([012])([0123456789])([0123456789])([0123456789])$/;
				return this.verification()
			break;

			/* defaut */
			default:
				return ""
			break;
		}
	},
	verification: function(){
		var valeur_t = this.valeur.toLowerCase();
		if (valeur_t.length==0) {
			if(this.obligatoire) return trad_formulaireX.vft.oblig_taille+this.taille_min+((this.taille_min!=this.taille_max)? trad_formulaireX.vft.a+this.taille_max:"")+trad_formulaireX.vft.caractere+"."
		}
		else {
			if (this.taille_min==this.taille_max&&valeur_t.length!=this.taille_min) return trad_formulaireX.vft.taille_incorrecte+  this.taille_max+trad_formulaireX.vft.caractere+"."
			if (this.taille_max!=0 && valeur_t.length>this.taille_max) return trad_formulaireX.vft.trop_long+this.taille_max+trad_formulaireX.vft.caractere+"."
			if (valeur_t.length<this.taille_min) return trad_formulaireX.vft.trop_court+this.taille_min+trad_formulaireX.vft.caractere+"."
		}

		if (this.carac_autorise=="") return "" // si rien ? v?rifier renvoi ok

		for (var i=0;i<valeur_t.length;i++) {
			if (this.carac_autorise.indexOf(valeur_t.charAt(i))==-1 && valeur_t.charAt(i)!="\n" && escape(valeur_t.charAt(i))!="%0D" ) {
				return trad_formulaireX.vft.mal_renseigne_auto+valeur_t.charAt(i)+".";
			}
		}

		if(this.regex != null)
		{
			if(!this.regex.test(valeur_t)&&valeur_t.length!=0) {return trad_formulaireX.vft.mal_renseigne+"."}
		}
		return ""
	}

};
/* VerifFormTxt */

/* VerifDate */
VerifFormDate = Class.create();
VerifFormDate.prototype = {
initialize: function(intitule,obligatoire,jour,mois,annee,verif_date_actuelle) {
		this.intitule = intitule;
		this.obligatoire = obligatoire;
		this.jour = $(jour);
		this.mois = $(mois);
		this.annee = $(annee);
		this.date_aujourdhui = new Date();
		this.type="date";
		this.verif_date_actuelle = verif_date_actuelle;
		this.date = ($F(this.jour).length == 2 && $F(this.jour) > 0 && $F(this.jour) < 32 && $F(this.mois).length == 2 && $F(this.mois) > 0 && $F(this.mois) < 13 && $F(this.annee).length == 4 && $F(this.annee) > 0  && $F(this.annee) < 2100) ? new Date(eval($F(this.annee)),eval($F(this.mois)-1),eval($F(this.jour))) : null;
	},
	changeStyle: function(change){
		if(change)
		{
			Element.addClassName(this.jour,"verif_form_erreur")
			Element.addClassName(this.mois,"verif_form_erreur")
			Element.addClassName(this.annee,"verif_form_erreur")
		}
		else
		{
			Element.removeClassName(this.jour,"verif_form_erreur")
			Element.removeClassName(this.mois,"verif_form_erreur")
			Element.removeClassName(this.annee,"verif_form_erreur")
		}
	},
	traitement: function(){
		this.changeStyle(false)
		
		if(this.obligatoire){
			if(!($F(this.jour).length >= 1 && $F(this.mois).length >= 1 && $F(this.annee).length >= 1)) return trad_formulaireX.vd.obligatoire;
		}
		
		// si un des 3 champs est rempli
		if(($F(this.jour).length >= 1 || $F(this.mois).length >= 1 || $F(this.annee).length >= 1))
		{
			// erreur sur le format de la date
			if(this.date == null){return trad_formulaireX.vd.mal_formatee}
	
			if(this.date != null)
			{		
				// date valide ?
				var date_invalide = this.date.getMonth()!=eval($F(this.mois))-1 && this.date.getDate()!=eval($F(this.jour));
				if(date_invalide){return trad_formulaireX.vd.invalide}
				
				if(this.verif_date_actuelle == "avant")
				{
					if($F(this.annee) > this.date_aujourdhui.getFullYear() || ($F(this.annee) == this.date_aujourdhui.getFullYear() && $F(this.mois) > (this.date_aujourdhui.getMonth()+1)) || ($F(this.annee) == this.date_aujourdhui.getFullYear() && $F(this.mois) == (this.date_aujourdhui.getMonth()+1) && $F(this.jour) >= this.date_aujourdhui.getDate()))
					{
						return trad_formulaireX.vd.inf;
					}
				}
			}
		}
		return ""
	}
};
/* VerifDate */

/* VerifFormSelect */
VerifFormSelect = Class.create();
VerifFormSelect.prototype = {
	initialize: function(element,intitule,obligatoire,value_defaut) {
		this.element = $(element);
		this.intitule = intitule;
		this.valeur = $F(this.element);
		this.obligatoire = obligatoire;
		this.value_defaut = value_defaut;
		this.type="select";
	},
	changeStyle: function(change){
		if(change)
		{
			Element.addClassName(this.element,"verif_form_erreur")
		}
		else
		{
			Element.removeClassName(this.element,"verif_form_erreur")
		}
	},
	traitement: function(){
		this.changeStyle(false)
		if(Form.Element.getValue(this.element)==this.value_defaut)
		{return "erreur"}
		return ""
	}
};
/* VerifFormSelect */

/* VerifFormRadio */
VerifFormRadio = Class.create();
VerifFormRadio.prototype = {
	initialize: function(element,intitule,obligatoire,choix) {
		this.element = $(element);
		this.intitule = intitule;
		this.obligatoire = obligatoire;
		this.type="radio";
		this.choix = choix;
	},
	changeStyle: function(change){
		if(change)
		{
			Element.addClassName(this.element,"verif_form_erreur")
		}
		else
		{
			Element.removeClassName(this.element,"verif_form_erreur")
		}
	},
	traitement: function(){
		this.changeStyle(false)
		var enfants = this.element.childNodes;
		var check = false;
		var dd = (this.choix == null)? $A(enfants) : $A(this.choix);
		dd.each(function(element){
			if($(element).type == "radio"){if($(element).checked){check = true}}
			if($(element).type == "checkbox"){if($(element).checked){check = true}}
		});
		if(check){return ""}
		return "erreur"
	}
};
/* VerifFormRadio */

/* VerifFormCondition */
VerifFormCondition = Class.create();
VerifFormCondition.prototype = {
	initialize: function(intitule,elements) {
		this.intitule = intitule;
		this.type="condition";
		this.elements = elements;
	},
	changeStyle: function(change){
		if(this.elements != null)
		{
			for(var i = 0 ; i < this.elements.length ; i++)
			{
				if(change)
				{
					Element.addClassName(this.elements[i],"verif_form_erreur")
				}
				else
				{
					Element.removeClassName(this.elements[i],"verif_form_erreur")
				}
			}
		}
	},
	traitement: function(){
		return "intitule"
	}

};
/* VerifFormCondition */

/* Checkbox_all */
Checkbox_all = Class.create();
Checkbox_all.prototype = {
	initialize: function(checkbox,checkbox_all) {
		this.checkbox = $A(checkbox);
		this.checkbox_all = checkbox_all;
		this.checkboxs = $A(checkbox);
		this.checkboxs.push(checkbox_all);

		for (var i=0 ; i < this.checkbox.length ; i++)
		{
			$(this.checkbox[i]).onclick = this.evt_check.bindAsEventListener(this);
		}

		$(this.checkbox_all).onclick = this.evf_check_all.bindAsEventListener(this);
	},
	evt_check: function(){
		var all_check = true;

		this.checkbox.each(function(element){
			if($(element).checked == false){all_check = false;}
		})

		if(all_check)
			{$(this.checkbox_all).checked = true}
		else
			{$(this.checkbox_all).checked = false}
	},
	evf_check_all: function(){
		if($(this.checkbox_all).checked)
		{
			this.checkboxs.each(function(element){
				$(element).checked = true
			})
		}
		else
		{
			this.checkboxs.each(function(element){
				$(element).checked = false
			})
		}
	}

};
/* Checkbox_all */
