<?php $__env->startSection('CSS'); ?>
<?php echo HTML::style('bootstrap-select/css/bootstrap-select.min.css'); ?>

<?php echo HTML::style('bootstrap-daterangepicker/daterangepicker.css'); ?>

<?php echo HTML::style('DataTables/fixedHeader.dataTables.min.css'); ?>

<?php echo HTML::style('jquery-ezdz/jquery.ezdz.min.css'); ?>

<style type="text/css">
	.intl-tel-input, .iti {
		display: block !important;
	}
	.pointer {
		cursor:pointer;
	}
	.Separacion {
		display: inline-block;
		padding: 1px;
	}
	.image_picker_image {
		height: 260px !important;
		width: 200px !important;
	}
	.isloading-overlay {
		z-index: 9999 !important;
	}
	[name="txtNombreDominioCompra"] {
		border-radius: 0px;
	}
	.bootstrap-select > .btn {
		border-radius: 0px;
	}
	.caption {
		text-align: center;
	}
	.caption h3 {
		font-weight: bold;
	}
	.panel-title>a {
		color: inherit;
		font-size: 25px;
		font-weight: bold;
		display:block;
	}
	.basic-wizard ul.nav li a {
		color: white;
		background-color: #687174;
		cursor: default;
		opacity: unset;
	}
	.basic-wizard ul.nav li:not(.active) a:hover {
		background-color: #687174;
		opacity: unset !important;
	}
	.basic-wizard ul.nav li.active a {
		cursor: default;
		opacity: unset;
	}
	.confirmacion label{
		font-weight: normal;
	}
	.confirmacion {
		margin-bottom: 15px;
	}
	.btn-mostrar{
		padding: 10px 10px;
		border-left-style: none;
		border-top-left-radius: 0px;
		border-bottom-left-radius: 0px;
	}
	.col-head .modal-header{
		background-color: #363b3f !important;
	}
	.alert-center{
		margin: auto;
		width: 50%;
	}
	.input-sm {
		height: 30px !important;
		padding: 5px 10px !important;
		font-size: 12px !important;
		line-height: 1.5 !important;
		border-radius: 3px !important;
	}
	.mdAvatar .modal-dialog .modal-content .modal-header{ 
		background-color: #363B3F; 
	}
	input.campo-requerido.error {
		border: 1px solid red;
	}
	.mdAvatar .modal-dialog .modal-content .modal-header, .modalCrearVenta .modal-dialog .modal-content .modal-header {
		background-color: #363B3F;
	}
	.mdAvatar .modal-dialog .modal-content .bootstrap-dialog-title{
		display: block;
	}
	table.table.fixedHeader-floating {
		top: 35px !important;
		z-index: 99;
	}
	#tblSubsImportar.table > tbody > tr.success > td {
		background-color: #b4ef9d;
	}
	#tblSubsImportar.table > tbody > tr.success:hover > td {
		background-color: #9fec82;
	}
	#tblSubsImportar.table > tbody > tr.info > td {
		background-color: #b1dff6;
	}
	#tblSubsImportar.table > tbody > tr.info:hover > td {
		background-color: #95d6f6;
	}
	#tblSubsImportar.table > tbody > tr.warning > td {
		background-color: #f5e8a5;
	}
	#tblSubsImportar.table-hover > tbody > tr.warning:hover > td {
		background-color: #f5e490;
	}
	#tblSubsImportar.table > tbody > tr.danger > td {
		background-color: #f6b9b9;
	}
	#tblSubsImportar.table > tbody > tr.danger:hover > td {
		background-color: #f89494;
	}
	#tblSubsImportar.table-bordered {
		border: 1px solid #7a7a7a;
	}
	#tblSubsImportar.table-bordered > thead > tr > th {
		border: 1px solid #7a7a7a;
	}
	#tblSubsImportar.table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
		border: 1px solid #7a7a7a;
	}
	.desactivado{
		pointer-events: none;
		opacity: 0.5;
	}
	.mdAvatar .modal-dialog .modal-content .modal-footer {
		margin-top: 0;
	}
	#tblSubsImportar.table-bordered > thead > tr > th.row_n{
		width: 6% !important;
	}
	#tblSubsImportar.table-bordered > thead > tr > th.row_c{
		width: 40% !important;
	}
	#tblSubsImportar.table-bordered > thead > tr > th.row_e{
		width: 20% !important;
	}
	#tblSubsImportar.table-bordered > thead > tr > th.row_acciones{
		width: 8% !important;
	}
	.ezdz-dropzone i.fa-cloud-upload {
		font-size: 110px !important;
		display: block !important;
	}
	.ezdz-dropzone span.spFlITitulo{
		display: block !important;
		margin: 0 auto !important;
		font-size: 24px !important;
		background: transparent !important;
		color: #989898 !important;
		font-weight: bold !important;
	}
	.ezdz-dropzone span.spFlITexto {
		display: block !important;
		margin: 0 auto !important;
		font-size: 18px !important;
		background: transparent !important;
		color: #989898 !important;
		font-weight: bold !important;
	}
	.ezdz-dropzone.ezdz-reject span.spFlITexto,
	.ezdz-dropzone.ezdz-reject span.spFlITitulo {
		color: #8b0000 !important;
	}
	.ezdz-dropzone img {
		max-width: 300px;
		max-height: 215px;
	}
	.ezdz-dropzone div{
		line-height: 0px;
	}
	.ezdz-accept {
		display: flex;
	}
	.ezdz-accept > div {
		margin: auto;
	}
	.ezdz-accept > div > span{
		padding: 10px;
	}
	.ezdz-dropzone {
		width: 86% !important;
		height: 165px !important;
		border-style: solid !important;
		border-width: 5px !important;
		cursor: pointer;
	}
	.centrar-tabla{
		display: flex;
		justify-content: center;
		align-items: center;
	}
	.filtro-tabla{
		padding-left: 76px;
	}
	.row-filtro-tabla{
		margin: auto;
		width: 94%;
	}
	@media  only screen and (max-width: 1024px) {
		div.row.row-filtro-tabla > div{
			width: 50% !important;
			padding-left: 61px;
		}
	}
	@media  only screen and (min-width: 1025px) and (max-width: 1152px) {
		div.row.row-filtro-tabla > div.col-sm-8{
			width: 60% !important;
		}
		div.row.row-filtro-tabla > div.col-sm-4{
			width: 39.333%!important;
			padding-left: 35px;
			padding-right: 0px;
		}
		#slEstadoSub ~ div {
			width: 173px !important;
		}
	}
	@media  only screen and (min-width: 800px) and (max-width: 1440px) {
		.alert-center {
			margin: auto !important;
			width: 100% !important;
			font-size: 13px;
		}
		.ezdz-dropzone {
			width: 53% !important;
			height: 120px !important;
			border-width: 3px !important;
		}
		.ezdz-dropzone i.fa-cloud-upload {
			font-size: 72px !important;
		}
		.ezdz-dropzone span.spFlITitulo {
			font-size: 18px !important;
		}
		#progressWizard > .nav > li > a{
			font-size: 11px !important;
		}
		#frmPaso2 > .row > div > .alert-center > .form-group{
			display: flex;
			justify-content: center;
			align-items: center;
		}
		#frmPaso3 > .row > div > div{
			width: 100% !important;
			font-size: 13px;
		}
		#frmPaso4 > .row > div > .sl_seguimiento{
			font-size: 11px;
		}
		#frmPaso4 > .row > div > .ck_seguimiento{
			font-size: 11px;
			margin-bottom: 20px !important;
		}
		#frmPaso4 > .row > div > .ck_seguimiento > div > .radio-inline{
			padding-left: 0px;
			font-size: 12px;
		}
		#slFiltroPSSub ~ div {
			width: 191px !important;
		}
		.filtro-tabla {
			padding-left: 64px;
		}
	}
	@media  only screen and (min-width: 1367px) and (max-width: 1440px) {
		#slFiltroESub ~ div {
			width: 196px !important;
		}
	}
	@media  only screen and (min-width: 1153px) and (max-width: 1280px) {
		div.row.row-filtro-tabla > div.col-sm-8{
			width: 60% !important;
		}
		div.row.row-filtro-tabla > div.col-sm-4{
			width: 39.333%!important;
			padding-left: 81px;
			padding-right: 0px;
		}
		#slEstadoSub ~ div {
			width: 195px !important;
		}
		#slFiltroPSSub ~ div {
			width: 233px !important;
		}
		#slFiltroESub ~ div {
			width: 267px !important;
		}
	}
	@media  only screen and (min-width: 1281px) and (max-width: 1366px) {
		div.row.row-filtro-tabla > div.col-sm-8{
			width: 63% !important;
		}
		div.row.row-filtro-tabla > div.col-sm-4{
			width: 36.333%!important;
			padding-left: 73px;
		}
		#slEstadoSub ~ div {
			width: 121px !important;
		}
		#slFiltroPSSub ~ div {
			width: 176px !important;
		}
		#slFiltroESub ~ div {
			width: 170px !important;
		}
	}
	@media  only screen and (min-width: 1441px) and (max-width: 1600px) {
		div.row.row-filtro-tabla > div.col-sm-8{
			width: 62.667% !important;
		}
		div.row.row-filtro-tabla > div.col-sm-4{
			width: 37.333%!important;
			padding-left: 40px;
		}
		#slEstadoSub ~ div {
			width: 205px !important;
		}
		#slFiltroPSSub ~ div {
			width: 250px !important;
		}
		#slFiltroESub ~ div {
			width: 261px !important;
		}
	}
	@media  only screen and (min-width: 1601px) and (max-width: 1680px) {
		div.row.row-filtro-tabla > div.col-sm-8{
			width: 62.667% !important;
		}
		div.row.row-filtro-tabla > div.col-sm-4{
			width: 37.333%!important;
			padding-left: 61px;
		}
		#slEstadoSub ~ div {
			width: 192px !important;
		}
		#slFiltroPSSub ~ div {
			width: 240px !important;
		}
		#slFiltroESub ~ div {
			width: 274px !important;
		}
	}
</style>
<?php $__env->stopSection(); ?>

<?php $__env->startSection('Contenido'); ?>
<?php
	$idC =  Cliente::select('id')->where('users_id', '=', Auth::user()->id)->first()->id;
	$Cliente = Cliente::find( $idC );
	$select = 'listas_emails.id, listas_emails.nombre, listas_emails.tipo,
	(
		SELECT
			COUNT(cp.id)
		FROM
			campos_listas_emails AS cle
		INNER JOIN
			campos_personalizados AS cp
			ON cp.id = cle.campos_personalizados_id
		WHERE
			cp.id IN (1, 4, 5)
			AND cle.requerido = 1
			AND cle.listas_emails_id = listas_emails.id
	) AS matchGP, listas_emails.gestion_clientes as tipo';
	$ListasEmails = ListaEmail::select(DB::raw($select))
	->where('clientes_id', '=', $ListaEmail->clientes_id)
	->where('id', '<>', $ListaEmail->id)
	->get();
	$ListaCamposMatch =  ListaEmail::select(DB::raw($select))->where('clientes_id', '=', $ListaEmail->clientes_id)->where('id', '=', $ListaEmail->id)->get();
	$Productos = DB::table('productos_servicios AS ps')
	->select('ps.id AS idPS', 'ps.tipo', 'ps.nombre', 'ps.sin_variaciones', 'ps.precio AS precioPS', 'ps.cantidad_ilimitada AS ilimitado', 'vps.id AS idVPS', 'vps.precio AS precioVPS', 'vps.inventario', 'vps.margen_ganancia AS margenGanancia', 'vps.tipo_margen_ganancia AS tipoMargenGanancia')
	->join('variaciones_productos_servicios AS vps', 'vps.productos_servicios_id', '=', 'ps.id')
	->where('ps.clientes_id', '=', $Cliente->id)
	->where('ps.activo', '=', 1)
	->orderBy('ps.id', 'ASC')
	->groupBy('ps.id')
	->get();
	DB::statement('SET SESSION group_concat_max_len = 10000000000000000000;');
	$query = 'SELECT ps.id AS idPS, ps.nombre, ps.precio AS precioPS, ps.cantidad_ilimitada AS ilimitado, vps.id AS idVPS, ps.tipo, ps.sin_variaciones,
		(
			IF(
				(SELECT COUNT(vps.id) FROM variaciones_productos_servicios AS vps WHERE vps.productos_servicios_id = ps.id) > 0,
				(SELECT
					CONCAT(\'[\',
						GROUP_CONCAT(
							\'{\',
								\'"idPS":"\',ps.id,\'",\'
								\'"idVPS":"\',vps.id,\'",\'
								\'"nombre":"\',ps.nombre,\'",\',
								\'"precio":"\',vps.precio,\'",\',
								\'"inventario":"\',vps.inventario,\'",\'
								\'"ilimitado":"\',vps.cantidad_ilimitada,\'",\'
								\'"margenGanancia": "\',IF(vps.margen_ganancia > 0, vps.margen_ganancia, 0.00),\'",\'
								\'"tipoMargenGanancia": "\',IF(vps.tipo_margen_ganancia <> \'\', vps.tipo_margen_ganancia, \'\'),\'",\'
								\'"atributos": \',
									IF(  ps.sin_variaciones = 0,
										(
											SELECT
												CONCAT(\'[\',
													GROUP_CONCAT(\'"\',aps.nombre,\' : \',avps.valor,\'"\')
												,\']\')
											FROM
												atributos_x_variaciones_productos AS avps
											INNER JOIN
												atributos_productos_servicios AS aps
												ON aps.id = avps.atributos_productos_servicios_id
											WHERE
												avps.variaciones_productos_servicios_id = vps.id
										),
										\'[]\'
									),
								\'\'
							,\'}
						\')
					,\']\')
				FROM
					variaciones_productos_servicios AS vps
				WHERE
					vps.productos_servicios_id = ps.id
				),
				\'{"0":""}\'
			)
		) AS variaciones
	FROM
		productos_servicios  as ps
	INNER JOIN
		variaciones_productos_servicios as vps
		ON(vps.productos_servicios_id = ps.id)
	WHERE
		ps.activo = 1
	AND
		(ps.tipo IN(\'PD\', \'S\') OR (ps.tipo = \'P\'))
	AND
		ps.clientes_id = '.$Cliente->id.'
	GROUP BY (ps.id)';
	$ProductosV = DB::select(DB::raw($query));
	$ProductosJSON = json_encode($Productos);
	$ProductosJSON2 = json_encode($ProductosV);
	$Referencias = Referencia::select('referencias.id', 'referencias.nombre')
	->leftJoin('clientes AS c', 'c.id', '=', 'referencias.clientes_id')
	->where('referencias.clientes_id', '=', $idC)
	->get();
	$select = "empleados.id, empleados.nombre_completo,
	(SELECT COUNT(sc.id) FROM prospectos AS sc WHERE sc.asignado_a = empleados.id ) AS total,
	(SELECT COUNT(sc.id) FROM prospectos AS sc INNER JOIN seguimientos_x_prospectos AS exc ON exc.prospectos_id = sc.id WHERE sc.asignado_a = empleados.id AND exc.estado = 'V') AS vendidos,
	(SELECT COUNT(sc.id) FROM prospectos AS sc INNER JOIN seguimientos_x_prospectos AS exc ON exc.prospectos_id = sc.id WHERE sc.asignado_a = empleados.id AND exc.estado = 'R') AS rechazados,
	(
		(SELECT COUNT(sc.id) FROM prospectos AS sc WHERE sc.asignado_a = empleados.id )
		-
		(
			(SELECT COUNT(sc.id) FROM prospectos AS sc INNER JOIN seguimientos_x_prospectos AS exc ON exc.prospectos_id = sc.id WHERE sc.asignado_a = empleados.id AND exc.estado = 'V')
			+
			(SELECT COUNT(sc.id) FROM prospectos AS sc INNER JOIN seguimientos_x_prospectos AS exc ON exc.prospectos_id = sc.id WHERE sc.asignado_a = empleados.id AND exc.estado = 'R')
		)
	) pendientes";
	$Empleados = DB::table('empleados')
	->select(DB::raw($select))
	->join('users AS u', 'u.id', '=', 'empleados.users_id')
	->where('empleados.clientes_id', '=', $idC)
	->where('u.estado', '=', 1)
	->get();
	$Productos = ProductoServicio::select('id', 'nombre')->where('clientes_id', '=', $Cliente->id)->get();
	if($DisponibleCargaExcel < 0){
		$DisponibleCargaExcel = 0;
	}
	$servidorClienteAWS = ConfiguracionAmazon::where('clientes_id', '=', $ListaEmail->clientes_id)->where('estado', '=', 1)->count();

?>
<div class="row">
	<div class="col-md-12">
		<h2><i class="fa fa-envelope-o"></i> E-Mail Marketing </h2>
	</div>
</div>
<div class="row">
	<div class="col-md-12">
		<div class="block-web">
			<div class="header"> <h3 class="content-header"> Añadir suscriptor(es) a lista <strong><?php echo $ListaEmail->nombre; ?></strong> </h3> </div>
			<div class="porlets-content">
				<div id="progressWizard" class="basic-wizard dvImportarSubsWizard">
					<ul class="nav nav-pills nav-justified">
						<li><a href="#ptab1" data-toggle="tab"><span>Paso 1:</span> Descargar Plantilla</a></li>
						<li><a href="#ptab2" data-toggle="tab"><span>Paso 2:</span> Subir Plantilla</a></li>
						<li><a href="#ptab3" data-toggle="tab"><span>Paso 3:</span> Verificar correos de plantilla</a></li>
						<li><a href="#ptab4" data-toggle="tab"><span>Paso 4:</span> Finalizar</a></li>
					</ul>
					<div class="tab-content" style="overflow: auto;">
						<div class="progress progress-striped" style="height: 18px !important;">
							<div id="progress-bar" class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
						</div>
						<div class="tab-pane" id="ptab1">
							<form id="frmPaso1">
								<div class="row">
									<div class="col-xs-12 col-sm-12 col-md-12">
										<div class="alert-center">
											<?php if( $DisponibleCargaExcel ): ?>
											<div class="alert alert-info text-center" role="alert"> 
												<h4 class="text-center"><b>Indicaciones Paso 1:</b></h4>
												Por favor, descarga la plantilla para poder cargar los subscriptores en esta lista.
												<br>
												<br>
												Para descargar la plantilla haz clic en el boton "Descargar Plantilla".
												<br>
												<br>
												Luego de descargar la plantilla podrás presionar el boton "Siguiente".
											</div>
											<?php endif; ?>
											<div class="alert alert-warning" role="alert"> 
												<h4 class="text-center"><b>Importante:</b></h4>
												<p class="text-center">
													<?php if( $DisponibleCargaExcel ): ?>
														Recuerda que puedes importar hasta <strong> <?php echo $validacionesClienteBD; ?> </strong> direcciones de correo electrónico por medio de archivo de Excel. <br><br>
														Has importado un total de <strong> <?php echo $CantidadRegistros; ?> </strong> direcciones de correo electrónico. <br><br>
														Todavía puedes importar <b><?php echo $DisponibleCargaExcel; ?></b> direcciones de correo electrónico.&nbsp;&nbsp;
													<?php else: ?>
														<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
														Has alcanzado el límite de importación de <strong> <?php echo $validacionesClienteBD; ?></strong> registros, en total has importado <strong><?php echo $CantidadRegistros; ?></strong> direcciones de correo electrónico.
													<?php endif; ?>
												</p>
												<hr>
												<p class="text-center">
													Si necesitas incrementar el número de importaciones, por favor escríbenos por el <a href="javascript:void(0)" onclick="mostrarChat()"><strong>chat de soporte</strong></a> para poder ayudarte con eso.
												</p>
												<!--
												@ if( $servidorClienteAWS == 0 )
												<p class="text-center">
													Recuerda que puedes cargar 5000 correos por medio de archivo excel. <br><br>
													Haz cargado un total de: <?php echo $CantidadRegistros; ?> correos. <br><br>
													Tienes disponible: <b><?php echo $DisponibleCargaExcel; ?></b>.
												</p>
												@ else
												<p class="text-center">
													Recuerda que tienes tu propio servidor AWS, por lo que puedes cargar la cantidad correos por medio de archivo excel. que desees.
												</p>
												@ endif
												-->
											</div>
											<?php if( $DisponibleCargaExcel ): ?>
											<div class="bottom text-center">
												<a href="<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresAgregarPlantilla', array($ListaEmail->id)); ?>" class="btn btn-success"> Descargar plantilla </a>
											</div>
											<?php endif; ?>
										</div>
									</div>
								</div>
							</form>
						</div>
						<div class="tab-pane" id="ptab2">
							<?php echo Form::open(array('route' => array('SysWebEmailMarketingListasSubscriptoresAgregarSubscriptoresImportarV2', $ListaEmail->id), 'method' => 'post', 'class' => 'form-horizontal row-border', 'id' => 'frmPaso2', 'files' => true)); ?>

								<div class="row">
									<div class="col-xs-12 col-sm-12 col-md-12">
										<div class="alert-center">
											<div class="alert alert-info text-center" role="alert"> 
												<h4 class="text-center"><b>Indicaciones Paso 2:</b></h4>
												Por favor llena la plantilla que descargaste en el paso 1 con la información de los suscriptores que deseas agregar por medio de carga masiva a esta lista.
												<br><br>
												<b>IMPORTANTE:</b> Recuerda que si utilizas copiar y pegar (copy-paste) para agregar los correos a la plantilla que descargaste, debes de pegarlo como "Texto sin formato".
												<br>
												<br>
												Una vez que tengas el archivo de la plantilla listo con la información y guardado, por favor haz clic en el botón en la parte inferior que dice "Escoger Archivo" esto abrirá el explorador de archivos de tu computadora para que puedas seleccionar el archivo desde ahí.
											</div>
											<div class="form-group">
												<label class="col-sm-3 control-label"> Archivo de Excel </label>
												<div class="col-sm-6">
													<!-- <?php echo Form::file('archivocsv', array('class' => '', 'id' => 'archivocsv')); ?> -->
													<input accept="application/vnd.ms-excel" id="archivocsv" name="archivocsv" type="file">
													<span class="text-warning" style="display: none;" id="imgarchivocsv" class="loading">
														<div class="row">
															<div class="col-md-1">
																<img src="<?php echo asset('Cargando/hourglass.gif'); ?>" style="width: 32px; height: 32px;">
															</div>
															<div class="col-md-11">
																Espere mientras se carga el archivo y se verifican los correos.
																<i class="fa fa-smile-o"></i> 
															</div>
														</div>
													</span>
													<span class="text-danger" id="errarchivocsv"></span>
												</div>
											</div>
										</div>
									</div>
								</div>
							<?php echo Form::close(); ?>

						</div>
						<div class="tab-pane" id="ptab3">
							<form id="frmPaso3">
								<div class="row">
									<div class="col-xs-12 col-sm-12 col-md-12">
										<div style="margin:auto; width:75%;">
											<div class="alert alert-info" role="alert"> 
												<h4 class="text-center"><b>Indicaciones Paso 3:</b></h4>
												<div class="row" style="padding-left: 50px;padding-right: 50px;">
													<p style="text-align: justify;texto-justify: inter-palabra;">Los subscriptores que estén en <b>COLOR ROJO</b> tienen algún error de en su escritura o no cuentan con 1 o más de los campos requeridos de esta lista por lo que tendrás que verificar sus datos desde la opción "Ver más..." para corregirlos y que puedan ser agregados a la lista.
													Los subscriptores que estén en <b>COLOR AZUL</b> ya existan en esta lista, por lo que si están activos (no desuscritos) los datos del suscriptor se actualizarán con la nueva información que has colocado en el archivo que estas cargando.
													Si por alguna razón no deseas cargar un subscriptor puedes eliminarlo desde el botón “Eliminar” en la columna de Acciones.
													</p>
													<?php if($ListaEmail->gestion_clientes == 'P' || $ListaEmail->gestion_clientes == 'C' ): ?>
													<p style="text-align: justify;texto-justify: inter-palabra;">Porque esta lista es de tipo GP antes de poder cargar este archivo deberás asignarle productos y/o servicios a todos los subscriptores. Puedes hacer esto en la sección “Información adicional de subscriptores” ó también puedes asignar productos y/o servicios de manera individual a cada subscriptor desde la columna de Producto / Servicio.<br>
													Recuerda que debes hacer clic el botón "Aplicar" en la sección “Configuraciones generales” una vez hayas terminado para asignar las etiquetas y los productos y/o servicios a todos los subscriptores
													</p>
													<?php endif; ?>
													<br>
													<p class="text-center"> <b> Acciones Opcionales de Carga</b><br></p>
													<p style="text-align: justify;texto-justify: inter-palabra;">Si lo deseas podrás asignarles etiquetas a todos los subscriptores desde la sección “Información adicional de subscriptores” en esta página ó también puedes asignar etiquetas de manera individual a cada subscriptor desde la columna de Etiquetas.
													Recuerda que debes hacer clic el botón "Aplicar" en la sección “Configuraciones generales” una vez hayas terminado para asignar las etiquetas a todos los subscriptores.
													</p>
												</div>
											</div>
										</div>
										<div class="porlets-content" style="margin:auto; width:75%;">
											<fieldset>
												<legend>Información adicional de subscriptores</legend>
												<div class="form-group">
													<label class="col-md-6 col-sm-6 control-label"> Etiquetas </label>
													<div class="col-sm-9">
														<select class="form-control selectpicker tooltips slEtiquetas" multiple data-width="310px" data-selected-text-format="count > 1" data-live-search="true" data-toggle="tooltip" data-original-title="Seleccione una Etiqueta" id="slEtiquetasG" name="slEtiquetasG">
															<?php foreach($Etiquetas as $Etiqueta): ?>
																<option value="<?php echo $Etiqueta->id; ?>" ><?php echo $Etiqueta->nombre; ?></option>
															<?php endforeach; ?>
														</select>
														<span class="text-danger" id="errreferenciaGP_l"> </span>
													</div>
												</div>
												<?php if($ListaEmail->gestion_clientes == 'P' || $ListaEmail->gestion_clientes == 'C'): ?>
												<div id="dvPrecio" class="dvRegistroFP-L">
													<div class="form-group">
														<label class="col-md-6 control-label" style="padding-top: 15px;"> Producto/Servicio a asociar (*)  </label>
														<div class="col-sm-12">
															<table class="table table-bordered" id="tblProductosVenta">
																<thead>
																	<tr>
																		<th>Producto <span class="label label-success" style="cursor: pointer;" onclick="agregarProducto(this.id)" id="IPList"><i class="fa fa-plus"></i></span></th>
																		<th>Precio de lista (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th>
																		<th class="hide">Cantidad</th>
																		<th class="hide">Precio de unitario (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th>
																		<th>Total (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th>
																	</tr>
																</thead>
																<tbody>
																	<tr>
																		<th colspan="2" style="text-align: right;">
																			Total (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)
																		</th>
																		<td>
																			<input class="form-control nmTT" type="text" readonly value="0">
																		</td>
																	</tr>
																</tbody>
															</table>
															<input type="hidden" name="productos_l" id="productos_l">
															<input type="hidden" name="idsPSRS" value="">
															<span class="text-danger" id="errproductos"></span>
															<input type="hidden" name="psinputG" value="">
															<span class="text-danger" id="errpsinputG"></span>
														</div>
													</div>
													<div class="row">
														<div class="col-md-6 col-sm-6">
															<div class="form-group">
																<label class="col-md-6 control-label"> Referencia (*)</label>
																<div class="col-sm-12">
																	<select class="form-control selectpicker" data-live-search="true" id="slReferenciaGPG" name="slReferenciaGPG" title="Selecciona una referencia...">
																		<?php foreach( $Referencias as $Referencia ): ?>
																		<option value="<?php echo $Referencia->id; ?>" <?php if( $Referencia->nombre == "Cliente existente (Oportunidad)" ): ?> disabled <?php endif; ?> ><?php echo $Referencia->nombre; ?></option>
																		<?php endforeach; ?>
																	</select>
																	<span class="text-danger" id="errslReferenciaGPG"> </span>
																</div>
															</div>
														</div>
														<div class="col-md-6 col-sm-6">
															<div class="form-group">
																<label class="col-md-6 control-label"> Asignar a... (*)</label>
																<div class="col-sm-12" style="padding-bottom: 30px;">
																	<select class="form-control selectpicker" data-live-search="true" id="slUsuarioAsignarGPG" name="slUsuarioAsignarGPG" title="Seleccione el usuario a asignar...">
																		<?php foreach( $Empleados as $Empleado ): ?>
																		<option value="<?php echo $Empleado->id; ?>"> <?php echo $Empleado->nombre_completo; ?> - Pendientes: <?php echo $Empleado->pendientes; ?> </option>
																		<?php endforeach; ?>
																	</select>
																	<span class="text-danger" id="errslUsuarioAsignarGPG"> </span>
																</div>
															</div>
														</div>
													</div>
												</div>
												<?php endif; ?>
												<div class="form-group">
													<div class="col-sm-9" style="margin-top: 20px;margin-bottom: 10px;">
														<a type="button" class="btn btn-primary btn-md" onclick="aplicarEtiquetasPSSubscriptores()"> Aplicar </a>
													</div>
												</div>
											</fieldset>
											<fieldset><legend style="margin-top: 10px;"></legend></fieldset>
											<div>
												<div class="col-md-3 col-sm-3" style="padding-left: 0px;padding-right: 0px; width: 29%;">
													<div class="form-group">
														<label>Filtrar por estado: </label>
														<select name="slEstadoSub" id="slEstadoSub" class="form-control selectpicker" data-width="150">
															<option value="" selected >Todos</option>
															<option value="1"> Validos </option>
															<option value="0"> No validos </option>
														</select>
														<button type="submit" id="btnBuscarSub" class="btn btn-primary tooltips" data-toggle="tooltip" data-original-title="Buscar"><i class="fa fa-search"></i></button>
														<button id="btnLimpiar" type="button" class="btn btn-default tooltips" data-toggle="tooltip" data-original-title="Limpiar"><i class="fa fa-paint-brush"></i></button>
													</div>
												</div>
												<?php if($ListaEmail->gestion_clientes == 'P' || $ListaEmail->gestion_clientes == 'C' ): ?>
												<div class="col-md-4 col-sm-4" style="padding-left: 10px;padding-right: 0px; width: 35.333%;">
													<div class="form-group">
														<label>Filtrar por Producto: </label>
														<select name="slFiltroPSSub" id="slFiltroPSSub" class="form-control selectpicker" data-size="10" multiple data-width="200">
															<?php foreach( $Productos as $Producto ): ?>
																<option value="<?php echo $Producto->nombre; ?>"><?php echo $Producto->nombre; ?></option>
															<?php endforeach; ?>
														</select>
														<button type="submit" id="btnBuscarSubPS" class="btn btn-primary tooltips" data-toggle="tooltip" data-original-title="Buscar"><i class="fa fa-search"></i></button>
														<button id="btnLimpiarPS" type="button" class="btn btn-default tooltips" data-toggle="tooltip" data-original-title="Limpiar"><i class="fa fa-paint-brush"></i></button>
													</div>
												</div>
												<?php endif; ?>
												<div class="col-md-4 col-sm-4" style="padding-left: 20px;padding-right: 0px; width: 35.333%;">
													<div class="form-group">
														<label>Filtrar por etiqueta: </label>
														<select name="slFiltroESub" id="slFiltroESub" class="form-control selectpicker" data-size="10" multiple data-width="200">
															<?php foreach($Etiquetas as $Etiqueta): ?>
																<option value="<?php echo $Etiqueta->nombre; ?>" ><?php echo $Etiqueta->nombre; ?></option>
															<?php endforeach; ?>
														</select>
														<button type="submit" id="btnBuscarSubE" class="btn btn-primary tooltips" data-toggle="tooltip" data-original-title="Buscar"><i class="fa fa-search"></i></button>
														<button id="btnLimpiarE" type="button" class="btn btn-default tooltips" data-toggle="tooltip" data-original-title="Limpiar"><i class="fa fa-paint-brush"></i></button>
													</div>
												</div>
											</div>
											<div class="table-responsive">
												<table class="table table-striped-old table-bordered table-hover" id="tblSubsImportar" cellspacing="0" width="100%">
												</table>
											</div>
										</div>
									</div>
								</div>
							</form>
						</div>
						<div class="tab-pane" id="ptab4">
							<form id="frmPaso4">
								<div class="row">
									<div class="col-xs-12 col-sm-12 col-md-12">
										<div class="alert-center">
											<div class="alert alert-info" role="alert"> 
												<h4 class="text-center"><b>Indicaciones paso 4:</b></h4>
												<p class="text-center"><b>¡Ya casi terminamos!</b></p>
												<p class="p_secuencia text-center">
												Por favor selecciona con que correo de la secuencia de seguimiento de esta lista desees que se inicie el envió a los nuevos subscriptores de este archivo.<br><br>
												También desde aquí puedes configurar si deseas que el correo seleccionado se envíe de inmediato o según la programación que configuraste para el correo de la secuencia de seguimiento que elegiste.<br>
												</p><br>
												<p class="text-center">Toma en cuenta que el proceso de validación tiene un tiempo aproximado de 10 min por 100 correos. </p><br>
												<p class="text-center">Por último, presiona el botón "Finalizar" para que se inicie con el proceso de registro de los subscriptores en esta lista. Si tu archivo contiene menos de 300 correos la carga se realizará inmediatamente,
													de lo contrario se ejecutará en segundo plano y se te estará notificando a tu correo electrónico asociado cuando la carga finalice.
												</p>
											</div>
										</div>
										<div class="row sl_seguimiento" style="margin: auto;width: 50%;margin-top: 30px;">
											<label class="col-sm-3 control-label"> Secuencia de segimiento inicial </label>
											<div class="col-sm-9">
												<select class="form-control selectpicker" data-live-search="true" id="secuencias_seguimientos" name="secuencias_seguimientos" data-size="6">
												</select>
												<span class="text-danger" id="errsecuencias_seguimientos"> </span>
											</div>
										</div>
										<div class="row ck_seguimiento" style="margin: auto;width: 50%; margin-top: 20px;">
											<label class="col-sm-3 control-label"> Enviar secuencia </label>
											<div class="col-sm-9">
												<label class="radio-inline">
													<input type="radio" name="envio_secuencia_cm" id="rdEnvioSecuenciaInmediato" value="I">
													<span class="custom-radio"></span>
													Inmediatamente
												</label>
												<label class="radio-inline">
													<input type="radio" name="envio_secuencia_cm" id="rdEnvioSecuenciaConf" value="C">
													<span class="custom-radio"></span>
													Según programación
												</label>
												<span class="text-danger" id="errenvio_secuencia_cm" style="display: block;"> </span>
											</div>
										</div>
										<div class="alert-center" style="margin-top: 45px;">
											<div class="bottom text-center">
												<?php if( isset($_GET['VP']) ): ?>
												<input type="hidden" name="verificacionPagada" value = "<?php echo $_GET['VP']; ?>">
												<?php endif; ?>
												<?php if( isset($_GET['nNB']) ): ?>
												<input type="hidden" name="noValidarNB" value = "<?php echo $_GET['nNB']; ?>">
												<?php endif; ?>
												<?php if( isset($_GET['nNC']) ): ?>
												<input type="hidden" name="noConfirmar" value = "<?php echo $_GET['nNC']; ?>">
												<?php endif; ?>
												<a id="btnFinalizar" class="btn btn-success btn-lg btn-block" onclick="RegistroSubscriptoresImportacion()"> Finalizar </a>
											</div>
											<div style="margin-top: 23px;">
												<span class="text-warning" style="display: none;" id="procesarSubs" class="loading">
													<div class="row">
														<div class="col-md-1">
															<img src="<?php echo asset('Cargando/hourglass.gif'); ?>" style="width: 32px; height: 32px;">
														</div>
														<div class="col-md-11">
															Espere mientras se carga el archivo y se verifican los correos, este proceso puede tardarse entre 5 y 45 minutos dependiendo del número de suscriptores en la plantilla para mientras puedes ir por un café...<br><br><strong> NO CIERRES ESTA VENTANA </strong> si lo haces se interrumira el proceso
															<i class="fa fa-smile-o"></i> 
														</div>
													</div>
												</span>
												<span id='errSubidaArchivo' class='text-danger'></span>
											</div>
										</div>
									</div>
								</div>
							</form>
						</div>
					</div>
					<ul class="pager wizard">
						<li class="previous">
							<a href="javascript:void(0)">
								Anterior
							</a>
						</li>
						<li class="next">
						<?php if( $DisponibleCargaExcel ): ?>
							<a href="javascript:void(0)">
								Siguiente
							</a>
						<?php endif; ?>
						</li>
					</ul>
				</div>
			</div>
		</div>
	</div>
</div>
<?php $__env->stopSection(); ?>

<?php $__env->startSection('JS'); ?>
<?php echo HTML::script('bootstrap-select/js/bootstrap-select.min.js'); ?>

<?php echo HTML::script('bootstrap-select/js/i18n/defaults-es_CL.min.js'); ?>

<?php echo HTML::script('Alphanum/jquery.alphanum.min.js'); ?>

<?php echo HTML::script('bootstrap-daterangepicker/moment.min.js'); ?>

<?php echo HTML::script('bootstrap-daterangepicker/daterangepicker.js'); ?>

<?php echo HTML::script('WebPro/plugins/bootstrap-wizard/bootstrap-wizard.min.js'); ?>

<?php echo HTML::script('jQueryValidate/jquery.validate.js'); ?>

<?php echo HTML::script('jQueryValidate/additional-methods.min.js'); ?>

<?php echo HTML::script('jQueryValidate/jquery.validationEngine-es.js'); ?>

<?php echo HTML::script('jQueryValidate/messages_es.min.js'); ?>

<?php echo HTML::script('DataTables/jquery.dataTables.min.js'); ?>

<?php echo HTML::script('DataTables/dataTables.bootstrap.min.js'); ?>

<?php echo HTML::script('DataTables/dataTables.responsive.min.js'); ?>

<?php echo HTML::script('DataTables/dataTables.select.min.js'); ?>

<?php echo HTML::script('DataTables/dataTables.buttons.min.js'); ?>

<?php echo HTML::script('DataTables/dataTables.fixedHeader.min.js'); ?>

<?php echo HTML::script('jquery-ezdz/jquery.ezdz.min.js'); ?>

<?php
	$Productos = DB::table('productos_servicios AS ps')
	->select('ps.id AS idPS', 'ps.tipo', 'ps.nombre', 'ps.sin_variaciones', 'ps.precio AS precioPS', 'ps.cantidad_ilimitada AS ilimitado', 'vps.id AS idVPS', 'vps.precio AS precioVPS', 'vps.inventario', 'vps.margen_ganancia AS margenGanancia', 'vps.tipo_margen_ganancia AS tipoMargenGanancia')
	->join('variaciones_productos_servicios AS vps', 'vps.productos_servicios_id', '=', 'ps.id')
	->where('ps.clientes_id', '=', $Cliente->id)
	->where('ps.activo', '=', 1)
	/*->whereRaw("(ps.tipo IN('PD', 'S') OR (ps.tipo = 'P'))")*/
	->orderBy('ps.id', 'ASC')
	->groupBy('ps.id')
	->get();
	DB::statement('SET SESSION group_concat_max_len = 10000000000000000000;');
	$query = 'SELECT ps.id AS idPS, ps.nombre, ps.precio AS precioPS, ps.cantidad_ilimitada AS ilimitado, vps.id AS idVPS, ps.tipo, ps.sin_variaciones,
		(
			IF(	
				(SELECT COUNT(vps.id) FROM variaciones_productos_servicios AS vps WHERE vps.productos_servicios_id = ps.id) > 0,
				(SELECT
					CONCAT(\'[\',
						GROUP_CONCAT(
							\'{\',
								\'"idPS":"\',ps.id,\'",\'
								\'"idVPS":"\',vps.id,\'",\'
								\'"nombre":"\',ps.nombre,\'",\',
								\'"precio":"\',vps.precio,\'",\',
								\'"inventario":"\',vps.inventario,\'",\'
								\'"ilimitado":"\',vps.cantidad_ilimitada,\'",\'
								\'"margenGanancia": "\',IF(vps.margen_ganancia > 0, vps.margen_ganancia, 0.00),\'",\'
								\'"tipoMargenGanancia": "\',IF(vps.tipo_margen_ganancia <> \'\', vps.tipo_margen_ganancia, \'\'),\'",\'
								\'"atributos": \',
									IF(  ps.sin_variaciones = 0, 
										(
											SELECT
												CONCAT(\'[\',
													GROUP_CONCAT(\'"\',aps.nombre,\' : \',avps.valor,\'"\')
												,\']\')
											FROM
												atributos_x_variaciones_productos AS avps
											INNER JOIN
												atributos_productos_servicios AS aps
												ON aps.id = avps.atributos_productos_servicios_id
											WHERE
												avps.variaciones_productos_servicios_id = vps.id
										), 
										\'[]\' 
									),
								\'\'
							,\'}
						\')
					,\']\')
				FROM
					variaciones_productos_servicios AS vps
				WHERE
					vps.productos_servicios_id = ps.id
				),
				\'{"0":""}\'
			)
		) AS variaciones
	FROM
		productos_servicios  as ps 
	INNER JOIN 
		variaciones_productos_servicios as vps 
		ON(vps.productos_servicios_id = ps.id) 
	WHERE 
		ps.activo = 1
	AND 
		(ps.tipo IN(\'PD\', \'S\') OR (ps.tipo = \'P\'))
	AND 
		ps.clientes_id = '.$Cliente->id.'
	GROUP BY (ps.id)';
	$ProductosV = DB::select(DB::raw($query));
	$ProductosJSON = json_encode($Productos);
	$ProductosJSON2 = json_encode($ProductosV);
?>
<script type="text/javascript">
	var confirmacionSalida = false;
	window.onbeforeunload = Confirmacion;
	var productos = <?php echo $ProductosJSON; ?>;
	var productos2 = <?php echo $ProductosJSON2; ?>;
	function Confirmacion(){
		if (confirmacionSalida){
			return "Se está realizando un proceso, si sale de la ventana este se canselará... realmente desea salir?";
		}
	}
	function cargarSecuencias(info, select){
		var info = info;
		var select = select;
		$.post(
			"<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresVerificarEtiquetas'); ?>",
			info,
			function(data){
				$("#secuencias_seguimientos"+select).html('<option value="" selected>Seleccione una secuencia...</option>');
				$.each(
					data,
					function(key, value){
						$("#secuencias_seguimientos"+select).append('<option value="'+value.id+'">'+value.posicion+' &#60;'+value.asunto+'&#62;</option>');
					}
				);
				$("#secuencias_seguimientos"+select).selectpicker("refresh");
			},
			"json"
		);
	}
	var Table = $("#tblProductosVenta");
	function agregarProducto(id, row){
		var id = id;
		if(id == "IPList"){
			Table = $(".dvRegistroFP-L").find("#tblProductosVenta");
		}
		else{
			Table = $("#frmProductosSubs").find("#tblProductosVenta-"+id);

		}
		var selectProductos = '<select class="form-control selectpicker" name="slProductos" data-live-search="true" data-selected-text-format="count" multiple>';
		$.each(productos, function(i, producto){
			if( (Table.find('tr[data-idPS="'+producto.idPS+'"]').length == 0 && producto.sin_variaciones == 1) || producto.sin_variaciones == 0 ){
				var option = '<option id="ops'+producto.idPS+'" data-nombre="'+producto.nombre+'" data-variacion="'+producto.sin_variaciones+'" data-tipo="'+producto.tipo+'" value="'+producto.idPS+'" data-idPS="'+producto.idPS+'" data-precio="'+producto.precioVPS+'" data-ilimitado="'+producto.ilimitado+'" data-idVPS="'+producto.idVPS+'" data-inventario="'+producto.inventario+'"> \
					'+producto.nombre+'\
				</option>'
				selectProductos = selectProductos+option;
			}
		});
		selectProductos = selectProductos+"</select>";
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmAgregarProductos"> \
					<div class="form-group"> \
						<label for="slProductos">Productos a agregar</label> \
						'+selectProductos+' \
						<span class="text-danger" id="errslProductos"></span> \
						<div id="dvProductos" style="padding-top: 10px;"></div> \
					</div> \
					<div class="form-group variaciones" style="display: none;"> \
						<label for="slProductos">Variaciones de productos</label> \
						<select class="form-control productosvps" name="slProductosVPS" data-live-search="true" title="Seleccione una opción" data-selected-text-format="count" multiple> \
						<select> \
						<span class="text-danger" id="errslProductosVPS"></span> \
						<div id="dvProductos" style="padding-top: 10px;"></div> \
					</div> \
				</form> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Agregar productos",
			type: BootstrapDialog.TYPE_SUCCESS,
			message: mensaje,
			draggable: true,
			cssClass: "mdAvatar color-head-modal",
			closable: true,
			closeByBackdrop: false,
			buttons: [{
				id: "btnAgregar",
				label: "Agregar",
				cssClass: "btn-success btn-lg btn-block",
				action: function(dialogItself){
					var modalBody = dialogItself.getModalBody();
					var servicios = Array();
					if( modalBody.find("#frmAgregarProductos").valid() ){
						modalBody.find('[name="slProductos"]>option[data-tipo="S"]:selected').each(function(){
							servicios.push($(this).attr("value"));
						});
						modalBody.find('[name="slProductos"]>option[data-variacion="1"]:selected').each(function(){
							if(servicios.indexOf($(this).attr("value")) == -1){
								servicios.push($(this).attr("value"));
							}
						});
						crearTabla(servicios);
						if(modalBody.find(".productosvps").val() != "" && modalBody.find(".productosvps").val() != null){
							crearTabla(modalBody.find(".productosvps").val());
						}
						programarTablaPrecios(Table);
						var total = 0;
						Table.find(".nmTU").each(function(e){
							total = total+parseFloat( $(this).val() );
						});
						total = Math.round(total*100)/100;
						Table.find(".nmTT").val( total.toFixed(2) );
						dialogItself.close();
						if(id != "IPList"){
							$('input[name="psinput"]').val(1)
						}
						else{
							$('input[name="psinputG"]').val(1)
						}
					}
				}
			}],
			onshown: function(dialogItself){
				var modalBody = dialogItself.getModalBody();
				modalBody.find(".selectpicker").selectpicker();
				modalBody.find(".selectpicker").on("changed.bs.select", function(e, clickedIndex, isSelected, previousValue){
					var idP = $(this).val();
					$("#dvProductos").html("");
					$.each(
						$(this).val(),
						function(key, value){
							$("#dvProductos").append(' \
								<span class="label label-info" data-valor="'+$("#ops"+value).html()+'"> \
									'+$("#ops"+value).html()+' \
								</span> &nbsp; \
							');
						}
					);
					var option = "";
					var tipo = 0;
					$.each(productos2, function(i, producto){
						var id = String(producto.idPS);
						if(idP.indexOf(id) > -1){
							if(producto.tipo != "S" && producto.sin_variaciones == 0 ){
								option += '<optgroup label="Variaciones de '+producto.nombre+'">';
								$.each(JSON.parse(producto.variaciones), function(i, variaciones){
									var atrib = variaciones.atributos.join(" , ");
									if( Table.find('tr[data-idvps="'+variaciones.idVPS+'"]').length == 0 ){
										option += ' <option id="ops'+variaciones.idVPS+'" data-subtext="[ '+atrib+' ]" value="'+variaciones.idVPS+'" data-nombre="'+variaciones.nombre+'" data-idPS="'+variaciones.idPS+'" data-precio="'+variaciones.precio+'" data-ilimitado="'+variaciones.ilimitado+'" data-idVPS="'+variaciones.idVPS+'" data-inventario="'+variaciones.inventario+'">'+variaciones.nombre+'</option>';
									}
									else{
										option += ' <option id="ops'+variaciones.idVPS+'" data-subtext="[ '+atrib+' ]" value="'+variaciones.idVPS+'" data-idPS="'+variaciones.idPS+'" data-precio="'+variaciones.precio+'" data-ilimitado="'+variaciones.ilimitado+'" data-idVPS="'+variaciones.idVPS+'" data-inventario="'+variaciones.inventario+'" disabled>'+variaciones.nombre+'</option>';
									}
								});
								option += '</optgroup>';
								tipo++;
							}
						}
					});
					if(tipo){
						modalBody.find(".variaciones").show("slow");
						modalBody.find('select[name="slProductosVPS"]').rules("add", {
							required: true,
							messages: { required: "Selecciona una variación de este producto por favor" }
						})
					}
					modalBody.find('[name="slProductosVPS"]').html(option);
					modalBody.find(".productosvps").selectpicker("refresh");
					modalBody.trigger("click");
				});
				modalBody.find("#frmAgregarProductos").validate({
					lang: "es",
					ignore: [],
					errorPlacement: function(error, element){
						if( element.hasClass("error") ){
							element.parent().addClass("has-error");
						}
						var mensaje = error.html();
						var id = "err"+error.attr("id").substr(0, error.attr("id").indexOf("-error"));
						modalBody.find("#"+id).html(mensaje);
					},
					success: function(label, element){
						modalBody.find(element).parent().removeClass("has-error");
						modalBody.find(element).siblings("span").html("");
					},
					rules: { slProductos: { required: true } },
					messages: { slProductos: { required : "Por favor agrega un producto o servicio" }}
				});
				modalBody.find(".productosvps").on("changed.bs.select", function(e, clickedIndex, isSelected, previousValue){
					modalBody.trigger("click");
				});
			}
		});
	}
	function crearTabla(valor, editar = false, datosT = "", origenT = "" ){
		var idTabla = Table.attr("id");
		var valor = valor;
		$.each(
			valor,
			function(key, value){
				var nPA = $('tr[data-PA]').length;
				nPA = "00"+nPA;
				var option = $("select").find("#ops"+value);
				var max = "";
				var errInventario = "";
				if( editar ){
					var idPS = "";
					var nombreProducto = "";
					var psIlimitado = "";
					var idVPS = "";
					var txtProducto = "";
					var precioProducto = "";
					var pInventario = "";
					var p_variacion = "";
					$.each(datosT, function(i, v){
						if( value == v.idPS ){
							idPS = v.idPS;
							nombreProducto = v.producto;
							psIlimitado = v.ilimitado;
							idVPS = v.variacion;
							txtProducto = v.producto;
							precioProducto = v.precio_producto
							pInventario = v.inventario
							p_variacion = v.producto_variacion
						}
					});
					var precio = (precioProducto==0)?1:precioProducto;
					var variacion = (p_variacion != undefined)?'<div class="atrib-product"><p class="pA"><strong>Variación</strong></p><p class="pA-text">'+p_variacion+'</p></div>':"";
				}
				else{
					var idPS = option.attr("data-idps");
					var nombreProducto = option.attr("data-nombre");
					var psIlimitado = option.attr("data-ilimitado");
					var idVPS = option.attr("data-idvps");
					var txtProducto = option.html();
					var precioProducto = option.attr("data-precio"); 
					var precio = (option.attr("data-precio")==0)?1:option.attr("data-precio");
					var pInventario = option.attr("data-inventario");
					var variacion = (option.parent().attr("name") != "slProductos")?'<div class="atrib-product"><p class="pA"><strong>Variación</strong></p><p class="pA-text">'+option.attr("data-subtext")+'</p></div>':"";
				}
				var prVariacion = ( variacion != "" ) ? 'data-subtext="'+option.attr("data-subtext")+'"':"";
				if( parseInt(pInventario) == 0 ){
					var valor = (pInventario == 0)?1:pInventario;
					max = 'max="'+valor+'"';
					if(valor == 1){
						errInventario = '<span class="text-danger" id="errIn">Este producto actualmente no cuenta con inventario</span>';
					}
				}
				var total = 1*parseFloat(precio);
				total = Math.round(total*100)/100;
				var tr = '<tr data-idPS="'+idPS+'" data-producto="'+nombreProducto+'" data-precio="'+precioProducto+'" '+prVariacion+' data-inventario="'+pInventario+'"  data-i="'+psIlimitado+'" data-idVPS="'+idVPS+'" data-idVXP="0" data-PA="'+nPA+'"> \
					<td> \
						<span class="label label-warning" style="cursor: pointer;" onclick="eliminarProducto(\''+nPA+'\', \''+idTabla+'\')"><i class="fa fa-trash"></i></span> \
						'+txtProducto+' \
						<input type="hidden" name="PAproducto'+nPA+'" value="'+idPS+'"> \
						<input type="hidden" name="PAvariacion'+nPA+'" value="'+idVPS+'"> \
						<input type="hidden" name="PAilimitado'+nPA+'" value="'+psIlimitado+'"> \
						'+variacion+'\
					</td> \
					<td class="precio"> \
						'+precio+' \
					</td> \
					<td class="hide"> \
						<input class="form-control nmPV nmPVC" data-id="'+nPA+'" type="number" name="PAcantidad'+nPA+'" value="1" min="1" '+max+'> \
						<span class="text-danger" id="errcantidad'+nPA+'"></span> \
						'+errInventario+' \
					</td> \
					<td class="hide"> \
						<input class="form-control nmPV nmPVPV" data-id="'+nPA+'" type="number" name="PAprecio_venta'+nPA+'" value="'+parseFloat(precio).toFixed(2)+'" min="0.01"> \
						<span class="text-danger" id="errprecio_ventaPA'+idVPS+'"></span> \
					</td> \
					<td> \
						<input class="form-control nmTU" data-id="'+nPA+'" data-totalu="'+total+'" type="text" readonly value="'+total.toFixed(2)+'"> \
					</td> \
				</tr>';
				if( editar ){
					origenT.find("tbody > tr:last").before(tr);
				}
				else{
					Table.find("tbody > tr:last").before(tr);
				}
			}
		);
	}
	function programarTablaPrecios(tabla){
		var Table = tabla;
		Table.find(".nmPVC").numeric({
			allowMinus: false,
			allowThouSep: false,
			allowDecSep: false
		});
		Table.find(".nmPVPV").alphanum({
			allow: ".0123456789",
			disallow: "abcdefghijklmnñopqrstuvwxyz",
			allowSpace: false,
			allowNumeric: true,
			allowUpper: false,
			allowCaseless: false,
			allowOtherCharSets: false,
			forceLower: true
		});
		Table.find(".table").find(".precio").each(function(){
			var precio = accounting.formatMoney($(this).text().trim(), {
				symbol: " ",
				precision: 2,
				decimal : ".",
				thousand: ",",
				format: "%s%v"
			});
			$(this).text(precio);
		});
		Table.find(".nmPV").blur(function(){
			var input = $(this);
			var nInput = $(this).attr("data-id");
			var precioVenta = Table.find('.nmPVPV[data-id="'+nInput+'"]').val();
			var totalUnitario = parseFloat(precioVenta);
			Table.find('.nmPVPV[data-id="'+nInput+'"]').val(totalUnitario.toFixed(2));
		});
		Table.find(".nmPV").off("input").on("input", function(e){
			var input = $(this);
			var nInput = $(this).attr("data-id");
			var cantidad = Table.find('.nmPVC[data-id="'+nInput+'"]').val();
			var precioVenta = Table.find('.nmPVPV[data-id="'+nInput+'"]').val();
			var totalUnitario = parseInt(cantidad)*parseFloat(precioVenta);
			totalUnitario = Math.round(totalUnitario*100)/100;
			Table.find('.nmTU[data-id="'+nInput+'"]').attr("data-totalu", totalUnitario);
			totalUnitario = accounting.formatMoney(totalUnitario, {
				symbol: " ",
				precision: 2,
				decimal : ".",
				thousand: ",",
				format: "%s%v"
			});
			Table.find('.nmTU[data-id="'+nInput+'"]').val(totalUnitario);
			var total = 0;
			Table.find(".nmTU").each(function(e){
				total = total+parseFloat( $(this).attr("data-totalu") );
			});
			total = accounting.formatMoney(total, {
				symbol: " ",
				precision: 2,
				decimal : ".",
				thousand: ",",
				format: "%s%v"
			});
			if(Table == "tblProductosVentaI"){
				var contador = 0;
				Table.find(".nmTT"+contador).val( total );
			}
			else{
				Table.find(".nmTT").val( total );
			}
		});
	}
	function eliminarProducto(idP, tabla){
		var mensajeEl = "<h2> ¿Seguro que desea eliminar? </h2>";
		var classEl = "";
		if( $("#"+tabla).find("tbody tr").length == 2 ){
			mensajeEl = '<div class="alert alert-warning" role="alert"> \
				<p style="font-size: 16px;"> Debes agregar un producto extra para poder eliminar este ya que no puede quedar vacía la venta... </p> \
			</div>';
			classEl = "disabled";
		}
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmEliminar"> \
					'+mensajeEl+' \
				</form> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Eliminar producto de la venta",
			type: BootstrapDialog.TYPE_WARNING,
			message: mensaje,
			draggable: true,
			cssClass: "mdAvatar",
			closeByBackdrop: false,
			buttons: [{
				id: "btnEliminar",
				label: "Eliminar",
				cssClass: "btn-warning btn-lg btn-block "+classEl,
				action: function(dialogItself){
					if( Table.find("tbody tr").length > 1 ){
						if( idP.startsWith("00") ){
							$('tr[data-pa="'+idP+'"]').remove();
						}
						else{
							Table.append('<input type="hidden" name="PEidVXP'+idP+'" value="'+idP+'">')
							$('tr[data-idvxp="'+idP+'"]').remove();
						}
						var total = 0;
						Table.find(".nmTU").each(function(e){
							total = total+parseFloat( $(this).val() );
						});
						total = Math.round(total*100)/100;
						Table.find(".nmTT").val( total.toFixed(2) );
						programarTablaPrecios(Table);
						dialogItself.close();
					}
				}
			}]
		});
	}
	function verInfoSubscriptor(datos, row, col, origen){
		var tr = $("#"+origen).closest("tr");
		var campos = "";
		var tabla = $("#tblSubsImportar").DataTable();
		var camposRequeridos = Array();
		var lista =  <?php echo $ListaEmail; ?> 
		$.each(datos, function(i, value){
			$.each(value, function(k, valor){
				var primerLetra = valor.slug.charAt(0).toUpperCase();
				var campo = primerLetra + valor.slug.slice(1)
				campo = campo.replace(/_/g, " ");
				if( valor.valor == null ){
					valor.valor = "";
				}
				if( valor.requerido == 1 ){
					camposRequeridos.push(valor.slug)
					campos += '<div class="form-group"> \
						<label for="'+valor.slug+'"> '+campo+' * </label> \
						<input type="text" class="form-control campo-requerido-modal" value="'+valor.valor+'" name="'+valor.slug+'"> \
						<span class="text-danger" id="err'+valor.slug+'"> </span> \
					</div>'
				}
				else{
					campos += '<div class="form-group"> \
						<label for="'+valor.slug+'"> '+campo+' </label> \
						<input type="text" class="form-control" value="'+valor.valor+'" name="'+valor.slug+'"> \
					</div>'
				}
			});
		});
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmEditarSub"> \
					'+campos+' \
				</form> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Editar información de Subscriptor",
			type: BootstrapDialog.TYPE_WARNING,
			message: mensaje,
			draggable: true,
			cssClass: "mdAvatar",
			closable: true,
			closeByBackdrop: false,
			buttons: [{
				id: "btnEditar",
				label: "Editar",
				cssClass: "btn-warning btn-lg btn-block",
				action: function(dialogItself){
					var modalBody = dialogItself.getModalBody();
					$.isLoading({ text: "Cargando..." }); NProgress.start();
					if( modalBody.find("#frmEditarSub").valid() ){
						var Data = $("#frmEditarSub").serializeArray();
						var arrayData = Array();
						for(var i = 0; i < Data.length; i++){
							Data[i].slug = Data[i]['name'];
							Data[i].valor = Data[i]['value'];
							delete Data[i].name;
							delete Data[i].value;
							var requerido = ( camposRequeridos.includes(Data[i].slug) ) ? 1: 0;
							Data[i].requerido =  requerido;
						}
						arrayData.push(Data)
						$("#btnEditar").prop("disabled", true).html('<i class="fa fa-spinner fa-spin"></i> Editando');
						setTimeout(function(){
							var columnN = ( lista.gestion_clientes == "N")?6:7;
							tabla.cell( tr.find("td:nth-child(2)")[0] ).data(arrayData).draw(false);
							tabla.cell( tr.find("td:nth-child(3)")[0] ).data(1);
							tabla.cell( tr.find("td:nth-child("+columnN+")")[0] ).data(arrayData).draw(false);
							if(tr.hasClass("danger")){
								tr.removeClass("danger");
							}
							$.isLoading("hide"); NProgress.done();
							dialogItself.close();
						}, 500);
					}
					else{
						$.isLoading("hide"); NProgress.done();
					}
				}
			}],
			onshown: function(dialogItself){
				var modalBody = dialogItself.getModalBody();
				$("body").addClass("modal-open");
				modalBody.find("#frmEditarSub").validate({
					lang: "es",
					ignore: "",
					errorPlacement: function(error, element){
						if( element.hasClass("error") ){
							element.parent().addClass("has-error");
						}
						var mensaje = error.html();
						var id = "err"+error.attr("id").substr(0, error.attr("id").indexOf("-error"));
						$("#"+id).html(mensaje);
					},
					success: function(label, element){
						$(element).parent().removeClass("has-error");
						$(element).siblings("span").html("")
					},
				});
				modalBody.find('input[name="telefono"], input[name="celular"], input[name="numero_de_telefono_del_trabajo"]').alphanum({
					allow: " +-1234567890",
					disallow: ':;´"qwertyuiopasdfghjklmnbvcxzñ_,.ABCDEFGHIJKLMNÑOPQRSTUVWXYZ',
					allowSpace: true,
					allowNumeric: true,
					allowUpper: true,
					allowCaseless: false,
					allowOtherCharSets: false,
					forceLower: false
				});
				modalBody.find(".campo-requerido-modal").each(function(){
					$(this).rules("add", {
						required: true,
						messages: { required: "El campo es obligatorio" }
					});
				});
				modalBody.find('input[name="correo_electronico"]').each(function(){
					$(this).rules("add", {
						email: true,
						required: true,
						esEmail: true,
						messages: { required: "El campo es obligatorio" }
					});
				});
				modalBody.find("#frmEditarSub").valid();
			},
			onhidden: function(dialogItself){
				$("body").removeClass("modal-open");
			}
		});
	}
	function agregarEtiquetaSubscriptor(row, col, origen){
		var tabla = $("#tblSubsImportar").DataTable();
		var tr = $("#"+origen).closest("tr");
		var datosEtiquetas = tabla.cell( row, col ).data();
		var lista =  <?php echo $ListaEmail; ?> 
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmEtiquetas" class="form-horizontal row-border"> \
					<strong> Agregar etiquetas a subscriptor </strong> \
					<p> \
					<br> \
						Al hacerlo se agregaran las etiquetas que selecciones a este subscriptor en especifico. \
					</p> \
					<br> \
					<div class="form-group"> \
						<label class="col-sm-3 control-label"> Etiquetas </label> \
						<div class="col-sm-9"> \
							<select class="form-control selectpicker" multiple data-live-search="true" data-selected-text-format="count" id="etiquetas1" name="etiquetas[]"> \
									<option value="0" disabled> Seleccione las etiquetas a asociar... </option> \
									<?php foreach($Etiquetas as $indice => $Etiqueta): ?> \
									<option value="<?php echo $Etiqueta->id; ?>" id="op<?php echo $Etiqueta->id; ?>"> <?php echo $Etiqueta->nombre; ?> </option> \
									<?php endforeach; ?> \
							</select> \
							<div id="dvEtiquetas1" style="padding-top: 10px; padding-bottom: 25px;"></div> \
						</div> \
					</div> \
				</form> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Agregar Etiquetas",
			type: BootstrapDialog.TYPE_WARNING,
			message: mensaje,
			draggable: true,
			closeByBackdrop: false,
			cssClass: "mdAvatar",
			buttons: [{
				id: "btnEtiquetas",
				label: "Aplicar etiquetas",
				cssClass: "btn-success btn-lg btn-block ",
				action: function(dialogItself){
					var ventana = dialogItself.getModalBody();
					$.isLoading({ text: "Cargando..." }); NProgress.start();
					$("#btnEtiquetas").prop("disabled", true).html('<i class="fa fa-spinner fa-spin"></i> Asignando etiquetas...');
					var frmEtiquetas = ventana.find("#frmEtiquetas").serializeArray();
					var jsonEtiquetas  = Array();
					for(var i= 0; i < frmEtiquetas.length; i++) {
						var texto = ventana.find("#etiquetas1").find('option[value="'+frmEtiquetas[i].value+'"]').text();
						jsonEtiquetas.push({
							"etiqueta_id" : frmEtiquetas[i].value,
							"nombre": texto,
							"e_general": false
						});
					}
					var columnN = ( lista.gestion_clientes == "N")?7:8;
					tabla.cell( tr.find("td:nth-child(4)")[0] ).data(jsonEtiquetas).draw(false);
					tabla.cell( tr.find("td:nth-child("+columnN+")")[0] ).data(jsonEtiquetas).draw(false);
					setTimeout(function(){
						$.isLoading("hide"); NProgress.done();
						dialogItself.close();
					}, 500);
				}
			}],
			onshown: function(dialogRef){
				$("body").addClass("modal-open");
				var ventana = dialogRef.getModalBody();
				ventana.find(".selectpicker").selectpicker();
				ventana.find("#etiquetas1").on("changed.bs.select", function(e){
					var n = parseInt($(this).attr("id").replace("etiquetas", ""));
					$("#dvEtiquetas"+n).html("");
					if( $(this).val() ){
						$.each(
							$(this).val(),
							function(key, value){
								$("#dvEtiquetas"+n).append(' \
									<span class="label label-info" data-valor="'+$("#op"+value).html()+'"> \
										'+$("#op"+value).html()+' \
									</span> &nbsp;&nbsp;&nbsp;\
								');
							}
						);
						var info = $("#etiquetas"+n+", #hdnLid").serialize();
					}
				});
				if( datosEtiquetas.length != 0 ){
					datosEtiquetas.forEach( function(id, v) {
						ventana.find("#etiquetas1").find('option[value="'+id.etiqueta_id+'"]').prop("selected", true);
						ventana.find("#etiquetas1").trigger("changed");
					});
					ventana.find("#etiquetas1").selectpicker("refresh");
				}
				ventana.find(".form-group").css("margin-bottom", "0px");
				ventana.closest(".modal-body").attr("style", "padding-bottom: 1px !important");
			},
			onhidden: function(dialogItself){
				$("body").removeClass("modal-open");
			}
		});
	}
	function agregarPSSubscriptor(datos, row, col, origen){
		var ProductoConfigurado = datos;
		var tabla = $("#tblSubsImportar").DataTable();
		var tr = $("#"+origen).closest("tr");
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmProductosSubs" class="form-horizontal row-border"> \
					<div class="form-group"> \
						<label class="col-sm-3 control-label"> Producto/Servicio a asociar (*)  </label> \
						<div class="col-sm-9"> \
							<table class="table table-bordered" id="tblProductosVenta-'+origen+'"> \
								<thead> \
									<tr> \
										<th>Producto <span class="label label-success" style="cursor: pointer;" onclick="agregarProducto(this.id)" id="'+origen+'"><i class="fa fa-plus"></i></span></th> \
										<th>Precio de lista (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th> \
										<th class="hide">Cantidad</th> \
										<th class="hide">Precio de unitario (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th> \
										<th>Total (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>)</th> \
									</tr> \
								</thead> \
								<tbody> \
									<tr> \
										<th colspan="2" style="text-align: right;"> \
											Total (<?php echo $Cliente->codigo_moneda; ?> <?php echo $Cliente->simbolo_moneda; ?>) \
										</th> \
										<td> \
											<input class="form-control nmTT" type="text" readonly value="0"> \
										</td> \
									</tr> \
								</tbody> \
							</table> \
							<input type="hidden" name="productos_l" id="productos_l"> \
							<input type="hidden" name="idsPSRS" value=""> \
							<span class="text-danger" id="errproductos"></span> \
							<input type="hidden" name="psinput" value=""> \
							<span class="text-danger" id="errpsinput"></span> \
						</div> \
					</div> \
					<div class="form-group"> \
						<label class="col-sm-3 control-label"> Referencia </label> \
						<div class="col-sm-9" style="margin-bottom: 15px;"> \
							<select class="form-control selectpicker" data-live-search="true" id="slReferenciaGP-L" name="referenciaGP_l" title="Selecciona una referencia..."> \
								<?php foreach( $Referencias as $Referencia ): ?> \
								<option value="<?php echo $Referencia->id; ?>" <?php if( $Referencia->nombre == "Cliente existente (Oportunidad)" ): ?> disabled <?php endif; ?> ><?php echo $Referencia->nombre; ?></option> \
								<?php endforeach; ?> \
							</select> \
							<span class="text-danger" id="errslReferenciaGP-L"> </span> \
						</div> \
					</div> \
					<div class="form-group"> \
						<label class="col-sm-3 control-label"> Asignar a... </label> \
						<div class="col-sm-9"> \
							<select class="form-control selectpicker" data-live-search="true" id="slUsuarioAsignarGP" name="usuarioAsignarGP" title="Seleccione el usuario a asignar..."> \
								<?php foreach( $Empleados as $Empleado ): ?> \
								<option value="<?php echo $Empleado->id; ?>"> <?php echo $Empleado->nombre_completo; ?> - Pendientes: <?php echo $Empleado->pendientes; ?> </option> \
								<?php endforeach; ?> \
							</select> \
							<span class="text-danger" id="errslUsuarioAsignarGP"> </span> \
						</div> \
					</div> \
				</form> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Agregar producto a subscriptor",
			type: BootstrapDialog.TYPE_WARNING,
			size: BootstrapDialog.SIZE_WIDE,
			message: mensaje,
			draggable: true,
			closeByBackdrop: false,
			cssClass: "mdAvatar",
			closable: true,
			buttons: [{
				id: "btnEditar",
				label: "Agregar Producto(s)",
				cssClass: "btn-success btn-lg btn-block",
				action: function(dialogItself){
					$.isLoading({ text: "Cargando..." }); NProgress.start();
					var modalBody = dialogItself.getModalBody();
					var frmProductos = modalBody.find("#frmProductosSubs").serializeArray();
					var referencia = modalBody.find("#slReferenciaGP-L").val();
					var asignar = modalBody.find("#slUsuarioAsignarGP").val();
					var TablaProductos = modalBody.find("#tblProductosVenta-"+origen+"");
					var jsonProductos = [];
					if( modalBody.find("#frmProductosSubs").valid() ){
						TablaProductos.find("tbody tr").each(function (i,v){
							var tr = $(this);
							var nombre = tr.attr("data-producto");
							var idPS = tr.attr("data-idps");
							var idV = tr.attr("data-idvps");
							var ilimitado = tr.attr("data-i");
							var precioProducto = tr.attr("data-precio");
							var inventario = tr.attr("data-inventario");
							if( nombre != undefined ){
								jsonProductos.push({
									"idPS" : idPS,
									"producto" : nombre,
									"idVPS" : idV,
									"ilimitado" : ilimitado,
									"precio_producto" : precioProducto,
									"inventario" : inventario,
									"referencia" : referencia,
									"asignar_a" : asignar,
									"producto_global" : false
								});
								if( tr[0].hasAttribute("data-subtext") ){
									jsonProductos[0].producto_variacion =  tr.attr("data-subtext");
								}	
							}
						});
						tabla.cell( tr.find("td:nth-child(5)")[0] ).data(jsonProductos).draw();
						tabla.cell( tr.find("td:nth-child(9)")[0] ).data(jsonProductos).draw();
						setTimeout(function(){
							$.isLoading("hide"); NProgress.done();
							dialogItself.close();
						}, 500);
					}
					else{
						$.isLoading("hide"); NProgress.done();
					}
				}
			}],
			onshown: function(dialogItself){
				$("body").addClass("modal-open");
				var modalBody = dialogItself.getModalBody();
				modalBody.find(".selectpicker").selectpicker();
				modalBody.find("#frmProductosSubs").validate({
					lang: "es",
					ignore: [],
					errorPlacement: function(error, element){
						if( element.hasClass("error") ){
							element.parent().addClass("has-error");
						}
						var mensaje = error.html();
						var id = "err"+error.attr("id").substr(0, error.attr("id").indexOf("-error"));
						modalBody.find("#"+id).html(mensaje);
					},
					success: function(label, element){
						modalBody.find(element).parent().removeClass("has-error");
						modalBody.find(element).siblings("span").html("");
					},
					rules: {
						referenciaGP_l: { required: true },
						usuarioAsignarGP: { required: true },
						psinput: { required: true },
					},
					messages: { psinput: { required : "Por favor agrega un producto o servicio" }}
				});
				if( ProductoConfigurado.length != 0 ){
					var productoTabla = new Array();
					var total = 0;
					modalBody.find('input[name="psinput"]').val(1);
					ProductoConfigurado.forEach( function(id, v) {
						productoTabla.push(id.idPS)
						modalBody.find("#slReferenciaGP-L").find('option[value="'+id.referencia+'"]').prop("selected", true);
						modalBody.find("#slUsuarioAsignarGP").find('option[value="'+id.asignar_a+'"]').prop("selected", true);
					});
					crearTabla(productoTabla, editar = true, ProductoConfigurado,  modalBody.find("#frmProductosSubs .table"));
					programarTablaPrecios(modalBody.find("#frmProductosSubs #tblProductosVenta-"+origen+""))
					modalBody.find("#slReferenciaGP-L, #slUsuarioAsignarGP").selectpicker("refresh");
					modalBody.find("#frmProductosSubs #tblProductosVenta-"+origen+"").find(".nmTU").each(function(e){
						total = total+parseFloat( $(this).val() );
					});
					total = Math.round(total*100)/100;
					modalBody.find("#frmProductosSubs #tblProductosVenta-"+origen+"").find(".nmTT").val( total.toFixed(2) );
				}
			},
			onhidden: function(dialogItself){
				$("body").removeClass("modal-open");
			}
		});
	}
	function eliminarSubscriptor(row, col, origen){
		var tabla = $("#tblSubsImportar").DataTable();
		var eliminarRow = tabla.row( $("#"+origen).closest("tr") );
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<h2> ¿Estas seguro que deseas eliminar este subscriptor? </h2> \
				<div class="alert alert-danger" style="margin-bottom: 0px !important;" role="alert"> \
					Al confirmar, se eliminará este subscriptor del archivo que estás importando. \
				</div> \
			</div> \
		</div>';
		BootstrapDialog.show({
			title: "Eliminar Subscriptor",
			type: BootstrapDialog.TYPE_WARNING,
			message: mensaje,
			draggable: true,
			closeByBackdrop: false,
			cssClass: "mdAvatar",
			onshown: function(dialogItself){
				$("body").addClass("modal-open");
			},
			buttons: [{
				id: "btnEliminarSub",
				label: "Sí, confirmo que deseo eliminar",
				cssClass: "btn-danger btn-block btn-lg",
				action: function(dialogItself){
					$.isLoading({ text: "Cargando..." }); NProgress.start();
					$("#btnEliminarSub").prop("disabled", true).html('<i class="fa fa-spinner fa-spin"></i> Eliminando');
					setTimeout(function(){
						eliminarRow.remove().draw(false);
						$.isLoading("hide"); NProgress.done();
						dialogItself.close()
					}, 100);
				}
			}],
			onhidden: function(dialogItself){
				$("body").removeClass("modal-open");
			}
		});
	}
	function aplicarEtiquetasPSSubscriptores(){
		var lista =  <?php echo $ListaEmail; ?> 
		var tabla = $("#tblSubsImportar").DataTable();
		var datos = tabla.rows().data();
		var etiquetasGeneral = $("#slEtiquetasG").val();
		var TablaProductos = $("#tblProductosVenta");
		var productosTabla = TablaProductos.find("tbody tr").length;
		var referencia = $("#slReferenciaGPG").val();
		var asignar = $("#slUsuarioAsignarGPG").val();
		var etiquetasArray = Array();
		var productosArray = Array();
		var idProductosSeleccionados = Array();
		var MensajePGP = ( lista.gestion_clientes == "P" || lista.gestion_clientes == "C"  )?'Si has asignado Productos/Servicios de manera individual se reemplazaran las opciones de "Referencia" y "Asignar a" por las que elegiste desde las configuraciones generales.':"";
		var Titulo = ( lista.gestion_clientes == "P" || lista.gestion_clientes == "C" )?"Agregar etiquetas y/o productos a subscriptores":"Agregar etiquetas a subscriptores";
		var MensajeAlertaNESP = ( lista.gestion_clientes == "P" || lista.gestion_clientes == "C" )? "No seleccionaste Etiquetas ni Productos": "No seleccionaste Etiquetas";
		var mensajePrincipal = ( lista.gestion_clientes == "P" || lista.gestion_clientes == "C" )?"etiquetas y/o productos":"etiquetas";
		var mensaje = '<div class="row"> \
			<div class="col-xs-12"> \
				<form id="frmEtiquetas" class="form-horizontal row-border"> \
					<strong> '+Titulo+' </strong> \
					<br> \
					<div class="alert alert-info" role="alert" style="margin-bottom: 0px;margin-top: 13px;"> \
						Al confirmar se agregaran las '+mensajePrincipal+' que selecciones a todos los subscriptores cargados. \
						<br style="margin-bottom: 10px;"> \
						'+MensajePGP+' \
					</div> \
					<div  style="padding-left: 0;padding-top: 17px;"> \
						<label> \
							<input type="checkbox" value="0" id="rdAcuerdo" name="rdAcuerdo"> \
							<span class="custom-checkbox"></span> Confirmo que leí las indicaciones del texto en el recuadro azul. \
						</label> \
					</div>  \
				</form> \
			</div> \
		</div>';
		var valido = true;
		if( lista.gestion_clientes == "P" || lista.gestion_clientes == "C" ){
			if( referencia == "" || asignar == "" || productosTabla == 1 ){
				valido = false;
			}
		}
		if( valido ){
			BootstrapDialog.show({
				title: Titulo,
				type: BootstrapDialog.TYPE_WARNING,
				message: mensaje,
				draggable: true,
				cssClass: "mdAvatar",
				closeByBackdrop: false,
				closable: true,
				buttons: [{
					id: "btnAplicarGlobal",
					label: "Confirmar",
					cssClass: "btn-success btn-lg btn-block desactivado",
					action: function(dialogItself){
						var modalBody = dialogItself.getModalBody();
						$.isLoading({ text: "Cargando..." }); NProgress.start();
						if( etiquetasGeneral != null && productosTabla > 1 ){
							$.each(etiquetasGeneral, function(indice, etiqueta){
								var texto = $("#slEtiquetasG").find('option[value="'+etiqueta+'"]').text();
								etiquetasArray.push({
									"etiqueta_id" : etiqueta,
									"nombre": texto,
									"e_general": true
								});
							});
							TablaProductos.find("tbody tr").each(function (i,v){
								var tr = $(this);
								var nombre = tr.attr("data-producto");
								var idPS = tr.attr("data-idps");
								var idV = tr.attr("data-idvps");
								var ilimitado = tr.attr("data-i");
								var precioProducto = tr.attr("data-precio");
								var inventario = tr.attr("data-inventario");
								if( nombre != undefined ){
									productosArray.push({
										"idPS" : idPS,
										"producto" : nombre,
										"idVPS" : idV,
										"ilimitado" : ilimitado,
										"precio_producto" : precioProducto,
										"inventario" : inventario,
										"referencia" : referencia,
										"asignar_a" : asignar,
										"producto_global" : true
									});
									if( tr[0].hasAttribute("data-subtext") ){
										productosArray[0].producto_variacion =  tr.attr("data-subtext");
									}	
								}
								idProductosSeleccionados.push(idPS)
							});
							$.each(datos, function(key, value){
								//PROCESO ETIQUETAS
								if( etiquetasArray.length != 0 ){
									var etiquetaSet = value.etiquetas.map(function(e) { return e.etiqueta_id; });
									var etiquetaDiferente = etiquetaSet.filter(x => etiquetasGeneral.indexOf(x) === -1);
									if( value.etiquetas.length == 0 ){
										Array.prototype.push.apply(value.etiquetas, etiquetasArray); 
									}
									else{
										if( etiquetaDiferente.length > 0 ){
											//VALIDACION PARA DETECTAR ETIQUETA DIFERENTE
											$.each(value.etiquetas, function(i,v){
												$.each(etiquetaDiferente, function(f,g){
													if( v.etiqueta_id == g && v.e_general ){
														delete v.etiqueta_id;
														delete v.nombre;
														delete v.e_general;
													}
												});
											});
										}
										$.each(etiquetasArray, function(k,etiqueta){
											if( etiquetaSet.indexOf(etiqueta.etiqueta_id) == -1 ){
												value.etiquetas.push(etiqueta);
											}
										});
									}
								}
								//PROCESO PRODUCTOS
								if( productosArray.length != 0 ){
									if( value.productos.length == 0 ){
										Array.prototype.push.apply(value.productos, productosArray); 
									}
									else{
										$.each(value.productos, function(i,v){
											var productoSet = value.productos.map(function(e) { return e.idPS; });
											var productoDiferente = productoSet.filter(x => idProductosSeleccionados.indexOf(x) === -1);
											var referenciaSet = value.productos.map(function(e) { return e.referencia; });
											var asignarASet = value.productos.map(function(e) { return e.asignar_a; });
											$.each(productosArray, function(k,producto){
												if( productoSet.indexOf(producto.idPS) == -1 ){
													value.productos.push(producto);
													v.referencia = producto.referencia;
													v.asignar_a = producto.asignar_a;
												}
												else{
													if( productoDiferente.length > 0 ){
														$.each(productoDiferente, function(f,p){
															if( v.idPS == p && v.producto_global ){
																delete v.idPS;
																delete v.producto;
																delete v.idVPS;
																delete v.ilimitado;
																delete v.precio_producto;
																delete v.inventario;
																delete v.referencia;
																delete v.asignar_a;
																delete v.producto_global;
																delete v.producto_variacion;
															}
														});
													}
												}
											});
										});
									}
								}
							});
							setTimeout(function(){
								tabla.clear().draw();
								tabla.rows.add(datos);
								tabla.columns.adjust().draw();
								$.isLoading("hide"); NProgress.done();
								new PNotify({ title: "Importante", text: "Etiquetas y Productos/Servicios configurados a todos los subscriptores", type: "success" });
								dialogItself.close();
							}, 900);
						}
						else if( etiquetasGeneral == null && productosTabla > 1  ){
							TablaProductos.find("tbody tr").each(function (i,v){
								var tr = $(this);
								var nombre = tr.attr("data-producto");
								var idPS = tr.attr("data-idps");
								var idV = tr.attr("data-idvps");
								var ilimitado = tr.attr("data-i");
								var precioProducto = tr.attr("data-precio");
								var inventario = tr.attr("data-inventario");
								if( nombre != undefined ){
									productosArray.push({
										"idPS" : idPS,
										"producto" : nombre,
										"idVPS" : idV,
										"ilimitado" : ilimitado,
										"precio_producto" : precioProducto,
										"inventario" : inventario,
										"referencia" : referencia,
										"asignar_a" : asignar,
										"producto_global": true
									});
									if( tr[0].hasAttribute("data-subtext") ){
										productosArray[0].producto_variacion =  tr.attr("data-subtext");
									}	
								}
							});
							$.each(datos, function(key, value){
								if( productosArray.length != 0 ){
									if( value.productos.length == 0 ){
										Array.prototype.push.apply(value.productos, productosArray); 
									}
									else{
										$.each(value.productos, function(i,v){
											var productoSet = value.productos.map(function(e) { return e.idPS; });
											var productoDiferente = productoSet.filter(x => idProductosSeleccionados.indexOf(x) === -1);
											var referenciaSet = value.productos.map(function(e) { return e.referencia; });
											var asignarASet = value.productos.map(function(e) { return e.asignar_a; });
											$.each(productosArray, function(k,producto){
												if( productoSet.indexOf(producto.idPS) == -1 ){
													value.productos.push(producto);
													v.referencia = producto.referencia;
													v.asignar_a = producto.asignar_a;
												}
												else{
													if( productoDiferente.length > 0 ){
														$.each(productoDiferente, function(f,p){
															if( v.idPS == p && v.producto_global ){
																delete v.idPS;
																delete v.producto;
																delete v.idVPS;
																delete v.ilimitado;
																delete v.precio_producto;
																delete v.inventario;
																delete v.referencia;
																delete v.asignar_a;
																delete v.producto_global;
																delete v.producto_variacion;
															}
														});
													}
												}
											});
										});
									}
								}
								$.each(value.etiquetas, function(i,v){
									if( value.etiquetas.length != 0 ){
										var nuevoArray = value.etiquetas.filter((item) => item.e_general === false);
										value.etiquetas = nuevoArray;
									}
								});
							});
							setTimeout(function(){
								tabla.clear().draw(); // Limpio la tabla
								tabla.rows.add(datos); // Agrego nueva data
								tabla.columns.adjust().draw(); // redibujo DataTable
								$.isLoading("hide"); NProgress.done();
								new PNotify({ title: "Importante", text: "Producto/Servicio configurados a todos los subscriptores", type: "success" });
								dialogItself.close();
							}, 900);
						}
						else if( etiquetasGeneral != null && productosTabla == 1 ){
							$.each(etiquetasGeneral, function(indice, etiqueta){
								var texto = $("#slEtiquetasG").find('option[value="'+etiqueta+'"]').text();
								etiquetasArray.push({
									"etiqueta_id" : etiqueta,
									"nombre": texto,
									"e_general": true
								});
							});
							$.each(datos, function(key, value){
								if( etiquetasArray.length != 0 ){
									var etiquetaSet = value.etiquetas.map(function(e) { return e.etiqueta_id; });
									var etiquetaDiferente = etiquetaSet.filter(x => etiquetasGeneral.indexOf(x) === -1);
									if( value.etiquetas.length == 0 ){
										Array.prototype.push.apply(value.etiquetas, etiquetasArray); 
									}
									else{
										if( etiquetaDiferente.length > 0 ){
											//VALIDACION PARA DETECTAR ETIQUETA DIFERENTE
											$.each(value.etiquetas, function(i,v){
												$.each(etiquetaDiferente, function(f,g){
													if( v.etiqueta_id == g && v.e_general ){
														delete v.etiqueta_id;
														delete v.nombre;
														delete v.e_general;
													}
												});
											});
										}
										$.each(etiquetasArray, function(k,etiqueta){
											if( etiquetaSet.indexOf(etiqueta.etiqueta_id) == -1 ){
												value.etiquetas.push(etiqueta);
											}
										});
									}
								}
							});
							setTimeout(function(){
								tabla.clear().draw();
								tabla.rows.add(datos);
								tabla.columns.adjust().draw();
								$.isLoading("hide"); NProgress.done();
								new PNotify({ title: "Importante", text: "Etiquetas configuradas a todos los subscriptores", type: "success" });
								dialogItself.close();
							}, 900);
						}
						else if( etiquetasGeneral == null && productosTabla == 1  ){
							$.each(datos, function(key, value){
								$.each(value.etiquetas, function(i,v){
									if( value.etiquetas.length != 0 ){
										var nuevoArray = value.etiquetas.filter((item) => item.e_general === false);
										value.etiquetas = nuevoArray;
									}
								});
							});
							setTimeout(function(){
								tabla.clear().draw();
								tabla.rows.add(datos);
								tabla.columns.adjust().draw();
								$.isLoading("hide"); NProgress.done();
								new PNotify({ title: "Importante", text: MensajeAlertaNESP, type: "warning" });
								dialogItself.close();
							}, 400);
						}
						else{
							if( etiquetasGeneral != null && lista.gestion_clientes == "N" ){
								$.each(etiquetasGeneral, function(indice, etiqueta){
									var texto = $("#slEtiquetasG").find('option[value="'+etiqueta+'"]').text();
									etiquetasArray.push({
										"etiqueta_id" : etiqueta,
										"nombre": texto,
										"e_general": true
									});
								});
								$.each(datos, function(key, value){
									if( etiquetasArray.length != 0 ){
										var etiquetaSet = value.etiquetas.map(function(e) { return e.etiqueta_id; });
										var etiquetaDiferente = etiquetaSet.filter(x => etiquetasGeneral.indexOf(x) === -1);
										if( value.etiquetas.length == 0 ){
											Array.prototype.push.apply(value.etiquetas, etiquetasArray); 
										}
										else{
											if( etiquetaDiferente.length > 0 ){
												//VALIDACION PARA DETECTAR ETIQUETA DIFERENTE
												$.each(value.etiquetas, function(i,v){
													$.each(etiquetaDiferente, function(f,g){
														if( v.etiqueta_id == g && v.e_general ){
															delete v.etiqueta_id;
															delete v.nombre;
															delete v.e_general;
														}
													});
												});
											}
											$.each(etiquetasArray, function(k,etiqueta){
												if( etiquetaSet.indexOf(etiqueta.etiqueta_id) == -1 ){
													value.etiquetas.push(etiqueta);
												}
											});
										}
									}
								});
								setTimeout(function(){
									tabla.clear().draw();
									tabla.rows.add(datos);
									tabla.columns.adjust().draw();
									$.isLoading("hide"); NProgress.done();
									new PNotify({ title: "Importante", text: "Etiquetas configuradas a todos los subscriptores", type: "success" });
									dialogItself.close();
								}, 900);
							}
						}
						$("#slEtiquetasG").val("default");
						$("#slReferenciaGPG").val("default");
						$("#slUsuarioAsignarGPG").val("default");
						$("#slEtiquetasG").selectpicker("refresh");
						$("#slReferenciaGPG").selectpicker("refresh");
						$("#slUsuarioAsignarGPG").selectpicker("refresh");
						var limpiarTabla = $("#tblProductosVenta").find("tbody > tr").not(":last");
						limpiarTabla.each(function(k,v){
							$(this).remove();
						});
						$("#tblProductosVenta").find(".nmTT").val(0);
					}
				}],
				onshown: function(dialogItself){
					var modalBody = dialogItself.getModalBody();
					$("body").addClass("modal-open");
					modalBody.find('[name="rdAcuerdo"]').click(function(e){
						if(modalBody.find('[name="rdAcuerdo"]:checked').length == 1){
							$("#btnAplicarGlobal").removeClass("desactivado");
						}
						else{
							$("#btnAplicarGlobal").addClass("desactivado");
						}
					});
				},
				onhidden: function(dialogItself){
					$("body").removeClass("modal-open");
				}
			});
		}
		else{
			new PNotify({ title: "Importante", text: "Por favor verifica que seleccionaste un producto/servicio, referencia y vendedor", type: "warning" });
		}
	}
	function validarJSONTablaSubscriptores(datos){
		var datos = datos;
		var tabla = $("#tblSubsImportar").DataTable();
		var esValido = true;
		var PSConfigurado = true;
		var campoIncompleto = false;
		var correoValido = true;
		var cantidadTotalDatos = datos.length;
		var cantidadRowsMostrados = parseInt($('select[name="tblSubsImportar_length"]').val());
		var lista =  <?php echo $ListaEmail; ?>

		$.each(datos, function(key, value){
			var rowSubscriptor = key+1;
			$.each(value.campos, function(indice, valor){
				$.each(valor, function(i, campo){
					if(campo.requerido==1){
						var pagina = 1;
						var btnPagina = $("div#tblSubsImportar_paginate").find(".paginate_button").not(".previous").not(".next");
						var infoPagina = tabla.page.info();
						var totalPaginas = infoPagina.pages;
						var pag = rowSubscriptor / cantidadRowsMostrados;
						if( campo.valor == "" || campo.valor == undefined ){
							esValido = false;
							campoIncompleto = true;
							if( cantidadTotalDatos > cantidadRowsMostrados ){
								//IDENTIFICAR PAGINA
								pag = Math.ceil(pag);
								btnPagina.find('a[data-dt-idx='+pag+']').css({ "background-color" : "#d9534f", "border-color": "#d43f3a", "color": "#fff"});
							}
							else if( cantidadTotalDatos < cantidadRowsMostrados ){
								//DATOS MOSTRADOS EN UNA SOLA PAGINA
								btnPagina.find('a[data-dt-idx='+pagina+']').css({ "background-color" : "#d9534f", "border-color": "#d43f3a"});
							}
						}
						if( campo.slug == "correo_electronico" ){
							var caract = /[\w-\.]{2,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
							if( !caract.test(campo.valor.trim()) ){
								esValido = false;
								correoValido = false;
								value.valido = 0;
								tabla.order( [ 2, "asc" ] ).draw(true);
								tabla.clear().draw();
								tabla.rows.add(datos);
								tabla.columns.adjust().draw();
								var btnPagina = $("div#tblSubsImportar_paginate").find(".paginate_button").not(".previous").not(".next");
								if( cantidadTotalDatos > cantidadRowsMostrados ){
									//IDENTIFICAR PAGINA
									pag = Math.ceil(pag);
									btnPagina.find('a[data-dt-idx='+pagina+']').css({ "background-color" : "#d9534f", "border-color": "#d43f3a", "color": "#fff"});
								}
								else if( cantidadTotalDatos < cantidadRowsMostrados ){
									//DATOS MOSTRADOS EN UNA SOLA PAGINA
									btnPagina.find('a[data-dt-idx='+pagina+']').css({ "background-color" : "#d9534f", "border-color": "#d43f3a"});
								}
							}
						}
					}
				})
			});
			if(lista.gestion_clientes == "P" || lista.gestion_clientes == "C"){
				if(value.productos.length == 0){
					esValido = false;
					PSConfigurado = false;
				}
			}
		});
		if(!esValido && campoIncompleto){
			new PNotify({ title: "Importante", text: "Por favor verifica que la informacion de los subscriptores este completa con los campos requeridos de la lista", type: "warning" });
		}
		if(!esValido && !correoValido ){
			new PNotify({ title: "Importante", text: "Por favor verifica los subscriptores en color Rojo al principio de la tabla, poseen correos no válidos", type: "warning" });
		}
		if(!PSConfigurado){
			new PNotify({ title: "Importante", text: "Por favor aplica un producto/servicio a los subscriptores.", type: "warning" });
		}
		return esValido;
	}
	function RegistroSubscriptoresImportacion(){
		$.isLoading({ text: "Cargando..." }); NProgress.start();
		$("#procesarSubs").show();
		if( $("#secuencias_seguimientos option").length == 1 ){
			$("#secuencias_seguimientos").rules("remove");
			$('input[name="envio_secuencia_cm"]').rules("remove");
		}
		if($("#frmPaso4").valid()){
			var tabla = $("#tblSubsImportar").DataTable();
			var datos = tabla.rows().data().toArray();
			datos = JSON.stringify(datos);
			var secuencia = $("#secuencias_seguimientos").val();
			var enviarSecuencia = $('input[name="envio_secuencia_cm"]:checked').val();
			var url = "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresAgregarSubscriptoresImportarProcesoV2', array($ListaEmail->id)); ?>";
			var nNB = 0;
			var nNC = 0;
			var VP = 0;
			if( $('input[name="verificacionPagada"]').length > 0 ){
				VP = parseInt($('input[name="verificacionPagada"]').val());
			}
			if( $('input[name="noValidarNB"]').length > 0 ){
				nNB = parseInt($('input[name="noValidarNB"]').val());
			}
			if( $('input[name="noConfirmar"]').length > 0 ){
				nNC = parseInt($('input[name="noConfirmar"]').val());
			}
			var urlActual = new URL(window.location.href);
			var correos = urlActual.searchParams.get("correos");
			var limiteVerificacion = <?php echo $DisponibleCargaExcel; ?>;
			$.post(url,
				{"datos": datos, "secuencia": secuencia, "enviarSecuencia": enviarSecuencia, "nNB": nNB, "nNC": nNC, "VP": VP, "correos": correos, "limiteVerificacion": limiteVerificacion},
				function(data){
					if(data.success){
						$.isLoading("hide"); NProgress.done();
						$("#procesarSubs").hide();
						if(data.mensaje.includes("finalice")){
							new PNotify({ title: "Espera...!", text: data.mensaje, type: "warning" });
						}
						else{
							new PNotify({ title: "¡Felicidades!", text: data.mensaje, type: "success" });
							//riv = Registro Importacion Ventana
							if(data.mensaje.includes("Subscriptores")){
								setTimeout( function(){ window.location.href = "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresVer', array($ListaEmail->id)); ?>?riv=1"; }, 3000 );
							}
							else if(data.mensaje.includes("Todos")){
								setTimeout( function(){ window.location.href = "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresVer', array($ListaEmail->id)); ?>?riv=0"; }, 3000 );
							}
							else{
								setTimeout( function(){ window.location.href = "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresVer', array($ListaEmail->id)); ?>"; }, 3000 );
							}
						}
					}
					else{
						if(data.mensaje != ''){ new PNotify({ title: "Error", text: data.mensaje, type: "error" }); }
						$.each(data.errMensajes, function(key, value){ if(value != ''){ $("#err"+key).html(value); } else{ $("#err"+key).html(""); } });
					}
				},
				"json"
			).fail(function(xhr, textStatus, errorThrown){
				try {
					var mensajeError = "Demasiada información para procesar, por favor reduzca el número de registros y vuelva a intentarlo.";
					if(textStatus == "parsererror" || xhr.responseText.includes("exceeds")){
						$("#errSubidaArchivo").text(mensajeError);
					}
					else{
						$("#errSubidaArchivo").text(xhr.responseText);
					}
					$("#procesarSubs").hide();
					$.isLoading("hide"); NProgress.done();
					$("#btnFinalizar").attr("disabled", true);
				} catch (error) {
					console.error(error);
				}
			});
		}
		else{
			$.isLoading("hide"); NProgress.done();
			$("#procesarSubs").hide();
		}
	}
	function mostrarChat(){
		window.Tawk_API.maximize();
	}
</script>
<?php $__env->stopSection(); ?>

<?php $__env->startSection('JSOr'); ?>
<?php if(Session::has('message')): ?>
new PNotify({ title: "Realizado", text: "<?php echo Session::get('message'); ?>", type: "success" });
<?php endif; ?>
$.validator.addMethod("esEmail", function(value, element) {
  return this.optional( element ) ||  /[\w-\.]{2,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/.test( value );
}, "Por favor, escribe una dirección de correo válida.");

$("#frmPaso2").validate({
	lang: "es",
	ignore: [],
	rules: {
		archivocsv: {
			required: true,
			extension: "csv|txt|ods|xls|xlsx",
		},
	},
	messages: {
		archivocsv: {
			extension: "La plantilla debe ser un archivo con formato: csv, txt, ods, xls, xlsx."
		},
	},
	errorPlacement: function(error, element){
		var mensaje = error.html();
		var id = "err"+error.attr("id").substr(0, error.attr("id").indexOf("-error"));
		$("#"+id).html(mensaje);
	},
	success: function(label, element){
		var id = "err"+label.attr("id").substr(0, label.attr("id").indexOf("-error"));
		$("#"+id).html("");
	}
});
$("#frmPaso4").validate({
	ignore: [],
	rules: {
		secuencias_seguimientos: {
			required: true 
		},
		envio_secuencia_cm: {
			required: true
		}
	},
	errorPlacement: function(error, element){
		var table = $("#tblSubsImportar").DataTable();
		var info = table.page.info();
		if( element.hasClass("error") ){
			element.parent().addClass("has-error");
		}
		var mensaje = error.html();
		var id = "err"+error.attr("id").substr(0, error.attr("id").indexOf("-error"));
		$("#"+id).html(mensaje);
	},
	success: function(label, element){
		$(element).parent().removeClass("has-error");
		$(element).siblings("span").html("")
	},
});
$(".selectpicker").selectpicker();
$("#btnBuscarSub").on("click", function(e){
    e.preventDefault();
	var tabla = $("#tblSubsImportar").DataTable(); 
    var valor = $("#slEstadoSub").val();
	tabla.column(2).search(valor).draw();
});
$("#btnLimpiar").on("click", function(e){
    e.preventDefault();
	var tabla = $("#tblSubsImportar").DataTable();
	tabla.column(2).search("").draw();
});
$("#btnBuscarSubE").on("click", function(e){
    e.preventDefault();
	var tabla = $("#tblSubsImportar").DataTable();
    var valor = $("#slFiltroESub").val();
	if( valor != null ){
		var textos = valor.toString();
	}
	textos = textos.replace(/,/g, "|");
	tabla.column(7).search(textos ? textos : '', true, false).draw();
});
$("#btnLimpiarE").on("click", function(e){
    e.preventDefault();
	$("#slFiltroESub option:selected").prop("selected", false);
	$("#slFiltroESub").selectpicker("refresh");
	var tabla = $("#tblSubsImportar").DataTable();
	tabla.column(7).search("").draw();
});
$("#btnBuscarSubPS").on("click", function(e){
    e.preventDefault();
	var tabla = $("#tblSubsImportar").DataTable();
    var valor = $("#slFiltroPSSub").val();
	if( valor != null ){
		var textos = valor.toString();
	}
	textos = textos.replace(/,/g, "|");
	tabla.column(8).search(textos ? textos : '', true, false).draw();
});
$("#btnLimpiarPS").on("click", function(e){
    e.preventDefault();
	$("#slFiltroPSSub option:selected").prop("selected", false);
	$("#slFiltroPSSub").selectpicker("refresh");
	var tabla = $("#tblSubsImportar").DataTable();
	tabla.column(8).search("").draw();
});
$("#archivocsv").ezdz({
	text: '<i class="fa fa-cloud-upload"></i> \
	<span class="spFlITitulo">Escoger Archivo</span> \
	<span class="spFlITexto"></span>',
	validators: {
	},
	reject: function(file, errors) {
		if (errors.mimeType) {
			$("#errarchivocsv").text("Por favor carga el archivo Excel (Plantillla) que descargaste en el paso 1");
		}
	},
	previewImage: false
});
$(".sidebar-toggle-box").trigger("click");
$(".dvImportarSubsWizard").bootstrapWizard({
	onInit: function(tab, navigation, index){
		$(".dvImportarSubsWizard .progress").addClass("active");
	},
	onTabClick: function(tab, navigation, index){
		return false;
	},
	onTabShow: function(tab, navigation, index){
		var $total = navigation.find("li").length;
		var $current = index+1;
		var $percent = ($current/$total) * 100;
		$(".dvImportarSubsWizard #progress-bar").css({
			width: $percent+"%"
		});
	},
	onNext: function(tab, navigation, index){
		if( index == 1 ){
			var pasa = true;
			return pasa;
		}
		if( index == 2 ){
			var flag = 0; 
			if( $("#frmPaso2").valid() ){
				$.isLoading({ text: "Cargando..." }); NProgress.start();
				if( $("#archivocsv").val() != "" ){ $("#imgarchivocsv").show(); }
				var frmPaso2 = new FormData(document.getElementById("frmPaso2"));
				var columnaProspecto = <?php echo json_encode($ListaEmail->gestion_clientes); ?>

				var mostrarColumnaP = ( columnaProspecto == "P" || columnaProspecto == "C"  ) ? true : false;
				var ajax = $.ajax({
					type: "POST",
					url: "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresAgregarSubscriptoresImportarV2', array($ListaEmail->id)); ?>",
					data: frmPaso2,
					cache: false,
					contentType: false,
					processData: false,
					dataType: "json",
					timeout: 1800000,
					success: function(data){
						if(data.success){
							flag = 1;
							$("#imgarchivocsv").hide();
							$.isLoading("hide"); NProgress.done();
							var datosSubscriptores = JSON.parse(data.subscriptores);
							var tablaSubscriptores = $("#tblSubsImportar").DataTable({
								"data": datosSubscriptores.subscriptores,
								"pageLength": 50,
								"fixedHeader": true,
								"columns": [
									{"title": "N°.", className: "row_n", "data": "row", searchable: false}, 
									{"title": "Campos", "data": "campos", className: "row_c", orderable:false, searchable: false,
										render: function(data, type, row, meta){
											var lista = "";
											var contador = 0;
											$.each(data, function(i,value){
												$.each(value, function(k, valor){
													contador++;
													var requerido = (  valor.requerido == 1  ) ? "*":"";
													var primerLetra = valor.slug.charAt(0).toUpperCase();
													var campo = primerLetra + valor.slug.slice(1);
													campo = campo.replace(/_/g, " ");
													if( valor.valor == null ){
														valor.valor = "";
													}
													if( contador <= 2 ){
														lista += "<b style='font-size: 13px;'>"+campo+":"+requerido+"</b><br><p>"+valor.valor+"</p>";
													}
													else{
														lista += "<b style='font-size: 13px; display:none'>"+campo+":"+requerido+"</b><br style='display:none'><p style='display:none'>"+valor.valor+"</p>";
													}
												});
											});
											var dataFuncion = JSON.stringify(data);
											lista += "<a href='javascript:void(0)' id='Editar"+meta.row+"' onclick='verInfoSubscriptor("+dataFuncion+", "+meta.row+", "+meta.col+", this.id )'> Ver más... </a>";
											return lista;
										}
									},
									{"title": "Valido", className: "sub_valido hide", "data": "valido", orderable:false, searchable: true},
									{"title": "Etiquetas", className: "text-center row_e", "data": "etiquetas", orderable:false,
										render: function(data, type, row, meta){
											var contador = 0;
											var span = ""
											$.each(data, function(k, valor){
												if( Object.keys(valor).length !== 0 ){
													contador++;
													if( contador == 4 ){
														span += "<span class='label label-info'>...</span><br>";
													}
													else if( contador <= 3 ){
														span += "<span class='label label-info'>"+valor.nombre+"</span><br>";
													}
												}
											});
											var etiqueta = "<a href='javascript:void(0)' id='Etiquetas"+meta.row+"' onclick='agregarEtiquetaSubscriptor("+meta.row+", "+meta.col+", this.id)'> Gestionar Etiquetas </a><div id='labels-etiquetas-"+meta.row+"'>"+span+"</div>";
											return etiqueta;
										}
									},
									{"title": "Productos", "data": "productos",  className: "text-center", orderable:false, searchable: false, visible: mostrarColumnaP,
										render: function(data, type, row, meta){
											var contador = 0;
											var li = ""
											$.each(data, function(k, valor){
												if( Object.keys(valor).length !== 0 ){
													contador++
													if( contador == 4 ){
														li += "<li>...</li>";
													}
													else if( contador <= 3 ){
														li += "<li>"+valor.producto+"</li>";
													}
												}
												
											});
											var dataProductos = JSON.stringify(data);
											var producto = "<a href='javascript:void(0)' id='Productos"+meta.row+"' onclick='agregarPSSubscriptor("+dataProductos+", "+meta.row+", "+meta.col+", this.id)'> Gestionar Producto/Servicio </a><div id='li-productos-"+meta.row+"'><ul class='list-group'>"+li+"</ul></div>";
											return producto;
										}
									},
									{"title": "Acciones", className: "btnAcciones text-center row_acciones", searchable: false, orderable:false, "width": "10%",
										render: function(data, type, row, meta) {
											var btnEliminar = "<a href='javascript:void(0)' id='btnEliminarRegistro"+meta.row+"' onclick='eliminarSubscriptor("+meta.row+", "+meta.col+", this.id)' class='btn btn-danger tooltips btnEliminarRegistro' data-toggle='tooltip' data-original-title='Eliminar'><i class='fa fa-trash'></i></a>";
											return btnEliminar;
										}
									},
									{"title": "",  "data": "campos", className: "fltD hide", searchable: true,
										render: function(data, type, row, meta){
											var lista = "";
											$.each(data, function(i,value){
												$.each(value, function(k, valor){
													if(  valor.slug == "nombre_completo" ){
														lista += "<p>"+valor.valor+"</p>";
													}
													if( valor.slug == "correo_electronico" ){
														lista += "<p>"+valor.valor+"</p>";
													}
													if(  valor.slug == "telefono" ){
														lista += "<p>"+valor.valor+"</p>";
													}
												});
											});
											return lista;
										}
									},
									{"title": "",  "data": "etiquetas", className: "fltE hide", searchable: true,
										render: function(data, type, row, meta){
											var lista = "";
											$.each(data, function(i,value){
												lista += "<p>"+value.nombre+"</p>";
											});
											return lista;
										}
									},
									{"title": "",  "data": "productos", className: "fltP hide", searchable: true,
										render: function(data, type, row, meta){
											var lista = "";
											$.each(data, function(i,value){

												lista += "<p>"+value.producto+"</p>";
											});
											return lista;
										}
									},
									{"title": "",  "data": "existeSubscriptor", className: "fltES hide", searchable: false},

								],
								"order": [[3, "asc"]],
								"language": {
									"url": "<?php echo asset('DataTables/Spanish.json'); ?>"
								},
								"fnDrawCallback": function(oSettings){
									$(".selectpicker").selectpicker();
									$(".tooltips").tooltip({
										position: {
											my: "center bottom-5",
											at: "center top",
										},
										tooltipClass: "entry-tooltip-positioner",
									});
									$(".btnEliminarRegistro").attr("data-original-title", "Eliminar Subscriptor");
									$(".btnEliminarRegistro").attr("data-toggle", "tooltip");
									$(".sub_valido").each(function(i,k){
										var valido = tablaSubscriptores.cell( $(this).closest("tr").find("td:nth-child(3)")[0] ).data();
										if( valido == 0 ){
											$(this).closest("tr").addClass("danger");
										}
									});
									$("td.fltES").each(function(i,k){
										var lista = ( mostrarColumnaP ) ? 10 : 9;
										var existe = tablaSubscriptores.cell( $(this).closest("tr").find("td:nth-child("+lista+")")[0] ).data();
										if( existe != 0 ){
											$(this).closest("tr").addClass("info");
										}
									});
								},
								initComplete: function(){
									var input = $(".dataTables_filter input").unbind(),
									self = this.api(),
									$searchButton = $('<button class="btn btn-primary tooltips" id="btnFiltroSubB" style="margin-left: 5px;" data-toggle="tooltip" data-original-title="Buscar">').html('<i class="fa fa-search"></i>').click(function(e){
										e.preventDefault();
										self.search(input.val().trim()).draw();
									}),
									$clearButton = $('<button class="btn btn-default tooltips" id="btnFiltroSubC" style="margin-left: 5px;" data-toggle="tooltip" data-original-title="Limpiar">>').html('<i class="fa fa-paint-brush"></i>').click(function(e){
										e.preventDefault();
										input.val('');
										$searchButton.click(); 
									});
									$(".dataTables_filter").append($searchButton, $clearButton);
									$("body").tooltip({selector: "[data-toggle='tooltip']"});
								},
								dom: "<'row row-filtro-tabla'<'col-sm-8'l><'col-sm-4 filtro-tabla'f>>" +
									"<'row centrar-tabla'<'col-sm-11'tr>>" +
								"<'row'<'col-sm-5'i><'col-sm-7'p>>",
								autoWidth: false,
								responsive: true
							});
							return true;
						}
						else{
							$("#imgarchivocsv").hide();
							$.isLoading("hide"); NProgress.done();
							if(typeof data.MensajeError != "undefined"){
								$("#Errs").html(data.MensajeError);
								$("#MensajeError").show();
							}
							else{
								$("#MensajeError").hide();
								$("#Errs").html("");
							}
							if(data.mensaje != ""){
								new PNotify({ title: "Error", text: data.mensaje, type: "error" });
							}
							$.each(data.errMensajes, function(key, value){
								if(value != ""){
									$("#err"+key).html(value);
								}
								else{
									$("#err"+key).html("");
								}
							});
						}
					},
					error: function(jqXHR, textStatus, errorThrown){
						try {
							var response = JSON.parse(jqXHR.responseText);
							var mensajeError = "Demasiada información para procesar, por favor reduzca el número de registros y vuelva a intentarlo.";
							if(textStatus == "parsererror" || response.error.message.includes("exhausted")){
								$("#errarchivocsv").text(mensajeError);
							}
							else{
								$("#errarchivocsv").text(response.error.message);
							}
							$("#imgarchivocsv").hide();
							$.isLoading("hide"); NProgress.done();
							$("input[type='submit']").prop("disabled", false);
							//new PNotify({ title: "Error", text: textStatus + " " + errorThrown, type: "error" });
						}
						catch(error){
							console.error(error);
						}
					}
				});
				$.when(ajax).then(function (res){
					if(res.success){
						$("#progressWizard").bootstrapWizard("show",2);
					}
				});
			}
			if(flag == 0){ 
				return false; 
			}
		}
		if( index == 3 ){
			$.isLoading({ text: "Cargando..." }); NProgress.start();
			var tabla = $("#tblSubsImportar").DataTable();
			var datos = tabla.rows().data();
			setTimeout(() => {
				var validoJson = validarJSONTablaSubscriptores(datos);
				if(  $("#frmPaso3").valid() && validoJson ){
					$.isLoading("hide"); NProgress.done();
					$("#progressWizard").bootstrapWizard("show",3);
				}
				else{
					$.isLoading("hide"); NProgress.done();
				}
			}, 1);
			return false;
		}
	},
	onPrevious: function(tab, navigation, index){
		if(index == 1){
			return false;
		}
	}
});
$(document).ready(function(){
	var ruta = "<?php echo URL::route('SysWebEmailMarketingListasSubscriptoresFiltroListasDisponibles', array($ListaEmail->id)); ?>";
	$.get(
		ruta,
		function(data){
			$("#secuencias_seguimientos").html('<option selected value=""> Seleccione una secuencia... </option>');
			if( data.length != 0 ){
				$.each(data, function(index, val) {
					$("#secuencias_seguimientos").append('<option value="'+index+'">'+val+'</option>');
				});
			}
			else if( data.length == 0 ){
				$(".p_secuencia").hide();
				$(".sl_seguimiento").hide();
				$(".ck_seguimiento").hide();
			}
			$("#secuencias_seguimientos").selectpicker("refresh");
		},
		"json"
	);

});
<?php $__env->stopSection(); ?>
<?php echo $__env->make('BaseSistemaWeb', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>