function checkUserData() {
    stringRegexp = /^[\w\sА-Яа-я\-\{\}\[\]\(\)\*\:\+\#\№_]+$/i;
    phoneRegexp = /^[\d\s\(\)\+\-wW]+$/i;
    mailRegexp = /^[0-9\w\-\+_\@\.]+$/i;
    intRegexp = /^\d+$/i;
    passwordRegexp = /^[A-Za-z\d]+$/i;

    var inputsCollection = {
        'thirdName' : stringRegexp,
        'firstName' : stringRegexp,
        'secondName' : stringRegexp,
        'phone' : stringRegexp,
        'email' : mailRegexp,
        'password' : passwordRegexp,
        'day' : intRegexp,
        'month' : intRegexp,
        'year' : intRegexp

    };

    var notRequiredFields = ['secondName'];

    var regexString = '';
    var valueString = '';

    for(var inputItemName in inputsCollection) {
        getElementsByName(inputItemName)[0].style.border = "1px solid #AAAAAA";
    }

    for(var inputItemName in inputsCollection) {
        regexString = inputsCollection[inputItemName];
        if(getElementsByName(inputItemName).length > 0) {
            valueString = getElementsByName(inputItemName)[0].value;
            isRequiredField = !search(notRequiredFields, inputItemName);
            if(isRequiredField || valueString != '') {
                if(isRequiredField && valueString == '') {
                    getElementsByName(inputItemName)[0].style.border = "2px solid red";
                    alert('Ошибка! Отмеченное поле обязательно для заполнения.');
                    getElementsByName(inputItemName)[0].focus();
                    return false;
                } else if(!valueString.match(regexString)) {
                    getElementsByName(inputItemName)[0].style.border = "2px solid red";

                    contextHelp = regexString == stringRegexp ? "Пожайлуста, используйте для ввода только буквы латинского или русского алфавитов, цифры, символы \"-{}[]()*:+#№_\"" : (regexString == phoneRegexp ? "Пожайлуста, используйте для ввода только цифры или символы \"()+-wW\"" : (regexString == mailRegexp ? "Пожайлуста, используйте для ввода только буквы латинского алфавитa, цифры или символы \"-+_@.\"" : (regexString == intRegexp ? "Пожайлуста, используйте для ввода только цифры" : ( regexString == passwordRegexp ? "В пароле использованы недопустимые символы." : ""))));

                    alert('Ошибка! Исправьте отмеченное поле.\n'+contextHelp);
                    getElementsByName(inputItemName)[0].focus();
                    return false;
                }
            }
        }
    }
    return true;
}

function getElementsByName(name) {
    return document.getElementsByName(name);
}

function getElementById(id) {
    return document.getElementById(id);
}

function search(arr, value) {
    for(var i=0; i<arr.length; i++) {
        if(arr[i] == value) return true;
    }
    return false;
}

function submitForm() {
    if(checkUserData()) {
        getElementsByName("action")[0].value = "submit";
        getElementById("form").submit();
    }
}
