var _url='ajax-php/reponse_inscription.php',pseudo,email,code;

Event.observe(window,'load',init);

function init(){
var myGlobalHandlers={
 onCreate:function(){Element.show('chargement');$('valider').value='Patienter...';$('valider').disabled=true;},
 onComplete:function(){if(Ajax.activeRequestCount==0){Element.hide('chargement');$('valider').value='Envoyer';$('valider').disabled=false;}}
 };

Ajax.Responders.register(myGlobalHandlers);

var _ok={validMessage:'OK',wait:500};

var civilite = new LiveValidation('civilite',_ok);
civilite.add(Validate.Presence,{failureMessage: 'Champ Obligatioire'});
civilite.add( Validate.Inclusion,{within: ['monsieur','madame','mademoiselle'],failureMessage: 'Champ Obligatioire'});

var afterEmailValidate=function(){
this.insertMessage(this.createMessageSpan());
this.addFieldClass();
 demandeAjax({'champ':'email','valeur':$F('email')},function(xhr,json){
  if(json.error==true)email.add(Validate.Exclusion,{within:[$F('email')],failureMessage: 'Déjà associé à un compte existant'}).validate();
 });
}

email=new LiveValidation('email',{validMessage:'OK',wait:500,onValid:afterEmailValidate});
email.add(Validate.Presence,{failureMessage: 'Obligatioire pour activer votre compte'});
email.add(Validate.Email,{failureMessage: 'Email incorrect (obligatioire pour activer votre compte)'});
email.add(Validate.Length,{minimum:10,maximum:30,tooShortMessage:'Trop court(min :10)',tooLongMessage:'Trop long(max: 30)'});

var confirmEmail=new LiveValidation('confirmEmail',_ok);
confirmEmail.add(Validate.Presence,{failureMessage: 'Champ Obligatioire'});
confirmEmail.add(Validate.Confirmation,{match:'email',failureMessage:'Différent du champ email'});

var site_perso=new LiveValidation('site_perso',_ok);
site_perso.add(Validate.Format, {pattern: /^((http):\/\/)((www\.)||((([a-zA-Z0-9\-\_])*)\.))?([0-9a-zA-Z]+(-[0-9a-zA-Z]+)*)\.[a-zA-Z]{2,3}(\/([a-zA-Z0-9\-\_])*)?$/i, failureMessage: 'Incorrecte! Ex : "http://www.bddmusics.com"'});

var afterPseudoValidate=function(){
this.insertMessage(this.createMessageSpan());
this.addFieldClass();
 demandeAjax({'champ':'pseudo','valeur':$F('pseudo')},function(xhr,json){
  if(json.error==true)pseudo.add(Validate.Exclusion,{within:[$F('pseudo')],failureMessage: 'Déjà pris'}).validate();
 });
}

pseudo=new LiveValidation('pseudo',{validMessage:'OK',wait:500,onValid:afterPseudoValidate});
pseudo.add(Validate.Presence,{failureMessage: 'Champ Obligatioire'}).add(Validate.Format, {pattern: /^[a-zA-Z0-9_\-]+$/i, failureMessage: 'Seules les caractères alphanumériques ou _ et - sont accepté'}).add(Validate.Length,{minimum:6,maximum:9,tooShortMessage:'Trop court(min :6)',tooLongMessage:'Trop long(max:9)'});

var pass=new LiveValidation('pass',_ok);
pass.add(Validate.Presence,{failureMessage: 'Champ Obligatioire'}).add(Validate.Format, {pattern: /^[a-zA-Z0-9_\-]+$/i, failureMessage: 'Seules les caractères alphanumériques ou _ et - sont accepté'}).add(Validate.Length,{minimum:6,maximum:9,tooShortMessage:'Trop court(min :6)',tooLongMessage:'Trop long(max:9)'});

var reglement=new LiveValidation('reglement',_ok);
reglement.add(Validate.Acceptance,{failureMessage:'Vous n\'avez pas accepter les Conditions Générales d\'Utilisations!'});

var afterCodeValidate=function(){
this.insertMessage(this.createMessageSpan());
this.addFieldClass();
 demandeAjax({'champ':'code','valeur':$F('code')},function(xhr,json){
  if(json.error==true)code.add(Validate.Numericality,{is:json.code,wrongNumberMessage:'Incorrect'}).validate();
 });
}

code=new LiveValidation('code',{validMessage:'OK',wait:500,onValid:afterCodeValidate});
code.add(Validate.Presence,{failureMessage:'Champ Obligatioire'}).add( Validate.Numericality,{notANumberMessage:'Ne peut contenir que des chiffres',onlyInteger:true}).add(Validate.Length,{is:5,wrongLengthMessage:'5 caractères'});
}

function demandeAjax(objParams,funcOut){
 new Ajax.Request(_url,{method: 'get',parameters: objParams, onSuccess: funcOut});
}

function serverValidation(){
queryString={'champ':'all','civilite':$F('civilite'),'profession_musical':$F('profession_musical'),'email':$F('email'),'confirmEmail':$F('confirmEmail'),'site_perso':$F('site_perso'),'pseudo':$F('pseudo'),'pass':$F('pass'),'newsletter':$('newsletter').checked,'reglement':$('reglement').checked,'code':$F('code')}

demandeAjax(queryString,function(xhr,json){
if(json.error!='none'){
 imax=json.error.length;
 for(i=0;i<imax;i++)json.error[i].validate();
 }
else end_formulaire(json.msg);
});

return false;
}

function end_formulaire(texte){Effect.SwitchOff('formulaire');$('innerdiv').innerHTML=texte;Element.show('container');}