function onSubmitForm(targetId)
{
	if(targetId == 'noLayer')
	{
		targetId = '#octazenFormConteneur';
		secondTarget = 'true';
	}
	else
	{
	        if ( typeof( secondTarget ) != "undefined" ) {
              	targetId = '#octazenFormConteneur';
            	}
         	else {
              	targetId = '#viooLayerAmisContent';
        	}
	}
	var options = 
	{
		target: targetId,
		beforeSubmit:   onCheckForm
	};

	// submit the form
	$("#octazenForm").ajaxSubmit(options);// attach handler to form's submit event
	// return false to prevent normal browser submit and page navigation
	return false;
}
	
	function onSubmitSendForm(targetId)
	{
	  if(targetId == 'noLayer')
	  {
	     targetId = '#octazenFormConteneur';
	     secondTarget = 'true';
	  }
	  else
	  {
	        if ( typeof( secondTarget ) != "undefined" ) {
              targetId = '#octazenFormConteneur';
            }
         else {
              targetId = '#viooLayerAmisContent';
            }
    }
		var options = 
		{
			target: targetId
		};

		// submit the form
		$("#octazenForm").ajaxSubmit(options);// attach handler to form's submit event
		
		// return false to prevent normal browser submit and page navigation
			return false;
	}
	
	function onCheckForm()
	{
		return CheckForm_octazen($("#octazenForm"));
	}

	function inverseSelection()
	{
		var i = 0;
		while( document.getElementById('octazen-'+i) ) {
			if(document.getElementById('octazen-'+i).checked) {
				document.getElementById('octazen-'+i).checked = '';
				document.getElementById('checkbox-select').innerHTML = 'tout deselectionner';
			} else {
				document.getElementById('octazen-'+i).checked = 'checked';
				document.getElementById('checkbox-select').innerHTML = 'tout selectionner';
			}
			i++;
		}
	}

//appelinicarouselregister(); // initialisation deplacee dans le template function appelinicarouselregister()

function OznFormulaire(FormName)
// constructeur de la classe (en entree : l'attribut "name" du OznFormulaire a valider)
{
   // variables membres
   this.form=FormName; // nom du formulaire
   this.erreurs=new Array(); // tableau des champs contenant des erreurs de saisie

   // tableaux des regles de validation appliquees aux champs
   this.regles=new Array();
   this.messages=new Array();
   this.validations=new Array();
   this.params=new Array();

   // methodes
   this.regle=OznRegleChamp;
   this.nettoyer=OznNettoyerChaine;
   this.valider=OznValiderForm;
   this.liste=OznErreurs;
}



function OznRegleChamp(champ, type, message, param)
/* ajoute une regle de validation :
- "champ" est la valeur de l'attribut "name" du champ
- "type" est la regle de validation proprement dite
- "message" est le message d'erreur en cas de validation erronee
- "param" est un parametre facultatif, utilise par ceratines regles */
{
   this.regles.push(champ);
   this.validations.push(type);
   this.messages.push(message);
   this.params.push(param);
}

function OznErreurs()
// retourne la liste des erreurs
{
   var x, liste="";
   
   // construction de la chaine
   for(x=0; x<this.erreurs.length; x++) {
	   liste+="-"+this.erreurs[x]+"";
   }
   return liste;
}


function OznNettoyerChaine(chaine)
// supprime les espaces en debut et fin de chaine (equivalent a la fonction PHP "trim()")
{	//alert(chaine + ' trim1');
	//regex=new RegExp("(^ +)|( +$)", "g");
	//regex=new RegExp(/\s+/g,"");
	//chaine=chaine.replace(regex, "");
	chaine=chaine.replace(/\s+/g,"");
	//alert(chaine + ' trim2');
	return chaine;
}

function OznValiderForm()
// valide le OznFormulaire : chaque champ doit verifier les regles qui lui ont ete definies
{
   var x, regex, msg="";
   //eval("var Form=document."+this.form+";");
   
   // si aucune regle n'a ete definie, la validation est toujours vraie
   if(!this.regles.length) return new Array(true,'');
   
   // on examine chaque champ
   for(x=0; x<this.regles.length; x++)
   {      
		var input = $(this.regles[x]);
		// on effectue au prealable un petit nettoyage sur le champ a valider
		var inputValue = this.nettoyer(input.val());
	  
	  switch(this.validations[x])
      {
		  case "coche" :
			eval("if(!Form."+this.regles[x]+".checked) this.erreurs.push(this.messages[x]);");
            break;

         // le champ doit avoir le meme contenu qu'un autre
         case "comparaison":
            if(inputValue != this.params[x]) {
					this.erreurs.push(this.messages[x]);
				}
            break;
            
         /* le champ doit avoir une certaine longueur : c'est le dernier parametre sous la forme "min,max"
         (0 signifiant pas de minimum ou de maximum) */
         case "longueur":	
			var len = inputValue.length;
			
            var temp=this.params[x].split(",");
            var mini=parseInt(temp[0]);
            var maxi=parseInt(temp[1]);
			
			if(Math.min(Math.max(len, min),max) != len) {
				this.erreurs.push(this.messages[x]);
			}
            break;

         // le champ (uniquement s'il est rempli) doit verifier une expression reguliere
         case "regex":
			var regex;
			         
            switch(this.params[x])
            {
				// quelques exemples...
				case "mail":
					regex=new RegExp("^[a-z0-9_]([.-]?[a-z0-9_]+)+@[a-z0-9_]([.-]?[a-z0-9_]+)+\.([a-z]{2,4}|[a-z]{6})$", "gi");
					break;
				case "email":
					regex=new RegExp("^[a-zA-Z0-9_-]+@([a-zA-Z0-9-]{2,}[.])+(fr|com|uk|it|be|net|de|ch|sp|nl|us|eu|info|biz|org)$", "g");
					break;
				case "ville":
					regex=new RegExp("^[^-][0-9]+$", "g");
					break;
				case "alpha_num":
					regex=new RegExp("^[_a-z0-9]+$", "gi");
					break;
				case "num":
					regex=new RegExp("^[0-9]+$", "g");
					break;
				case "code_postal":
					regex=new RegExp("^(0[1-9]|[1-9][0-9])[0-9]{3}$", "g");
					break;                  
				case "date":
					regex=new RegExp("^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19)\d\d", "g");
				//	regex=new RegExp("^[0-3][0-9][/-.](0[1-9]|1[0-2])[/-.][0-9]{4}$", "g");
					break;
				case "date_jour":
					regex=new RegExp("^(0[1-9]|[12][0-9]|3[01])", "g");
					break;
				case "date_mois":
					regex=new RegExp("^(0[1-9]|1[012])", "g");
					break;
				case "date_annee":
					regex=new RegExp("^(19[0-8][0-9]|1990)", "g");
					break;
				// par defaut (non vide)
				default:
					regex=new RegExp("^.+$", "g");
            }
            
			if(inputValue != '' && !regex.exec(inputValue)) {
				this.erreurs.push(this.messages[x]);
			}
            break;

         case "requis":
         default:   
			// le champ doit juste etre rempli
            if(inputValue == '') {
				this.erreurs.push(this.messages[x]);
				}
      }
   }
   
	returnverifform = new Array('','');

	returnverifform[0]=true;
	returnverifform[1]='';

	// en cas d'erreur, on affiche les differents messages
	if(this.erreurs.length){
		var msg=this.liste();

		returnverifform[0]=false;
		returnverifform[1]=msg;
		return returnverifform;
	}
	// en cas de succes, on envoie le OznFormulaire
	return returnverifform;
}

// valide le premier OznFormulaire
function ValiderForm_octazen(form){

	var oFormulaire=new OznFormulaire(form);
	var inputs =  form.find("input");
	var emailInput = form.find("input[name='email']");
	var passwordInput = form.find("input[name='password']");
	var emailListInput= form.find("input[name='manualList'], textarea");

	var emailValue = oFormulaire.nettoyer(emailInput.val());
	var passwordValue = oFormulaire.nettoyer(passwordInput.val());
	var emailListValue = oFormulaire.nettoyer(emailListInput.val());

	//document.getElementById('manualList').value = emailListValue;
	//alert('1');emailListInput.val(emailListValue); alert(emailListInput.val());
	//alert (emailListValue + ' 1');
	
	var isEmailEmpty = (emailValue == '');
	var isPasswordEmpty = (passwordValue == '');
	var isEmailListEmpty = (emailListValue == '');
	
	if(!isEmailEmpty || !isPasswordEmpty)
	{
		//oFormulaire.regle(emailInput, "requis", "viooEmail");
		//oFormulaire.regle(passwordInput, "requis", "viooPass");
	}
	
	else if(!isEmailListEmpty)
	{
		
	}
	else
	{	
		//oFormulaire.regle(emailInput, "requis", "viooEmail");
		//oFormulaire.regle(passwordInput, "requis", "viooPass");
		oFormulaire.regle(emailListInput, "requis", "viooListemail");
	}
	
	
	return oFormulaire.valider();
}

function CheckForm_octazen(form /* jQuery element */){

	var returnForm = ValiderForm_octazen(form);
	
	// on initialise le tableau
	var tab_register;
	tab_register=['vioooctazenEmail','vioooctazenPass','vioooctazenListemail'];
	/*	for(i = 0 ; i < tab_register.length ; i++) {
	var e=document.getElementById(tab_register[i] + "Ok");
	if(e != null) e.style.display='block';
	var e=document.getElementById(tab_register[i] + "Pasok");
	if(e != null) e.style.display='none';
	}*/
	var e=document.getElementById("viooErrorOk");
	if(e != null) e.style.display='block';
	var e=document.getElementById("viooErrorPasok");
	if(e != null) e.style.display='none';

	if (!returnForm[0])
	{	
	
			
		errors=returnForm[1].split('-');

		/*for (i=1; i < errors.length; i++) {
			var e=document.getElementById(errors[i] + "Ok");
			if(e != null) e.style.display='none';
			var e=document.getElementById(errors[i] + "Pasok");
			if(e != null) e.style.display='block';
		}*/
			var e=document.getElementById("viooErrorOk");
			if(e != null) e.style.display='none';
			var e=document.getElementById("viooErrorPasok");
			if(e != null) e.style.display='block';
		
	}

	return returnForm[0];
}

function nettoieChaine(champs) {
	emailListValue2 = OznNettoyerChaine(champs.value);
	champs.value = emailListValue2;
}
