﻿$('form').submit(function() {
    var retorno = true;
    var stringValidation = "";
    $('input[id*="validator"]').each(function() {
        var name = $(this).attr("id").split('_')[2];
        var validation = $(this).attr("id").split('_')[1];
        var initialValue = "";

        if ($(this).attr("id").split('_').length > 3)
            initialValue = $(this).attr("id").split('_')[3];

        if (validation == "textrequired") {
            if ($('textarea[name="' + name + '"]').attr("value") == initialValue) {
                if (stringValidation == "")
                    stringValidation = " - " + $(this).attr("value");
                else
                    stringValidation += "\n - " + $(this).attr("value");
                retorno = false;
            }
        }
        else if (validation == "required") {
        if ($('input[name="' + name + '"]').attr("type") == "text" || $('input[name="' + name + '"]').attr("type") == "password") {
                if ($('input[name="' + name + '"]').attr("value") == initialValue) {
                    if (stringValidation == "")
                        stringValidation = " - " + $(this).attr("value");
                    else
                        stringValidation += "\n - " + $(this).attr("value");
                    retorno = false;
                }
            }
            else if ($('input[name="' + name + '"]').attr("type") == "radio" || $('input[name="' + name + '"]').attr("type") == "checkbox") {
                var radioChecked = false;
                $('input[name="' + name + '"]').each(function() {
                    if ($(this).attr("checked") == "1" && !$(this).attr("value") == initialValue) {
                        radioChecked = true;
                    }
                });

                if (!radioChecked) {
                    if (stringValidation == "")
                        stringValidation = " - " + $(this).attr("value");
                    else
                        stringValidation += "\n - " + $(this).attr("value");
                    retorno = false;
                }
            }
            else if ($('select[name="' + name + '"]')) {
                var ddlChecked = false;
                $('select[name="' + name + '"]').each(function() {
                    if (initialValue != "") {
                        if ($('select[name="' + name + '"] option:selected').attr("value") != initialValue) {
                            ddlChecked = true;
                        }
                    }
                });

                if (!ddlChecked) {
                    if (stringValidation == "")
                        stringValidation = " - " + $(this).attr("value");
                    else
                        stringValidation += "\n - " + $(this).attr("value");
                    retorno = false;
                }
            }
        }
        else if (validation == "email") {
            var regexp = new RegExp("\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");

            if ($('input[name="' + name + '"]').attr("type") == "text") {
                if (!regexp.test($('input[name="' + name + '"]').attr("value")) && $('input[name="' + name + '"]').attr("value") != "") {
                    if (stringValidation == "")
                        stringValidation = " - " + $(this).attr("value");
                    else
                        stringValidation += "\n - " + $(this).attr("value");
                    retorno = false;
                }
            }
        }
        else if (validation == "date") {
            var names = name.split('/');

            if ($('select[name="' + names[1] + '"] option:selected').attr("value") == 2 && ($('select[name="' + names[0] + '"] option:selected').attr("value") == 30 || $('select[name="' + names[0] + '"] option:selected').attr("value") == 31)) {
                if (stringValidation == "")
                    stringValidation = " - " + $(this).attr("value");
                else
                    stringValidation += "\n - " + $(this).attr("value");
                retorno = false;
            }
        }
        else if (validation == "compare") {
            var names = name.split('|');

            if ($('input[name="' + names[1] + '"]').attr("value") != $('input[name="' + names[0] + '"]').attr("value")) {
                if (stringValidation == "")
                    stringValidation = " - " + $(this).attr("value");
                else
                    stringValidation += "\n - " + $(this).attr("value");
                retorno = false;
            }
        }
    });
    if (stringValidation != "")
        alert(stringValidation);
    return retorno;
});
