<?php
    ##########################################################################
    ##########################################################################
    //VERIFICA SEGURIDAD: Perfil de Administrador requerido antes de continuar
    global $PCOSESS_LoginUsuario,$MULTILANG_ErrorTitAuth,$MULTILANG_WSErr06;
    if (!PCO_EsAdministrador(@$PCOSESS_LoginUsuario))
        {
            PCO_Mensaje("{$MULTILANG_ErrorTitAuth}", "{$MULTILANG_WSErr06}", '', 'fa fa-exclamation-triangle fa-3x texto-rojo texto-blink', 'alert alert-warning alert-dismissible');
            PCO_Auditar("$PCOSESS_LoginUsuario Intenta acceso no autorizado Frm:-36","SECLog:event");
            die();
        }
    ##########################################################################
    ##########################################################################

    global $nombre_tabla,$TablasApp,$TablasCore,$formulario,$PCO_Valor,$PCO_TipoControlDirecto,$LlaveDePaso;
    global $PCO_SalidaCampoEspecial_CampoFormulario,$PCO_SalidaCampoEspecial_OrigenListaOpciones,$PCO_SalidaCampoEspecial_OrigenListaValores,$PCO_SalidaCampoEspecial_ListaEventos;
    global $MULTILANG_FrmCampo,$MULTILANG_FrmCampoOb1,$MULTILANG_FrmDesCampo,$MULTILANG_SeleccioneUno,$MULTILANG_InfCampoManual;
    global $MULTILANG_FrmOrigen,$MULTILANG_FrmTitOrigen,$MULTILANG_FrmTitOrigen2,$MULTILANG_FrmDesOrigen;
    global $MULTILANG_FrmOrigenVal,$MULTILANG_FrmTitOrigenVal,$MULTILANG_FrmDesOrigenVal,$MULTILANG_Error,$MULTILANG_Agregar,$MULTILANG_Objeto;
    global $MULTILANG_Atencion,$MULTILANG_FrmTipoAdvertencia,$MULTILANG_Evento,$MULTILANG_Editar,$MULTILANG_Eliminar,$MULTILANG_Tipo;
    global $PCO_SalidaCampoEspecial_InformeVinculado,$MULTILANG_FrmInforme,$ModoDesarrolladorPractico,$ListaCamposSinID_informe;
    global $PCO_SalidaCampoEspecial_FormularioVinculado,$MULTILANG_FrmFormulario,$ListaCamposSinID_formulario;
    global $PCO_SalidaCampoEspecial_Columna,$MULTILANG_Columna,$MULTILANG_FrmDesColumna;
    global $ListaCamposSinID_evento_objeto,$ArchivoCORE;
    global $PCO_RegistroDatosFormulario;

    //Busca datos del formulario
    if ($formulario!="")
        {
            $RegistroDisenoFormulario=PCO_EjecutarSQL("SELECT * FROM {$TablasCore}formulario WHERE id='{$formulario}' ")->fetch();
            $nombre_tabla=$RegistroDisenoFormulario["tabla_datos"];
        }
    else
        {
            PCO_Mensaje($MULTILANG_Error, 'Se requiere un ID de formulario valido para continuar.', '', 'fa fa-fw fa-2x fa-thumbs-down', 'alert alert-dismissible alert-danger');
            die();
        }

#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.   Se requiere asi porque hace llamado a construccion interna de la lista de campos, tipos, etc.
    $PCO_SalidaCampoEspecial_CampoFormulario="";    //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_CampoFormulario.='
        <label for="campo">'.$MULTILANG_FrmCampo.':</label>
        <div class="form-group input-group">
        <span class="input-group-addon">
            '.$nombre_tabla.'
        </span>
            <select id="campo" name="campo" onchange="FORMJS_ActualizarCampoManualconCampoLista();" class="form-control input-sm" >
                <option value="">'.$MULTILANG_SeleccioneUno.'</option>';
                $resultadocampos=PCO_ConsultarColumnas($nombre_tabla);
                for($i=0;$i<count($resultadocampos);$i++)
                    {
                        $seleccion_campo="";
                        if ($resultadocampos[$i]["nombre"]!="id")
                            {
                                if (@$PCO_RegistroDatosFormulario["campo"]==@$resultadocampos[$i]["nombre"])
                                    $seleccion_campo="SELECTED";
                                if (@strtolower($resultadocampos["nombre"])!="id")
                                    $PCO_SalidaCampoEspecial_CampoFormulario.= '<option value="'.$resultadocampos[$i]["nombre"].'" '.$seleccion_campo.'>'.$resultadocampos[$i]["nombre"].'&nbsp;&nbsp;&nbsp;'.$resultadocampos[$i]["tipo"].'</option>';								
                            }
                    }
    $PCO_SalidaCampoEspecial_CampoFormulario.='
            </select>
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="'.$MULTILANG_FrmCampoOb1.'"><i class="fa fa-exclamation-triangle icon-orange"></i></a>
                <a  href="#" data-toggle="tooltip" data-html="true"  title="'.$MULTILANG_FrmDesCampo.'"><i class="fa fa-question-circle icon-info"></i></a>
            </span>
        </div>';

    //Espacio para campo manual
    $ValorCampoManual="";
    if (!@PCO_ExisteCampoTabla($PCO_RegistroDatosFormulario["campo"],$nombre_tabla))
        $ValorCampoManual=@$PCO_RegistroDatosFormulario["campo"];
    $PCO_SalidaCampoEspecial_CampoFormulario.='
        <div class="form-group input-group">
            <input name="campo_manual" id="campo_manual" onchange="FORMJS_ActualizarCampoManualconCampoLista();" value="'.$ValorCampoManual.'" type="text" class="form-control input-sm" placeholder="'.$MULTILANG_InfCampoManual.'">
            <span class="input-group-addon">
            </span>
        </div>';


#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.
    $PCO_SalidaCampoEspecial_OrigenListaOpciones="";   //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
        <label for="origen_lista_opciones">'.$MULTILANG_FrmOrigen.':</label>
        <div class="form-group input-group">
            <select id="origen_lista_opciones" name="origen_lista_opciones" onchange="FORMJS_ActualizarListaOpcionesManual();" class="form-control input-sm" >
                <option value="">'.$MULTILANG_SeleccioneUno.'</option>';

                    $resultado=PCO_ConsultarTablas();
                    while ($registro = $resultado->fetch())
                        {
                            // Imprime solamente las tablas de aplicacion, es decir, las que no cumplen prefijo de internas de Practico
                            if (strpos($registro[0],$TablasCore)===FALSE)  // Booleana requiere === o !==
                                {
                                    $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '<optgroup label="'.str_replace($TablasApp,'',$registro[0]).'" >';
                                    //Busca los campos de la tabla
                                    $nombre_tabla_opc=$registro[0];
                                    $resultadocampos=PCO_ConsultarColumnas($nombre_tabla_opc);
                                    for($i=0;$i<count($resultadocampos);$i++)
                                        {
                                            $seleccion_campo="";
                                            if (@$PCO_RegistroDatosFormulario["origen_lista_opciones"]==$nombre_tabla_opc.'.'.$resultadocampos[$i]["nombre"])
                                                $seleccion_campo="SELECTED";
                                            $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '<option value="'.$nombre_tabla_opc.'.'.$resultadocampos[$i]["nombre"].'" '.$seleccion_campo.'>'.$resultadocampos[$i]["nombre"].'&nbsp;&nbsp;&nbsp;'.$resultadocampos[$i]["tipo"].'</option>';								
                                        }
                                    $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '</optgroup>';
                                }
                        }
    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
            </select>
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="'.$MULTILANG_FrmTitOrigen.'"><i class="fa fa-exclamation-triangle icon-orange"></i></a>
                <a  href="#" data-toggle="tooltip" data-html="true"  title="<b>'.$MULTILANG_FrmTitOrigen2.'</b><br>'.$MULTILANG_FrmDesOrigen.'"><i class="fa fa-question-circle icon-info"></i></a>
            </span>
        </div>';

    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
        <div class="form-group input-group">
            <input name="origen_lista_opciones_manual" id="origen_lista_opciones_manual" value="'.@htmlentities($PCO_RegistroDatosFormulario["origen_lista_opciones"]).'" type="text" class="form-control input-sm" placeholder="'.$MULTILANG_InfCampoManual.': ExpresionSQL o Tabla.Campo">
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="Este campo permite comillas dobles para su uso con parametros o valores fijos.  This field allow double cuotes for parameters or fixed values"><i class="fa fa-question-circle text-info"></i></a>
            </span>
        </div>';
        
        
#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.
    $PCO_SalidaCampoEspecial_OrigenListaValores="";   //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
        <label for="origen_lista_valores">'.$MULTILANG_FrmOrigenVal.':</label>
        <div class="form-group input-group">
            <select id="origen_lista_valores" name="origen_lista_valores" class="form-control input-sm" onchange="FORMJS_ActualizarListaValoresManual();">
                <option value="">'.$MULTILANG_SeleccioneUno.'</option>';

                    $resultado=PCO_ConsultarTablas();
                    while ($registro = $resultado->fetch())
                        {
                            // Imprime solamente las tablas de aplicacion, es decir, las que no cumplen prefijo de internas de Practico
                            if (strpos($registro[0],$TablasCore)===FALSE)  // Booleana requiere === o !==
                                {
                                    $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '<optgroup label="'.str_replace($TablasApp,'',$registro[0]).'" >';
                                    //Busca los campos de la tabla
                                    $nombre_tabla_val=$registro[0];
                                    $resultadocampos=PCO_ConsultarColumnas($nombre_tabla_val);
                                    for($i=0;$i<count($resultadocampos);$i++)
                                        {
                                            $seleccion_campo="";
                                            if (@$PCO_RegistroDatosFormulario["origen_lista_valores"]==$nombre_tabla_val.'.'.$resultadocampos[$i]["nombre"])
                                                $seleccion_campo="SELECTED";
                                            $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '<option value="'.$nombre_tabla_val.'.'.$resultadocampos[$i]["nombre"].'" '.$seleccion_campo.'>'.$resultadocampos[$i]["nombre"].'&nbsp;&nbsp;&nbsp;'.$resultadocampos[$i]["tipo"].'</option>';								
                                        }
                                    $PCO_SalidaCampoEspecial_OrigenListaOpciones.= '</optgroup>';
                                }
                        }

    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
            </select>
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="'.$MULTILANG_FrmTitOrigenVal.'"><i class="fa fa-exclamation-triangle icon-orange"></i></a>
                <a  href="#" data-toggle="tooltip" data-html="true"  title="<b>'.$MULTILANG_FrmTitOrigen2.'</b><br>'.$MULTILANG_FrmDesOrigenVal.'"><i class="fa fa-question-circle icon-info"></i></a>
            </span>
        </div>';
                            
    $PCO_SalidaCampoEspecial_OrigenListaOpciones.='
        <div class="form-group input-group">
            <input name="origen_lista_valores_manual" id="origen_lista_valores_manual" value="'.@htmlentities($PCO_RegistroDatosFormulario["origen_lista_valores"]).'" type="text" class="form-control input-sm" placeholder="'.$MULTILANG_InfCampoManual.': ExpresionSQL o Tabla.Campo">
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="Este campo permite comillas dobles para su uso con parametros o valores fijos.  This field allow double cuotes for parameters or fixed values"><i class="fa fa-question-circle text-info"></i></a>
            </span>
        </div>';


#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.
    $PCO_SalidaCampoEspecial_InformeVinculado="";   //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_InformeVinculado.='
        <label for="informe_vinculado">'.$MULTILANG_FrmInforme.':</label>
        <div class="form-group input-group">
            <select id="informe_vinculado" name="informe_vinculado" class="selectpicker combo-informe_vinculado show-tick form-control input-sm" data-live-search=true>
            <option value="0">'.$MULTILANG_SeleccioneUno.'</option>';
                //Define desde donde filtrar informes cuando se esta en modo desarrollador de Practico
                $LimiteInferiorBusqueda="-10000";
                if ($ModoDesarrolladorPractico!="-10000")
                    $LimiteInferiorBusqueda=0;
                $consulta_informs=PCO_EjecutarSQL("SELECT id,".$ListaCamposSinID_informe." FROM ".$TablasCore."informe WHERE id>=$LimiteInferiorBusqueda ORDER BY titulo");
                while($registro_informes = $consulta_informs->fetch())
                    {
                        $seleccion_campo="";
                        if (@$PCO_RegistroDatosFormulario["informe_vinculado"]==$registro_informes["id"])
                            $seleccion_campo="SELECTED";
                        $PCO_SalidaCampoEspecial_InformeVinculado.= '<option value="'.$registro_informes["id"].'" '.$seleccion_campo.'>(Id.'.$registro_informes["id"].') '.$registro_informes["titulo"].'</option>';
                    }
    $PCO_SalidaCampoEspecial_InformeVinculado.='
            </select>
        </div>';
                            

#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.
    $PCO_SalidaCampoEspecial_FormularioVinculado="";   //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_FormularioVinculado.='
        <label for="formulario_vinculado">'.$MULTILANG_FrmFormulario.'</label>
        <div class="form-group input-group">
            <select id="formulario_vinculado" name="formulario_vinculado" class="selectpicker combo-informe_vinculado show-tick form-control input-sm" data-live-search=true>
            <option value="0">'.$MULTILANG_SeleccioneUno.'</option>';
                //Define desde donde filtrar informes cuando se esta en modo desarrollador de Practico
                $LimiteInferiorBusqueda="-10000";
                if ($ModoDesarrolladorPractico!="-10000")
                    $LimiteInferiorBusqueda=0;
                $consulta_forms=PCO_EjecutarSQL("SELECT id,".$ListaCamposSinID_formulario." FROM ".$TablasCore."formulario WHERE id>=$LimiteInferiorBusqueda ORDER BY titulo");
                while($registro_formularios = $consulta_forms->fetch())
                    {
                        $seleccion_campo="";
                        if (@$PCO_RegistroDatosFormulario["formulario_vinculado"]==$registro_formularios["id"])
                            $seleccion_campo="SELECTED";
                        $PCO_SalidaCampoEspecial_FormularioVinculado.= '<option value="'.$registro_formularios["id"].'" '.$seleccion_campo.'>(Id.'.$registro_formularios["id"].') '.$registro_formularios["titulo"].'</option>';
                    }
    $PCO_SalidaCampoEspecial_FormularioVinculado.='
            </select>
        </div>';


#############################################################################
#############################################################################
    //Construye la cadena especial asociada al campo de tipo de control.
    $PCO_SalidaCampoEspecial_Columna="";   //Variable a ser pasada luego al formulario sobre una etiqueta
    $PCO_SalidaCampoEspecial_Columna.='
        <label for="PCOBD_Columna">'.$MULTILANG_Columna.':</label>
        <div class="form-group input-group">
            <select id="PCOBD_Columna" name="PCOBD_Columna" class="form-control input-sm" >';
                // Obtiene numero de columnas para el formulario
                $consulta_columnas=PCO_EjecutarSQL("SELECT columnas FROM ".$TablasCore."formulario WHERE id=? ","$formulario");
                $registro_columnas = $consulta_columnas->fetch();
                $columnas_formulario=$registro_columnas["columnas"];
                for ($i=1;$i<=$columnas_formulario;$i++)
                    {
                        $seleccion_campo="";
                        if ($PCO_RegistroDatosFormulario["PCOBD_Columna"]==$i)
                            $seleccion_campo="SELECTED";
                        $PCO_SalidaCampoEspecial_Columna.= '<option value="'.$i.'" '.$seleccion_campo.'>'.$i.'</option>';
                    }
    $PCO_SalidaCampoEspecial_Columna.='
            </select>
            <span class="input-group-addon">
                <a  href="#" data-toggle="tooltip" data-html="true"  title="'.$MULTILANG_FrmDesColumna.'"><i class="fa fa-question-circle icon-info"></i></a>
            </span>
        </div>';



#############################################################################
#############################################################################
    //Construye la cadena especial asociada al informe de eventos del control
    $LlaveParcial_FirmaSistema=substr($LlaveDePaso,-3);

    $PCO_SalidaCampoEspecial_ListaEventos='
        <label for="tipo_evento">'.$MULTILANG_Evento.'(s):</label>
        <div class="form-group input-group">
            <select  id="tipo_evento" name="tipo_evento" data-size=10 data-live-search=true class="selectpicker"  data-style="btn-warning">
                <option value="">'.$MULTILANG_SeleccioneUno.'</option>';

                    //Presenta los tipos de evento disponibles para controles (01,02 y 03)
                    $CategoriaEvento="";
                    $resultado_eventos = PCO_EjecutarSQL("SELECT * FROM ".$TablasCore."evento_inventario WHERE (categoria LIKE '01%' or categoria LIKE '02%' or categoria LIKE '03%') ORDER BY categoria");
                    while ($registro_eventos = $resultado_eventos->fetch())
                        {
                            if ($CategoriaEvento!=$registro_eventos["categoria"])
                                {
                                    $PCO_SalidaCampoEspecial_ListaEventos.= '<optgroup label="'.$registro_eventos["categoria"].'">';
                                    $CategoriaEvento=$registro_eventos["categoria"];
                                }
                            $PCO_SalidaCampoEspecial_ListaEventos.= '<option value="'.$registro_eventos["evento"].'" data-subtext="'.${str_replace("$","",$registro_eventos["descripcion"])}.'" >'.$registro_eventos["evento"].': </option>';
                            //TODO: Cerrar cada optgroup cuando cambia de categoria para optimizar mas la sintaxis
                        }

    $PCO_SalidaCampoEspecial_ListaEventos.='
            </select>
            <span class="input-group-addon">
                <a class="btn btn-primary btn-xs"  onclick="PCOJS_PopUpEventosJavascript();">
                    <i class="fa fa-plus"></i> '.$MULTILANG_Agregar.' '.$MULTILANG_Evento.'
                </a>
            </span>
        </div>
		<hr>';


    //$PCO_SalidaCampoEspecial_ListaEventos.=PCO_AbrirVentana($MULTILANG_Existentes, 'panel-primary');

    $PCO_SalidaCampoEspecial_ListaEventos.='
        <table class="table table-condensed btn-xs table-hover table-unbordered ">
			<thead>
            <tr>
				<td><b>'.$MULTILANG_Evento.'</b></td>
				<td></td>
				<td></td>
			</tr>
            </thead>
            <tbody>';

                $IdentificadorObjeto=$PCO_RegistroDatosFormulario["id"];
				$consulta_eventos_definidos=PCO_EjecutarSQL("SELECT id,".$ListaCamposSinID_evento_objeto." FROM ".$TablasCore."evento_objeto WHERE objeto='$IdentificadorObjeto' ");
				while($registro_eventos_definidos = $consulta_eventos_definidos->fetch())
					{
					    $IdUnicoEvento=$registro_eventos_definidos["id"];
                        $TituloPCoder_COMPLEMENTO=" - ID_HTML: ".$PCO_RegistroDatosFormulario["id_html"]." {$MULTILANG_Tipo} {$MULTILANG_Objeto}: ".$PCO_RegistroDatosFormulario["tipo"];
	                    $PCO_EnlaceScriptJS  ="javascript:var LMQTP=PCOJS_CargarArchivoPCoderBD('{$LlaveParcial_FirmaSistema}','','','','No','B','core_evento_objeto','javascript' ,'{$IdUnicoEvento}','js' ,'JavaScript','Iconos','1','<font color=white>Script_JS</font> {$MULTILANG_Evento}={$IdUnicoEvento} (tipo JavaScript) {$TituloPCoder_COMPLEMENTO}');";

						$PCO_SalidaCampoEspecial_ListaEventos.= '<tr>
								<td>'.$registro_eventos_definidos["evento"].'</td>
								<td align="right">
                                        <a class="btn btn-default btn-xs" href="'.$PCO_EnlaceScriptJS.'"><i class="fa fa-pencil"></i> '.$MULTILANG_Editar.'</a>
								</td>
								<td align="center">
										<a class="btn btn-danger btn-xs" href="javascript:var LMQTP=PCOJS_PopUpEliminarEventosJavascript('.$IdUnicoEvento.');"><i class="fa fa-trash"></i> '.$MULTILANG_Eliminar.'</a>
								</td>
							</tr>';
					}

	$PCO_SalidaCampoEspecial_ListaEventos.= '
	        </tbody>
        </table>';

    //$PCO_SalidaCampoEspecial_ListaEventos.=PCO_CerrarVentana();