function get_hint_field(field)
{
    return field.siblings('.hint');
}
function get_error_field(field)
{
    return field.siblings('.error-list');
}
function get_validation_field(field)
{
    return field.siblings('.validation');
}
function prepareInputsForHints()
{
	var hint_fields = $(".hint");
    hint_fields.map( function(index, hint)
    {
        hint = $(hint);
        var input_field = hint.siblings('input');
        if( !input_field.size() )
            input_field = hint.siblings('textarea');

        input_field.focus(function()
        {
            var validation_field = get_validation_field(input_field);
            var error_field = get_error_field(input_field);

            if( validation_field.children('.status').html() )
            {
                validation_field.show();
                return;
            }

            if( error_field )
                error_field.hide();

            hint.show();
            hint.css({ display:'inline' });
        });

        input_field.blur(function()
        {
            var validation_field = get_validation_field(input_field);
            var error_field = get_error_field(input_field);

            hint.hide();

            if( validation_field.children('.status').html() )
            {
                validation_field.show();
                return;
            }

            if( error_field )
            {
                error_field.fadeIn('slow');
            }
        });
    });
}
function validate_field(field, url, params)
{
    if( !params )
        params = {};
    params['field_value'] = field.val();

    var validation_field = get_validation_field(field);
    var param_name = field.name;

    ajax_request(url, {
            type: 'post',
            data: params,
            success: function(data){
                if(data){
                    validation_field.children('.status').html(data);
                    validation_field.show();

                    validation_field.removeClass('validation_error');
                    validation_field.addClass('validation_ok');

                    get_error_field(field).hide();
                }
            },
            error: function(data){
                if(data) {
                    validation_field.children('.status').html(data.responseText)
                    validation_field.show();

                    validation_field.removeClass('validation_ok');
                    validation_field.addClass('validation_error');

                    get_error_field(field).hide();
                }
            }
        }
    );
}