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_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(char)
{
	if (char == 8) return true;
	if (char == 9) return true;
	if (char == 13) return true;
	if (char == 35) return true;
	if (char == 36) return true;
	if (char == 46) return true;
	if (char >= 48 && char <= 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;
  }