var Creditos=function(){
	this.baseUrl=null;
	this.scroll=true;
	this.test=function(){
		console.log('La clase Clientes ha sido instanciado correctamente');
	}
	this.setUrl=function(url){
		this.baseUrl=url;
	}
	this.guardarTrans=function(e){
		var sender = '#guardar-transaccion';
		$(sender).attr('disabled','disabled');
		var parent = this;
		
		swal({
            title: 'Guardar Transacci&oacute;n ',
            text: 'Este proceso es irreversible<br>&iquest;Deseas guardar esta Transacci&oacute;n?',
			html: true,
            type: 'info',
            showCancelButton: true,
            confirmButtonColor: '#3C8DBC',
            confirmButtonText: 'Si, guardar transaccion',
			cancelButtonText: 'No guardar nada'
        },
        function(isConfirm) {
			if(isConfirm){
				var nuevoSaldo = 0;				
				if($("#tipo_transaccion").val() == 0){
					nuevoSaldo = parseFloat($("#saldo_credito").val()) + parseFloat($("#monto_transaccion").val());
					if(parseFloat($("#monto_transaccion").val()) + parseFloat($("#saldototal").val()) > parseFloat($("#limite_credito_cliente").val())){
						toastr.options = {
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.error('El monto supera el Limite de Credito('+$("#limite_credito_cliente").val()+') otorgado a este Cliente, ingrese otra cantidad valida');						
						setTimeout(function () { $("#monto_transaccion").focus(); }, 100);
					}else if(nuevoSaldo > parseFloat($("#monto_credito").val())){
						setTimeout(function () {
							swal({
								title: 'Guardar Transacci&oacute;n',
								text: 'Esta transaccion supera el monto de apertura de este Credito<br>&iquest;Deseas guardar esta Transacci&oacute;n de todos modos?',
								html: true,
								type: 'info',
								showCancelButton: true,
								confirmButtonColor: '#3C8DBC',
								confirmButtonText: 'Si, guardar transaccion',
								cancelButtonText: 'No guardar nada'
							},
							function(isConfirm) {
								if(isConfirm){
									$("#saldo_credito").val(nuevoSaldo.toFixed(2));
									$("#saldo-credito").text(' '+nuevoSaldo.toFixed(2));
									$("#monto-credito").text(' '+nuevoSaldo.toFixed(2));
									$("#nuevo_monto_credito,#monto_credito").val(nuevoSaldo.toFixed(2));
									$("#saldototal").val(parseFloat(parseFloat($("#saldototal").val()) + parseFloat($("#monto_transaccion").val())).toFixed(2));
									
									var options = {
										beforeSubmit:function(){
											
										},
										success:function(responseText){
											toastr.options = {
											  "closeButton": true,
											  "progressBar": true,
											  "positionClass": "toast-top-right"
											}
											toastr.success('La Transacci&oacute;n se ha guardado en la Base de Datos del Sistema');
											parent.cargarTrans();
											creditos.detalles($("#id_cliente").val());
											$("#tipo_transaccion,#ref_transaccion,#monto_transaccion").val("");
										}
									};
									
									$('#formSaveTrans').ajaxSubmit(options);
								}else{
									
								}          
							});
						}, 300);
					}
				}else{
					nuevoSaldo = parseFloat($("#saldo_credito").val()) - parseFloat($("#monto_transaccion").val());
					if(nuevoSaldo >= 0){
						$("#saldo_credito").val(nuevoSaldo.toFixed(2));
						$("#saldo-credito").text(' '+nuevoSaldo.toFixed(2));
						
						if(nuevoSaldo == 0){
							$("#estado_credito").val("1");
						}
						
						var options = {
							beforeSubmit:function(){
								
							},
							success:function(responseText){
								toastr.options = {
								  "closeButton": true,
								  "progressBar": true,
								  "positionClass": "toast-top-right"
								}
								toastr.success('La Transacci&oacute;n se ha guardado en la Base de Datos del Sistema');
								parent.cargarTrans();
								creditos.detalles($("#id_cliente").val());
								$("#tipo_transaccion,#ref_transaccion,#monto_transaccion").val("");
							}
						};
						
						$('#formSaveTrans').ajaxSubmit(options);
					}else{
						toastr.options = {
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.error('El monto supera el Saldo('+$("#saldo_credito").val()+'), ingrese una cantidad valida');
						setTimeout(function () { $("#monto_transaccion").focus(); }, 100);
					}
				}
				if($("#estado_credito").val() == 0){
					$(sender).removeAttr('disabled');					
				}
			}else{							
				$(sender).removeAttr('disabled');
			}
		});
		
		e.preventDefault();
	}
	this.cargarTrans=function(){
		var tableTrans = $('#detalles-credito-transacciones-table').DataTable();
		tableTrans.ajax.reload();
		setTimeout(function () { $('div.dataTables_filter input').focus(); }, 100);
	}
	this.guardar=function(e,action){
		e.preventDefault();
		var $form=$(e.target);
		$form.find(":submit").prop('disabled', true);
		if($("#creditos-nuevo-cliente-select").val()>0){
			var _this=this;
			$form.ajaxSubmit({
				success:function(response){
					if(response=="1"){
						toastr.options = {
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.success('El Credito se ha registrado en la base de datos del sistema');
						if(action=='update'){
							_this.detalles($("#creditos-nuevo-cliente-select").val());
						}
						_this.cargar(true,0);
						Custombox.close(); 
					}else{
						toastr.options = {
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.error('&iexcl;Ha ocurrido un error! <br/> La accion NO se ha podido completado');
						Custombox.close(); 
					}
				}
			});
		}else{
			$("#credito-no-cliente-error").css('display','block');
			$form.find(":submit").prop('disabled',false);
		}
	}
	this.cargar=function(reset,offset){
		if(this.scroll){
			this.scroll=false;
			this.loader($('#creditos-lista-table tbody tr.tr-loader td:first'),'start');
			if(reset){
				$("#creditos-lista-table").find("tr:not(.tr-loader)").remove();
			}
			jQuery.ajaxSetup({async:false});
			$.get(this.baseUrl+"clientes/cargarcreditos",{search:$('#creditos-search-str').val(),offset:offset},function(clientes){
				 if(clientes){
					$.each(clientes,function(i,cliente){
						var clienteHtml="<tr id='cliente-"+cliente.id+"'><td><h4>"+cliente.nombre+"</h4><small>"+cliente.razon+"</small></td><td class='contact-type noselecttext'><i class='fa fa-money'></i></td><td class='noselecttext'>$ "+cliente.saldo+"</td></tr>";
						$(clienteHtml).insertBefore('.tr-loader');
					});
				}else{
					toastr.options = {
					  "closeButton": true,
					  "positionClass": "toast-bottom-right"
					}
					toastr.warning('&iexcl;No se han encontrado más clientes en la base de datos del sistema!');
				}
			},"json");
			this.loader($('#creditos-lista-table tbody tr.tr-loader td:first'),'stop');
			this.scroll=true;
		}
	}
	this.detalles=function(id){
		$("#creditos-detalles-ajax-wrapper").html('');
		this.loader($('#creditos-detalles-ajax-wrapper'),'start');
		$("#creditos-detalles-info-wrapper").hide();
		$.get(this.baseUrl+"clientes/detallescreditoxcliente",{id:id},function(cliente){
			$("#creditos-detalles-ajax-wrapper").html(cliente);
		},"html");
	}
	this.eliminar=function(id,nombre,saldo){
		if(saldo>0){
			swal({
			  title: "No es posible eliminar este credito",
			  text: "El cliente "+nombre+" posee uno o varios creditos con saldos activos",
			  type: "error"
			});
		}else{
			 var _this=this;
			swal({
			 html:true,
			  title: "&iquest;Eliminar creditos de "+nombre+"?",
			  text: "Esta acci&oacute;n eliminar&aacute; definitivamente la informaci&oacute;n crediticia del cliente. &iquest;Esta seguro que desea continuar?",
			  type: "warning",
			  showCancelButton: true,
			  confirmButtonColor: "#DD6B55",
			  cancelButtonText: "Cancelar",
			  confirmButtonText: "Si, Eliminar"
			},function(){
				$.get(_this.baseUrl+"clientes/eliminarcredito",{id:id},function(deleted){
					if(deleted){
						toastr.options = {
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.success('El cliente <b>'+nombre+'</b> se ha eliminado.');
						$("#creditos-detalles-ajax-wrapper").html('');
						$("#creditos-detalles-info-wrapper").show();
						 _this.cargar(true,0);
					}
				},'text');
			}); 
		}
	}
	this.loader=function($wrapper,action){
		if(action=='start'){
			var load=$(document.createElement('div')).attr('class','sk-spinner sk-spinner-fading-circle');
			for(var i=1; i<=12; i++){
				$(document.createElement('div')).attr('class','sk-circle'+i+' sk-circle').appendTo(load);
			}
			load.appendTo($wrapper);
		}else if('stop'){
			$wrapper.find('.sk-spinner').remove();
		}
	}
}
var creditos = new Creditos();