jQuery(document).ready(function($) {

    $('select[name=uf]').change(function() {
        var uf = $(this).val();
        var $comboCidades = $('select[name=id_cidade]');
        if (uf == 0) {
            $comboCidades
                .empty()
                .attr('disabled', 'disabled');
            return;
        }
        $.getJSON('cidades_por_uf.php', { uf: uf }, function(data) {
            var options = '';
            var dataLength = data.length;
            for (i = 0; i < dataLength; i++) {
                options += '<option value="'+data[i]['id']+'">'+data[i]['nome']+'</option>';
            }
            $comboCidades.html(options);
            $comboCidades.attr('disabled', '');
        });
    });

    $('form#criar_contato').submit(function() {
        $form = $(this);
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function() {
                $form.prevAll('p[class=erro], p[class=ok]').remove();
                $form.before('<p class="ok">Contato submetido com sucesso.</p>');
                $form.clearForm();
                $('select[name=uf]').val('0');
                $.scrollTo('p.ok');
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                var errorsStr = '';
                if (XMLHttpRequest.status == 403) {
                    var jsonErrors = eval('('+XMLHttpRequest.responseText+')');
                    var errors = [];
                    for (field in jsonErrors) {
                        errors.push(jsonErrors[field]);
                    }
                    errorsStr = errors.join('<br />');
                }
                else {
                    errorsStr = 'Um erro inesperado ocorreu no servidor. Seu contato não foi submetido.';
                }
                $form.prevAll('p[class=erro], p[class=ok]').remove()
                $form.before('<p class="erro">'+errorsStr+'</p>');
                $.scrollTo('p.erro');
            }
        });
        return false;
    });
});

