function checkForm(form) {
    // Заранее объявим необходимые переменные
    var el, // Сам элемент
        elName, // Имя элемента формы
        value, // Значение
        type; // Атрибут type для input-ов
    // Массив списка ошибок, по дефолту пустой
    var errorList = [];
    // Хэш с текстом ошибок (ключ - ID ошибки)
    var errorText = {
        1 : "Не заполнено поле 'Фамилия, Имя, Отчество'",
        2 : "Не заполнено поле 'E-mail'",
        3 : "Не прикреплен файл",
        4 : "Не оставлен комментарий",
		5 : "Не заполнено поле",
		10 : "Место жительства (страна, город)",
		11 : "Возраст",
		12 : "Телефон для связи",
		13 : "Ступень обучения",
		14 : "Откуда Вы узнали о нашей школе",
		15 : "Код безопасности"
    }
    // Получаем семейство всех элементов формы
    // Проходимся по ним в цикле
    for (var i = 0; i < form.elements.length; i++) {
        el = form.elements[i];
        elName = el.nodeName.toLowerCase();
        value = el.value;
        if (elName == "input") { // INPUT
            // Определяем тип input-а
            type = el.type.toLowerCase();
            // Разбираем все инпуты по типам и обрабатываем содержимое
            switch (type) {
                case "text" :
                    if (el.name == "f1" && value == "") errorList.push(1);
                    if (el.name == "f4" && value == "") errorList.push(2);
					if (el.name == "f9" && value == "") errorList.push(10);
					if (el.name == "f8" && value == "") errorList.push(11);
					if (el.name == "f3" && value == "") errorList.push(12);
					if (el.name == "uid" && value == "") errorList.push(15);
                break;
                case "file" :
                    if (value == "") errorList.push(3);
                break;
                case "checkbox" :
                    // Ничего не делаем, хотя можем
                break;
                case "radio" :
                    // Ничего не делаем, хотя можем
                break;
                default :
                    // Сюда попадают input-ы, которые не требуют обработки
                    // type = hidden, submit, button, image
                break;
            }
        }/* else if (elName == "textarea") { // TEXTAREA
            //if (value == "") errorList.push(4);
        } else if (elName == "select") { // SELECT
            //if (value == 0) errorList.push(5);
        } else {
            // Обнаружен неизвестный элемент ;)
        }*/
    }
    // Финальная стадия
    // Если массив ошибок пуст - возвращаем true
    if (!errorList.length) return true;
    // Если есть ошибки - формируем сообщение, выовдим alert
    // и возвращаем false
    var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
    for (i = 0; i < errorList.length; i++) {
        errorMsg += errorText[errorList[i]] + "\n";
    }
    alert(errorMsg);
    return false;
}
