/**
 * COPYRIGHT © HATEM+D, ALL RIGHTS RESERVED.
 * This file cannot be used, copied, reproduced, altered or transmitted
 * by any means without proper written authorization from OkInteractif.
 * http://www.hatem.ca
 */
 
var Validation =
{
	REGEX_EMAIL 	: /^[A-z0-9._-]+@[A-z0-9.-]+\.[A-z]{2,4}$/,
	REGEX_TEXT 		: /[A-Za-z]/,
	REGEX_NUMBER 	: /[0-9]/,
	REGEX_PHONE		: /[0-9]{3}-[0-9]{3}-[0-9]{4}/,
	REGEX_ZIPCODE 	: /^[a-zA-Z][0-9][a-zA-Z]\s?[0-9][a-zA-Z][0-9]$/,
	REGEX_SELECT	: /[1-9]/,
	
	validate : function(form)
	{
		var enfantForm;
	
		enfantForm = form.children(); 					
		
		var champs = new Array();
		var erreur = 0;
		var valide = true;
		
		$.each(enfantForm, function()
		{
			if($(this).data('type'))
			{ 
				champs.push($(this))
			}
		});
		
		
		$.each(champs , function(index)
		{
			
			if(champs[index].data('required'))
			{
				erreur = Validation.validateRequired(champs[index]);
			}
			
			if(erreur == 0){
				switch(champs[index].data('type'))
				{
					case 'text':
						erreur = Validation.validateField(champs[index], Validation.REGEX_TEXT);
						break;
					case 'number':
						erreur = Validation.validateField(champs[index], Validation.REGEX_NUMBER);
						break;
					case 'email':
						erreur = Validation.validateField(champs[index], Validation.REGEX_EMAIL);
						break;
					case 'zipCode':
						erreur = Validation.validateField(champs[index], Validation.REGEX_ZIPCODE);
						break;
					case 'select':
						erreur = Validation.validateField(champs[index], Validation.REGEX_SELECT);
						break;	
					case 'phone':
						erreur = Validation.validateField(champs[index], Validation.REGEX_PHONE);
						break;		
				}
			}
			
			if(erreur != 0)
				valide = false
			
		});
		return valide
	},
	
	validateRequired : function(champ)
	{
		var erreur = 0;
		if(champ.val() != '' || champ.val()!= 0)
		{
			$(champ).removeClass('invalid');
			erreur = 0;
		}
		else
		{
			if($(champ).attr('name') != 'message')
			{
				$(champ).addClass('invalid');
			}
			else
			{
				$(champ).addClass('invalid');
			}		
			
			erreur = 1;
		}
		return erreur;
	},
	
	validateField : function(champ, regEx)
	{
		var value = champ.val();
		var erreur = 0;
		var name  = champ[0].name;
		if(name.indexOf('post') != -1)
		{
			if(value == '')
			{
				return false;
			}
		}
		
		
		if(regEx.test(value))
		{
			if(value.indexOf('(requis)') < 0)
				$(champ).removeClass('invalid');
			else
			{
				$(champ).addClass('invalid');
				erreur = 1;
			}
				
		}	
		else
		{
			
			if($(champ).attr('name') != 'message')
			{
				$(champ).addClass('invalid');
			}
			else
			{
				$(champ).addClass('invalid');
			}	
			erreur = 1;
		}
		return erreur;
	}
	
};
