﻿function Carrinho(id, quantidade, estado) {

    this.ID = id;
    this.Quantidade = quantidade;
    this.Estado = estado;

    /* ********************************************************************************* */
    /* ADICIONAR ARTIGO AO CARRINHO */
    this.Adicionar = function () {

        // AJAX
        // Criar objecto do tipo XMLHttpRequest
        var xmlObj = criarXMLObj();



        xmlObj.open("GET", "/Inc/Carrinho/Adicionar.ashx?id=" + this.ID + "&q=" + this.Quantidade);
        xmlObj.send(null);

        btID = this.ID;

        // Icon Load substitui o icon do carrinho
        //document.getElementById("btEncomendar_" + btID).style.backgroundImage = "url('/Imagens/Icons/Load.gif')";

        xmlObj.onreadystatechange = function () {
            if (xmlObj.readyState == 4) {

                if (xmlObj.responseText == "false") {
                    /* *** ERRO *** */
                    // COLOCA NOVAMENTO A TEXTBOX NO SÍTIO
                    document.getElementById("label_" + btID).innerHTML = "<label>ERRO</label>";

                    setTimeout("document.getElementById('label_' + btID).innerHTML = '<label>COMPRAR</label>'", 2000);
                }
                else {
                    if (xmlObj.responseText == "0") {
                        /* *** ERRO *** */
                        // COLOCA NOVAMENTO A TEXTBOX NO SÍTIO

                        document.getElementById("label_" + btID).innerHTML = "<label>ERRO</label>";

                        setTimeout("document.getElementById('label_' + btID).innerHTML = '<label>COMPRAR</label>'", 2000);
                    }
                    else {
                        /* *** OK *** */
                        // MOSTRAR CARRINHO
                        //document.getElementById("divCarrinho").className = "visivel";

                      
                        // REMOVE O BOTÃO ADICIONAR
                        // MOSTRA QUE O ARTIGO FOI ADICIONADO COM SUCESSO AO CARRINHO
                              //document.getElementById("label_" + btID).innerHTML = "<label>ADICIONADO</label>";
                              //setTimeout("document.getElementById('label_' + btID).innerHTML = '<label>COMPRAR</label>'", 2000);

                        /* ACTUALIZAR CARRINHO
                        * Isto não é feito na página /Inc/Catalogo/Listagem.aspx imediatamente ao adicionar
                        * porque não é garantido que a actualização do valor total do carrinho seja feita depois
                        * de adicionar o artigo ao mesmo
                        */



                        new Carrinho(0, 0, 0).Total();
                    }
                }
            }
        }
    }

    /* ********************************************************************************* */
    /* ACTUALIZAR QUANTIDADE DO ARTIGO NO CARRINHO */
    this.Actualizar = function () {
        // AJAX
        // Criar objecto do tipo XMLHttpRequest
        var xmlObj = criarXMLObj();

        xmlObj.open("GET", "/Inc/Carrinho/Actualizar.ashx?id=" + this.ID + "&q=" + this.Quantidade);
        xmlObj.send(null);

        artigoID = this.ID;

        // Icon Load substitui da o icon Apagar
        document.getElementById("imagemActualizar_" + artigoID).src = "/Imagens/Icons/Load.gif";

        xmlObj.onreadystatechange = function () {
            /*
            if (xmlObj.readyState <= 3) {
            // Icon Load substitui da o icon Apagar
            document.getElementById("imagemActualizar_" + artigoID).src = "/Imagens/Icons/Load.gif";
            }
            */
            if (xmlObj.readyState == 4) {
                // COLOCA NOVAMENTO O ICON ACTUALIZAR
                document.getElementById("imagemActualizar_" + artigoID).src = "/Imagens/Icons/Actualizar.png";

                if (xmlObj.responseText == "false") {
                    /* *** ERRO *** */
                    // COLOCA A LINHA A VERMELHO
                    document.getElementById("carrinhoList_" + artigoID).className = "Vermelho";
                }
                else {
                    var _carrinho = new Carrinho(artigoID, 0, 0);
                    /* *** OK *** */
                    // COLOCA A LINHA A PRETO
                    document.getElementById("carrinhoList_" + artigoID).className = "Preto";

                    // ACTUALIZA VALORES DA LISTAGEM
                    // PESO TOTAL e VALOR A PAGAR PELO ARTIGO
                    _carrinho.Parciais();

                    /* ACTUALIZAR CARRINHO
                    * Isto não é feito na página /Carrinho.aspx imediatamente ao apagar
                    * porque não é garantido que a actualização do valor total do carrinho seja feita depois
                    * de apagar o artigo do mesmo
                    */
                    _carrinho.Total();
                }
            }
        }
    }

    /* ********************************************************************************* */
    /* APAGAR ARTIGO DO CARRINHO */
    this.Apagar = function () {
        // AJAX
        // Criar objecto do tipo XMLHttpRequest
        var xmlObj = criarXMLObj();

        xmlObj.open("GET", "/Inc/Carrinho/Apagar.ashx?id=" + this.ID);
        xmlObj.send(null);

        artigoID = this.ID;

        xmlObj.onreadystatechange = function () {
            if (xmlObj.readyState <= 3) {
                // Icon Load substitui da o icon Apagar
                document.getElementById("imagemDel_" + artigoID).src = "/Imagens/Icons/Load.gif";
            }
            if (xmlObj.readyState == 4) {
                if (xmlObj.responseText == "false") {
                    /* *** ERRO *** */
                    // COLOCA NOVAMENTO O ICON APAGAR
                    document.getElementById("imagemDel_" + artigoID).src = "/Imagens/Icons/Apagar.png";

                    // COLOCA A LINHA A VERMELHO
                    document.getElementById("carrinhoList_" + artigoID).className = "Vermelho";
                }
                else {
                    /* *** OK *** */
                    // ELIMINA A LINHA DO ARTIGO
                    document.getElementById("carrinhoList_" + artigoID).className = "invisivel";

                    /* ACTUALIZAR CARRINHO
                    * Isto não é feito na página /Carrinho.aspx imediatamente ao apagar
                    * porque não é garantido que a actualização do valor total do carrinho seja feita depois
                    * de apagar o artigo do mesmo
                    */
                    new Carrinho(0, 0, 0).Total();
                }
            }
        }
    }

    /* ********************************************************************************* */
    /* TOTAL DO CARRINHO */
    this.Total = function () {
        // AJAX
        // Criar objecto do tipo XMLHttpRequest
        var xmlObj = criarXMLObj();

        xmlObj.open("GET", "/Inc/Carrinho/Total.ashx?estado=" + this.Estado);
        xmlObj.send(null);

        artigoID = this.ID;

        xmlObj.onreadystatechange = function () {
            if (xmlObj.readyState <= 3) {
                // Icon Load substitui o valor actual do carrinho
                document.getElementById("divTotalCarrinho").innerHTML = "<img src='/Imagens/Icons/Load.gif' alt='A actualizar carrinho.' title='A actualizar carrinho.' />";
            }
            if (xmlObj.readyState == 4) {
                var valor = xmlObj.responseText.replace(",", ".");

                var total = valor;

                // ÁREA LATERAL (/inc/carrinho.ashx)
                // SEMPRE VISIVEL
                document.getElementById("divTotalCarrinho").innerHTML = total.toString().replace(".", ",");

                // ÁREA DO CARRINHO (/carrinho.aspx)
                try {
                    // Preço Total
                    document.getElementById("divTotalCarrinhoASPX").innerHTML = valor.toString().replace(".", ","); // Total

                    // Taxa
                    if (taxa > 0) {
                        // Valor da Taxa
                        document.getElementById("divTaxa").className = "visivel";
                        document.getElementById("divTaxaCarrinhoASPX").innerHTML = taxa;

                        // Valor Total+Taxa
                        document.getElementById("divTotalTaxa").className = "visivel";
                        document.getElementById("divTotalTaxaCarrinhoASPX").innerHTML = total.toString().replace(".", ",");
                    }
                    else {
                        document.getElementById("divTaxa").className = "invisivel";
                        document.getElementById("divTotalTaxa").className = "invisivel";
                    }
                }
                catch (erro) { }
            }
        }
    }

    /* ********************************************************************************* */
    /* PARCIAIS DO CARRINHO */
    this.Parciais = function () {
        // AJAX
        // Criar objecto do tipo XMLHttpRequest
        var xmlObj = criarXMLObj();

        xmlObj.open("GET", "/Inc/Carrinho/Parciais.ashx?id=" + this.ID + "&estado=" + this.Estado);
        xmlObj.send(null);

        artigoID = this.ID;

        xmlObj.onreadystatechange = function () {
            if (xmlObj.readyState <= 3) {
                /*
                * O ICON LOAD ESTÁ NA FUNÇÃO ACTUALIZAR E SUBSTITUI O ICON "/Imagens/Icons/Actualizar.png"
                */
            }
            if (xmlObj.readyState == 4) {
                // Array para os totais parciais: PESO, PREÇO, PREÇO TOTAL
                // Valores separados por barra "\"
                var parciais = xmlObj.responseText;

                // ÁREA DO CARRINHO (/carrinho.aspx)
                try {
                    // VALOR TOTAL DE UM ARTIGO (preço*quantidade)
                    document.getElementById("divTotalParcial_" + artigoID).innerHTML = parciais + "€";
                }
                catch (erro) { }
            }
        }
    }
}

