function grabar_form(){	document.thisForm.grabar.value=1;	document.thisForm.submit();}function validate_required(field,alerttxt){	with (field)	{	  if (value==null || value=="")	  {	  alert(alerttxt);return false;	  }	  else	  {	  return true;	  }	}}function validate_identical(field1,field2,alerttxt){    //alert("validate identical");    if ( field2.value==null || field2.value=="" || field2.value != field1.value)    {        alert(alerttxt); return false;    }    else    {        return true;    }}function validate_different(field1,field2,alerttxt){    if ( field2.value==null || field2.value=="" || field2.value == field1.value)    {        alert(alerttxt); return false;    }    else    {        return true;    }}function validate_email(field,alerttxt){	with (field)	{	apos=value.indexOf("@");	dotpos=value.lastIndexOf(".");	if (apos<1 || dotpos-apos<2)	  {alert(alerttxt);return false;}	else {return true;}	}}function validate_min_length(field,min_length,alerttxt){	if(field.value.length < min_length)	  {alert(alerttxt);return false;}	else {return true;}}function isNum(character){	if (character == 8) return true;	if (character == 9) return true;	if (character == 13) return true;	if (character == 35) return true;	if (character == 36) return true;	if (character == 46) return true;	if (character >= 48 && character <= 57) return true;}function isNumberKey(evt){	// Solo permite ingresar números del 0 al 9 en un textbox.	// Se usa con ' onkeypress="return isNumberKey(event)" '.	var charCode = (evt.which) ? evt.which : event.keyCode;	if (!isNum(charCode))		return false;	return true;}function toggleButton(textbox, button, caracteres){	/*	Oculta el botón "button" si la longitud del "textbox" es mayor a "caracteres".	Para usarse, coloque este texto en el textbox: onkeyup="toggleButton(this, btn_xxx, 3)" .	Tanto el botón como el textbox deben tener "ID" para que el javascript los encuentre (no "name").	Al botón se le debe poner disabled="true" para que se muestre inhabilitado al cargar la página.		La variable isValid será true si la longitud del textbox es mayor a tres.		Antes de leer la longitud, se pasa por un replace que, por medio de una		expresión regular, reemplaza por "" (nada) a los caracteres que cumplan con		esta condición: "uno o más espacios en blanco al principio de la cadena (^\s+)",		"o" (|), "uno o más espacios en blanco al final de la cadena (\s+$)". Las "/" del principio		y del final indican que es una expresión regular (y no una cadena que iría con comillas).		Al final, se pone "/g" para terminar la expresión regular para que el reemplazo sea global,		es decir, que reemplace todas las subcadenas entontradas.	*/	var isValid = textbox.value.replace(/(^\s+)|(\s+$)/g, "").length > caracteres	button.disabled = !isValid;}function borrar_textbox(textbox){	/* Vacía el contenido del textbox "textbox". */	/* Se llama así onclick="borrar_textbox(thisForm.fecha_fin);" . */	textbox.value = "";}function confirmDelete(idPrograma) {	if (confirm("Se borrará el programa y todas sus etapas.\n¿Está seguro?"))	{		document.location = 'programa_delete.php?idPrograma=' + idPrograma;	}}function ChangeColor(tableRow, highLight, clase)  {	// cambia el color de una celda al pasarle el cursor del mouse por arriba	if (highLight)	{   tableRow.className = 'seleccionada_'+clase;    }	else {  tableRow.className = clase; }  }function DoNav(theUrl)  {	/* redirecciona la página */	document.location.href = theUrl;  }function DoNavNewWindow(theUrl)  {	/* redirecciona la página (abre nueva ventana)*/	window.open(theUrl, '_BLANK', '');  }  function _add_more_upload_files()  {	  /* Se usa en la página archivo_list.php para agregar un nuevo archivo a subir. */	  var txt = "<br><input type=\"file\" name=\"item_file[]\">";	  document.getElementById("dvFile").innerHTML += txt;  }  function validate_upload_files(f)  {		/* Se usa en la página archivo_list.php para valirdad que se hayan ingresado		archivo para subir luego de apretar el botón para subir */		var chkFlg = false;		for(var i=0; i < f.length; i++) {			if(f.elements[i].type=="file" && f.elements[i].value != "") {			chkFlg = true;			}		}		if(!chkFlg) {			alert('Por favor elija al menos un archivo');			return false;		}		f.pgaction.value='upload';		return true;  }
