function validateform() {

    var validform = true;
    try {
        //Required fields
        jQuery(this).find(".required").each(function(){
            if (jQuery(this).val().length==0) {
                jQuery(this).addClass('validation-failed');
                jQuery(this).click(
                    function() {
                        jQuery(this).removeClass('validation-failed');
                    });
                validform = false;
            } else {
                jQuery(this).removeClass('validation-failed');
            }
        });

        //Email fields
        jQuery(this).find(".validate-email").each(function(){
            if (jQuery(this).val().length>0 && !jQuery(this).val().match(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/)) {
                jQuery(this).addClass('validation-failed');
                jQuery(this).click(
                    function() {
                        jQuery(this).removeClass('validation-failed');
                    });

                validform = false;
            } else {
                jQuery(this).removeClass('validation-failed');
            }
        });
        //Number fields
        jQuery(this).find(".validate-number").each(function(){
            if (jQuery(this).val().length>0 && jQuery(this).val().match(/[^\d]/)) {
                jQuery(this).addClass('validation-failed');
                jQuery(this).click(
                    function() {
                        jQuery(this).removeClass('validation-failed');
                    });

                validform = false;
            } else {
                jQuery(this).removeClass('validation-failed');
            }
        });
        //Regex required fields
        jQuery(this).find(".validate-regex").each(function() {
            var regex = new RegExp(jQuery(this).attr('regex'));
            var val;
            if (jQuery(this).attr('tagName')=="TEXTAREA"||jQuery(this).attr('tagName')=="INPUT") {
                val = jQuery(this).val();
            } else {
                val = jQuery(this).html();
            }
            if (val.length>0 && !regex.test(val)) {
                jQuery(this).addClass('validation-failed');
                jQuery(this).click(
                    function() {
                        jQuery(this).removeClass('validation-failed');
                    });

                validform = false;
            } else {
                jQuery(this).removeClass('validation-failed');
            }
        });

        //Select not empty
        jQuery(this).find(".validate-not-empty").each(function(){
            if (jQuery(this).find(":selected").text().length==0) {
                jQuery(this).addClass('validation-failed-sel');
                jQuery(this).click(
                    function() {
                        jQuery(this).removeClass('validation-failed-sel');
                    });

                validform = false;
            } else {
                jQuery(this).removeClass('validation-failed-sel');
            }
        });


        //Radio/checkbox one required
        var radchecked = false;

        if(jQuery(this).find("input[type=checkbox],input[type=radio]").find(".validate-one-required:checked").length==0 && jQuery(this).find("input[type=checkbox],input[type=radio]").find(".validate-one-required").length>0){
            jQuery(this).find("input[type=checkbox],input[type=radio]").find(".validate-one-required").addClass('validation-failed-cr');
            jQuery(this).find("input[type=checkbox],input[type=radio]").find(".validate-one-required").click(
                function() {
                    jQuery(this).removeClass('validation-failed-cr');
                });

            validform = false;
        } else {
            jQuery(this).find("input[type=checkbox],input[type=radio]").find(".validate-one-required").removeClass('validation-failed-cr');
        }

        if (!validform) {

            if (jQuery("#formvalidationerrordialog").length>0) {
                jQuery("#formvalidationerrordialog").dialog('open');
            } else {
                var dialog = jQuery("<div id=\"formvalidationerrordialog\" title=\"Ooops!\"><p><span class=\"ui-icon ui-icon-alert\" style=\"float:left; margin:0 7px 20px 0;\"></span>You entered an invalid format or missed a required field.</p></div>");
                jQuery('body').append(dialog);
                dialog.dialog({
                    bgiframe: true,
                    modal: true,
                    buttons: {
                        Ok: function() {
                            jQuery(this).dialog('close');
                        }
                    }
                });
            }
        }

        return validform;
    } catch(e) {
        console.log(e);
        return false;
    }
}


jQuery(document).ready(function() {
    jQuery("form").submit(validateform);
});
