jQuery.extend(jQuery.validator.messages, {
    required: 'обязательное поле',
    remote: 'не корректное значение',
    email: 'введите правильный email адрес',
    url: 'введите корректный URL',
    date: 'введите верный путь',
    dateISO: 'введите правильную дату (ISO)',
    number: 'введите число',
    digits: 'допустимы только цифры',
    creditcard: 'введите верный код кредитной карты',
    equalTo: 'повторите ввод значения еще раз',
    accept: 'пожалуйста введите значение с правильным расширением',
    maxlength: jQuery.format('нельзя вводить более {0} символов'),
    minlength: jQuery.format('должно быть не менее {0} символов'),
    rangelength: jQuery.format('введите от {0} до {1} сиволов'),
    range: jQuery.format('введите число от {0} до {1}'),
    max: jQuery.format('введите число меньше или равное {0}'),
    min: jQuery.format('введите число большее или равное {0}')
});


function form_validate(form_id)
{
    var rules = validate_fields[form_id];
    // get validate options
    for (var field in rules)
    {
        rules[field] = rules[field];
    }

    // validator init
    jQuery('#' + form_id).validate(
    {
        'rules': rules,
        success: 'valid',
        errorElement: 'span',
        errorPlacement: function(error, element) {
            error.appendTo(element.parent());
        }
    });
}


// validate options
var validate_fields = 
{
    // quality
    'form_775':
    {
        'data[new][company_name]': {required: true},
        'data[new][name]': {required: true},
        'data[new][post]': {required: true},
        'data[new][phone]': {required: false},
        'data[new][email]': {required: false, email: true},
        'data[new][comments]': {required: true}
    },

    // feedback
    'form_782':
    {
        'data[new][name]': {required: true},
        'data[new][email]': {required: true, email: true},
        'data[new][message]': {required: true}
    },

    // anketa
    'form_783':
    {
        'data[new][name]': {required: true},
        'data[new][phone]': {required: true},
        'data[new][email]': {required: true, email: true},
        'data[new][institution]': {required: true},
        'data[new][speciality_and_faculty]': {required: true},
        'data[new][year]': {
            required: true, 
            number: true, 
            minlength: 4, 
            maxlength: 4, 
            min: 1900
        },
        'data[new][last_work_place]': {required: true},
        'data[new][post]': {required: true},
        'data[new][post_wanted]': {required: true},
        'data[new][knowledge_and_skills]': {
            required: true, 
            maxlength: 1500
        }
        
    }
}

function clean_node(dest)
{
    while (dest.firstChild)
        dest.removeChild(dest.firstChild);
}


function sort_select(form)
{
    var form = document.getElementById(form);
    var selects = form.getElementsByTagName('select');
    for (var j = 0, slen = selects.length; j < slen; j++)
    {
        var options = selects[j].getElementsByTagName('option');
        var values = [];
        var new_options = {};

        if (options.length > 0)
        {
            for (var i = 0, len = options.length; i < len; i++)
            {
                values[i] = options[i].value;
                new_options['o' + options[i].value] = {
                    text: options[i].text,
                    value: options[i].value
                }

            }

            values = values.sort();
            clean_node(selects[j]);
            for (var i = 0, len = values.length; i < len; i++)
            {
                var new_option = new_options['o' + values[i]];
                var o = document.createElement('option');
                o.setAttribute('value', new_option.value);
                o.text =new_option.text;
                selects[j].options.add(o);
            }

        }
    }
}
