﻿jQuery.fn.extend({
    validate: function()
    {
        $(this).each(
            function()
            {
                $this = $(this);

                var bValid = true;

                if ($this.hasClass('required'))
                {
                    if (!($this.val().trim().length > 0))
                        bValid = false;
                }
                if ($this.hasClass('email'))
                {
                    var re = null;
                    if ($this.hasClass('multi'))
                    {
                        re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+((\s*,\s*)([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+)*$/;
                    } else
                    {
                        re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                    }

                    if (!re.test($this.val()))
                        bValid = false;
                }
                
                if (bValid == false)
                    $this.addClass('invalid');
                else
                    $this.removeClass('invalid');                    
            }
        )

        return this;
    },
    reset: function()
    {
        $(this).each(
        function()
        {
            $this = $(this);
            $this.val($this.attr('default_value'));
        }
    )
    },
    isValid: function()
    {
        $(this).validate();
        return !$(this).hasClass('invalid'); // if anyone has an invalid state that means the form is invalid
    }
});