function GenerarIDScript(longitud) {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

  for (var i = 0; i < longitud; i++)
    text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text.toUpperCase();
}


/*  ########################################################################
    ########################################################################
	Function: LanzarEditorScript
	De acuerdo a los contenidos actuales del formulario y que definen el script, lanza el editor de codigo con los parametros correctos

	Variables de entrada:

		CamposForm - Esta funcion utiliza los mismos campos del formulario.  CUIDADO: los campos pueden ser editados en caliente, esto no necesariamente obedecera a la naturaleza del script.

	Salida:
		Ventana del editor cargada mediante la funcion interna del framework
*/
function LanzarEditorScript() {
    //Variables para el llamado
    var AnchoVentana='';
    var AltoVentana='';
    var CerrarModal='No';

    var Origen_Archivo='B'; // Determina el origen del contenido para el archivo.  A=Archivo B=BaseDatos
    var Tabla_Archivo='core_scripts'; // Cuando el origen es B.  Indica el nombre de la tabla vinculada que almacena el contenido
    var Campo_Archivo='cuerpo'; // Cuando el origen es B.  Indica el nombre del campo que almacena el contenido
    var Llave_Registro=$("#id").val(); // Cuando el origen es B.  Indica valor del campo ID del registro que almacena el contenido

    var PCODER_archivo = ''; // - Ruta del archivo que sera abierto.
    var PCODER_ModoEditor=$("#lenguaje").val(); // Modo utilizado para el editor (lenguaje a ser reconocido)
    var PCODER_extension=''; // Extension de archivo asociada al contenido.  Si no se recibe y es un archivo se intenta tomar desde su nombre.  Obligatorio en las aperturas de contenido por BD.  Ej:  php | html | js | txt

    var PCODER_OcultarMenu = '0'; // - Indica a PCoder que no cargue la barra de menu superior y la barra de estado para hacer el editor mas amplio.  Se presentara mensaje advirtiendo como se puede abrir en caso que se desee.
    var PCODER_OcultarEstado = '0'; // - Oculta barra de estado del editor
    var PCODER_TipoMenu = 'Texto'; // - Indica el tipo de diseno de menu del editor como uno de dos valores:  Texto | Iconos.  Si no es especificado se asume tipo texto
    var PCODER_EstadoSimple = '1'; // - Indica a PCoder que no cargue la barra de estado inferior con datos sobre el contenido editado.  Solo presentara las opciones basicas de distribucion del editor y comando de saltar a una linea.
    var PCODER_SoloLectura = '0'; // - Determina si el editor ACE se inicia en modo de solo lectura.  Util para vistas o revision de versiones anteriores del documento.  Que permiten editor completo sin posibilidad de edicion
    var PCODER_Titulo = 'Script personalizado: '+$("#titulo").val(); // - Define un texto utilizado como titulo del documento cuando se requiera dar detalles para su edicion

    //CARGA EL EDITOR
    var LMQTP=PCOJS_CargarArchivoPCoderBD('{$LlaveParcial_FirmaSistema}',AnchoVentana,AltoVentana,PCODER_archivo,CerrarModal,Origen_Archivo,Tabla_Archivo,Campo_Archivo,Llave_Registro,PCODER_extension,PCODER_ModoEditor,PCODER_TipoMenu,PCODER_EstadoSimple,PCODER_Titulo);
}


/*  ########################################################################
    ########################################################################
	Function: LanzarEjecucionScript
	De acuerdo a los contenidos actuales del formulario y que definen el script, lanza el editor de codigo con los parametros correctos

	Variables de entrada:

		CamposForm - Esta funcion utiliza los mismos campos del formulario.  CUIDADO: los campos pueden ser editados en caliente, esto no necesariamente obedecera a la naturaleza del script.

	Salida:
		Ventana del editor cargada mediante la funcion interna del framework
*/
function LanzarEjecucionScript() {
    var CodigoUnicoScript=$("#codigo_script").val();
    var URLPopUp="index.php?PCO_Accion=PCO_EvaluarCodigoExterno&Codigo="+CodigoUnicoScript+"&Silenciar=No&Llave={$LlaveDePaso}&Presentar_FullScreen=1&Precarga_EstilosBS=0";
    PCOJS_MostrarMensaje("Resultados previos de ejecucion del Script","Cargando...","modal-wide oculto_impresion");
    $("#PCO_Modal_MensajeCuerpo").html('<b>TENGA EN CUENTA:</b> Si su script usa variables generadas en tiempo de ejecuci&oacute;n es probable que no las pueda reemplazar correctamente.  Esta opci&oacute;n solamente llama a la funci&oacute;n/acci&oacute;n del Framework <b>PCO_EvaluarCodigoExterno()</b> encargada de ejecuci&oacute;n y la cual usted deber&iacute;a llamar en su segmento de c&oacute;digo correspondiente cuando realmente desee correr este script personalizado en alguna parte de su aplicaci&oacute;n.<hr><iframe id="IFrameEmbebido" scrolling="yes" style="font-family: Roboto, monospace; font-size: 14px; background-color:darkgray; color:lightgray; border:0px;" height=400 width=100% src="'+URLPopUp+'"></iframe>');
    $("#PCO_Modal_MensajeBotones").html('<button id="boton_filtrar" type="button" class="btn btn-outline btn-info" data-dismiss="modal" onclick="" >Cerrar</button></a>');
}


/*  ########################################################################
    ########################################################################
	Function: PCO_ProbarSoporteLenguaje
	Utiliza un script interno de HolaMundo creado en un lenguaje determinado para presentar un mensaje al usuario junto con reemplazo de variables.  Usado para verificar si un lenguaje esta o no soportado del lado del servidor.

	Variables de entrada:

		IdLenguaje - Codigo unico del lenguaje sobre el Framework

	Salida:
		Ventana modal con los resultados de ejecucion
*/
function PCO_ProbarSoporteLenguaje() {
    var CodigoLenguaje=document.FRMBASEINFORME.PCO_Valor.value;
    var URLPopUp="index.php?PCO_Accion=PCO_ProbarSoporteLenguaje&Codigo="+CodigoLenguaje+"&Silenciar=No&Llave={$LlaveDePaso}&Presentar_FullScreen=1&Precarga_EstilosBS=0";
    PCOJS_MostrarMensaje("Resultados de prueba de ejecucion de lenguaje externo","Cargando...","modal-wide oculto_impresion");
    $("#PCO_Modal_MensajeCuerpo").html('<b>TENGA EN CUENTA:</b> Esta funcion utiliza un HolaMundo simple para saber si su servidor cuenta con soporte para el lenguaje deseado. Usted debe ver como resultado un mensaje de saludo del lenguaje especifico junto con su nombre de usuario como variable de ejemplo transportada .<hr><iframe id="IFrameEmbebido" scrolling="yes" style="font-family: Roboto, monospace; font-size: 14px; background-color:darkgray; color:lightgray; border:0px;" height=400 width=100% src="'+URLPopUp+'"></iframe>');
    $("#PCO_Modal_MensajeBotones").html('<button id="boton_filtrar" type="button" class="btn btn-outline btn-info" data-dismiss="modal" onclick="" >Cerrar</button></a>');
}


function FrmAutoRun()
    {
        //Genera el ID unico del Script
        if ($("#codigo_script").val()=="0" || $("#codigo_script").val()=="")
            {
                $("#codigo_script").val(GenerarIDScript(10));
                $("#PCOContenedor_btn_actualizar").hide();
                $("#PCOContenedor_btn_script").hide();
                $("#PCOContenedor_btn_ejecutar").hide();
            }
        else
            $("#PCOContenedor_btn_guardar").hide();  
    }