function isEnter(e) {
    var e = e || event;
    var k = e.keyCode || e.which;
    if (k == 13) return true
    else return false;
}
function getElementsByName_iefix(tag, name) {

    var elem = document.getElementsByTagName(tag);
    var arr = new Array();
    for (i = 0, iarr = 0; i < elem.length; i++) {
        att = elem[i].getAttribute("name");
        if (att == name) {
            arr[iarr] = elem[i];
            iarr++;
        }
    }
    return arr;
}
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
//POP UP
var popUpWin = 0;
function PopUp(URLStr, left, top, width, height) { if (popUpWin) { if (!popUpWin.closed) popUpWin.close(); } popUpWin = open(URLStr, 'BuscaCEP', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width=' + width + ',height=' + height + ',left=' + left + ', top=' + top + ',screenX=' + left + ',screenY=' + top + ''); }
//getElementById
function GID(ID) { return document.getElementById(ID); }
//getElemntByName
function GName(N) { return getElementsByName_iefix('*',N); }
//Replace
function R(Obj) { return Obj = Obj.replace('R$', '').replace(' ', '').replace(',', '.'); }
//Calcula o total
var req = true;
function CalcTotal() {
    var VF = 0; var VS = 0; var Total = 0;

    var fretes = GName('RdbFrete');
    for (var i = 0; i < fretes.length; i++)
        if (fretes[i].checked) {
            if (arrFretes != null)
                for (var f = 0; f < arrFretes.length; f++)
                    if (fretes[i].value.indexOf("|") > -1) {
                        if (fretes[i].value.split("|")[0] == arrFretes[f][3] && fretes[i].value.split("|")[1] == arrFretes[f][6])
                            if (arrFretes[f][2].indexOf('tis') > -1)
                                VF = 0;
                            else
                                VF = R(arrFretes[f][2]);

                    } else
                        if (fretes[i].value == arrFretes[f][3])
                            if (arrFretes[f][2].indexOf('tis') == -1) {
                                if (arrFretes[f][3] == 6)
                                    VF = 0;
                                else
                                    VF = R(arrFretes[f][2]);
                            }
        }
    if (GID('HSubTotal').value != '') {
        VS = R(GID('HSubTotal').value);
        GID('Frete').innerHTML = (VF == 0 ? 'Frete Grátis' : 'R$ ' + VF);
        /*Soma o valor do frete + valor do subtotal e formata em moeda*/
        var total = parseFloat(VF) + parseFloat(VS);
        GID('LblTotal').innerHTML = FormataValorCarrinnho(total);

    }
}
/*
Esta função estava entrando em conflito 
com outra de mesmo nome, para solucionar 
o problema, acrescentei o nome Carrinho.
Antes =>function FormataValor(strValue)
*/
function FormataValorCarrinnho(strValue) {
    //FUNÇÃO OBTIDA EM
    //http://www.sonofsofaman.com/hobbies/code/js/formatcurrency.asp
    strValue = strValue.toString().replace(/\$|\,/g, '');
    dblValue = parseFloat(strValue);

    blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
    dblValue = Math.floor(dblValue * 100 + 0.50000000001);
    intCents = dblValue % 100;
    strCents = intCents.toString();
    dblValue = Math.floor(dblValue / 100).toString();
    if (intCents < 10)
        strCents = "0" + strCents;
    for (var i = 0; i < Math.floor((dblValue.length - (1 + i)) / 3); i++) {
        dblValue = dblValue.substring(0, dblValue.length - (4 * i + 3)) + '.' +
		dblValue.substring(dblValue.length - (4 * i + 3));
    }
    return (((blnSign) ? '' : '-') + 'R$ ' + dblValue + ',' + strCents);
}

//Limpa os campos
function LimpaCampos() {
    var divCarregandoFrete = GID("divCarregandoFrete");
    if (divCarregandoFrete != null) divCarregandoFrete.style.display = '';

    GID('LblEndEntrega').style.visibility = 'hidden';
    GID('DivValoresEncomendas').style.visibility = 'hidden';
    GID('DivValoresEncomendas').style.height = '1px';
    GID('tdTituloFrete').style.display = 'none';
    GID('LblTotal').innerHTML = '';
    GID('Frete').innerHTML = '';

    if (GID('Entrega_Expressa_CEP') != null) {
        GID('Entrega_Expressa_CEP').innerHTML = '';
    }

    if (GID('Frete_Gratis') != null) {
        GID('Frete_Gratis').innerHTML = '';
    }

    if (GID('Entrega_Expressa') != null) {
        GID('Entrega_Expressa').innerHTML = '';
    }

    if (GID('PAC') != null) {
        GID('PAC').innerHTML = '';
    }

    if (GID('e_Sedex') != null) {
        GID('e_Sedex').innerHTML = '';
    }

    if (GID('Sedex') != null) {
        GID('Sedex').innerHTML = '';
    }

    var transportadoras = GName('lblFretes');
    if (transportadoras != null)
        for (var i = 0; i < transportadoras.length; i++)
            transportadoras[i].innerHTML = '';

}

//Calcula o valor dos fretes e preenche o endereco
function DadosFrete() {
    LimpaCampos();
    var CEP = GID('IF_EdtCep').value;
    var Num = GID('txtNumero').value;
    Num = Num.replace(/_/g, '');
    CarrinhoDeCompras.GetEnderecoEntrega(CEP, Num, EnderecoEntrega_Callback);
}

var arrFretes;
function CalculaFrete_Callback(r) {
    try {

        var teveEntrega_Expressa_CEP = false;

        arrFretes = r.value;

        if (arrFretes != null) {

            var itens = GName('RdbFrete');

            var fretes = GName('lblFretes');
            for (var f = 0; f < fretes.length; f++) {
                fretes[f].innerHTML = " - Não disponível para o endereço de entrega.";
            }


            for (var i = 0; i < arrFretes.length; i++) {
                var lbl = document.getElementById(arrFretes[i][0]);
                if (lbl == undefined) {
                    validaCamposDisponiveis(arrFretes[i][0]);
                    lbl = document.getElementById(arrFretes[i][0]);

                    if (lbl == null) {
                        lbl = document.getElementById(arrFretes[i][0] + '_' + arrFretes[i][6]);
                        if (lbl == null) {
                            var tblFretes = document.getElementById('RdbFrete');
                            if (tblFretes != null) {
                                var TipoLogistica = arrFretes[i][0];
                                var Prazo = arrFretes[i][1];
                                var Valor = arrFretes[i][2];
                                var IDLogistica = arrFretes[i][3];
                                var Descricao = arrFretes[i][5];
                                var IDTransportadora = arrFretes[i][6];

                                var novaTable = tblFretes.insertRow(-1);
                                var novoMeioPagamento = novaTable.insertCell(0);
                                novoMeioPagamento.innerHTML = '<input class=' + TipoLogistica + ' id="RdbFrete_' + IDLogistica + '_' + IDTransportadora + '" type="radio" name="RdbFrete" value="' + IDLogistica + '|' + IDTransportadora + '" /><label for="RdbFrete_' + IDLogistica + '_' + IDTransportadora + '">' + Descricao + ' <span id="' + TipoLogistica + '_' + IDTransportadora + '" name="lblFretes"></span></label>';
                                lbl = document.getElementById(TipoLogistica + '_' + IDTransportadora);
                            }
                        }
                    }

                }
                //lbl.innerHTML = "";

                if (arrFretes[i][2] !== '-1')
                    lbl.innerHTML = ' - Valor do Frete <span style="font-size:115%">' + arrFretes[i][2] + '</span>';

                if (arrFretes[i][0] == 'Entrega_Expressa_CEP') {
                    lbl.innerHTML += ' - <i>Prazo de entrega de até ' + arrFretes[i][1] + ' hora' + (arrFretes[i][1] == 1 ? '' : 's') + '.<i>';
                    teveEntrega_Expressa_CEP = true;
                } else
                    lbl.innerHTML += ' - <i>Prazo de entrega de até ' + arrFretes[i][1] + ' ' + (arrFretes[i][1] == 1 ? 'dia útil' : 'dias úteis') + '.<i>';

                if (arrFretes[i][4] != undefined)
                    lbl.innerHTML += ' - ' + arrFretes[i][4] + ' ';

            }

        }

        var rad = GName('RdbFrete');
        for (var r = 0; r < rad.length; r++) {
            rad[r].disabled = false;
        }

        apagaLogisticaNaoUsada();

        var trNumEntrega = GID('TrNumEntrega');
        if (trNumEntrega != null)
            if (!teveEntrega_Expressa_CEP) {
                trNumEntrega.style.display = '';
                var CEP = GID('IF_EdtCep').value;
                var Num = GID('txtNumero').value;
                if (CEP == '' || (Num == '' || (Num <= 0 && Num != -1)) && GID('LblEndEntrega').innerHTML != 'ENDEREÇO NÃO ENCONTRADO.') {
                    //LimpaCampos();
                    alert('Preencha CEP e Número');
                    GID('txtNumero').focus();
                } else {
                    GID('DivValoresEncomendas').style.visibility = 'visible';
                    GID('DivValoresEncomendas').style.height = '';
                }
            } else {
                //trNumEntrega.style.display = 'none';
                GID('DivValoresEncomendas').style.visibility = 'visible';
                GID('DivValoresEncomendas').style.height = '';
            }

        //Se tiver somente 1 (um) item na lista, seleciona-o automaticamente.
        //Diego Nepomuceno - 16/07/08
        if (itens.length == 1) {
            itens[0].checked = true
            CalcTotal();
        }

        var divCarregandoFrete = GID("divCarregandoFrete");
        if (divCarregandoFrete != null) divCarregandoFrete.style.display = 'none';

    }
    catch (erro) {
        var descricao = erro.description;
    }
}

function validaCamposDisponiveis(campo) {
    var tblFretes = document.getElementById('RdbFrete');
    if (tblFretes != null) {

        switch (campo) {
            case 'e_Sedex':
                var novaTable = tblFretes.insertRow(-1);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_0" type="radio" name="RdbFrete" value="3" /><label for="RdbFrete_0">e-Sedex <span id="e_Sedex" name="lblFretes"></span></label>';
                break;
            case 'Sedex':
                var novaTable = tblFretes.insertRow(-1);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_1" type="radio" name="RdbFrete" value="2" /><label for="RdbFrete_1">Sedex <span id="Sedex" name="lblFretes"></span></label>';
                break;
            case 'PAC':
                var novaTable = tblFretes.insertRow(-1);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_3" type="radio" name="RdbFrete" value="4" /><label for="RdbFrete_3">PAC <span id="PAC" name="lblFretes"></span></label>';
                break;
            case 'Frete_Gratis':
                var novaTable = tblFretes.insertRow(-1);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_4" type="radio" name="RdbFrete" value="6" /><label for="RdbFrete_4">Frete Grátis <span id="Frete_Gratis" name="lblFretes"></span></label>';
                break;
            case 'Entrega_Expressa':
                var novaTable = tblFretes.insertRow(0);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_5" type="radio" name="RdbFrete" value="5" /><label for="RdbFrete_5">Entrega Expressa <span id="Entrega_Expressa" name="lblFretes"></span></label>';
                break;
            case 'Entrega_Expressa_CEP':
                var novaTable = tblFretes.insertRow(0);
                var novoMeioPagamento = novaTable.insertCell(0);
                novoMeioPagamento.innerHTML = '<input id="RdbFrete_6" type="radio" name="RdbFrete" value="7" /><label for="RdbFrete_6">Entrega Expressa <span id="Entrega_Expressa_CEP" name="lblFretes"></span></label>';
                break;
        }
    }
}





/*
Método para apagar o elemento <TR> 
que for excluído.
Ivan Nascimento - 20.01.09
*/
function apagaLogisticaNaoUsada() {
    var itens = GName('RdbFrete');
    for (var i = itens.length; i >= 0; i--) {
        if (itens[i] != null) {
            switch (itens[i].value) {
                case '7':
                    var valor = new String(GID('Entrega_Expressa_CEP').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                case '6':
                    var valor = new String(GID('Frete_Gratis').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                case '5':
                    var valor = new String(GID('Entrega_Expressa').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                case '4':
                    var valor = new String(GID('PAC').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                case '3':
                    var valor = new String(GID('e_Sedex').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                case '2':
                    var valor = new String(GID('Sedex').innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
                default:
                    var valor = new String(itens[i].parentNode.getElementsByTagName("span")[0].innerHTML).trim();
                    if (valor == '' ||
							valor == " - Não disponível para o endereço de entrega.".trim()) {
                        deleteRow(itens[i].parentNode.parentNode.rowIndex);
                    }
                    break;
            }
       }
    }
}


/*
Otimização para exibir na tela
somente a logística disponível
para click.
Ivan Nascimento - 14.07.08

function apagaLogisticaNaoUsada()
{
var itens = document.getElementsByName('RdbFrete');
for (var n=itens.length-1; n>-1; n--)	{
if (itens[n].disabled != false){
deleteRow(GID(itens[n].id).parentNode.parentNode.rowIndex);	
}
}
}
*/



function deleteRow(i) {
    document.getElementById('RdbFrete').deleteRow(i);
}

//CallBackPreenche o campo total
function Currency_Callbak(response) { GID('LblTotal').innerHTML = response.value; }


function formataEndereco(obj) {
    if (GID('txtNumero').value != '-1') return obj
    //"ENDEREÇO DE ENTREGA: AV. AFONSO PENA, 1 - CENTRO - BELO HORIZONTE (MG)"
    var temp = obj.substring(0, obj.indexOf(","));
    temp += " " + obj.substring(obj.indexOf("- "), obj.length - 1);
    return temp;
}

//CallBack do Endereco de Entrega
function EnderecoEntrega_Callback(response) {
    GID('LblEndEntrega').innerHTML = formataEndereco(response.value);
    //Mostra ou esconde os valores do frete
    GID('tdTituloFrete').style.display = '';
    GID('RdbFrete').style.display = 'none';
    GID('LblEndEntrega').style.visibility = 'visible';

    var CEP = GID('IF_EdtCep').value;
    var Num = GID('txtNumero').value;
    Num = Num.replace(/_/g, '');

    if (GID('LblEndEntrega').innerHTML != 'ENDEREÇO NÃO ENCONTRADO.') {
        GID('RdbFrete').style.display = '';

        //Valor da Encomenda normal
        var fretes = GName('lblFretes');
        for (var f = 0; f < fretes.length; f++) {
            fretes[f].innerHTML = ' - Calculando frete... <img src="/_img/carregando.gif">';
        }

        var rad = GName('RdbFrete');
        for (var r = 0; r < rad.length; r++)
            rad[r].disabled = true;
        CarrinhoDeCompras.CalculaFrete(CEP, Num, CalculaFrete_Callback);

    } else {

        var divCarregandoFrete = GID("divCarregandoFrete");
        if (divCarregandoFrete != null) divCarregandoFrete.style.display = 'none';

    }
}

/*
Sugestão de Implementação de DIV para controle de 
Visibilidade das opções de Frete.

function layerWrite(txt){
txt +="\n";
if(ns4){
var lyr=oframe.document.overDiv.document;
lyr.write(txt);
lyr.close();
}else if(ie4){
oframe.document.all["overDiv"].innerHTML=txt;
}else if(ns6){
range=oframe.document.createRange();
range.setStartBefore(over);
domfrag=range.createContextualFragment(txt);
while(over.hasChildNodes()){
over.removeChild(over.lastChild);
}
over.appendChild(domfrag);
}
}

//Teste
var ns4=(navigator.appName=='Netscape' && parseInt(navigator.appVersion)==4);
var ns6=(document.getElementById)? true:false;
var ie4=(document.all)? true:false;
*/
function isNumber(e, obj) {
    var e = e || event;
    var k = e.keyCode || e.which;
    return (k >= 48 && k <= 57) || (k >= 37 && k <= 40) || k == 46 || k == 8;
}
/*-----------------------------------------------------------------------
Máscara para o campo data dd/mm/aaaa hh:mm
Exemplo: <input maxlength="16" name="datahora" onKeyPress="DataHora(event, this)">
-----------------------------------------------------------------------*/
function DataHora(evento, objeto) {
    var keypress = (window.event) ? event.keyCode : evento.which;
    campo = eval(objeto);
    if (campo.value == '00/00/0000 00:00') {
        campo.value = "";
    }

    caracteres = '0123456789';
    separacao1 = '/';
    separacao2 = ' ';
    separacao3 = ':';
    conjunto1 = 2;
    conjunto2 = 5;
    conjunto3 = 10;
    conjunto4 = 13;
    if ((caracteres.search(String.fromCharCode(keypress)) != -1) && campo.value.length < (17)) {
        if (campo.value.length == conjunto1)
            campo.value = campo.value + separacao1;
        else if (campo.value.length == conjunto2)
            campo.value = campo.value + separacao1;
        else if (campo.value.length == conjunto3)
            campo.value = campo.value + separacao2;
        else if (campo.value.length == conjunto4)
            campo.value = campo.value + separacao3;
    }
    else
        event.returnValue = false;
}

// Verifica se a data apresentada é válida
function IsDate(day, month, year) {
    //IsDate(29, 2, 2005)
    //IsDate(29, 2, 2004)
    var date = new Date();
    var blnRet = false;
    var blnDay;
    var blnMonth;
    var blnYear;

    date.setFullYear(year, month - 1, day);

    blnDay = (date.getDate() == day);
    blnMonth = (date.getMonth() == month - 1);
    blnYear = (date.getFullYear() == year);

    if (blnDay && blnMonth && blnYear)
        blnRet = true;

    return blnRet;
}

function UpdateQuantidade(obj, IDProduct, IDVar) {
    if (isNumeric(obj.value)) {
        location.href = 'Carrinho.aspx?IDProduct=' + IDProduct + '&IDVar=' + IDVar + '&QtdProduto=' + obj.value + "&Acao=Atualizar";
        //__doPostBack(obj.name, IDProduct + '#' + IDVar);
        return false;
    } else {
        alert("Por favor, digite um número");
        obj.focus();
    }
}

