function checkForm(form) 
{
// Заранее объявим необходимые переменные
var el, // Сам элемент
elName, // Имя элемента формы
value, // Значение
type; // Атрибут type для input-ов
// Массив списка ошибок, по дефолту пустой
var errorList = [];
// Хэш с текстом ошибок (ключ - ID ошибки)
var errorText = 
{
1 : "Не заполнено поле 'Имя'",
2 : "Не заполнено поле 'E-Mail'",
3 : "Не заполнено поле 'Вопрос'",
4 : "Не заполнено поле 'Защитный код'"
}
// Получаем семейство всех элементов формы
// Проходимся по ним в цикле
    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 == "name" && value == "") errorList.push(1);
                if (el.name == "email" && value == "") errorList.push(2);
                if (el.name == "code" && value == "") errorList.push(4);
                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(3);
        } 
		//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;
}
