Ajax.Responders.register({
    onCreate: function(request) {
        request['timeoutId'] = window.setTimeout(
        function() {
            if (callInProgress(request.transport)) {
                request.transport.abort();
                if (request.options['onFailure']) {
                    request.options['onFailure'](request.transport, request.json);
                }
            }
        },
        4000
    );
    },
    onComplete: function(request) {
        window.clearTimeout(request['timeoutId']);
    }
});

function verifyOtherEnabled(isChecked) {
    $('course_inscription_other_subject').disabled = !isChecked;
    $('course_inscription_other_subject').value = '';
}

function validateInscriptionPayment() {
    var paymentOb = $('course_inscription_payment_status');
    var selectedPayment = paymentOb[paymentOb.selectedIndex].value;
    if (selectedPayment == 2 && selectedPayment != $('original_payment_status').value) {
        if (!confirm('O inscrito teve o pagamento alterado para PAGO. Tem certeza que deseja salvar? \nUm email de notificação será enviado ao inscrito.')) {
            return false;
        }
    }
    if (selectedPayment == 1 && selectedPayment != $('original_payment_status').value) {
        if (!confirm('O inscrito teve o pagamento alterado para NÃO PAGO. Tem certeza que deseja salvar?')) {
            return false;
        }
    }
    hideFormButtons();
    return true;
}

STATES = new Object();
STATES["AC"] = 1;
STATES["AL"] = 2;
STATES["AM"] = 3;
STATES["AP"] = 4;
STATES["BA"] = 5;
STATES["CE"] = 6;
STATES["DF"] = 7;
STATES["GO"] = 8;
STATES["ES"] = 9;
STATES["MA"] = 10;
STATES["MG"] = 11;
STATES["MS"] = 12;
STATES["MT"] = 13;
STATES["PA"] = 14;
STATES["PB"] = 15;
STATES["PE"] = 16;
STATES["PI"] = 17;
STATES["PR"] = 18;
STATES["RJ"] = 19;
STATES["RN"] = 20;
STATES["RO"] = 21;
STATES["RR"] = 22;
STATES["RS"] = 23;
STATES["SC"] = 24;
STATES["SE"] = 25;
STATES["SP"] = 26;
STATES["TO"] = 27;

function findby_zipcode(zip_code_to_find) {
    if (zip_code_to_find == $('original_zip_code').value) {
        return;
    }
    $('original_zip_code').value = zip_code_to_find;
    $("endereco_nao_encontrado").style.display = "none";
    $('procurando_endereco').style.display = '';
    ableAddress(false);
    try {
        new Ajax.Request('/course/findby_zipcode', 
        {
            asynchronous:true, 
            evalScripts:true, 
            parameters:{ zip_code:zip_code_to_find },
            onSuccess: function(transport){
                ableAddress(true);
                $('procurando_endereco').style.display = 'none';
                var response = transport.responseText || "CEP não encontrado";
                if (response == 'CEP não encontrado') {
                    showMensagemErroEndereco();  
                } else {
                    response = eval('(' + response + ')');
                    $('course_inscription_addressee').value = response[0] + ' ' + response[1];
                    $('course_inscription_super_division').value = response[2];
                    $('course_inscription_state').value = STATES[response[3]];
                    $('course_inscription_city').value = response[4];
                    $("course_inscription_address_number").focus();
                }
            },
            onFailure: function() { 
                ableAddress(true);
                $('procurando_endereco').style.display = 'none';
                showMensagemErroEndereco();  
            }
        });
    } catch(e) {
        ableAddress(true);
        $('procurando_endereco').style.display = 'none';
        showMensagemErroEndereco();  
    }  
}

function showMensagemErroEndereco() {
    $("endereco_nao_encontrado").style.display = '';
    setTimeout('$("endereco_nao_encontrado").style.display = "none"', 3000);
}

function ableAddress(enable) {
    $('course_inscription_zip_code').disabled = !enable;
    $('course_inscription_addressee').disabled = !enable;
    $('course_inscription_super_division').disabled = !enable;
    $('course_inscription_state').disabled = !enable;
    $('course_inscription_city').disabled = !enable;
}

function callInProgress(xmlhttp) {
    switch (xmlhttp.readyState) {
        case 1: case 2: case 3:
                    return true;
                    break;
                // Case 4 and 0
            default:
                return false;
                break;
        }
    }