
function validate_form() {

        var err = "";
        var err_notnull = "";
        var err_pattern = "";

        var elements = document.getElementsByTagName('input');

        // loop all form elements
        for (var i = 0; i < elements.length; i++) {

                var is_error = false;

                var value = elements.item(i).value;
                var name = elements.item(i).getAttribute('namestr');
                var message = elements.item(i).getAttribute('message');
                var validation = elements.item(i).getAttribute('validation');

                // **********************************
                // required field
                // **********************************
                var notnull = elements.item(i).getAttribute('notnull');
                if (notnull != null && value.length == 0) {

                        is_error = true;
                        err_notnull += "   * " + message + "\n";
                }

                if (validation != null && value.length > 0 && is_error == false) {

                        if ((validation == 'integer') || (validation == 'int')){
                                        for (j = 0; j < value.length; j++)
                                    {   // Check that current character is number.
                                        var c = value.charAt(j);
                                        if (((c < "0") || (c > "9"))) is_error = true;
                                    }
                                        if (is_error == true) err_notnull += "   ** " + message + "\n";
                        }

                        if (validation == 'real') {
                                        var g = 0;
                                        for (j = 0; j < value.length; j++)
                                    {   // Check that current character is number.
                                        var c = value.charAt(j);
                                        if (((c < "0") || (c > "9")) && (c != ".")) is_error = true;
                                                if (c == ".") g++;
                                    }
                                        if (g > 1) is_error = true;
                                        if (is_error == true) err_notnull += "   ** " + message + "\n";
                        }

                        if (validation == 'email') {
                                        var amp = 0;
                                        var poi = 0;

                                        for (j = 0; j < value.length; j++)
                                    {
                                        var c = value.charAt(j);
                                                if (c == "@") amp = j;
                                                if (c == "@") g++;
                                                if (c == ".") poi = j;
                                    }
     									if (((amp-poi)==1) || ((amp-poi)==-1)) {is_error = true;}
                                        if (poi < amp) {is_error = true;}
                                        if ((value.length - poi) < 3) {is_error = true;}
                                        if ((poi == 0) || (amp == 0)) {is_error = true;}
                                        if (g > 1) {is_error = true;}
                                        if (is_error == true) {err_notnull += value.length + "   @** " + poi + message + "\n";}
                        }

                        if (validation == 'date') {
                                        var g = 0;
                                        for (j = 0; j < value.length; j++)
                                    {   // Check that current character is number.
                                        var c = value.charAt(j);
                                        if (((c < "0") || (c > "9")) && (c != ".")) is_error = true;
                                                if (c == ".") g++;
                                                if ((c == ".") && (j!=2) && (j!=5)) is_error = true;
                                    }
                                        if (g != 2) is_error = true;
                                        if ((value.length != 10) && (value.length != 8)) is_error = true
                                        if (is_error == true) err_notnull += "  date** " + message + "\n";
                        }
                }

                // input errors
                elements.item(i).className = "";
                if ( is_error == true ) {

                        // color help
                        elements.item(i).className = "notvalid";
                }
        }

        // errors presents?
        if ( err_notnull != "" ) err += "Не все обязательные поля заполнены.\nПроверьте правильность вводимых значений"; // + err_notnull;

        if ( err != "" ) {

                alert(err);
                return false;

        } else {
                form1.submit();
                return true;
        }

        return false;
}

