/**
 *
 */
var partidas = 0;
var importeFacturado = 0;

function generalFactProcess( obj )
{
    if( !obj.method )   obj.method = 'get';
    if( obj.dataId )
    {
        obj.data    =   $( obj.dataId );
    }
    else
    {
        obj.data    =   obj;
    }
    obj.evalScripts =   true;
    if( obj.action )
    {
        new Ajax( urlFactura, obj ).request();
    }
}

function factCapt()
{
    partidas = 0;
    var obj = {   
        'action'    :   'get_fact_capt',
        'update'    :   $( 'fContainer' )
    };

    if( arguments[ 0 ] )
    {
        obj.cabe_id = arguments[0].cabe_id;
    }
    $( 'fContainer' ).setHTML('Cargando..');
    generalFactProcess( obj );
}

function factCons()
{
    var obj = {   'action'    :   'get_fact_cons',
            'update'    :   $( 'fContainer' )
        };
    if( arguments[ 0 ] )
    {
        obj.cabe_id = arguments[0];
    }
    $( 'fContainer' ).setHTML( 'Cargando...' );
    generalFactProcess( obj );
}

function factPago()
{
    $( 'fContainer' ).setHTML('Cargando...');
    generalFactProcess(
        {   'action'    :   'get_pag_capt',
            'update'    :   $( 'fContainer' )
        }
    );
}

function addPartidaRow()
{
    $( 'emptyDiv' ).setStyle('display','none');
    generalFactProcess(
        {   'action'    :   'add_part_row',
            'id'        :   partidas,
            'update'    :   'emptyDiv',
            'onComplete'    :   function(){ addRow(); }
        }
    );
}

function addRow()
{
    $( 'row[' + partidas + ']' ).inject( $( 'factPartidasDiv' ) );
    if( $( 'deta_cant[' + partidas + ']' ) ) $( 'deta_cant[' + partidas + ']' ).focus();
    partidas++;
    $( 'emptyDiv' ).setHTML('');
    $( 'factPartidasDiv').scrollTo(0,9999999);
}

function borraPartida( id )
{
    var del = false;
    if( arguments[ 1 ] == 1)
    {
        del = true;
    }
    else
    {
        del = confirm( "Desea eliminar la partida?");
    }
    if( del == true)
    {
        $( 'row[' + id + ']' ).remove();
    }
}

/**
 * *
 * */
function chargeClieFactData( obj )
{
    cadena = "";
    if( obj.constructor == Object )
    {
        for( var p in obj )
        {
            if( $( p ) )
            {
                $( p ).value = unescape( obj[ p ] );
            }
            cadena += p + " =  " + unescape( obj[ p ] ) + "\n";
        }
    }
    chargeClieData( obj );
    //alert( cadena );
}

function filtraProd( obj )
{   
    code = ( window.ie ? obj.evnt.keyCode : obj.evnt.which );
    if( obj.value.length >= 3 && 
        (   (   code >= 65 && code <= 92 ) ||
            (   code >= 96 && code <= 105 ) ||
            (   code >= 48 && code <= 57 )
        )
    )
    {
        selectProduct( obj.div, obj.idRow, obj );
    }
    if( code == 27 || code == 9 )
    {
        if( $( 'prodSelDiv' ) ) $( 'prodSelDiv' ).remove();
    }
    if( code == 13 && obj.value.length > 0 )
    {
        findProdBy({'by':'prod_clave_articulo','value':obj.value,'idRow':obj.idRow});
    }
    //$( 'facturaMensajes' ).setHTML( code );
}

function selectProduct( div, idRow, objP )
{
    if( $( 'prodSelDiv' ) ) $( 'prodSelDiv' ).remove();
    new Element( 'div', { 'id' : 'prodSelDiv' } ).inject( document.body );
    $( 'prodSelDiv' ).setStyles(
        {   'position'      :   'absolute',
            'left'          :   ( $( 'H_deta_desc' ) ? $('H_deta_desc').getPosition().x : $( 'formularioContainer' ).getPosition().x ),
            'top'           :   ( $( 'H_deta_desc' ) ? $('H_deta_desc').getPosition().y : $( 'formularioContainer' ).getPosition().y ),
            'border'        :   'solid 2px #cdcdcd',
            'background-color'  :   '#ffffff'
        }
    );
    var functionName = 'changeSelectedProd';
    var like = false;
    var noFind = false;
    if( objP )
    {
        if( objP.functionName )
        {
            functionName = objP.functionName;
        }
        if( objP.value )
        {
            like   =  objP.value;
            noFind =   1;
        }
    }

    new Ajax( urlProductos,
        {   'method'    :   'get',
            'data'      :   {   'functionName'  :   functionName,
                                'params'        :   'all',
                                'id'            :   div.id,
                                'idRow'         :   idRow,
                                'action'    :   'reload_prod_list',
                                'like'      :   like,
                                'noFind'    :   noFind
                            },
            'update'    :   $( 'prodSelDiv' ),
            'evalScripts'   :   true
        }
    ).request();
}
function changeSelectedProd( obj )
{
    if( obj.id )
    {
        $( obj.id ).setHTML( unescape( obj.prod_clave_articulo ) + ' - ' + unescape( obj.prod_desc ) );
        $( 'desc_prod_id[' + obj.idRow + ']' ).value = obj.prod_id ;
        $( 'prodSelDiv' ).remove();
        if( $('clie_id').value != '' && obj.prod_id != '' )
        {
        updateCPD( obj );
        }
    }
}
function updateCPD( obj )
{
    if( $( 'clie_id' ).value != '' )
    {
        obj.action = 'update_cpd';
        if( $( 'desc_id[' + obj.idRow + ']' ).value != '' )
        {
            obj.desc_action =   'update';
            obj.desc_id     =   $( 'desc_id[' + obj.idRow + ']' ).value;
        }
        else
        {
            obj.desc_action =   'insert';
            obj.desc_id     =   0;
        }
        obj.desc_clie_id = $( 'clie_id' ).value;
        new Ajax( urlProcesos,
            {   'method'        :   'get',
                'evalScripts'   :   true,
                'data'          :   obj
            }
        ).request();
    }
}

function findProdBy( obj )
{
    //alert( print_r( obj ));
    obj.action = 'find_prod_by';
    new Ajax( urlProductos,
        {   'method'    :   'get',
            'data'      :   obj,
            'evalScripts'   :   true,
            'onComplete'    :   function()
            {
                calculaImporte({'idRow':obj.idRow})
            }
        }
    ).request();
}

function partidaProd( obj )
{
    if( obj.prod_comision == '' )
    {
        alert('Producto sin comision.\nNo se puede facturar el producto hasta que se capture la comision que paga')
        //alert( print_r( obj ) );
        borraPartida(obj.idRow, 1);
        if( $( 'prodSelDiv' ) ) $( 'prodSelDiv' ).remove();
    }
    else
    {
        //alert( print_r( obj ) );
        $( 'deta_clave[' + obj.idRow + ']' ).value =   obj.prod_clave_articulo;
        $( 'deta_desc['  + obj.idRow + ']' ) .value =   unescape( obj.prod_desc );
        $( 'deta_precio[' + obj.idRow+ ']' ).value = obj.prod_precio_1;
        
        var desc = obj.prod_desc;
        
        var desc_porcion = desc.substring(0, 9);


        if(desc_porcion=="TARIFARIO"){
        document.getElementById("plazo").disabled = true;
        }/**/
        
        if( $( 'deta_cant[' + obj.idRow + ']' ) )
        {
            $( 'deta_cant[' + obj.idRow + ']' ).focus();
            if( $( 'deta_cant[' + obj.idRow + ']' ) .value.trim() == '' )
            {
                $( 'deta_cant[' + obj.idRow + ']' ).value = 1;
            }
        }
        if( $( 'prodSelDiv' ) ) $( 'prodSelDiv' ).remove();
        findProdBy({'by':'prod_clave_articulo','value':obj.prod_clave_articulo,'idRow':obj.idRow});
    }
}

function searchCPD( obj )
{
    if( $( 'clie_id' ).value == '' )
    {
        alert( 'Escriba los datos del cliente para poder buscar posibles descuentos' );
    }
    else
    {
        obj.action = 'search_cpd';
        obj.clie_id =   $( 'clie_id' ).value;
        new Ajax( urlFactura,
            {   'method'    :   'get',
                'data'      :   obj,
                'evalScripts'   :   true
            }
        ).request();
    }
}

function calculaImporte( obj )
{

    var inp         = $$( 'input.inpFact' );
    var mnse        = "length = " + inp.length;
    var importes    = 0;

    for( var i = 0; i < inp.length; i++ )
    {
        if( inp[ i ].id.indexOf( 'deta_dif' ) >= 0 )
        {
            importes += inp[ i ].value * 1.00;
        }
        mnse += inp[i].id + "" + inp[i].value;
    }
    var cabe_sub_total  =   importes;
    var cabe_iva        =   (  importes ) * .16;
    var cabe_total      =   cabe_sub_total + cabe_iva;

    $( 'cabe_sub_total' ).value     =   cabe_sub_total;
    $( 'cabe_iva' ).value           =   cabe_iva;
    $( 'cabe_total' ).value         =   cabe_total;
    
}
function saveFactObse()
{
    
    new Ajax( urlFactura,
        {   'method'    :   'post',
            'data'      :   $( 'factObseForm' ),
            'update'    :   $( 'mainContainer' ),
            'evalScripts'   :   true
        }
    ).request();
}

function noFactObse()
{
    
    new Ajax( urlFactura,
        {   'data'      :   {'action' : 'no_fact_obse'},
            'update'    :   $( 'mainContainer' ),
            'evalScripts'   :   true
        }
    ).request();
}
function showFactObser()
{
    if( $( 'factObseDiv' ) )
    {
        var x   =   (   $( 'partidasHeaderDiv' ) ? $( 'partidasHeaderDiv' ).getPosition().x :   '0px'   );
        var y   =   (   $( 'partidasHeaderDiv' ) ? $( 'partidasHeaderDiv' ).getPosition().y :   '0px'   );
        $( 'factObseDiv' ).setStyles(
            {   'display'   :   'block',
                'top'   :   y,
                'left'  :   x
            }
        );
    }
}
function getCliePolitics( clie_id )
{
    new Ajax( urlProcesos,
        {   'method'    :   'get',
            'update'    :   $( 'politicasDiv' ),
            'data'      :   { 'action' : 'get_clie_politics', 'clie_id' : clie_id },
            'evalScripts' : true
        }
    ).request();
}
function chargeClieData( obj )
{
    //alert( print_r(obj) );
    obj.action = 'get_clie_data';
    new Ajax( urlProcesos,
        {   'method'    :   'get',
            'data'      :   obj,
            'evalScripts'   :   true
        }
    ).request();
}

function validaClieNum( evnt, el )
{
    code = ( window.ie ? evnt.keyCode : evnt.which );
    //alert( code );
    var tmp = el.value;
    if( code == 27 || code == 9 || code == 13 )
    {
        closeFinder();
        el.value = tmp;
        chargeClieData({'by':'clie_num','value':tmp});
    }
}

/**
 *  Guardando la factura
 */
function saveFact(part)
{
    
    if( $( 'clie_id' ).value.trim() == '' )
    {
        alert( 'Se requiere de un cliente' );
        $( 'clie_num' ).focus();
        return false;
    }
    if( $( 'cabe_docu_folio' ).value.trim() == '' )
    {
        alert( 'Se requiere del numero de factura' );
        $( 'cabe_docu_folio' ).focus();
        return false;
    }
    if( $( 'cabe_revi_ok' ).checked == false )
    {
        alert( 'Se requiere revisar los montos de la factura' )
        return false;
    }
    
    for (i=0;i<part;i++)
    {
        if( $( 'deta_dif['+i+']' ).value == '' )
        {
            alert( 'Se requiere llenar todas las diferencias de la factura' )
            return false;
        }
    
    }
    

    new Ajax( urlFactura,
        {
            'data'  :   $( 'factForm' ),
            'update'    :   $( 'mainContainer' ),
            'evalScripts'   :   true
        }
    ).request();
    
}

/**
 *  Rechazar la factura
 */
function rechFact(venta,acti)
{
    
    var aja = new Ajax( urlFactura,
            {   'method'    :   'get',
                'data'      :   {   
                                    'action' : 'rech_fact',
                                    'venta'  :   venta,
                                    'acti'   :   acti
                                },
                'onComplete' : function()
                {   
                   
                   alert('Factura rechazada');
                    
                },
                'update'    :   $( 'mainContainer' )
            }
        ).request();  


}

function validaFactNo( el )
{
    $( 'validaNoFactDiv' ).setHTML( 'Verificando....' );
	
	var serie= $( 'cabe_docu_serie' ).value;
	
    new Ajax( urlFactura,
        {   'method'        :   'get',
            'data'          :   { 'action' : 'validate_fact_no','cabe_docu_serie':serie, 'cabe_docu_folio' : el.value, 'idMns' : 'validaNoFactDiv','idInp':el.id },
            'evalScripts'   :   true
        }
    ).request();
}


function val_mont_fact(val)
{
    if(val == "0"){
        document.factForm.cabe_revi_ok.value=1;
        document.factForm.save_but.disabled=false;
        document.factForm.rech_but.disabled=true;
    }
    else{
        document.factForm.cabe_revi_ok.value=0;
        document.factForm.save_but.disabled=true;
        document.factForm.rech_but.disabled=false;
    }

}



function chargeFactData( cabe_id )
{
    new Ajax( urlFactura,
        {   'method'    :   'get',
            'data'  :   {   'action' : 'get_fact_data',
                            'cabe_id'   :   cabe_id
                        },
            'update'    :   $( 'pagosFormDiv' )
        }
    ).request();
}

function aplicaPagoForm()
{
    if( $( 'cabe_docu_folio' ).value.trim() != '' )
    {
        if( $( 'pagoFormDiv' ) ) $( 'pagoFormDiv' ).remove();

        new Element( 'div', { 'id' : 'pagoFormDiv' } ).inject( document.body );
        $( 'pagoFormDiv' ).setStyles(
            {   'position'      :   'absolute',
                'border'        :   'solid 2px #cdcdcd',
                'top'           :   $( 'pagosFormDiv' ).getPosition().y,
                'left'          :   $( 'pagosFormDiv' ).getPosition().x
            }
        );
        new Ajax( urlFactura,
            {   'method'    :   'get',
                'data'      :   {
                    'action'    :   'get_pago_form'
                },
                'update'    :   $( 'pagoFormDiv' ),
                'evalScripts'   :   true
            }
        ).request();
    }
    else
    {
        alert( 'Necesita seleccionar una factura para poder aplicar un pago' )
    }
}

function aplicarPago()
{
    if( $( 'cabe_docu_folio' ).value.trim() != '' )
    {
        if( $( 'pago_monto' ).value.trim() == '' )
        {
            alert( 'Se requiere de un importe' );
            $( 'pago_monto' ).focus();
            return false;
        }
        new Ajax( urlFactura,
            {   'method'    :   'get',
                'data'      :   {
                    'action'    :   'aplica_pago',
                    'pago_monto'    :   $( 'pago_monto' ).value,
                    'pago_fecha'    :   $( 'pago_fecha' ).value,
                    'pago_tipo'     :   $( 'pago_tipo' ).value,
                    'cabe_docu_folio'   :   $( 'cabe_docu_folio' ).value,
                    'cabe_fecha_venc'   :   $( 'cabe_fecha_venc' ).value,
                    'clie_cred_dias'    :   $( 'clie_cred_dias' ).value,
                    'cabe_cant_total'   :   $( 'cabe_cant_total' ).value,
                    'comi_fact'         :   $( 'comi_fact' ).value
                },
                'evalScripts'   :   true
            }
        ).request();
    }
}

function cancelaAplicacionPago( obj )
{
    if( confirm( 'Realmente desea eliminar el pago?' ) == true )
    {
        obj.action = 'cancela_aplicacion_pago';
        new Ajax( urlFactura,
            {   'method'    :   'get',
                'data'      :   obj,
                'evalScripts'   :   true
            }
        ).request();
    }
}
function applyPay( obj )
{
    obj.action = 'apply_pay';
    new Ajax( urlFactura,
        {   'method'    :   'get',
            'data'      :   obj,
            'evalScripts'   :   true
        }
    ).request();
}

function reloadFactList()
{
    new Ajax( urlFactura,
        {   'method'    :   'get',
            'data'      :   { 'action' : 'reload_fact_list' },
            'update'    :   $( 'facturasListDiv' ),
            'evalScripts'   :   true
        }
    ).request();
}

function modifDesc()
{
    $$('input.descClass').each( 
        function( item, index )
        {   
            $( item.id ).removeProperty('readonly');
            $( item.id ).setStyle('background-color','#ffffff');
        }
    );
}

function facturaDetalle( cabe_id )
{
    $( 'factDetaDiv' ).setHTML( 'Cargando.....' );
    var obj =   {   'action'    :   'detalle_factura',
                    'cabe_id'   :   cabe_id,
                    'update'    :   $( 'factDetaDiv' )
    }
    generalFactProcess( obj );
}

/**
 *  Solicitudes (modificacion, cancelacion, etc )
 */
function factSoli(obj)
{
    closeAllWindows();
    var send = false;
    obj.action = 'fact_solicitud';
    ///* pendiente
    if( $( 'obseSoliDiv' ) ) $( 'obseSoliDiv' ).remove();

    new Element( 'div', { 'id': 'obseSoliDiv' } ).inject( document.body );
    $( 'obseSoliDiv' ).setStyles(
        {   'position'  :   'absolute',
            'top'       :   $( 'partidasHeaderDiv' ).getPosition().y,
            'left'      :   $( 'partidasHeaderDiv' ).getPosition().x
        }
    );
    obj.update = $( 'obseSoliDiv' );
    //*/
    //send  = confirm( 'Realmente desea enviar la solicitud?' );
    //if( send == true )
    //{
        //alert('enviando');
        generalFactProcess( obj );
    //}
}

function sendSoli()
{
    generalFactProcess( 
        {   'dataId'    :   'sendFactSoliForm',
            'action'    :   'send_fact_soli',
            'method'    :   'post'
        }
    );
}

function factRequest( obj )
{
    obj.action  =   'fact_request';
    var send = false;
    if( obj.tipo == 'cancelar' )
    {
        if( confirm( 'Realmente desea cambiarle es status a la factura?' ) == true )
        {
            send = true;
        }
    }
    else
    {
        send = true;
    }
    if( send == true )
    {
        generalFactProcess( obj );
    }
}
function atenderFactSoli( cabe_id )
{
    //alert('atendiendo');
    goTo('facturacion', 'mainContainer',{'cabe_id':cabe_id,'seccion':'consulta'});
}

function factModifi( obj )
{
   factCapt( obj ); 
}


function filtraFacturasBy( obj )
{
    obj.update  =   $( obj.update );
    obj.action  =   'filtra_fact_list';
    generalFactProcess( obj );
}

function switchFactTab( secc )
{
    $$( 'div.factTab' ).each(
        function( item )
        {
            $( item.id ).setStyle('background-color','#ffffff');
        }
    );
    $( 'tab_' +  secc ).setStyle('background-color','#D4E5D0');
    $$( 'div.factSecciones' ).each(
        function( item )
        {
            $( item.id ).setStyle( 'display','none' );
        } 
    );
    $( 'seccion_' + secc ).setStyle('display','block');
}

function restoreValue(obj)
{
    //alert( print_r( obj ) );
    if( $( obj.el.id ).value.trim() == '' )
    {
        $( obj.el.id ).value = $( obj.idValue ).value;
    }
    //alert( $( 'deta_desc_orig[' + obj.idRow + ']' ).value );
}

/******************************************************************************************************
 *  Pago de comisiones
 *****************************************************************************************************/

function factComisiones()
{
    $( 'fContainer' ).setHTML( 'Cargando...' );
    generalFactProcess(
        {   'action'    :   'get_comi_form',
            'update'    :   $( 'fContainer' )
        }
    );
}
function userComi()
{
    $( 'comiFormDiv' ).setHTML( "Cargando..." );
    generalFactProcess(
        {   'action'    :   'comi_user_form',
            'user_id'   :   arguments[ 0 ],
            'update'    :   $( 'comiFormDiv' )
        }
    );
}

function reloadComiList( obj )
{
    obj.action = 'reload_comi_list';
    obj.update  =  ( obj.idCont ? $( obj.idCont ) : $( 'listaComisiones' ) );
    if( obj.useFilters )
    {
        obj.dataId = 'filtersForm';
    }
    generalFactProcess( obj );
}

function validaExists()
{
    $$( '.comiItem' ).each(
        function( item )
        {
            item.removeEvents();
            if(  $( item.id + '_new' ) )
            {
                $( item.id ).setStyle('background-color','#d4e5d0' );
            }
            else
            {
                $( item.id ).setStyle('background-color','#ffffff' );
                item.addEvent('click',
                    function() 
                    {
                        clonarComi( item );
                    }
                );
                item.addEvent('mouseover',
                    function()
                    {
                        $(item.id).setStyle('background-color','#cdcdcd');
                    }
                );
                item.addEvent('mouseout',
                    function()
                    {
                        $(item.id).setStyle('background-color','#ffffff');
                    }
                );
            }
        }
    );
}

function clonarComi( el )
{
    var newId = el.id + '_new';
    if( !$( newId ) )
    {
        var clon = $( el.id ).clone();
        clon.removeEvents();
        clon.setStyle('background-color','#ffffff');
        clon.id = el.id + '_new';
        clon.className = 'comiPay';
        clon.innerHTML += "<input type='hidden' class='comi_pagos' value='" + $( 'impo_' + el.id ).innerHTML.trim() + "'>";
        clon.innerHTML += "<input type='hidden' name='comi_id[]' class='comi_id' value='" + $( 'id_' + el.id ).innerHTML.trim() + "'>";
        clon.innerHTML =  clon.innerHTML.replace('forward','back' );

        clon.addEvent( 'click', function(){ this.remove() ; validaExists(); sumaComi(); } );
        clon.addEvent( 'mouseover', function(){ this.setStyle('background-color','#cdcdcd'); } );
        clon.addEvent( 'mouseout', function(){ this.setStyle('background-color','#ffffff')} );
        clon.inject( $( 'listaComisionesP' ) );
        validaExists();
        $( 'listaComisionesP' ).scrollTo(0,9999999);
        /*
        $( el.id ).setStyle('background-color','#ff55ff');
        $( el.id ).removeEvents();
        */
    }
    sumaComi();
}
function sumaComi()
{
    var total = 0;
    $$( '.comi_pagos' ).each(
        function( item )
        {
            total += item.value.toFloat();
        }
    );
    $( 'totalPorPagar' ).setHTML( total.numberFormat(2,'.',',') );
    if( total > 0 )
    {
        $( 'btnSeleccion' ).setStyle('display','inline');
    }
    else
    {
        $( 'btnSeleccion' ).setStyle('display','none');
    }
}
function pagaComisiones()
{
    var procesa = false;
    if( arguments[ 0 ] )
    {
        $( 'tipo_pago' ).value = arguments[0];
        cantidad = $( 'totalComisiones' ).innerHTML;
    }
    else
    {
        cantidad = $( 'totalPorPagar' ).innerHTML;
        $( 'tipo_pago' ).value = 'select';
    }
    if( $('comi_pago_folio_tmp' ).value.trim() == '' )
    {
        if( confirm( 'Se requiere de un numero de pago o cheque.\ndesea generar uno' ) == true )
        {
            var objParam = { 'functionName':'pagaComisiones'};
            if( arguments[0] ) objParam.params = arguments[0]; 
            generarFolioComi( objParam );
        }
        return false;
    }
    else if( $( 'comi_pago_folio_tmp' ).value.trim() != $( 'comi_pago_folio').value.trim() )
    {
        $( 'comi_pago_folio').value = $( 'comi_pago_folio_tmp' ).value.trim();
    }
    procesa = confirm( 'Se le va a pagar:\t\t$' +  cantidad + '\nal usuario:\n' + $( 'userNombre' ).innerHTML + '\n\nDesea continuar?' );
    if( procesa == true )
    {
        generalFactProcess(
            {   dataId : 'pagaComiForm',
                action : 'pagar_comisiones',
                method  :   'post'
            }
        );
    }
}
function generarFolioComi( )
{
    var obj = {
        'action'        :   'gene_comi_foli',
        'updateValue'   :   'comi_pago_folio'   
    };
    if( arguments[0] )
    {
        var objP = arguments[ 0 ];
        $extend( obj, arguments[ 0 ] );
    }
    generalEstaProcess( obj );
}

function validatePagoFolio( el )
{
    generalEstaProcess(
        {   'action'    :   'valida_pago_folio',
            'value'     :   el.value 
        }
    );
}

