window.onload = function() {
	var valid2 = new Validation('inscription-form',{immediate : true, onFormValidate : errorBox});
	
	Validation.addAllThese([
		['field-required', null, function(v) {
		  return !Validation.get('IsEmpty').test(v);
		}],
		['validate-tel', 'Seulement 10 chiffres.', function(v) {
			if (!Validation.get('IsEmpty').test(v))
			{
				if (isNaN(v) || v.length != 10)
				{
					return false;
				}
			}
			
			return true;
		}],	
		['validate-cp', 'Seulement 5 chiffres.', function(v) {
		  return Validation.get('IsEmpty').test(v) || !isNaN(v);
		}, {  minLength : 5, maxLength : 5 }],
		['validate-carte', 'Seulement 17 chiffres représentant un numéro de carte.', function(v) {
			if (!Validation.get('IsEmpty').test(v))
			{
				if (!isNaN(v) && v.length == 17)
				{
					var myRequest = checkNumcarte(v);
					if (myRequest.transport.status == 200)
					{
			  		return true;
			  	}
			  	displayErrorMsg('error-box-inscription','Le n° de carte de fidélité indiqué ne figure pas dans notre base ou est déjà utilisé.</p>');
			  }
			  
			  return false;
		  }
		  
		  return true;
		}],		
		['validate-confirmation', 'Mots de passe différents',{
			minLength : 6,
			equalToField : 'users_main_mdp'
		}], 
		['validate-pass', 'Minimum 6 caractères',{
			minLength : 6
		}], 
		['validate-confirmation-profil', 'Mots de passe différents',function(v,element) {
			if (!Validation.get('IsEmpty').test(v))
			{
				if (v.length < 6  || v != $('users_main_mdp').getValue()) {
					return false;
				}
			}
			
			return true;
		}], 
		['validate-pass-profil', 'Minimum 6 caractères',function(v,element) {
			if (!Validation.get('IsEmpty').test(v))
			{
				if (v.length < 6 ) {
					return false;
				}
			}
			
			return true;
		}], 
		['validate-email', 'Email invalide ou déjà associé à un compte', function(v,element) {
				if (!Validation.get('IsEmpty').test(v) && (/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)))
				{						  
					var myRequest = checkMail(v);
				  if (myRequest.transport.status == 200)
					{
			  		return true;
			  	}
			  	displayErrorMsg('error-box-inscription','Cette adresse e-mail est déjà associée à un compte Casino.fr. Si vous avez oublié votre mot de passe, veuillez utiliser le lien ci-après: <a href="/mot-de-passe-oublie.html">J\'ai oublié mon mot de passe</a>') ;
			  }
			  
			 return false;
			}
		],
		['validate-email-profil', 'Email invalide ou non unique', function(v,element) {
				if (!Validation.get('IsEmpty').test(v))
				{
					if ((/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(v)))
					{						  
						var myRequest = checkMail(v,$('users_main_id').getValue());
					  if (myRequest.transport.status == 200)
						{
				  		return true;
				  	}
				  	displayErrorMsg('error-box-inscription','Cette adresse e-mail est déjà associée à un compte Casino.fr. Si vous avez oublié votre mot de passe, veuillez utiliser le lien ci-après: <a href="/user/forgetPassword">J\'ai oublié mon mot de passe</a>') ;
				  }
			  
			 		return false;
			}
			
			return true;
		}]
	]);
}

function errorBox(status,myForm)
{
	if (!status)
	{
		displayErrorMsg('error-box-inscription','Certains champs obligatoires ne sont pas remplis ou bien leur format n\'est pas valide');
	}
}

function displayErrorMsg(id,msg)
{
	var elem = $(id);
	$('blocContent').scrollTo();
	if (elem != null)
	{
		elem.update(msg).highlight();
	}
	else
	{
		var box = new Element('p', { 'class': 'messagebox', 'id': id }).update(msg).hide();
		$('inscription-form').insert({before: box});
		new Effect.Appear(id, 0.5);
	}
}

function checkNumcarte(v)
{
	url = '/user/checkNumcarte';
	return new Ajax.Request(url, {
	  method: 'get',
	  asynchronous: false,
	  parameters: { numcarte: v }
	});
}

function checkMail(v,id)
{
	var param = '';
	
  if (id != null)
  {
  	var param = '?id='+id;
  }
	url = '/user/checkEmail'+param;
	return new Ajax.Request(url, {
	  method: 'get',
	  asynchronous: false,
	  parameters: { email: v }
	});
}
