<?php session_start();//Se utiliza para pasar valores en $_SESSION a programas del FCKEditor 
$Programa="act.htm"; require("rutinas/directorio.php"); require("rutinas/leercok.php"); 
?>
<html>
<head>
<meta HTTP-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Net2Client</title>
<?php  
//Modif HR 2006-01-14 (Ref. 1642) cambio de cuerpo.css por main.css en este lugar y cambios múltiples en todo el programa
if ($HojaEstilos=="") $HojaEstilos="estilos/main.css";
//Modif HR-EA 2006-03-03 (Ref. 1689) cambio cajacalendario por calendar.js
?>
<link rel='stylesheet' type='text/css' href='<?php echo  $HojaEstilos ?>'>
<link rel='stylesheet' type='text/css' href='estilos/calendar.css'>
<script type='text/javascript' src='rutinas/validarhora.js'></script>
<script type='text/javascript' src='rutinas/descomponerfecha.js'></script>
<script type='text/javascript' src='rutinas/ajustarfecha.js'></script>
<script type='text/javascript' src='rutinas/validarentero.js'></script>
<script type='text/javascript' src='rutinas/validarnumero.js'></script>
<script type='text/javascript' src='rutinas/ayuda.js'></script>
<script type='text/javascript' src='rutinas/calendar.js'></script>
<script type='text/javascript' src='rutinas/manejoenlaces.js'></script>
<script type='text/javascript' src='rutinas/ajax.js'></script> <!-- Modif HR 2005-12-23 (Ref. 1621) Añadido -->
<style>td{vertical-align: top;} input {vertical-align:top;}</style>
<?php 
if ($AjustarFrame=="SI") {
 echo"
<script type='text/javascript' src='rutinas/ajustarframe.js'></script>";
}
?>

<?php  
/*
 Programa:		act.htm [1]
 Objetivo:		Mostrar un registro de la tabla EEEXXX y permitir su actualización (o inclusión si es nuevo)
 Descripcion:	Programa que muestra un registro (recibido como parámetro) de la tabla XXX,
 				(recibida como parámetro) y permite su actualización. El programa muestra unos campos u otros
 				dependiendo de la tabla que se está procesando. Cuando es la de Agentes (AGE) se muestran los
 				campos AGEPerfil y AGEPassword (siempre y cuando el usuario tenga el perfil apropiado.
 				Cuando es otra tabla, se muestra el campo XXXCodAgente, campo de enlace con la tabla
 				de agentes, que le da "propiedad" de una persona al	agente correspondiente
 Param Recib:	Nombre de la tabla (XXX), una coma y número del registro a mostrar.
 				Opcionalmente, pueden venir adicionalmente y separados por comas uno o varios valores:
 				EnlaceX=nnnn  En donde X es el número o letra de la tabla del enlace y nnn el valor
 				Si es 0, es un registro nuevo, que hay que crear.
 LlamadoPor:   	panelx.htm , panel2.htm y muchos programas más (listar.htm, ver.htm...)
 LlamaA: 		act.php    

 CAMBIAR SIEMPRE EN CONJUNTO: actint.htm, actmen.htm, actpub.htm, actpubdir.htm

*/
//Modif HR 2006-03-01 (Ref. 1681) modificados todos los alert de este programa para manejar apostrofes

//---------------------------------------- Letras prohibidas para las listas son sustituidas ---------------------------------------//
//Modif HR 2006-08-02 (Ref. 1799) añadir caracteres
//sugerencia para el futuro, hacer esto en base a la configuración hexadecimal, ya que se pueden haber escapado unos caracteres
$LetrasProhib=array(" ","ñ","á","à","è","é","ì","í","ò","ó","ù","ú","&",".","%",",","-","0","1","2","3","4","5","6","7","8","9","(",")","/","&",";","'","`","’","’");
$LetrasLegal=array ("_","n","a","a","e","e","i","i","o","o","u","u","_","_","_","_","_","a","b","c","d","e","f","g","h","i","j","_","_","_","_","_","_","_","_","_");
$NroSec=0;$NroListaPadre=-1;$NroAbsoluto=0;$NroListaHijos=-1;
$Nivel1="";
$Sep1="\x01";
$Sep2="\x02";

//----------------------------------  Procesar parámetro ------------------------------------
$ParametroCompleto=$QS; 

//Modif HR 2006-03-25 (Ref. 1705) Manejo del Returning
/*  check if the program is returning from act.php. If that is the case, prepare to initialize all fields
	with apropriate values. In particular, to avoid problems with single and double quotes, those values
	have been replace by x90 and x91 in act.php
*/
$Returning=false;
if (strpos($QS,'Returning')!==false){
	$Returning=true;
	$QS=str_replace('Returning','',$QS);
	$Chorizo=rtrim($Chorizo,"\x01");
	$Chorizo=str_replace("\x90","\'",$Chorizo);
	$Chorizo=str_replace("\x91",'\"',$Chorizo);
	$Chorizo=addcslashes($Chorizo, "\12\15");
	//Modif HR 2006-11-22 (Ref. 1858) instruccion anadida
	$Chorizo=str_replace("&lt;br&gt;","<br>",$Chorizo);
};
 
$PartesParametro=explode(",",$ParametroCompleto);
$CantEnlacesInicializados=count($PartesParametro);

// determinar si hay una lista de campos a mostrar y guardarlos en $CamposHabilitados
if ($CamposAMostrar!=""){
	$CamposHabilitados=explode(",",$CamposAMostrar);
};
//----------------------------------  Determinar la empresa ------------------------------------
$XXX =$PartesParametro[0];
$TAB= $EEE.$XXX;
//---------------------------------- Abrir la tabla de parametros --------------------
require("rutinas/tablaparametros.php");
//Modif HR-EA 2006-03-01 (Ref. 1689) dos instrucciones siguientes
$DateFormatArray=array('yyyy-mm-dd','dd/mm/yyyy','mm/dd/yyyy');
$FormatoFecha=$DateFormatArray[$PP["ForFecha"]];

//----------------------------------  Aplicar estilo particular ------------------------------------
//Modif HR 2006-01-12 (Ref. 1639) Añadido
if ($PP[EstiloCuerpo]!="") 
	echo "<link rel='stylesheet' type='text/css' href='../ZZZ/$BD/$EE/$EEE/$PP[EstiloCuerpo]'>";

//----------------------------------  Leer cookie ------------------------------------
echo "<script language=JavaScript>";
if ($XXX=="INT") die("</script><p class=mensajeerror>$MM[TablaInvalida]</p>");

//----------------------------------  Determinar la clave ------------------------------------
$Clave=$PartesParametro[1];
if ($Clave==0)$personanueva=true;else $personanueva=false;

require("idm/ppal$Idioma.php");
require("idm/secun$Idioma.php");
require("rutinas/campos.php");
require("rutinas/utilities.php");
require("rutinas/cajalista.php");
require("procesos/caseanexos.php");
require("rutinas/campoenlace.php");//Rutinas CampoEnlace,MostrarLinks,AnadirLink,RemoverLink...

$EE2=AveriguarTablaCompart($XXX,$EEE); 	$E2=substr($EE2,0,2);

//---------------------------  Llamar rutina Selección de colores ------------------------------------
// Devuelve las variables $fondo, $letras y $fondotabla 
require("rutinas/seleccioncolores.php");

//---------------------------  Determinar si puede editar listas ------------------------------------
// OJO: No se está utilizando por ahora, ya que abajo está como comentario
if (EstaAutorizado($XXX,"EditList")=="true") $puedeanadirlistas=true; else $puedeanadirlistas=false;

//----------------------------------  Include PHP particular ------------------------------------
//Modif HR 2006-01-12 (Ref. 1639) Añadido
if ($PP[PHPCuerpo]!="") require("../ZZZ/$BD/$EE/$EEE/$PP[PHPCuerpo]");

//----------------------------------  Buscar el nombre del usuario ------------------------------------
if ($CookieAGENTE !=-1) {
	$NombreConect=NombreAgente($CookieAGENTE);
	$TablaConect="AGE";
} else {
	$NombreConect=NombreUsuarioExterno($COKExterno,$COKExternoLogin);
	$TablaConect=$COKExternoTabla;
}

//-----------------  determinar si es un registro nuevo o una actualización ------------------------
if ($personanueva){
	$Codigo=0;
	if (EstaAutorizado($XXX,"AddRec")=="false"){die ("</script><p class=mensajeerror>$MM[SinAutorizCrear]</p>");};
	
	$XXXCodAgente = $CookieAGENTE;
	$XXXCodExterno = $COKExterno;
	
	$XXXNombre="";

	// Inicializar todos los campos (CONCampo viene de rutinas/campos.php)
	$i=0;
	foreach ($CONCampo as $dummy=>$Campo){
		$CAMPO[$i]="";

		switch ($CONTipo[$i]){
			case "Lista": 
				if ($CONDefault[$i]!="") $CAMPO[$i]=$CONDefault[$i];
					else $CAMPO[$i]="---"; 
				break;
			case "Enlace":
				for ($j=2; $j<$CantEnlacesInicializados; $j++){
					$Partes=explode("=",$PartesParametro[$j]);
					if ($Partes[0]==$CONCampo[$i]) $CAMPO[$i]=$Partes[1]; 				
				}; // del for
				break;
        // Modif MFC 2006-05-24 (Ref. 1752) Se copio el procedimiento de Enlace para crear el de Link
        case "Link":
				for ($j=2; $j<$CantEnlacesInicializados; $j++){
					$Partes=explode("=",$PartesParametro[$j]);
					if ($Partes[0]==$CONCampo[$i]) $CAMPO[$i]=$Partes[1]; 				
				}; // del for
				break;
        // FIN Modif 1752
			case "Fecha":
				if ($CONDefault[$i]=="HOY") $CAMPO[$i]=$FechaHoy;
					else $CAMPO[$i]=$CONDefault[$i];
				break;
			case "Hora":
				if ($CONDefault[$i]=="AHORA") $CAMPO[$i]=$HoraCompleta;
					else $CAMPO[$i]=$CONDefault[$i];
				break;
			case "Monto":
				if ($PP[Decimal]==',') $CAMPO[$i]=str_replace(".",",",$CONDefault[$i]);
					else $CAMPO[$i]=$CONDefault[$i];
				break;
			default:
				$CAMPO[$i]=$CONDefault[$i];
				break;
		};
		$i++;
	};
	$ultcampo=$i-1;
}else{
	//	No es registro nuevo, es una actualización. se debe leer.
	$bb=$XXX."Codigo";
	$cc=$XXX."Nombre";

	$CantP=LeerStd($busqueda,$XXX,"*","$bb='$Clave'","","","","");
	$row = mysql_fetch_assoc($busqueda);
	$XXXCodigo= $row[$bb];
	if ($XXXCodigo==""){die( "}</script><p class=mensajeerror>$MM[NoRegistro]</p>"); };
	$XXXNombre= $row[$cc];
	$XXXNombre=str_replace("'","\'",$XXXNombre); 
	
	$NombreLogin=$XXX."Login";
	if (($XXX=="AGE") || ($PP[$NombreLogin]=="SI")) {
		$NombrePerfil=$XXX."Perfil"; $NombreMacroPerfil=$XXX."MacroPerfil"; $NombrePassword=$XXX."Password"; $NombreActivo=$XXX."Activo";
		$XXXPerfil= "$row[$NombrePerfil]";
		$XXXMacroPerfil= "$row[$NombreMacroPerfil]";
		$XXXPassword= "$row[$NombrePassword]";
		$XXXActivo= "$row[$NombreActivo]";
	}
	if ($XXX!="AGE") {
		$dd=$XXX."CodAgente";
		$XXXCodAgente= "$row[$dd]";
		$dd2=$XXX."CodExterno";
		$XXXCodExterno= "$row[$dd2]";
		
	};   
    // Ver si tiene autorización para modificar registros
		if (($XXX=="AGE") || (($CookieAGENTE=="-1")&&($COKExternoTabla==$XXX)) ){   //Si el conectado es de esa tabla o la tabla es AGE (TEMP)
			if (EsSelf($XXX,$XXXCodigo))  $Oper="EditOwnRec"; else $Oper="EditOtherRec";
		} else {
			if (EsDueno($XXXCodAgente,$XXXCodExterno))  $Oper="EditOwnRec"; else $Oper="EditOtherRec";
		}

	//---------------  Verificar si la persona está autorizada para modificar el registro ----------------------------
	if (EstaAutorizado($XXX,$Oper)=="false"){die ("</script><p class=mensajeerror>$MM[SinAutorizModif]</p>");};
	
	//	Pasar a variables de php los campos de la base de datos
	$i=0;
	foreach ($CONCampo as $dummy=>$Campo){
		$cc=$XXX.$Campo; // formar el nombre del campo
		$CAMPO[$i]=$row[$cc];  // está guardando en CAMPO el contenido del campo
		//	Ajustes especiales
		switch ($CONTipo[$i]){
			case "Linea":  case "Lista": // manejo de apóstrofes
				$CAMPO[$i]=str_replace("'","\'",$CAMPO[$i]); break; 
			case "Bloque": // manejo de apóstrofes, line feed y carriage return
				$CAMPO[$i]=str_replace("'","\'",$CAMPO[$i]); 
				$CAMPO[$i]=addcslashes($CAMPO[$i], "\12\15");
				break;
			case "Monto": // cambio de punto decimal a coma decimal
				if ($PP[Decimal]==',') $CAMPO[$i]=str_replace(".",",",$CAMPO[$i]); break;
			case "Fecha": // campos con fecha en cero, dejar en blanco
				if ($CAMPO[$i]=="0000-00-00") $CAMPO[$i]=""; 
				$CAMPO[$i]=$CAMPO[$i];
				break;
			case "Hora": // quitar los segundos, campos con hora en cero, dejar en blanco
				$CAMPO[$i]=substr($CAMPO[$i],0,5);
				if ($CAMPO[$i]=="00:00") $CAMPO[$i]=""; break;
		}; // Find el switch
		//---------------  Verificar si la persona está autorizada para ver el campo ----------------------------
		if ($CONRest[$i]!="") {
			$ReadFieldX="ReadField".$CONRest[$i];
			//if (EstaAutorizado($XXX,$ReadFieldX)!="true") $CAMPO[$i]=$SepPpal.~$CAMPO[$i];
			// esto indica que el campo está criptografiado
		}; 
		$i++;
	};
	$ultcampo=$i-1;
}; // del if !personanueva

//------------------------------- Determinar nivel de protección de los campos -------------------------------------
for ($i=0; $i<=$ultcampo; $i++){
	// determinar si hay lista de campos a listar y en caso afirmativo, si el campo está ahí
	if ($CamposAMostrar!=""){
		if (!in_array ($XXX.$CONCampo[$i],$CamposHabilitados)){
			$EsVisible[$i]=false;
			$EsModificable[$i]=false;
			continue;
		};
	};
	if ($CONRest[$i]=="") {
		$EsModificable[$i]=true; $EsVisible[$i]=true;
	}else{
		$ReadFieldX="ReadField".$CONRest[$i];
		$EditFieldX="EditField".$CONRest[$i];
		if (EstaAutorizado($XXX,$EditFieldX)=="true") $EsModificable[$i]=true; else $EsModificable[$i]=false;
		if (EstaAutorizado($XXX,$ReadFieldX)=="true") $EsVisible[$i]=true;
		else {$EsVisible[$i]=false; $EsModificable[$i]=false;};
	}; 
};

//-------------------------  Eliminación de registros -------------------------------------
echo "
function eliminarregistro(){
	pag='procesos/eliminar.htm?$BD$COKCodigo$SepPpal$XXX,$XXXCodigo';
	window.open(pag,'_blank');
};";

//-------------------------  Criptografía -------------------------------------
// En realidad, aquí no se criptografía sino que se marca el campo para que act.php lo haga
echo "
function Criptografiar(){
	document.seg.XXXPassword.value='*****'+document.seg.XXXPassword.value;
};";

//-------------------------  Unicidad -------------------------------------
// verifica que el campo sea único. si no lo es, da un mensaje y cambia el color de fondo
echo "
function AjaxVerificarUnico(COKO,Tabla,Clave,Campo,NbeExterno,ObjCampo){
	xmlhttp=Ajax('Tabla='+Tabla+'&Campo='+Campo+'&Valor='+ObjCampo.value+'&Clave='+Clave,'rutinas/ajaxValidarUnico.php?'+COKO);
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState == 4){
			// si devuelve REP, está repetido
			if(xmlhttp.responseText=='REP'){
				ObjCampo.style.backgroundColor='salmon';
				alert('$MM[Campo]: '+NbeExterno+' $MM[YaExiste]');
				ObjCampo.focus();
			}else ObjCampo.style.backgroundColor='';
		}
	}
};
";
//=======================================  Validaciones de campos =======================================
echo "
function validarforma(){\n";
	// Ver si el nombre es obligatorio o restringido
	$nombredelnombre="Nombre".$XXX; 
	$RestricNombre="RestricNombre".$XXX; $RestricNombre=$PP[$RestricNombre];
	$ObligNombre="ObligNombre".$XXX; $ObligNombre=$PP[$ObligNombre];
	$UnicoNombre="UnicoNombre".$XXX; $UnicoNombre=$PP[$UnicoNombre];
	if ($ObligNombre=="SI"){
		echo "
		if (document.seg.XXXNombre.value ==''){
			alert ('".str_replace("'","\'","$PP[$nombredelnombre] : $MM[CampoObligatorio]")."');
			document.seg.XXXNombre.focus(); return false;};
		";
	};	// del if
	
	//	ir campo por campo verificando si es obligatorio o no y cual es el tipo de validacion que necesita
	for ($i=0; $i<=$ultcampo; $i++){
		if (!$EsModificable[$i]) continue;
		//	verificar si es obligatorio
		//Modif HR 2006-01-14 (Ref. 1641) cambiar ifs por switch e incluir el caso MLink
		if ($CONObligatorio[$i]=="SI"){
			switch ($CONTipo[$i]){
				//Modif BG 2006-03-09 (Ref. 1697) consideracion de obligatoriedad usando FCK
				case "Bloque":
					if ($CONEditor[$i]=="FCK"){
						echo "\n 	
						    var oEditor = FCKeditorAPI.GetInstance('CPO$i'); 
						    var texto = oEditor.GetHTML(true);
						    if (texto==''){ 
								alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio]")."');
								return false;
							}";
					}else{
						echo "\n if (document.seg.CPO$i.value =='' || document.seg.CPO$i.value =='---'){
								alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio] ")."');
								document.seg.CPO$i.focus(); return false;};";
					
					}
					break;
				case "Fecha":
					echo "\n if (document.seg.FormatCPO$i.value ==''){
						alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio]")."');
						document.seg.FormatCPO$i.focus(); return false;};";
					break;
				case "Archivo": case "Imagen": case "Anexos": 
					echo "\n if (document.seg.CPO$i.value =='' || document.seg.CPO$i.value =='---'){
						alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio] ")."');
						return false;};";
					break;
				case "MLink":
					echo "\n if (document.seg.Codigo_$CONCampo[$i]_0.value ==''){
						alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio] ")."');
						document.seg.Codigo_$CONCampo[$i]_0.focus(); return false;};";
					break;					
				default: 
					echo "\n if (document.seg.CPO$i.value =='' || document.seg.CPO$i.value =='---'){
						alert ('".str_replace("'","\'","$CONNombre[$i] : $MM[CampoObligatorio] ")."');
					document.seg.CPO$i.focus(); return false;};";
			}; // fin del switch
		};	// del if CONObligatorio
		//	otras validaciones
	
		if ($CONRest[$i]!="") {
			$ReadFieldX="ReadField".$CONRest[$i];
			if (EstaAutorizado($XXX,$ReadFieldX)!="true") continue; //cpo protegido: no validar
		}; 
		switch ($CONTipo[$i]){
			case "Fecha": 
	
				echo "fecha = descomponerfecha(document.seg.FormatCPO$i.value,$PP[ForFecha]);
				if (document.seg.FormatCPO$i.value != '' && fecha=='MALA'){
					alert ('".str_replace("'","\'","$MM[FechaInvalida] $PP[FormatoFecha]")."');
					document.seg.FormatCPO$i.focus(); 
					return false;
				};
				document.seg.CPO$i.value=ajustarfecha(document.seg.FormatCPO$i.value,$PP[ForFecha]);"; 
				break;
			case "Hora": 
				echo "hora = validarhora(document.seg.CPO$i.value);
				if (document.seg.CPO$i.value != '' && hora=='MALA'){
					alert ('".str_replace("'","\'","$MM[HoraInvalida]")."');
					document.seg.CPO$i.focus();
					return false;
				};
				document.seg.CPO$i.value=hora;"; 
				break;
			case "Cant": case "Enlace":
				// verificar que sea un entero 
				echo "if (!validarentero(document.seg.CPO$i.value)){
					alert ('".str_replace("'","\'","$MM[NoEsEntero]")."');
					document.seg.CPO$i.focus();
					return false;
				};";
				break;
			case "Monto": 
				// verificar que sea un número
				echo "if (!validarnumero(document.seg.CPO$i.value,'$PP[Decimal]')){
					alert ('".str_replace("'","\'","$MM[NumeroInvalido]")."');
					document.seg.CPO$i.focus();
					return false;
				};";
				break;
			case "Checkbox": 
				if ($CONRest[$i]!="") {
					$ReadFieldX="ReadField".$CONRest[$i];
					if (EstaAutorizado($XXX,$ReadFieldX)=="false") break;
				};
				echo "if (document.seg.CAJA$i.checked) document.seg.CPO$i.value=1;
					else document.seg.CPO$i.value=0;";
				break;
			case "Email": // verificar que sea un email
				echo "if (!emailcheck(document.seg.CPO$i.value))
					{document.seg.CPO$i.focus(); return false;};";
				break;
		}; // Find el switch
		//---------------  Verificar valores minimos y maximos ----------------------------
		if ($CONTipo[$i]=="Monto" | $CONTipo[$i]=="Cant") $Apost=""; //Cuando las cantidades son numéricas, no se usa apóstrofe
			else $Apost="'";
	
		if ($CONTipo[$i]=="Fecha"){
			if ($CONMin[$i]=="HOY") $CONMin[$i]=$FechaHoy;
			if ($CONMax[$i]=="HOY") $CONMax[$i]=$FechaHoy;
		};
	
		if ($CONMin[$i]!="") echo "
		valornumerico=document.seg.CPO$i.value.replace(',','.');
		if (document.seg.CPO$i.value!='' && valornumerico < $Apost$CONMin[$i]$Apost){
			alert ('".str_replace("'","\'","$CONNombre[$i]: $MM[DebajoMin] ($CONMin[$i])")."');
			document.seg.CPO$i.focus(); return false;
		};
		";
		if ($CONMax[$i]!="") echo "
		valornumerico=document.seg.CPO$i.value.replace(',','.');
		if (document.seg.CPO$i.value!='' && valornumerico > $Apost$CONMax[$i]$Apost){
			alert ('".str_replace("'","\'","$CONNombre[$i]: $MM[ArribaMax] ($CONMax[$i])")."');
			document.seg.CPO$i.focus(); 
			return false;
		};
		";
	};  // fin del for
	// Hasta aquí todo está bien. Cambiar las comas decimales por puntos decimales
	for ($i=0; $i<=$ultcampo; $i++){
		if (!$EsModificable[$i]) continue;
		if ($CONTipo[$i]=='Monto' & $PP[Decimal]==',') 
			echo "document.seg.CPO$i.value=document.seg.CPO$i.value.replace(',','.');";
	};
	// MODIF SA: 2005-09-06 (Ref:1558)
	//-------------------  Determinar si hay que hacer un require de JavaScript --------------------------------
	$aa="IncludeJSactValidar$XXX"; $NbeInclude=$PP[$aa];
	if ($NbeInclude!="") {
		if (substr($NbeInclude,0,1)=="*") {
			if ($PP[Paquete]=="") require("../ZZZ/$BD/".substr($NbeInclude,1));
			else require("../paq/$PP[Paquete]/$COKDirectorio/".substr($NbeInclude,1));
		}else require("../ZZZ/$BD/$E2/$EE2/$NbeInclude");
	};
	
	echo "return true;
};"; // fin validar forma
//-------------------------  Funcion de validacion de emails -------------------------------------
require("rutinas/emailcheck.php"); 

//-------------------------  Funcion de poner la hora -------------------------------------
// No está funcionando
echo "function ponerhora(CampoHora){\n
CampoHora='ahora';
alert('In development');

}";

//=======================================  INICIALIZACIONES =======================================
echo "function inicializar(){\n";
	//Modif HR 2006-03-25 (Ref. 1705) manejo del Returning en toda la rutina 
	//	poner el campo de código y del nombre
	echo "
	document.seg.XXXCodigo.value='$XXXCodigo';
	document.seg.XXXNombre.value='$XXXNombre'; document.seg.OLDXXXNombre.value='$XXXNombre';
	";

	//	Inicializaciones de los campos especiales de cada tabla
	$NombreLogin=$XXX."Login";
	if (($XXX=="AGE") || ($PP[$NombreLogin]=="SI")) {
		echo "\ndocument.seg.OLDXXXPerfil.value='$XXXPerfil';\n";
		echo "\ndocument.seg.OLDXXXMacroPerfil.value='$XXXMacroPerfil';\n";
		echo "\ndocument.seg.OLDXXXPassword.value='$XXXPassword';\n";
		echo "\ndocument.seg.OLDXXXActivo.value='$XXXActivo';\n";
		if ($Returning){
			echo "\ndocument.seg.XXXPassword.value=document.seg.OLDXXXPassword.value;\n";
		}else{
			echo "\ndocument.seg.XXXPerfil.value='$XXXPerfil';\n";
			echo "\ndocument.seg.XXXMacroPerfil.value='$XXXMacroPerfil';\n";
			echo "\ndocument.seg.XXXPassword.value='$XXXPassword';\n";
			echo "\ndocument.seg.XXXActivo.value='$XXXActivo';\n";   
		};
	};
	if ($XXX!="AGE") {
		echo "document.seg.OLDXXXCodAgente.value='$XXXCodAgente';\n";
		echo "document.seg.OLDXXXCodExterno.value='".substr($XXXCodExterno,4)."';\n";
		if (!$Returning){
			echo "document.seg.XXXCodAgente.value='$XXXCodAgente';\n";	 
			echo "document.seg.XXXCodExterno.value='".substr($XXXCodExterno,4)."';\n";   
			echo "document.seg.XXXTabExterno.value='".substr($XXXCodExterno,0,3)."';\n";   
		};
	}
	for ($i=0; $i<=$ultcampo; $i++){
		if (!$EsVisible[$i]) continue;
		echo "\ndocument.seg.OLDCPO$i.value='$CAMPO[$i]';";
		if (!$Returning){
			echo "\ndocument.seg.CPO$i.value='$CAMPO[$i]';";
			if ($CONTipo[$i]=="Fecha" & $EsVisible[$i])
				echo "document.seg.FormatCPO$i.value='".FormatFecha($CAMPO[$i])."';"; 
		};
	};
	//Modif HR 2006-03-25 (Ref. 1705)
	if ($Returning){
		// control came from act.php. Must reinialize values
		$aa=explode($Sep1,$Chorizo);
		foreach ($aa as $dummy=>$Pair){
			$bb=explode($Sep2,$Pair);
			// get field number to find out if it is a date or a password
			$FieldNumber=str_replace("CPO","",$bb[0]);
			if ($CONTipo[$FieldNumber]=="Password"){
				echo "\ndocument.seg.CPO$FieldNumber.value='document.seg.OLDCPO$FieldNumber.value';";
				continue;
			};
			echo "\ndocument.seg.$bb[0].value='$bb[1]';";
			$CAMPO[$FieldNumber]=$bb[1];
			if ($CONTipo[$FieldNumber]=="Fecha" & $EsVisible[$FieldNumber])
				echo "\ndocument.seg.Format$bb[0].value='".FormatFecha($bb[1])."';"; 
		};
	};
echo "\n}";  // de funcion inicializar
echo "
var MM=new Array(\"$MM[BuscarEn]\",\"$MM[NoRegistro]\",\"$MM[EscribaBusqueda]\");
</script>";
//Modif EA 2005-11-04 (Ref. 1582) añadir llamada a PrepararEnlace

if ($AjustarFrame=="SI") {
	$onLoad=" onLoad='resizeIframe();PrepararEnlace(\"$COKO\")'";
}else{
	$onLoad=" onLoad='PrepararEnlace(\"$COKO\")'";
}
// Ver si hay que cambiar el tamaño de la tabla
//Modif HR 2006-01-12 (Ref. 1638) cambio ancho de tabla a 95% en vez de 775
if ($Ancho=="") {
	$Pos1=strpos($cok[COKGlobal8],"Ancho=");
	if ($Pos1===false) $Ancho="95%";
	else{
		$Pos2=strpos(substr($cok[COKGlobal8],$Pos1),";");
		if ($Pos2===false) $Ancho=substr($cok[COKGlobal8],$Pos1+6);
		else $Ancho=substr($cok[COKGlobal8],$Pos1+6,$Pos2-$Pos1);
	};
};
if ($Ancho!="") {
	//Modif HR 2006-04-01 (Ref. 1722) sig pregunta
	if (is_numeric($Ancho)) $extraAncho=" style='width:$Ancho"."px;'";
	else $extraAncho=" style='width:$Ancho'";
}
if ($AnchoCol1=="") {
	$AnchoCol1="25%";
}
if ($AnchoCol2=="") {
	$AnchoCol2="25px";
}
if ($AnchoCol3=="") {
	$AnchoCol3="72%";
}
echo "</head><body id='body$XXX$Codigo' class='body$XXX' $onLoad$extraAncho>";
//=======================================  TÍTULO =======================================
if ($Titulo=="") $Titulo="$MM[CreacionActualizacionDe] $PP[$XXX]";
if ($Titulo!="NO"){
	if ($AyudaTitulo=="") $AyudaTitulo="26";
	//Modif HR 2006-01-14 (Ref. 1640)
	echo "<div id='heading' style='background-color:$fondo; color:$letras;'>
		<span style='position:absolute;top:5px;width:100%;text-align:center;'>$Titulo</span>";
	if ($AyudaTitulo!="0") echo "<span style='position:absolute;right:10px;top:3px;cursor:hand;'>
		<img border='0' src='imagenes/help2.gif' alt='SOS'
		onClick=\"window.open ('ayuda.htm?$COKO;$AyudaTitulo','_blank','left=200,top=250,width=600,height=300,resizable,scrollbars');\">
		</span>";
	echo "</div>";
}
//=================================  Forma de entrada de datos =====================================

echo "<form name='seg' onSubmit='return validarforma()' method='POST' action='act.php?$BD$COKCodigo$SepPpal$XXX'>
<input type='hidden' name='Chorizo'>
<input type='hidden' name='ReturningAddr' value='$QS'>
"; 
//OPTIMIZACION: agrupar todo lo anterior en un loop y tomar en cuenta que el titulo puede tener apóstrofes
if (isset($Titulo)) echo "<input type='hidden' name='Titulo' value='$Titulo'>"; 
if (isset($AyudaTitulo)) echo "<input type='hidden' name='AyudaTitulo' value='$AyudaTitulo'>"; 
if (isset($HojaEstilos)) echo "<input type='hidden' name='HojaEstilos' value='$HojaEstilos'>";
if (isset($OcultarDueno)) echo "<input type='hidden' name='OcultarDueno' value='$OcultarDueno'>"; 
if (isset($OcultarCodigo)) echo "<input type='hidden' name='OcultarCodigo' value='$OcultarCodigo'>"; 
if (isset($AjustarFrame)) echo "<input type='hidden' name='AjustarFrame' value='$AjustarFrame'>"; 
if (isset($Ancho)) echo "<input type='hidden' name='Ancho' value='$Ancho'>"; 
if (isset($NOENLACES)) echo "<input type='hidden' name='NOENLACES' value='$NOENLACES'>"; 
if (isset($IrExtendido)) echo "<input type='hidden' name='IrExtendido' value='$IrExtendido'>"; 
if (isset($ResultadoOK)) echo "<input type='hidden' name='ResultadoOK' value='$ResultadoOK'>"; 
if (isset($FrameResultadoOK)) echo "<input type='hidden' name='FrameResultadoOK' value='$FrameResultadoOK'>"; 
if (isset($VersupOK)) echo "<input type='hidden' name='VersupOK' value='$VersupOK'>"; 
if (isset($ReturnCokOK)) echo "<input type='hidden' name='ReturnCokOK' value='$ReturnCokOK'>"; 
echo "<input type='hidden' name='XXXCodigo'>
<input type='hidden' name='idio' value='$Idioma'>
<table border='0' cellspacing=0 style='border-collapse: collapse' bordercolor='#111111' width='$Ancho'>
<colgroup><col width='$AnchoCol1' align='right' valign='center'><col width='$AnchoCol2' valign='center'><col width='$AnchoCol3' valign='center'></colgroup>";

//-------------------------------  Código del registro -------------------------------------
if ($OcultarDueno=="SI") {
	$StyleOwner=" style='display:none;'";
}
if ($OcultarCodigo=="SI") {
	$StyleCode=" style='display:none;'";
}
$NombreClave="Nro".$XXX;
echo "<tr id='$XXX"."Codigo'$StyleCode><td id='$XXX"."Codigo' class='td_CMP'><p class='nbecampo'><b>$PP[$NombreClave]</b></p></td><td></td>";
//	Poner el código
if ($XXXCodigo==0) 
	echo "<td id='$XXX"."Codigo_FLD' class='td_FLD'$StyleCode>".strtoupper($MM[Nuevo])."</td></tr>"; 
  	else echo "</td><td id='$XXX"."Codigo_FLD' class='td_FLD'><b><p class=codigo$XXX>$XXXCodigo</p></b></td></tr>";

//-------------------------------  Agente correspondiente -------------------------------------
//	Si es la tabla PER o EVE Poner CodAgente (Campo Obligatorio)
if ($XXX!="AGE"){
	if ($XXXCodAgente==-1) {
		$TablaDueno=substr($XXXCodExterno,0,3);
		$NombreDueno=NombreUsuarioExterno($XXXCodExterno,"")."<!--$XXXCodExterno-->";
	} else {
		$TablaDueno="AGE";
		$NombreDueno=NombreAgente($XXXCodAgente);
	}
	$TipoUsuario=TipoUsuario($TablaDueno);
	echo"<tr id='$XXX"."CodAgente'$StyleOwner><b><td class='td_CMP'><p class='nbecampo'>$PP[$TipoUsuario]</p></td>
	<td></td>
		<td id='$XXX"."CodAgente_FLD' class='td_FLD'>";
	echo "<input type='hidden' name='OLDXXXCodAgente'>"; 
	
	// verificar el perfil de autorizacion del agente para ver si se pone su nombre o una caja con los agentes
	// Revisar que el dueño y el conectado sean del mismo tipo de usuario (osea la misma tabla)
	echo "<input type='hidden' name='XXXTabExterno' value='$TablaDueno'>";
	if ( (($CookieAGENTE!=-1)&&($XXXCodAgente!=-1)) ||
	  		(($CookieAGENTE==-1)&&($XXXCodAgente==-1)&& ($COKExternoTabla==$TablaDueno))  )  {
	// Son de la misma tabla, PUEDEN tener select si estan autorizados
		if (EstaAutorizado($XXX,"EditOtherRec")!="false"){
			if ($XXXCodAgente!=-1) {
				echo "<input type='hidden' name='OLDXXXCodExterno'>";
				echo "<input type='hidden' name='XXXCodExterno'>
				<select size=1 name='XXXCodAgente'><option value='---' selected>---</option>";
				// CREAR LA LISTA DE AGENTES
				require("rutinas/cajaagentes.php"); 
				echo "</select></td></b></tr>\n";
			} else {
				echo "<input type='hidden' name='XXXCodAgente'><input type='hidden' name='OLDXXXCodExterno'>
					<select size=1 name='XXXCodExterno'><option value='---' selected>---</option>";
				// CREAR LA LISTA DE USUARIOS
				$TablaParaCajaUsuarios=$TablaDueno;
				require("rutinas/cajausuarios.php"); 
				echo "</select></td></b></tr>\n";
			}
		} else {
			$soloHiddens="SI";
		}
	} else {
	// Son de tablas distintas, NO pueden tener select, mueren con los hidden;
			$soloHiddens="SI";
	}
	
	if ($soloHiddens=="SI"){
		// no tiene autorización para ingresar datos de otros agentes, por lo tanto no se deja la opción
		// de modificar este campo (No se usa una campo sino que se pone como literal
		echo "<input type='hidden' name='XXXCodAgente'><input type='hidden' name='XXXCodExterno'><input type='hidden' name='OLDXXXCodExterno'>
					$NombreDueno";
	}	
}; 

//-------------------------------  Nombre -------------------------------------
echo "<input type='hidden' name='OLDXXXNombre'>"; 
//	Ver el nivel de protección
if ($RestricNombre=="") {
	$Modificable=true; $Visible=true;
}else{
	$ReadFieldX="ReadField".$RestricNombre;
	$EditFieldX="EditField".$RestricNombre;
	if (EstaAutorizado($XXX,$ReadFieldX)=="true") $Visible=true; else $Visible=false;
	if (EstaAutorizado($XXX,$EditFieldX)=="true") $Modificable=true; else $Modificable=false;
}; 
if (!$Visible){
	echo "<input type='hidden' name='XXXNombre'>"; //Indicacion de que debe ser criptografiado
}else{
	if ($ObligNombre=="SI"){$Bold="<b>";}else{$Bold="";};
	echo "<tr id='$XXX"."Nombre'><b><td class='td_CMP'><p class='nbecampo'>$Bold $PP[$nombredelnombre]</b></p></td>";
	// poner ahora la ayuda (cuando existe)
	$CampoDeAyuda="AyudaNombre$XXX";
	if ($PP[$CampoDeAyuda]!=""){
	//Modif IL 2006-05-17 (Ref.1743) Inicio
			$PP[$CampoDeAyuda]=str_replace('"',"&quot;",$PP[$CampoDeAyuda]); //Modif HR 2006-02-25 (Ref. 1676)
			$Temp0=str_replace("'","\'",$PP[$CampoDeAyuda]);
			$Temp0=addcslashes($Temp0,"\12\15");
			$Temp0=str_replace("\\r\\n","<br>",$Temp0);
			$Temp0=str_replace("\\n","",$Temp0);	
			$ff="javascript:ayuda('$PP[$nombredelnombre]','$Temp0')";
			echo "<td><a tabindex=-1 href=\"$ff\">";
			echo "<img border='0' "."src='imagenes/help.gif' alt=\"".$PP[$CampoDeAyuda]."\"></a></td>";
		//Modif IL 2006-05-17 (Ref.1743) Fin
	}else echo"<td></td>";
	$LongNombre=$PP["LongNombre".$XXX];
	if ($LongNombre=="") $LongNombre=100;
	//Modif H-EA 2006-09-20 (Ref. 1812)
	// verificación unicidad campo nombre
	if ($PP["UnicoNombre".$XXX]=="SI") $Unicidad="onChange=\"AjaxVerificarUnico('$COKO','$XXX','$XXXCodigo','Nombre','".$PP["Nombre".$XXX]."',this);\"";
	else $Unicidad="";

	if ($Modificable) echo "\n\t<td id='$XXX"."Nombre_FLD' class='td_FLD'><input type='text' id='$XXX"."Nombre_CPO' name='XXXNombre' size='$LongNombre' maxlength='$LongNombre' $Unicidad></td></b></tr>";
		else echo "\n\t<td id='$XXX"."Nombre_FLD' class='td_FLD'><input type='hidden' name='XXXNombre'>$XXXNombre</td>";
};
	
//-------------------------------  Perfil  -------------------------------------
if (($XXX=="AGE") || ($PP[$NombreLogin]=="SI")) {
	echo "<input type='hidden' name='OLDXXXActivo'>
	<input type='hidden' name='OLDXXXPerfil'>
	<input type='hidden' name='OLDXXXMacroPerfil'>
	<input type='hidden' name='OLDXXXPassword'>
	";
	//	Si es la tabla es AGE o Logineable Poner el Perfil si tiene acceso a los campos restringidos "L"
	if ($TablaDeOtraAplic[$XXX]==""){ // no tiene dependientes. se puede usar el perfil
		if (EstaAutorizado($XXX,"EditFieldL")=="true"){
			echo"<tr id='$XXX"."Perfil'><td class='td_CMP'><p class='nbecampo'>$MM[Perfil]</p></td><td></td><td id='$XXX"."Perfil_FLD' class='td_FLD'>";
			echo "<select size='1' name='XXXPerfil'><option value ='---' selected>---</option>";
			require("rutinas/cajaperfiles.php");
			echo "</select>";
		}else{
			if (EstaAutorizado($XXX,"ReadFieldL")=="true"){
				$ee="SELECT * FROM $EE2"."PRO WHERE PROCodigo='$XXXPerfil'";
				$busqueda = mysql_query($ee);
				$row = mysql_fetch_assoc($busqueda);
				echo "<tr id='$XXX"."Perfil'><td class='td_CMP'><p class='nbecampo'>$MM[Perfil]</p></td><td></td>
					<td id='$XXX"."Perfil_FLD' class='td_FLD'>$XXXPerfil - $row[PRONombre]</td></tr>";
			};
			echo "<input type='hidden' name='XXXPerfil'>";
		};
	} else echo "<input type='hidden' name='XXXPerfil'>";
	
	//-------------------------------  Macroperfil -------------------------------------
	if (($TablaDeOtraAplic[$XXX]!="")||($PP["AplicDependientes"]!="")){ // tiene dependientes. se puede usar el macro-perfil
	if (EstaAutorizado($XXX,"EditFieldL")=="true"){
		echo"<tr id='$XXX"."MacroPerfil'><td class='td_CMP'><p class='nbecampo'>$MM[MacroPerfil]</p></td><td></td><td id='$XXX"."MacroPerfil_FLD' class='td_FLD'>";
		echo "<select size='1' name='XXXMacroPerfil'><option value ='---' selected>---</option>";
		require("rutinas/cajamacroperfiles.php");
		echo "</select>";
	}else{
		if (EstaAutorizado($XXX,"ReadFieldL")=="true"){
			$ee="SELECT * FROM $EE2"."PRO WHERE PROCodigo='$XXXMacroPerfil'";
			$busqueda = mysql_query($ee);
			$row = mysql_fetch_assoc($busqueda);
			echo "<tr id='$XXX"."MacroPerfil'><td class='td_CMP'><p class='nbecampo'>$MM[MacroPerfil]</p></td><td></td>
				<td id='$XXX"."MacroPerfil_FLD' class='td_FLD'>$XXXMacroPerfil - ".substr($row[PRONombre],7)."</td></tr>";
		};
		echo "<input type='hidden' name='XXXMacroPerfil'>";
	};
	}else echo "<input type='hidden' name='XXXMacroPerfil'>";
	//-------------------------------  Activo o inactivo -------------------------------------
	echo "<input type='hidden' name='XXXActivo'>";
	if ($XXXActivo=="N") $Chequeado=""; else $Chequeado="checked";
//Modif IL 2005-11-11 (Ref. 1585) Inicio 
	if (EstaAutorizado($XXX,"EditFieldL")=="true"){
		echo"<tr id='$XXX"."Activo'><td class='td_CMP'><p class='nbecampo'>$MM[Activo]</p></td><td></td>
		<td id='$XXX"."Activo_FLD' class='td_FLD'><input type=checkbox id='$XXX"."Activo_CPO' name='CAJAACTIVO' $Chequeado
		onChange=\"if (document.seg.CAJAACTIVO.checked) document.seg.XXXActivo.value='';
				else document.seg.XXXActivo.value='N';\";
		></td></tr>\n";
//Modif IL 2005-11-11 (Ref. 1585) Fin 
	}elseif (EstaAutorizado($XXX,"ReadFieldL")=="true"){
		echo"<tr id='$XXX"."Activo'><td class='td_CMP'><p class='nbecampo'>$MM[Activo]</p></td><td></td>
		<td id='$XXX"."Activo_FLD' class='td_FLD'><input type=checkbox id='$XXX"."Activo_CPO' name='CAJAACTIVO' $Chequeado disabled
		></td></tr>\n";
	};

	//-------------------------------  Password  -------------------------------------
	//	Si es la tabla AGE o Logineable Poner el Password, si tiene acceso a los campos restringidos "A"
	if (EstaAutorizado($XXX,"EditFieldA")=="true"){	
		echo"<tr id='$XXX"."Password'><td class='td_CMP'><p class='nbecampo'>$MM[Password]</p></td><td></td><td id='$XXX"."Password_FLD' class='td_FLD'>";
		echo "<input type='password' id='$XXX"."Password_CPO' name='XXXPassword' size='20' onChange='Criptografiar();'></td></tr>\n";
	}else{
		echo "<input type='hidden' name='XXXPassword'>";
	};
};

//------------------------------- Llenar los demás campos -------------------------------------
//Modif HR 2005-12-29 (Ref. 1637)
$IndicadorBorde=false;

echo "</b>";
for ($i=0; $i<=$ultcampo; $i++){
	if (!$EsVisible[$i]) continue; // Pasar al próximo campo
	echo "<input type='hidden' name='OLDCPO$i'>"; 
	$Mascara=$CONMascara[$i];
	//------------------------------- Determinar unicidad -------------------------------------
	//Modif H-EA 2006-09-20 (Ref. 1812) if siguiente
	if ($CONUnico[$i]=="SI") $Unicidad="onChange=\"AjaxVerificarUnico('$COKO','$XXX','$XXXCodigo','$CONCampo[$i]','$CONNombre[$i]',this);\"";
	else $Unicidad="";

	//------------------------------- Escribir nombre de campo -------------------------------------
	if ($CONObligatorio[$i]=="SI"){$Bold="<b>";}else{$Bold="";};
	// explicación previa
	//Modif HR 2005-12-08 (Ref. 1614) Añadir campos LineaAntes y LineaDespues
	if ($CONAntes[$i]!=""){
		//Modif HR 2005-12-29 (Ref. 1637)
		$IndicadorBorde=true;
		//Modif IL 2005-12-09 (Ref. 1620) Inicio
		//$CONAntes[$i]=str_replace("'","\'",$CONAntes[$i]);
		$CONAntes[$i]=addcslashes($CONAntes[$i],"\12\15");
		$CONAntes[$i]=str_replace("\\r\\n","<br>",$CONAntes[$i]);
		$CONAntes[$i]=str_replace("\\n","",$CONAntes[$i]);
	//Modif IL 2005-12-09 (Ref. 1620) Fin
		$LineaAntes="<tr style='padding-top:5px;padding-bottom:5px;'><td></td><td></td><td class=ExplicAntes>$CONAntes[$i]</td></tr>";
	} else $LineaAntes="";
	if ($CONDespues[$i]!="") {
	//Modif IL 2005-12-09 (Ref. 1620) Inicio
		//$CONDespues[$i]=str_replace("'","\'",$CONDespues[$i]);
		$CONDespues[$i]=addcslashes($CONDespues[$i],"\12\15");
		$CONDespues[$i]=str_replace("\\r\\n","<br>",$CONDespues[$i]);
		$CONDespues[$i]=str_replace("\\n","",$CONDespues[$i]);
	//Modif IL 2005-12-09 (Ref. Proyecto 77 y tarea 1617) Fin
		$LineaDespues="<tr style='padding-top:5px;padding-bottom:5px;'><td></td><td></td><td class=ExplicDespues>$CONDespues[$i]</td></tr>";
	} else $LineaDespues="";
	if ($CONPrevio[$i]=="") {
		echo "\n$LineaAntes\n<tr id='$XXX"."$CONCampo[$i]'><td class='td_CMP'>
		<p class='nbecampo'>$Bold $CONNombre[$i] </b></p></td><td>";
	} elseif ($CONPrevio[$i]=="NO") {
			echo "&nbsp;<span class='nbecampo'> $Bold $CONNombre[$i] </span></b> ";	
	} else {
		echo "
		<tr id='$XXX"."$CONCampo[$i]_ENC' class='barraSubTitulo'><td bgcolor=$fondo class='barraSubTitulo_PRE'></td>
			<td bgcolor=$fondo class='barraSubTitulo_PRE'></td>
			<td bgcolor=$fondo class='barraSubTitulo_POST'><font color=$letras>$CONPrevio[$i]</font></td></tr>
		$LineaAntes<tr id='$XXX"."$CONCampo[$i]'><td class='td_CMP'>
				<p class='nbecampo'>$Bold $CONNombre[$i] </b></p></td><td>";	
		}	
	// poner ahora la ayuda (cuando existe)
	if ($CONAyuda[$i]!=""){
	//Modif IL 2006-05-04 (Ref.1743) Inicio
		$CONAyuda[$i]=str_replace('"',"&quot;",$CONAyuda[$i]); //Modif HR 2006-02-25 (Ref. 1676)
		$Temp1=str_replace("'","\'",$CONAyuda[$i]);
		$Temp1=addcslashes($Temp1,"\12\15");
		$Temp1=str_replace("\\r\\n","<br>",$Temp1);
		$Temp1=str_replace("\\n","",$Temp1);	
		$ff="javascript:ayuda('$CONNombre[$i]','$Temp1')";
		echo "<a tabindex=-1 href=\"$ff\">";
		echo "<img border='0' "."src='imagenes/help.gif' alt=\"".$CONAyuda[$i]."\"></a>";
	//Modif IL 2006-05-04 (Ref.1743) Fin
	};

	//Modif HR 2005-12-29 (Ref. 1637) pregunta y uso de $XtraBorde
	if ($IndicadorBorde) $XtraBorde="style='border-left: black solid 1px;border-right: black solid 1px;'";
	else $XtraBorde="";

	if ($CONPrevio[$i]=="NO") echo "&nbsp;";	
	else echo "</td><td id='$XXX"."$CONCampo[$i]_FLD' class='td_FLD' $XtraBorde>";
		
	if ($CONDespues[$i]!="")  $IndicadorBorde=false;
	
	//------------------------------- Procesar según tipo de campo -------------------------------------
	switch ($CONTipo[$i]){
		case "Linea": case "Tel": case "Email": case "URL": 
			//Modif H-EA 2006-09-20 (Ref. 1812) añadir $Unicidad
			if ($EsModificable[$i]) echo "<input type='text' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='$CONLongVista[$i]' maxlength='$CONLongitud[$i]' $Mascara $Unicidad>";
				else echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i'>$CAMPO[$i]";
			break;
		case "Hora": 
			if ($EsModificable[$i]) echo "<input type='text' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='8' maxlength='8' $Mascara>";
				else echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i'>$CAMPO[$i]";
			break;
		case "Cant": case "Monto":
			if ($EsModificable[$i] && $CONFormula[$i]=="") echo "<input type='text' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='$CONLongVista[$i]' maxlength='$CONLongitud[$i]' $Mascara>";
				else echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i'>$CAMPO[$i]";
			break;
		case "Fecha":
			//Modif HR-EA 2006-03-01 (Ref. 1689) uso de displayCalendar
			if ($EsModificable[$i]) echo "
				<input type='hidden' name='CPO$i' size='12'>
				<input type='text' id='$XXX"."$CONCampo[$i]_CPO' name='FormatCPO$i' size='12' $Mascara> 
				<img src='imagenes/show-calendar.gif' alt='$MM[AyudaCalendario]'
				onClick=displayCalendar(getElementById('$XXX"."$CONCampo[$i]_CPO'),'$FormatoFecha',this,'$Idioma','') border=0>"; 
			else echo "<input type='hidden' name='CPO$i' size='12'>
			<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='FormatCPO$i'>".FormatFecha($CAMPO[$i]);
			break;
		case "TimeStamp": 
			//Modif BG 2006-06-06 (Ref. 1759) Correción Timestamp producto de upgrade MYSQL
			echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' value='$CAMPO[$i]'>$CAMPO[$i]";
			break;
		case "Password":
			if ($EsModificable[$i]) echo "<input type='password' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='$CONLongVista[$i]' maxlength='$CONLongitud[$i]'>"; 
			else echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i'>$CAMPO[$i]";
			break;
		case "Imagen": 
			if ($CAMPO[$i]==""){	// imagen no existe
				echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='60'>";
				if ($EsModificable[$i]) echo " <a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,NUEVA,I' target='_blank'>
				<img border='0' src='imagenes/mas.gif' alt='$MM[AyudaCarga]'></a>";
			}else{					// Imagen si existe. Se debe mostrar
				echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='60'>
				<a href='../ZZZ/$BD/$E2/$EE2/$CAMPO[$i]' target='_blank'>
				 <img border=0 src='../ZZZ/$BD/$E2/$EE2/$CAMPO[$i]'></a>";
				if ($EsModificable[$i]) echo " <a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,$CAMPO[$i],I' target='_blank'>
				<img border='0' src='imagenes/edit.gif' alt='$MM[AyudaCambioArchivo]'></a>
				<a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,$CAMPO[$i],I,E' target='_blank'>
				<img border='0' src='imagenes/papelera.gif' alt='$MM[AyudaPapeleraArchivo]'></a>";
			};
			break;
		case "Archivo":
			if ($CAMPO[$i]==""){	// archivo no existe
				echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='60'>";
				if ($EsModificable[$i]) echo " <a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,NUEVA,A' target='_blank'>
				<img border='0' src='imagenes/mas.gif' alt='$MM[AyudaCarga]'></a>";
			}else{					// archivo si existe. Se debe mostrar
				echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' size='60'>
				<a href='../ZZZ/$BD/$E2/$EE2/".rawurlencode($CAMPO[$i])."' target='_blank'>$MM[Ver]</a>";
				if ($EsModificable[$i]) echo " <a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,$CAMPO[$i],A' target='_blank'>
				<img border='0' src='imagenes/edit.gif' alt='$MM[AyudaCambioArchivo]'></a>
				<a href='procesos/imagen.htm?$BD$COKCodigo$SepPpal$XXX,CPO$i,$CAMPO[$i],A,E' target='_blank'>
				<img border='0' src='imagenes/papelera.gif' alt='$MM[AyudaPapeleraArchivo]'></a>";
			};
			break; 
		case "Anexos":
			echo EditarAnexos($CAMPO[$i],$i,$XXX,$XXXCodigo);
			break;
		case "Enlace":
			$ArchivoALeer=TablaALeer($CONCampo[$i]); // Rutina está en rutinas/utilities.php
			//Modif MF-EA 2006-11-15 (Ref. 1851) se sustituyo CampoEnlace por MostrarLinks
			echo MostrarLinks($CONCampo[$i],"seg",$CAMPO[$i],"","","",$EsModificable[$i],$i);
			//echo CampoEnlace($ArchivoALeer,"seg","CPO$i","RESULT$i",$CAMPO[$i],$EsModificable[$i],$i);
			break;		
		case "Link":
			$ArchivoALeer=substr($CONCampo[$i],-3);
			//Modif MF-EA 2006-11-15 (Ref. 1851) se sustituyo CampoEnlace por MostrarLinks
			echo MostrarLinks($CONCampo[$i],"seg",$CAMPO[$i],"","","",$EsModificable[$i],$i);
			//echo CampoEnlace($ArchivoALeer,"seg","CPO$i","RESULT$i",$CAMPO[$i],$EsModificable[$i],$i); 
			break;
		case "MLink":
			echo MostrarLinks($CONCampo[$i],"seg",$CAMPO[$i],"","","",$EsModificable[$i],$i);
			//Modif MF-EA 2006-11-15 (Ref. 1851) se agregaron los campos hidden internamente
			break;
		case "Bloque":
			if ($EsModificable[$i]){
				//Modif HR 2006-02-08 (Ref. 1658)
					$CAMPO[$i]=str_replace("\\r\\n","<br>",$CAMPO[$i]);
					$CAMPO[$i]=str_replace("\\n","",$CAMPO[$i]);
				if ($CONEditor[$i]=="FCK"){
					echo "
					<div style='text-align:left;margin-bottom:10px'>";ManejoTexto("CPO$i",$CAMPO[$i],$CONLongitud[$i],$CONLongVista[$i]);echo "</div>";
				}else echo "<textarea name='CPO$i' id='$XXX"."$CONCampo[$i]_CPO' rows='$CONLongVista[$i]' cols='$CONLongitud[$i]' $Mascara></textarea>";
			}else {
					echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i'>$CAMPO[$i]";
			};
			break;
		case "Checkbox":
			echo "<input type=hidden name='CPO$i' value='$CAMPO[$i]'>";
			if (!$EsModificable[$i]) $Deshabil="disabled"; else $Deshabil=""; 
			if ($CAMPO[$i]==1) $Chequeado="checked"; else $Chequeado=""; 
			echo "<input type=checkbox id='$XXX"."$CONCampo[$i]_CPO' name='CAJA$i' $Chequeado $Deshabil $Mascara>";
			break;	
		case "Lista":
			if ($ind2=="") {$ind2=0; $JSDeAbajo.=""; }
			$ind2++;
			if (!$EsModificable[$i]){echo "<input type='hidden' id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' $Mascara>$CAMPO[$i]"; break;};
			
			//---------------------- Averiguar si es una lista padre ---------------------
			
			$ee="SELECT * FROM $EE2"."LIS WHERE LISValor='@=@=$XXX$CONCampo[$i]' ORDER BY LISNombre";
			$LeerL = mysql_query($ee);
			$CantL=mysql_num_rows($LeerL);
			$NroListaHijos++;
			if ($CantL>0){
				$NroListaPadre++;
				$NroListaHijos++;
				$Mascara.=" onChange=\"BusquedaTabla('CPO$i',$NroListaPadre,$NroAbsoluto);\"";
				
				
				for ($L=0;$L<$CantL;$L++){
					$TablaPadre=$XXX.$CONCampo[$i];
					$rowL= mysql_fetch_assoc($LeerL);
					$TablaHija=$rowL[LISNombre];
					
					//----------------------------Ver si la tabla hija es copiada ----------------------/
					$hijocopia="SELECT * FROM $EE2"."LIS WHERE LISNombre='$TablaHija' AND (LISValor LIKE '%*=*=%')";
					$busquedahijocopia = mysql_query($hijocopia);
					$eshijocopia=mysql_num_rows($busquedahijocopia);
					if($eshijocopia != 0){
						$hijocopiade = mysql_fetch_assoc($busquedahijocopia);
						$TablaHija = substr($hijocopiade[LISValor], 4);
					};
					
					//-------------------------Pasearse por cada elemento de la tabla padre buscando los hijos------------/

					//---------------- Ver primero si la tabla padre es copiada ------------------------/
					$CopiaQry="SELECT * FROM $EE2"."LIS WHERE LISNombre='$TablaPadre' AND (LISValor LIKE '%*=*=%')";
					$busquedaCopia = mysql_query($CopiaQry);
					$filasencontradas=mysql_num_rows($busquedaCopia);
					if($filasencontradas != 0){
						$filaEnc = mysql_fetch_assoc($busquedaCopia);
						$TablaPadre = substr($filaEnc[LISValor], 4);
					};
														
					$ff="SELECT * FROM $EE2"."LIS WHERE LISNombre='$TablaPadre' ORDER BY LISOrden";
					$LeerF = mysql_query($ff);
					$CantF=mysql_num_rows($LeerF);
					for ($f=0;$f<$CantF;$f++){
						$rowF= mysql_fetch_assoc($LeerF);
						$ValorLimpio=str_replace($LetrasProhib,$LetrasLegal,$rowF[LISValor]);
						$Nivel1.=$ValorLimpio.$NroListaHijos.",";
						//Leer nivel 2
						$gg="SELECT * FROM $EE2"."LIS WHERE LISPadre='$rowF[LISCodigo]' AND LISNombre='$TablaHija'";
						$LeerG = mysql_query($gg);
						$CantG=mysql_num_rows($LeerG);
						$Nivel2="";
						for ($g=0;$g<$CantG;$g++){
							$rowG= mysql_fetch_assoc($LeerG);
							$Nivel2.="'$rowG[LISValor]',";
						};
						
						
						$JSDeAbajo.="var $ValorLimpio$NroListaHijos =new Array(".rtrim($Nivel2,",").");\n";
						$NroAbsoluto++;
					};

					$NroListaHijos++;
					$JSDeAbajo.="CantF[$NroListaPadre]=$CantF;\n ";
				};
				
			};
			$JSDeAbajo.=" ARREGLO = new Array(".rtrim($Nivel1,",").");\n";
			//---------------------- Averiguar si es una lista hija ---------------------
			$ee="SELECT * FROM $EE2"."LIS WHERE LISNombre='$XXX$CONCampo[$i]' AND (LOCATE('@=@=',LISValor)<>0)";
			$busqueda = mysql_query($ee);
			$cantL=mysql_num_rows($busqueda);
			if ($cantL>0){
				$rowL= mysql_fetch_assoc($busqueda);
				$TablaPadre=substr($rowL[LISValor],4);
				$NuevaFuncion.="if (NroPadre==$NroListaPadre) CambioPadre(Padre,NroPadre,'CPO$i',$NroSec,NroAbsoluto);\n";
				$NroSec++;
			}
			else $NroSec=0;
			
			echo "<select size=1 id='$XXX"."$CONCampo[$i]_CPO' name='CPO$i' $Mascara><option value='---'>---</option>\n";
			$dd=$XXX.$CONCampo[$i];
			CajaLista($dd);
			echo "</select>";	
	}; // Find el switch
	
	//Modif HR 2005-12-08 (Ref. 1614) Añadir campo LineaDespues
	$iMAS1=$i+1;
	if ($CONPrevio[$iMAS1]!="NO") echo "</td></tr>\n$LineaDespues";
};  // fin del for
//--------------------------  Determinar si hay que hacer un include --------------------------------
$aa="IncludeHTMLact$XXX"; $NbeInclude=$PP[$aa];

if ($NbeInclude!="") {
	if (substr($NbeInclude,0,1)=="*") {
		if ($PP[Paquete]=="") require("../ZZZ/$BD/".substr($NbeInclude,1));
		else require("../paq/$PP[Paquete]/$COKDirectorio/".substr($NbeInclude,1));
	}else require("../ZZZ/$BD/$E2/$EE2/$NbeInclude");
};

echo "</table>
<p style='text-align: center;$ExtraEstiloBotones'>";
if (!$OmitirBotonOK=="SI") {
	if ($ImgBotonOK!=""){
		if ($AltImgBotonOK=="") $AltImgBotonOK="OK";
		echo "<img style='cursor:pointer;' src='$ImgBotonOK' onClick='if (validarforma()) document.seg.submit();' alt='$AltImgBotonOK'>";
	} else {
		if ($TextoBotonOK=="") $TextoBotonOK="OK";
		echo "<input type='submit' value='$TextoBotonOK' name='B1' class='boton'>";
	}
}
if (!$OmitirBotonCancel=="SI") {
	if ($ImgBotonCancel!=""){
		if ($AltImgBotonCancel=="") $AltImgBotonCancel="$MM[Cancelar]";
		echo "<img style='cursor:pointer;' src='$ImgBotonCancel' onClick='history.back();return false;' alt='$AltImgBotonCancel'>";
	} else {
		if ($TextoBotonCancel=="") $TextoBotonCancel="$MM[Cancelar]";
		echo "<input type='button' value='$TextoBotonCancel' onClick='history.back();return false;' class='boton'>";
	}
}
echo"</p>";

//-------------------------------  Enlaces de eliminación -------------------------------------
//	Unicamente en el caso de que sea una actualización y el usuario esté autorizado
if (!$personanueva && !$OmitirBotonDel=="SI"){
    // Ver si tiene autorización para modificar registros
		if (($XXX=="AGE") || (($CookieAGENTE=="-1")&&($COKExternoTabla==$XXX)) ){   //Si el conectado es de esa tabla o la tabla es AGE (TEMP)
			if ((EsSelf($XXX,$XXXCodigo) & EstaAutorizado($XXX,"DelOwnRec")=="true") | 
				(!EsSelf($XXX,$XXXCodigo)  & EstaAutorizado($XXX,"DelOtherRec")=="true")) {
					echo "<p style='text-align: center;'>";
					if ($ImgBotonDel!=""){
						if ($AltImgBotonDel=="") $AltImgBotonDel="$MM[EliminarRegistro]";
						echo "<img style='cursor:pointer;' src='$ImgBotonDel' onClick='eliminarregistro()' alt='$AltImgBotonDel'>";
					} else {
						if ($TextoBotonDel=="") $TextoBotonDel="$MM[EliminarRegistro]";
						echo "<input type='button' value='$TextoBotonDel' onClick='eliminarregistro()' class='boton'>";
					}
					echo "</p>";
				}
		} else {
			if ((EsDueno($XXXCodAgente,$XXXCodExterno) & EstaAutorizado($XXX,"DelOwnRec")=="true") | 
				(!EsDueno($XXXCodAgente,$XXXCodExterno)  & EstaAutorizado($XXX,"DelOtherRec")=="true")) {
					echo "<p style='text-align: center;'>";
					if ($ImgBotonDel!=""){
						if ($AltImgBotonDel=="") $AltImgBotonDel="$MM[EliminarRegistro]";
						echo "<img style='cursor:pointer;' src='$ImgBotonDel' onClick='eliminarregistro()' alt='$AltImgBotonDel'>";
					} else {
						if ($TextoBotonDel=="") $TextoBotonDel="$MM[EliminarRegistro]";
						echo "<input type='button' value='$TextoBotonDel' onClick='eliminarregistro()' class='boton'>";
					}
					echo "</p>";
				}
		}
};

?>
</form>
<?php 	   
//Modif HR-EA 2006-03-10 (Ref. 1700) añadido
//---------------------------------------- handle Enlace,Link and MLink fields ----------------------------------
require("rutinas/formalistaryselec.php");

echo"
<script language='JavaScript'>
inicializar();\n";
//-------------------  Determinar si hay que hacer un require de JavaScript --------------------------------
$aa="IncludeJSact$XXX"; $NbeInclude=$PP[$aa];
if ($NbeInclude!="") {
	if (substr($NbeInclude,0,1)=="*") {
		if ($PP[Paquete]=="") require("../ZZZ/$BD/".substr($NbeInclude,1));
		else require("../paq/$PP[Paquete]/$COKDirectorio/".substr($NbeInclude,1));
	}else require("../ZZZ/$BD/$E2/$EE2/$NbeInclude");
};

//Modif HR 2006-02-08 (Ref. 1658)
//========================================  FUNCION PARA EL FCK EDITOR =================================
function ManejoTexto($Campo,$Contenido,$Ancho,$Alto){
	global $COKDirectorio,$BD,$Sitio,$EEE,$EE,$COKO;
	$Ancho=$Ancho*6; // ya que por cada caracter se toman aprox. 6 pixels
	if ($Alto=="") $Alto=4;
	$Alto=80+$Alto*20;
	//$Toolbar="Reduced";
	$Toolbar="WIB";
	$_SESSION['UserFilesPath'] ="/ZZZ/$BD/$EE/$EEE/";
	$_SESSION['DirectorioComponente'] =$COKDirectorio;
	$_SESSION['SitioComponente'] =$Sitio;
	$_SESSION['CokilloComponente'] =$COKO;
	$_SESSION['EEEComponente'] =$EEE;
	//echo "<!--FCK Param:".$_SESSION['UserFilesPath']."-->";
	//echo "<!--".print_r($_SESSION)."-->";
	//Modif BG 2006-03-07 (Ref. 1694)
	require_once ("../libext/editor/fckeditor.php");	
	$oFCKeditor = new FCKeditor($Campo);
	$oFCKeditor->ToolbarSet = $Toolbar;
	$oFCKeditor->Width = $Ancho;
	$oFCKeditor->Height = $Alto;
	$oFCKeditor->BasePath	= "../libext/editor/";
	$oFCKeditor->Value		= $Contenido;
	$oFCKeditor->Create() ;
};
//========================================  FUNCIONES PARA LISTAS DEPENDIENTES =================================
$JSDeAbajo.="
function BusquedaTabla(Padre,NroPadre,NroAbsoluto){
	$NuevaFuncion
};
function CambioPadre(Padre,NroPadre,Hijo,Secuencia,NroAbsoluto){
	NombreCaja=document.getElementById(Padre);
	NombreCajaHijo=document.getElementById(Hijo);
	if(NombreCaja.selectedIndex != 0){
		Indice=NombreCaja.selectedIndex-1;
		Desplazamiento=(Secuencia*CantF[NroPadre])+NroAbsoluto;
		Indice=Indice+Desplazamiento;
		var Tabla = new Array();
		Tabla=ARREGLO[Indice];
		
	}
	else var Tabla= new Array(); 
	NombreCajaHijo.options[0] = new Option ('---','');\n
	
	for (i=0;i<Tabla.length;i++){
		NombreCajaHijo.options[(i+1)] = new Option (ARREGLO[Indice][i],ARREGLO[Indice][i]);\n
	};
	
	NombreCajaHijo.options.length = Tabla.length+1;
}";		

echo"var ARREGLO = new Array();";
echo "var CantF = new Array();";
echo $JSDeAbajo;
echo "</script>";

require("basedatos/cerrar.php");
poweredby(1,$Idioma);
?>
</body>
</html>
