var Validation = {
    IsInputValid: function(obj) {
        if($(obj).hasClass("requiredEmail")) {
            return Validation.IsEmailValid($(obj).val());
        }

        if($(obj).hasClass("requiredRadio")) {
            var ok = false;

            $(obj).find("input").each(function() {
                if($(this).is(":checked")) {ok = true;}
            });

            return ok;

        }

        if($(obj).hasClass("requiredCheckbox")) {
            return $(obj).children("input").is(':checked');
        }

        if($(obj).val() == "" || $(obj).hasClass("toggleText")) {
            return false;
        }

        if($(obj).hasClass("requiredConfirmation")) {
            if($(obj).val() != document.getElementById($(obj).attr("rel")).value) {
                return false;
            }
        }

        return true;

    },

    CheckForm: function(frm) {
        var ok = true;
		
        $(frm + " .required").each(function() {
            $(this).removeClass("success");
			
            if($(this).hasClass("requiredHover")) {
                $(this).addClass("error");
            }
            else {
                if(!Validation.IsInputValid(this)) {ok = false; $(this).addClass("error");}
                else {$(this).removeClass("error"); $(this).addClass("success");}
            }
        });
		
		if(ok) {
			$.post("/contact.php", $(frm).serialize(), function(data) {
				if(data.success) {
					$("#formulaire.francais").html("<p>Votre message a été envoyé avec succès!<p>");
					$("#formulaire.english").html("<p>Thank you. Your message have been sent.<p>");
				}
				else {
					for(var i = 0; i < data.error.length; i++) {
						$("#" + data.error[i]).addClass("error");
					}
				}
			});
		}
		
		return false;
    },

    IsEmailValid: function(str) {
        var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+[.]([a-zA-Z0-9]{2,4})+$/;

        if (!filter.test(str)) {return false;}

        return true;
    },

    ToggleDisabled: function(obj, id) {
        if (!$(obj).is(':checked')) {
            $('#' + id).attr('disabled', true);
            $('#' + id).removeClass("required");
        } else {
            $('#' + id).removeAttr('disabled');
            $('#' + id).addClass("required");
            Validation.ActivateErrorLookup();
        }
    },

    ToggleText: function(id, str) {
        var obj = $("#" + id);

        obj.val(str);
        obj.addClass("toggleText");

        obj.focus(function() {
            if(obj.val() == str) {
                if(obj.hasClass("toggleTextPassword")) {
                    obj.attr("type", "password");
                }
                obj.val(""); obj.removeClass("toggleText");
            }
        })

        obj.bind("blur", function() {
            if(obj.val() == "") {
                if(obj.hasClass("toggleTextPassword")) {
                    obj.attr("type", "text");
                }
                obj.val(str); obj.addClass("toggleText");
            }
        });
    },

    ActivateErrorLookup: function() {
        $(".required").bind('focus', function() {
            $(this).removeClass("error");
        });
    }
}
