﻿/**
 * @author: eder.nucci
 * @date: 08.08.2007
 * @brief: Funções de comunicação client-server para atualização de tarifas
 * @version: N/A
 */

var gp0; // control path
var gp1; // control last value
var controlId; // id of control sender

$getControlId = function(p0)
{
    var tree = p0.split('_');
    return tree[tree.length-1];
}

$hideModalPopup = function()
{
    $find('ModalPopupBehaviorID').hide();
    $get('lbMessageModalPopup').innerHTML = '';
}

var Tarifas =
{
    SetValue : function (p0){gp1 = p0.value;},
    
    AtualizaTarifa : function (p0)
    {
        if (gp1 == p0.value) return;
        
        if (isNaN(p0.value.replace(/,/,'.')) || p0.value == "") { p0.value = gp1; return; }
    
        try
        {
            var a,b,c,d,e,id;
            
            gp0 = p0.id.substring(0,p0.id.lastIndexOf('_'));
            
            controlId = $getControlId(p0.id);
            id = controlId.substring(1,$getControlId(p0.id).length);
            
            a = $get(gp0 + '_a' + id).innerHTML.replace(/,/,'.');
            b = $get(gp0 + '_b' + id).innerHTML.replace(/,/,'.');
            c = $get(gp0 + '_c' + id).innerHTML.replace(/,/,'.');
            d = $get(gp0 + '_d' + id).value.replace(/,/,'.');
            e = $get(gp0 + '_e' + id).value.replace(/,/,'.');

            // ANTIGO
            // c = $get(gp0 + '_c' + id).value.replace(/,/,'.');
            // e = $get(gp0 + '_e' + id).innerHTML.replace(/,/,'.');


            // verifica se o sender foi a proporção ou o preço final
            var CampoAtualizado = 0;
            // 1 - Proporção
            // 2 - Preço Final

            if ($getControlId(gp0 + '_d' + id) == $getControlId(p0.id))
            {
                CampoAtualizado = 1;
            }
            else
            {
                CampoAtualizado = 2;
            }

            PageMethods.AtualizaTarifa(a,b,c,d,e,id,CampoAtualizado,Tarifas.AtualizaTarifaSuccess,Tarifas.AtualizaTarifaFail);
        }
        catch(ex){Tarifas.Fail(ex);}
    },
    
    ExcluiTarifa : function(p0)
    {
        if(confirm('Deseja excluir essa tarifa realmente?'))
        {
            gp0 = p0.id.substring(0,p0.id.lastIndexOf('_'));
            gp0 = gp0.substring(0,gp0.lastIndexOf('_'));
            
            PageMethods.ExcluiTarifa($getControlId(p0.id),Tarifas.ExcluiTarifaSucess,Tarifas.Fail);
        }
    },

    AtualizaTarifaSuccess : function (r)
    {
        $get(gp0 + '_a' + r.id).innerHTML  = r.a;
        $get(gp0 + '_b' + r.id).innerHTML  = r.b;
        $get(gp0 + '_c' + r.id).innerHTML      = r.c;
        $get(gp0 + '_d' + r.id).value      = r.d;
        $get(gp0 + '_e' + r.id).value  = r.e;
        
        // ANTIGO
        // $get(gp0 + '_c' + r.id).value      = r.c;
        // $get(gp0 + '_e' + r.id).innerHTML  = r.e;
        
        if (r.b != r.e)
        {
            $get(gp0 + '_' + r.id).className = "highlight";
        }
        else
        {
            $get(gp0 + '_' + r.id).className = "";
        }
        
        var tdRemove = $get(gp0 + "_tdRemove" + r.id);
        if (tdRemove != null)
        {
            tdRemove.innerHTML = "<img id='" + gp0 + "_remove_" + r.id + "' onclick='Tarifas.ExcluiTarifa(this)' src='../images/trash.gif' name='Remover região da tabela.'>";
        }

    },
    
    AtualizaTarifaFail : function (p0)
    {
        $get(gp0+'_'+controlId).value = "Preço futuro não pode ser menor que o custo.";
        $get(gp0+'_'+controlId).focus();
    },
    
    ExcluiTarifaSucess : function(r)
    {
        $get(gp0 + '_a' + r.id).innerHTML  = r.a;
        $get(gp0 + '_b' + r.id).innerHTML  = r.b;
        $get(gp0 + '_c' + r.id).innerHTML      = r.c;
        $get(gp0 + '_d' + r.id).value      = r.d;
        $get(gp0 + '_e' + r.id).value  = r.e;
        
        // ANTIGO
        // $get(gp0 + '_c' + r.id).value      = r.c;
        // $get(gp0 + '_e' + r.id).innerHTML  = r.e;
        
        if (r.b != r.e)
        {
            $get(gp0 + '_' + r.id).className = "highlight";
        }
        else
        {
            $get(gp0 + '_' + r.id).className = "othertable";
        }
        
        var tdRemove = $get(gp0 + "_tdRemove" + r.id);
        if (tdRemove != null)
        {
            tdRemove.innerHTML = "";
        }
    },

    Fail : function (p0)
    {
        alert(p0.get_message());
        $get(gp0+'_'+controlId).value = gp1;
        $get(gp0+'_'+controlId).focus();
    }
}



var NovaTarifa = 
{
    IncluirTarifaMinutagem : function()
    {
        var idRegiao = $get('ctl00_ContentPlaceHolder1_ddlRegioesTarifa').value;
        var adicional = $get('txtAdicionalNovaTarifa').value.replace(/,/,'.');
        var percentual = $get('txtPercentualNovaTarifa').value.replace(/,/,'.');
        
        if (isNaN(adicional))
        {
            this.Error('Valor adicional inválido');
            return;
        }
        if (isNaN(percentual))
        {
            this.Error(new Exception('Valor percentual inválido'));
            return;
        }

        try
        {
            PageMethods.AdicionaTarifa(idRegiao,adicional,percentual,NovaTarifa.Success,NovaTarifa.Error);
        }catch(ex)
        {
            this.Error(ex);
        }
    },
    
    Success : function()
    {
        $get('camposModalPopup').style.display = 'none';
        $get('hiddenButtonModalPopup').style.display = 'block';
        
        $get('lbMessageModalPopup').innerHTML = "Tarifa salva com sucesso.";
    },
    
    Error : function(e)
    {
        try{
            $get('lbMessageModalPopup').innerHTML = "Erro: " + e.get_message();
        }
        catch(ex)
        {
            $get('lbMessageModalPopup').innerHTML = "Erro: " + e;
        }
    }
}