
function form_validation(idform){
	
	//console.log('## '+$("form").attr("id"));
	//console.log('## '+idform);
	
	var form_id;
	if (idform == undefined) form_id = "#"+$("form").attr("id");
	else form_id = "#"+idform;
	
	//console.log('## '+form_id);
	
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var intRegex = /^\d+$/;
	var floatRegex = /^((\d+(\.\d *)?)|((\d*\.)?\d+))$/;
	var error_css = {
		"background-color" : "red",
		"border" : "1px solid black",
		"color" : "white",
		"font-weight" : "bold",
		"left" : "40%",
		"padding" : "10px",
		"position" : "fixed",
		"top" : "50px",
		"z-index" : "300"
	}
	var error = 0;
	var invalid_field;
	var msg;
	var field;
	
	if( $(form_id+" #error").not("*") ) $(form_id).append("<div id='error'></div>");
			
	$(form_id+" #error").css(error_css);
	
	var required = $(form_id+" .required");
	
	for (i=required.length; i>=0; i--){
		value = $(required[i]).val();
		if( value == "" ){
			//console.log('Field: '+$(required[i]).attr('name'));
			$(required[i]).focus();
			$(required[i]).addClass("error_focus");
			error = 1;
		}
		else{
			if($(required[i]).hasClass("email")){
				if(reg.test(value) == false) {
					//console.log('Email not valid');
					$(required[i]).focus();
					$(required[i]).addClass("error_focus");
					msg = "The submited email is not valid.";
					invalid_field = required[i];
				}
			}
			if($(required[i]).hasClass("digit")){
				if(intRegex.test(value) == false || floatRegex.test(value) == false) {
					//console.log('Not a number');
					$(required[i]).focus();
					$(required[i]).addClass("error_focus");
					msg = "The submited value is not a number.";
					invalid_field = required[i];
				}
			}
			if( $(required[i]).attr("type") == "checkbox" ){
				if( $(required[i]+':checked').val() !== undefined ) {
					//console.log('Is Checked !'+$(required[i]).attr("name"));
					invalid_field = "";
				}
				else{
					if( $(form_id+" #ckeckbox_"+i).attr('id') ){
						//console.log('make wrapper '+$(form_id+" #ckeckbox_"+i));
					}
					else $(required[i]).wrap('<span class="error_focus" id="ckeckbox_'+i+'" />');
					$(required[i]).focus();
					msg = "The field is not checked.";
					invalid_field = $(form_id+" span.error_focus");
				}
			}
		}
	}
	if(error == 1){
		//console.log('Error detected !');
		$(form_id+" #error").stop(true,true);
		$(form_id+" #error").html("These fields are mandatory.");
		$(form_id+" #error").fadeIn();
		$(form_id+" #error").delay(800).fadeOut();
		return false;
	}
	else if(invalid_field){
		field = $(invalid_field).attr("id");
		//console.log('invalid field !'+field);
		$(form_id+" *").removeClass("error_focus");
		$(form_id+" #"+field).addClass("error_focus");
		$(form_id+" #error").stop(true,true);
		$(form_id+" #error").html(msg);
		$(form_id+" #error").fadeIn();
		$(form_id+" #error").delay(800).fadeOut();
		return false;
	}
	else{
		$(form_id+" #error").hide();
		$(form_id).submit();
	}
}

