$(function() {

	$('#main_value, #advance_value, #value_to_pay, #paid_out_value, #residual_value').mask('000.000.000.000.000,00', {reverse: true});
	$('#dateInit, #dateEnd, #document_date, #expirate_date, #payment_date, #confirm_payment_date, #new_expirate_date').mask('00/00/0000');

	// Limpar campo de texto ao mudar tipo de busca
	$('#searchBy').change(function() {
		$('#searchText').val('');
	});

	$('form#form_filter button#clear_all').on('click', function(e) {
		e.preventDefault();

		$('input[name="filter[clear]"]').val('clear');
		$('form#form_filter').submit();
	});

	// Situação da conta Filtro
	$('#b_situation').on('click', function() {

		if($('.situation_b').css('display') != 'flex') {
			$('.situation_b').css('display', 'flex');
		} else {
			$('.situation_b').css('display', 'none');
		}
	});

	$('.situation_b input').on('click', function() {
		checkBSituation();
	});

	function checkBSituation() {
		var checados = [];
		$.each($("input[name='filter[b_situation][]']:checked"), function(){
			checados.push($(this).attr('id'));
		});

		$('#situation_b').val(checados);
	}
	// Fim Situação da conta Filtro
	


	// validação ao digitar descrição do pagador
	$('#input_provider_description').on('blur', function() {
		if($(this).val().length > 2) {
			setBoxReady('input_provider_description');
		} else {
			setBoxNoReady('input_provider_description');
		}
	});

	// validação ao digitar origem de recebimento manualmente
	$('#billstopay_description').on('keyup', function() {
		if($(this).val().length > 2) {
			setBoxReady('billstopay_description');
		} else {
			setBoxNoReady('billstopay_description');
		}
	});

	// validação ao digitar descrição de forma de recebimento manualmente
	$('#form_to_pay_description').on('keyup', function() {
		if($(this).val().length > 2) {
			setBoxReady('form_to_pay_description');
		} else {
			setBoxNoReady('form_to_pay_description');
		}
	});

	// Click em origem de recebimento, adição de conta
	$('#billstopayType').on('change', function() {

		if($(this).val() != 0) {
			setBoxReady('billstopay_description');
			$('#billstopay_description').val($('#billstopayType option:selected').html());
		} else {
			setBoxNoReady('billstopay_description');
			$('#billstopay_description').val('');
		}

	});

	// Click em Forma de Recebimento, adição de conta
	$('#form_to_pay').on('change', function() {
		if($(this).val() != 0) {
			setBoxReady('form_to_pay_description');
			$('#form_to_pay_description').val($('#form_to_pay option:selected').html());
		} else {
			setBoxNoReady('form_to_pay_description');
			$('#form_to_pay_description').val('');
		}

	});

	// Liberar list de quantidade de repetição da conta
	$('#billstopay_repeat').on('click', function() {
		if($('#billstopay_repeat').is(':checked')) {
			$('select[name="qtd_repeat"]').attr('disabled', false);
		} else {
			$('select[name="qtd_repeat"]').attr('disabled', true);
			$('select[name="qtd_repeat"]').val(0);
		}
	});

	// Buscar clientes por digitação (Criação de conta[CPF, TEXT, CNPJ])
	$('#input_provider_description').on('keyup', function() {
		if($(this).val() != '' && $('select[name="type_search"]').val() != '') {
			let text = $(this).val();		
			let where = $('select[name="type_search"]').val();
			billstoreceiver.searchClientBy(where, text, 'searchresultclient');
		} else {
			$('.searchresultclient').hide();
		}
	});

	// Click em um item da lista de pesquisa
	$(document).on('click', 'div.searchresultclient ul li', function() {
		let clicked = parseInt($(this).attr('data-list'));
		let text = $(this).html();

		$('input[name="providers_list"]').val(clicked);
		$('#input_provider_description').val(text);
		setBoxReady('input_provider_description');
		$('div.searchresultclient').hide(100);
	});


	// Verificação nas datas do formulário
	$('#document_date, #expirate_date, #payment_date, #confirm_payment_date, #new_expirate_date').on('keyup', function() {
		var ref = $(this).attr('id');

		if($(this).val().length == 10) {			
			var date = $(this).val();

			billstoreceiver.verifyDate(date, ref);
		} else {
			$('#'+ref).attr('data-status', false);
		}

	});

	// Janela de confirmação de data de pagamento
	$('#payment_date').on('blur', function() {
		
		if($(this).attr('data-status') == 'true') {
			$('#confirm_payment_date').val($(this).val());
			$('.modal-stock h4.qtd_days').html("Confirma data de Pagamento?");
			$('.modal-stock').show(200);			
		}		

	});

	$('#cancel_date').on('click', function(e) {
		e.preventDefault();
		$('.modal-stock').hide(200);
		$('#confirm_payment_date').val('');
	});

	$('#confirm_date').on('click', function(e) {
		e.preventDefault();
		$('.modal-stock').hide(200);
	});
	// Fim Janela de confirmação de data de pagamento

	// Valor a Pagar
	$('#main_value').on('keyup', function() {
		if($(this).val() != '') {
			var main_value = $('#main_value').val();
			var advance = $('#advance_value').val();

			billstoreceiver.getValueToPay(main_value, advance);
		}
	});

	// Valor Residual
	$('#paid_out_value').on('keyup', function() {

		if($(this).val() != '') {
			var value_to_pay = $('#value_to_pay').val();
			var paid_out_value = $('#paid_out_value').val();

			billstoreceiver.getValueToPay(value_to_pay, paid_out_value, true);
		}
	});

	// Validação antes do envio do formulário
	$('#form_validator button[type="submit"]').click(function(e) {
		e.preventDefault();

		if($('#input_provider_description').attr('data-status') == 'true') {
			
			if($('#billstopay_description').attr('data-status') == 'true') {

				if($('#form_to_pay_description').attr('data-status') == 'true') {

					if($('#expirate_date').attr('data-status') == 'true') {

						if($('#payment_date').val() != '') {
							if($('#payment_date').attr('data-status') == 'true') {

								validationInValues();

							} else {
								utils.showAlerts('.message-add', "Informe a Data de Recebimento Válida!");	
							}
						} else {

							validationInValues();
						}
						
					} else {
						utils.showAlerts('.message-add', "Informe uma Data a Receber Válida!");
					}
					
				} else {
					utils.showAlerts('.message-add', "Informe a Descrição da Forma de Recebimento!");
				}

			} else {
				utils.showAlerts('.message-add', "Informe a Origem do Recebimento!");
			}

		} else {
			utils.showAlerts('.message-add', "Informe a Descrição do Pagador!");
		}
	});

	function validationInValues() {
		var main_value = $('#main_value').val();

		if(parseFloat(main_value) > 0) {

			if($('select[name="situation"]').val() != 0) {

				if(parseFloat($('#residual_value').val()) > 0 && parseInt($('input[name="cloned"]').val()) != 1) {

					$('.modal-confirme-cancel').show(200);

				} else {
					form.submit();
				}
				
			} else {
				utils.showAlerts('.message-add', "Informe a Situação da Conta!");	
			}

		} else {
			utils.showAlerts('.message-add', "Informe o Valor Principal!");	
		}
	}
	// Fim Validação antes do envio do formulário


	// Confirm Generate new Acounts with residual value
	$('#confirm_generate').on('click', function(e) {
		e.preventDefault();
		$('input[name="copied"]').val(1);
		$('.modal-confirme-cancel').hide(100);
		$('.modal-new-expirate').show(500);
	});

	// Não gerar conta com valor residual
	$('#cancel_generate').on('click', function(e) {
		e.preventDefault();
		$('input[name="copied"]').val(0);
		$('.modal-confirme-cancel').hide(200);
		form.submit();
	});

	// Confirmar modal de nova data para conta com residual value
	$('#confirm_expirate').on('click', function(e) {
		e.preventDefault();

		if($('#new_expirate_date').attr('data-status') == 'true') {
			$('input[name="date_new_acount"]').val($('input[name="new_expirate_date"]').val());
			$('.modal-new-expirate').hide(200);
			form.submit();
		} else {
			utils.showAlerts('.message-add', "Data inválida!");
		}
	});

	// Fechar modal de nova data para conta com residual value
	$('#cancel_expirate').on('click', function(e) {
		e.preventDefault();
		$('.modal-new-expirate').hide(200);
	});

	// Funções para alteração de status dos campos dos formulários
	function setBoxReady(id) {
		$('#'+id).attr('data-status', true);
	}

	function setBoxNoReady(id) {
		$('#'+id).attr('data-status', false);
	}

	// Ações em página de edição
	$(document).ready(function() {
		let copied = $('input[name="cloned"]').val();

		if(copied == 1) {
			$('input, textarea').attr('readonly', true);
			$('input, select').attr('disabled', true);

			$('button[type="submit"]').hide();
		}
	});

	// Deletar arquivo anexado
	$('a#delete_attachment').on('click', function() {
		let ref = $(this).attr('data-ref');

		if(ref) {
			billstoreceiver.deleteAtt(ref);
		}
	});

	// Ativar e Inativar Contas
	$('table a#activate, table a#inativate').on('click', function() {
		let action = $(this).attr('id');
		let ref = $(this).attr('data-id');

		if(action == 'inativate') {
			var value = 2;
		} else if(action == 'activate') {
			var value = 1;
		}

		if(value != '') {
			billstoreceiver.updateStatus(ref, value);
		}
	});

	// Selecionar todas as checkbox de contas a receber
	$('#select_all').on('click', function() {
		var checados = [];

		if($('#select_all').is(':checked')) {
			$.each($('table tr td.select_checkbox input[type="checkbox"]'), function() {
				checados.push($(this).attr('data-val'));

				$(this).prop('checked', true);
			});

			$('input[name="accounts_selected"]').val(checados);

		} else {
			$.each($('table tr td.select_checkbox input[type="checkbox"]'), function() {

				$(this).prop('checked', false);
			});

			$('input[name="accounts_selected"]').val('');
		}

		verifyShowButtonPayment();
	});

	// Seleção única
	$('table tr td.select_checkbox input[type="checkbox"]').on('click', function() {
		var checados = [];
		$('input[name="accounts_selected"]').val('');

		$.each($('table tr td.select_checkbox input[type="checkbox"]:checked'), function() {
			checados.push($(this).attr('data-val'));
		});

		$('input[name="accounts_selected"]').val(checados);

		verifyShowButtonPayment();
	});

	function verifyShowButtonPayment() {
		var accountsList = $('input[name="accounts_selected"]').val();

		if(accountsList != '') {
			$('.btn-pay-accounts').show();

			billstoreceiver.getTotalValueSelected(accountsList);

		} else {
			$('.btn-pay-accounts').hide();
			$('input[name="total_selected"]').val('0,00');
		}
	}

	$('.btn-pay-accounts').on('click', function() {
		$('.modal-set-accounts-pay').show(100);
	});

	$('#close_account_payment').on('click', function() {
		$('.modal-set-accounts-pay').hide(100);
	});

	// Validar data de pagamento
    $('input[name="payment_date"]').on('keyup', function() {
    	let date = $(this).val();

    	if(date.length == 10) {
    		billstoreceiver.verifyDate('payment_date', date);
    	} else {
    		$('input[name="payment_date"]').attr('data-status', false);
    	}
    });

    // Verificação antes de finalizar o pagamento das contas
    $('.modal-set-accounts-pay #confirm_payment').on('click', function() {
    	var receiver_form = parseInt($('select[name="receiver_form"]').val());

    	if(receiver_form) {
    		if($('#payment_date').attr('data-status') == 'true') {
    			var deduceir = '';
    			let payment_date = $('#payment_date').val();
    			let note_number = $('#note_number').val();
    			let accountsList = $('input[name="accounts_selected"]').val();

    			if($('input[name="deduceir"]').is(':checked')) {
    				deduceir = $('input[name="value_reduce"]').val();
    			}

    			billstoreceiver.paymentAccounts(accountsList, receiver_form, payment_date, note_number, deduceir);

    		} else {
    			utils.showAlerts('.message-add', 'Digite uma data de recebimento correta!');
    		}

    	} else {
    		utils.showAlerts('.message-add', 'Selecione a forma de Recebimento!');
    	}
    });


    // verificar campo imposto de renda
    $('input[name="deduceir"]').on('click', function() {

    	if($(this).is(':checked')) {    		
    		$('input[name="value_reduce"]').attr('readonly', false);

    	} else {
    		
    		$('input[name="value_reduce"]').val('');
    		$('input[name="value_reduce"]').attr('readonly', true);
    	}
    });
});