var Reportes_entradas=function(){
	this.baseUrl=null;
	this.windowId=null;
	this.Transtools=null;
	this.initializeEnviroment=function(url,winId){
		this.baseUrl=url;
		this.windowId=winId;
		
		this.Transtools=new Transaccionestools(this.baseUrl);
		this.Transtools.setProductFrame($("#"+this.windowId+" #reportes-historial-compras-producto-info"));
		
		this.initializeGUIComponets();
		this.initializeListeners();
	}
	/*----------- INTERFAZ --------*/
	this.initializeGUIComponets=function(){
		/*Checkboxes*/
		$('.i-checks').iCheck({
			checkboxClass: 'icheckbox_square-green',
			radioClass: 'iradio_square-green',
		});
		/*---------------------------- Reporte de devoluciones ----------------------------*/
		var inicio_reporte_devoluciones=$("#"+this.windowId+" #reportes-devoluciones-desde").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			autoclose:true
		}).on('changeDate',function(ev){
				var newDate=new Date(ev.date);
				if(!isNaN(newDate)){
					newDate.setDate(newDate.getDate());
					fin_reporte_devoluciones.datepicker("update", newDate);
					$('#reportes-devoluciones-hasta')[0].focus();
				}
		});
		var fin_reporte_devoluciones=$("#"+this.windowId+" #reportes-devoluciones-hasta").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			beforeShowDay:function(date){
				if (!inicio_reporte_devoluciones.datepicker("getDate").valueOf()) {
					return date.valueOf()>=new Date().valueOf();
				} else {
					return date.valueOf()>inicio_reporte_devoluciones.datepicker("getDate").valueOf()-1;
				}
			},
			autoclose:true
		}).on('changeDate',function(ev){});
		/*------------------------------ Reporte de compras ------------------------------*/
		var inicio_reporte_compras=$("#"+this.windowId+" #reportes-compras-desde").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			autoclose:true
		}).on('changeDate',function(ev){
				var newDate=new Date(ev.date);
				if(!isNaN(newDate)){
					newDate.setDate(newDate.getDate());
					fin_reporte_compras.datepicker("update", newDate);
					$('#reportes-compras-hasta')[0].focus();
				}
		});
		var fin_reporte_compras=$("#"+this.windowId+" #reportes-compras-hasta").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			beforeShowDay:function(date){
				if (!inicio_reporte_compras.datepicker("getDate").valueOf()) {
					return date.valueOf()>=new Date().valueOf();
				} else {
					return date.valueOf()>inicio_reporte_compras.datepicker("getDate").valueOf()-1;
				}
			},
			autoclose:true
		}).on('changeDate',function(ev){});
		/*Chosen*/
		$("#"+this.windowId+" #reportes-compras-proveedor").chosen({
			no_results_text: "No se encontro ningun proveedor",
			allow_single_deselect: true
		});
		/*------------------------------ Reporte de historicos -----------------------------*/
		var inicio_reporte_historial_compras=$("#"+this.windowId+" #reportes-historial-compras-desde").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			autoclose:true
		}).on('changeDate',function(ev){
				var newDate=new Date(ev.date);
				if(!isNaN(newDate)){
					newDate.setDate(newDate.getDate());
					fin_reporte_historial_compras.datepicker("update", newDate);
					$('#reportes-historial-compras-hasta')[0].focus();
				}
		});
		var fin_reporte_historial_compras=$("#"+this.windowId+" #reportes-historial-compras-hasta").datepicker({
			language:'es',
			format:'yyyy-mm-dd',
			beforeShowDay:function(date){
				if (!inicio_reporte_historial_compras.datepicker("getDate").valueOf()) {
					return date.valueOf()>=new Date().valueOf();
				} else {
					return date.valueOf()>inicio_reporte_historial_compras.datepicker("getDate").valueOf()-1;
				}
			},
			autoclose:true
		}).on('changeDate',function(ev){});
		/*Chosen*/
		$("#"+this.windowId+" #reportes-historial-compras-proveedor").chosen({
			no_results_text: "No se encontro ningun proveedor",
			allow_single_deselect: true
		});
	}
	/*--------- EVENTOS ---------*/
	this.initializeListeners=function(){
		var _this=this;
		/*	BOTON  buscar productos (CLICK)*/
		$("#"+this.windowId+" #reportes-historial-compras-producto-sku-srch-btn").click(function(e){
			e.preventDefault();
			Custombox.open({
				target:_this.baseUrl+"productos/buscarproductos?field=reportes-historial-compras-producto-sku&enter=true",
				effect: 'fadein',
				overlaySpeed:100
			});
		});
		/*TEXTBOX cargar info producto (ENTER)*/
		$("#"+this.windowId+" #reportes-historial-compras-producto-sku").keypress(function(e){
			if(e.which == 13 && $.trim($(this).val())!=""){
				e.preventDefault();
				_this.Transtools.getProductInfoBySKU('descripcion',$(this).val(),$("#"+_this.windowId+" #reportes-historial-compras-proveedor"));
			}
		});
		/*BOTON Generar reporte de devoluciones  (CLICK)*/
		$("#"+this.windowId+" #reportes-devoluciones-generar-btn").click(function(e){
			e.preventDefault();
			var $frm=$("#"+_this.windowId+" #reporte-devoluciones-form");
			if(_this.validar($frm)){
				window.open(_this.baseUrl+"reportes/reporte_devoluciones?prods="+$("#"+_this.windowId+" #reportes-devoluciones-producto").is(":checked")+"&w="+_this.b64EncodeUnicode(JSON.stringify(_this.getWheres($frm))));
			}
		});
		/*BOTON Generar reporte de compras  (CLICK)*/
		$("#"+this.windowId+" #reportes-compras-generar-btn").click(function(e){
			e.preventDefault();
			var $frm=$("#"+_this.windowId+" #reporte-compras-form");
			if(_this.validar($frm)){
				window.open(_this.baseUrl+"reportes/reporte_compras?prods="+$("#"+_this.windowId+" #reportes-compras-producto").is(":checked")+"&w="+_this.b64EncodeUnicode(JSON.stringify(_this.getWheres($frm))));
			}
		});
		/*BOTON Generar reporte de historicos  (CLICK)*/
		$("#"+this.windowId+" #reportes-historial-compras-generar-btn").click(function(e){
			e.preventDefault();
			var $frm=$("#"+_this.windowId+" #reporte-historiacompra-form");
			if(_this.validar($frm)){
				window.open(_this.baseUrl+"reportes/reporte_historico_compras?w="+_this.b64EncodeUnicode(JSON.stringify(_this.getWheres($frm))));
			}
		});
	}
	/*------- FUNCIONES -------*/
	/*Validar datos*/
	this.validar=function($frm){
		var _this=this;
		var valid=true;
		/*Validar inputs*/
		$.each($frm.find($("input, select")),function(i,el){
			$el=$(el);
			if($el.attr("data-required")==="required"){
				switch($el.prop("tagName")){
					case "INPUT":
						switch($el.attr("type")){
							case "text": case "number": case "hidden":/*textbox,number,hidden*/
								if($el.val()===""){
									valid=false;
									_this.showMsg("error","Ingrese un valor v&aacute;lido para el campo: "+$el.attr("data-fieldName"));
									$el.focus();
								}
							break;
						}
					break;
					case "SELECT":/*Select*/
						if($el.val()==null || $el.val()===""){
							valid=false;
							_this.showMsg("error","Ingrese un valor v&aacute;lido para el campo: "+$el.attr("data-fieldName"));
							$el.focus();
						}
					break;
				}
			}
			return valid;		
		});
		return valid;
	}
	this.getWheres=function($frm){
		var wheres={};
		$.each($frm.find(".report-field"),function(i,el){
			$el=$(el);
			if($el.prop("tagName")=="INPUT"){
				switch($el.attr("type")){
					case "text": case "number": case "hidden":/*textbox,number,hidden*/
						if($el.val()!="")
							wheres[$el.attr("data-fieldDBName")]=$el.val();
					break;
					case "checkbox":
						wheres[$el.attr("data-fieldDBName")]=$el.is(":checked");
					break;
				}
			}else if($el.prop("tagName")=="SELECT"){/*Select*/
				if($el.val()!="")
					wheres[$el.attr("data-fieldDBName")]=$el.val();
			}
		});
		return wheres;
	}
	this.b64EncodeUnicode=function(str){
		return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
			return String.fromCharCode('0x' + p1);
		}));
	}
	/*Mostrar mensajes*/
	this.showMsg=function(tipo, mensaje){
		toastr.options = {
			"closeButton": true,
			"progressBar": true,
			"positionClass": "toast-top-right"
		}
		toastr[tipo](mensaje);
	}
}