var Proveedores=function(){
	this.baseUrl=null;
	this.scroll=true;
	this.test=function(){
		console.log('La clase Proveedores ha sido instanciado correctamente');
	}
	this.setUrl=function(url){
		this.baseUrl=url;
	}
	this.agregarContacto=function(){
		var validator=$("#nuevo-proveedor-form").validate({
			 rules: {
				nuevo_contacto_nombre:{required:true},
				nuevo_contacto_tel:{required:true,number:true}
			 },
			 messages: {
				nuevo_contacto_nombre: "Ingrese un nombre",
				nuevo_contacto_tel: "Ingrese un numero"
			}
		});
		if(validator.element("#n-p-nuevo-contacto-nombre") && validator.element("#n-p-nuevo-contacto-tel")){
			var contactohtml="<div class='col-xs-4 p-h-xs ncontacto-item-wrapper'>";
			contactohtml+="<div class='contact-box' style='padding:10px 20px;'>";
			contactohtml+="<div class='n-p-nuevo-contacto-tools'><button type='button' class='btn btn-xs btn-link btn-remove-contacto'><i class='fa fa-times'></i></button></div>";
			contactohtml+="<h4 class='n-p-contacto-item-nombre'>"+$('#n-p-nuevo-contacto-nombre').val()+"</h4>";						
			contactohtml+="<p>";	
			contactohtml+="<i class='fa fa-phone'></i> <span class='n-p-contacto-item-tel'>"+$('#n-p-nuevo-contacto-tel').val()+"</span><br>";	
			if($('#n-p-nuevo-contacto-correo').val()!="")
			contactohtml+="<i class='fa fa-envelope''></i> <span class='n-p-contacto-item-correo'>"+$('#n-p-nuevo-contacto-correo').val()+"</span><br>";
			if($('#n-p-nuevo-contacto-dir').val()!="")
			contactohtml+="<i class='fa fa-map-marker'></i> <span class='n-p-contacto-item-dir'>"+$('#n-p-nuevo-contacto-dir').val()+"</span>";	
			contactohtml+="</p></div></div>";	
			$("#n-p-contactos-wrapper").append(contactohtml);
			$('#n-p-nuevo-contacto-nombre').val('');
			$('#n-p-nuevo-contacto-tel').val('');
			$('#n-p-nuevo-contacto-dir').val('');
			$('#n-p-nuevo-contacto-correo').val('');
			$('#n-p-nuevo-contacto-nombre').focus();
		}
	}
	this.quitarContacto=function($item){
		$item.remove();
	}
	this.serializeContactos=function($form){
		var items = $('#n-p-contactos-wrapper').find('.ncontacto-item-wrapper');
		if(items.size()<=0 && $('#n-p-contactos-field').attr('data-valided')!=='true'){
			swal({
				html:true,
				title: "No se han agregado contactos.",
				text: "No se han agregados contactos para este proveedor. &iquest;Desea continuar guardandolo?",
				type: "warning",
				showCancelButton: true,
				confirmButtonColor: "#DD6B55",
				cancelButtonText: "Agregar contactos",
				confirmButtonText: "Si, guardar"
			},function(isConfirm){
				if(isConfirm){
					$('#n-p-contactos-field').attr('data-valided','true');
					$form.submit();
				}else{
					$('#n-p-tabsys-navigation li.n-p-contactos-tab').find('a').trigger('click');
				}
			});
			return false;
		}else{
			var contactos=[];
			$.each(items,function(index,item){
				contactos.push({nombre_contacto:$(item).find('.n-p-contacto-item-nombre').text(),tel1_contacto:$(item).find('.n-p-contacto-item-tel').text(),direccion_contacto:$(item).find('.n-p-contacto-item-dir').text(),correo_contacto:$(item).find('.n-p-contacto-item-correo').text()});
			});
			$('#n-p-contactos-field').val(JSON.stringify(contactos)); 
			return true;
		}
	}
	this.guardar=function(e,action){
		e.preventDefault();
		var $form=$(e.target);
		$form.find(":submit").prop('disabled', true);
		var _this=this;
		var proveedorID=null;
		if(this.serializeContactos($form)){
			$form.ajaxSubmit({
				success:function(response){
					if(response=="1"){
						toastr.options={
						  "closeButton": true,
						  "progressBar": true,
						  "positionClass": "toast-top-right"
						}
						toastr.success('El cliente se ha registrado en la base de datos del sistema');
						if(action=='update'){
							_this.detalles($("#nuevo-proveedor-id").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{
			$form.find(":submit").prop('disabled', false);
		}
	}
	this.cargar=function(reset,offset){
		if(this.scroll){
			this.scroll=false;
			this.loader($('#proveedores-lista-table tbody tr.tr-loader td:first'),'start');
			var _this=this;
			if(reset){
				$("#proveedores-lista-table").find("tr:not(.tr-loader)").remove();
			}
			jQuery.ajaxSetup({async:false});
			$.get(this.baseUrl+"proveedores/cargar",{search:$('#proveedores-search-str').val(),offset:offset},function(provedores){
				if(provedores){
					$.each(provedores,function(i,proveedor){
						var logo="";
						if(proveedor.logo)
							logo=_this.baseUrl+proveedor.logo;
						var proveedorHtml="<tr id='proveedor-"+proveedor.id+"'><td class='client-avatar'><img alt='' src="+logo+"></td><td><h4>"+proveedor.nombre+"</h4><small>"+proveedor.razon+"</small></td><td class='contact-type'><i class='fa fa-user'></i></td><td>"+proveedor.id+"</td></tr>";
						$(proveedorHtml).insertBefore('.tr-loader');
					});
				}else{
					toastr.options = {
					  "closeButton": true,
					  "positionClass": "toast-bottom-right"
					}
					toastr.warning('&iexcl;No se han encontrado m&aacute;s proveedores en la base de datos del sistema!');
				}
			},"json");
			this.loader($('#proveedores-lista-table tbody tr.tr-loader td:first'),'stop');
			this.scroll=true;
		}
	}
	this.detalles=function(id){
		$("#proveedores-detalles-ajax-wrapper").html('');
		this.loader($('#proveedores-detalles-ajax-wrapper'),'start');
		$("#proveedores-detalles-info-wrapper").hide();
		$.get(this.baseUrl+"proveedores/detalles",{id:id},function(cliente){
			$("#proveedores-detalles-ajax-wrapper").html(cliente);
		},"html");
	}
	this.eliminar=function(id,nombre){
		var _this=this;
		swal({
		html:true,
		  title: "&iquest;Eliminar "+nombre+"?",
		  text: "Esta acci&oacute;n eliminar&aacute; definitivamente al cliente. &iquest;Esta seguro que desea continuar?",
		  type: "warning",
		  showCancelButton: true,
		  confirmButtonColor: "#DD6B55",
		  cancelButtonText: "Cancelar",
		  confirmButtonText: "Si, Eliminar"
		},
		function(){
			$.get(_this.baseUrl+"proveedores/eliminar",{id:id},function(deleted){ /*7266-3489*/
				if(deleted){
					toastr.options = {
					  "closeButton": true,
					  "progressBar": true,
					  "positionClass": "toast-top-right"
					}
					toastr.success('El proveedor <b>'+nombre+'</b> se ha eliminado.');
					$("#proveedores-detalles-ajax-wrapper").html('');
					$("#proveedores-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 proveedores = new Proveedores();