var TRIM_LEFT  = 0x0001;
var TRIM_RIGHT = 0x0002;
var TRIM_BOTH  = TRIM_LEFT | TRIM_RIGHT;

/*-----------------------------------------------------------------------------
| Nombre      : ValidarCampoTexto
| Descripcion : Función que valida un campo de tipo texto
+------------------------------------------------------------------------------
| Parametros  : Campo		Texto a validar
|	        Mensaje		Mensaje a mostrar en caso de error
+------------------------------------------------------------------------------
| Autor : Cesar Leonardo Garcia  cesgarc@nextmedia-i.com     Fecha : 26-12-2000
|         Jose Luis Malagon	 jmalagon@nextmedia-i.com
|	  Cesar Andres Navarrete cenavar@nextmedia-i.com
+------------------------------------------------------------------------------
| Retorno: Falso, si valida con error. Verdadero si la validación es correcta.
+------------------------------------------------------------------------------
| Modificaciones :
+----------------------------------------------------------------------------*/
function ValidarCampoTexto(Campo, Mensaje) {

    Campo.value = strTrim(Campo.value,TRIM_BOTH);
    if (isVacio(Campo.value)) {
    	alert('Por favor introduzca ' + Mensaje );
        Campo.focus();
        return false;
    }
    return true;
}

function ValidarCampo(Campo, Mensaje) {

	Campo.value = strTrim(Campo.value,TRIM_BOTH);
	if (isVacio(Campo.value)) {
    	alert('Por favor introduzca  ' + Mensaje );
		Campo.focus();
		return false;
	}
	else {
		if (!isNumeric(Campo.value))
		{
			alert('El valor de ' + Mensaje + ' debe ser un numero.');
			Campo.focus();
			return false;
		}
		else
		{
			if (parseInt(Campo.value) <= 0) {
				alert('El valor de ' + Mensaje + ' debe ser mayor a cero.');
				Campo.focus();
				return false;
			}
		}
	}
	return true
}

function ValidarCampoPositivo(Campo, Mensaje) {

	Campo.value = strTrim(Campo.value,TRIM_BOTH);
	if (isVacio(Campo.value)) {
    	alert('Por favor introduzca  ' + Mensaje );
		Campo.focus();
		return false;
	}
	else {
		if (!isNumeric(Campo.value))
		{
			alert('El valor de ' + Mensaje + ' debe ser un numero.');
			Campo.focus();
			return false;
		}
		else
		{
			if (parseInt(Campo.value) < 0) {
				alert('El valor de ' + Mensaje + ' debe ser mayor a cero.');
				Campo.focus();
				return false;
			}
		}
	}
	return true
}

function strTrim( varText, side )
{
  var i = 0;
  var j = varText.length - 1;

  if( side & TRIM_LEFT )
  {
    for( i = 0; i < varText.length; i++ )
    {
      if( varText.substring( i, i+1 ) != " " && varText.substring( i, i+1 ) != "\t")
		{
        break;
        }
    }
  }

  if( side & TRIM_RIGHT )
  {
    for( j = varText.length - 1; j >= 0; j-- )
    {
      if( varText.substring( j, j+1 ) != " " &&
          varText.substring( j, j+1 ) != "\t")
        break;
    }
  }

  if( i <= j )
    return( varText.substring( i, (j+1) ) );
  else
    return("");
}

function isNumeric(str)
{
	for (var i=0; i < str.length; i++) {
		var ch = str.substring(i, i+1)
		if(ch < "0" || ch > "9") {
			return false;
		}
	}

	return true;
}

function longitud(s)
{
   return (s.length)
}

function isVacio(s)
{
   return ((s == null) || (s.length == 0))
}

/*-----------------------------------------------------------------------------
| Nombre      : ValidarEmail
| Descripcion : Función que valida un campo que captura un correo electrónico
+------------------------------------------------------------------------------
| Parametros  : Campo		e-mail a validar
|	        Mensaje		Mensaje a mostrar en caso de error
+------------------------------------------------------------------------------
| Autor : Cesar Leonardo Garcia  cesgarc@nextmedia-i.com     Fecha : 26-12-2000
|         Jose Luis Malagon	 jmalagon@nextmedia-i.com
|	  Cesar Andres Navarrete cenavar@nextmedia-i.com
+------------------------------------------------------------------------------
| Retorno: Falso, si valida con error. Verdadero si la validación es correcta.
+------------------------------------------------------------------------------
| Modificaciones :
+----------------------------------------------------------------------------*/
function ValidarEmail(Campo, Mensaje)
{
	with (Campo)
	{
		apos = value.indexOf("@");
		spacepos = value.indexOf(" ");
		dotpos = value.lastIndexOf(".");
		lastpos = value.length-1;
		if (apos < 1 || dotpos - apos < 2 || lastpos - dotpos > 3 || lastpos - dotpos < 2 || spacepos != -1) {
			if (Mensaje) {
				alert('\nLa ' + Mensaje + ' no es valida.');
				Campo.focus();
			}
			return false;
		}
		else {
			return true;
		}
	}
}

/*
Esta funcion difiere de "ValidarCampo", en que permite que el valor sea cero (0).
*/
function ValidarCampoII(Campo, Mensaje) {

	Campo.value = strTrim(Campo.value,TRIM_BOTH);
	if (isVacio(Campo.value)) {
		alert('\nEl valor de ' + Mensaje + ' no puede ser vacío.\n\nPor favor suministre la información.');
		Campo.focus();
		return false;
	}
	else {
		if (!isNumeric(Campo.value))
		{
			alert('El valor de ' + Mensaje + ' debe ser numérico entero positivo.');
			Campo.focus();
			return false;
		}
		else
		{
			if (parseInt(Campo.value) < 0) {
				alert('El valor de ' + Mensaje + ' debe ser mayor o igual que cero.');
				Campo.focus();
				return false;
			}
		}
	}

	return true
}

/*-----------------------------------------------------------------------------
| Nombre      : ValidarCombo
| Descripcion : Función que valida la captura en un combo box
+------------------------------------------------------------------------------
| Parametros  : Campo		Combo a validar
|	        Mensaje		Mensaje a mostrar en caso de error
+------------------------------------------------------------------------------
| Autor : Cesar Leonardo Garcia  cesgarc@nextmedia-i.com     Fecha : 26-12-2000
|         Jose Luis Malagon	 jmalagon@nextmedia-i.com
|	  Cesar Andres Navarrete cenavar@nextmedia-i.com
+------------------------------------------------------------------------------
| Retorno: Falso, si valida con error. Verdadero si la validación es correcta.
+------------------------------------------------------------------------------
| Modificaciones :
+----------------------------------------------------------------------------*/
function ValidarCombo(Combo, Mensaje) {

	if (Combo.selectedIndex == 0){
		alert('\nPor favor escoja ' + Mensaje );
		Combo.focus();
		return false;
	}

	return true;
}

/*****************************************************************************************
'Fecha : Febrero 15/2000
'.........................................................................................
'Descripcion:
'		Valida una fecha que viene descompuesta en Año, Mes y Dia
'.........................................................................................
'Parametros:
'		Todos los parametros son convertidos a enteros, dentro de la funcion, antes de 
'		proceder validarlos
'		Anno: Año a validar 
'		Mes: Mes a validar 
'		Dia: Dia a validar 
'.........................................................................................
'Validaciones:
'		Valida fechas de años bisiestos (de Febrero) y, que el dia sea valido dentro del
'		mes elegido
*****************************************************************************************/
function ValidarFecha(Anno, Mes, Dia) {

	var intAnno = parseInt(Anno);
	var intMes = parseInt(Mes);
	var intDia = parseInt(Dia);

	// Validar que los valores no sean igual a cero
	if ((Anno == 0) || (Mes == 0) || (Dia == 0)) {
		alert('Debe elegir los valores para el mes, el dia y el año.');
		return false;
	}

	// Validar que, en un año NO bisiesto, el numero de dias del mes de Febrero no sea mayor que 28
	if (((intAnno % 4) != 0) && (intMes == 2) && (intDia > 28)) {
		alert('El mes de Febrero no puede contener más de 28 días.\n\nPor favor, corrija la información.');
		return false;
	}

	// Validar que, en un año bisiesto, el numero de dias del mes de Febrero no sea mayor que 29
	if (((intAnno % 4) == 0) && (intMes == 2) && (intDia > 29)) {
		alert('El mes de Febrero no puede contener más de 29 días.\n\n Por favor, corrija la información.');
		return false;
	}

	// Validar que el dia sea valido para el mes elegido, no mayor que 30
	if ( ((intMes == 4) || (intMes == 6) || (intMes == 9) || (intMes == 11)) && (intDia > 30) ) {
		alert('El mes seleccionando sólo contiene 30 días.\n\nPor favor, corrija la información.');
		return false;
	}

	return true;
}

/*****************************************************************************************
'Fecha : Febrero 16/2000
'.........................................................................................
'Descripcion:
'		Compara dos fechas en formato (Año, Mes y Dia), y retorna true si la primera es menor
'		o igual que la segunda, de lo contrario retorna false
'.........................................................................................
'Parametros:
'		Todos los parametros son convertidos a enteros, dentro de la funcion, antes de 
'		proceder a validarlos
'		-----------
'		AnnoDesde: Año Desde a validar
'		MesDesde: Mes Desde a validar
'		DiaDesde: Dia Desde a validar
'		strCampoInferior: Cadena del campo inferior para mostrar en los mensajes
'		-----------
'		AnnoHasta: Año Hasta a validar
'		MesHasta: Mes Hasta a validar
'		DiaHasta: Dia Hasta a validar
'		strCampoSuperior: Cadena del campo superior para mostrar en los mensajes
'.........................................................................................
'Validaciones:
'		La funcion asume que las fechas que se pasan son validas
'.........................................................................................
'Modificaciones:
'		2000-03-15 :	Fueron adicionados dos nuevos parametros (strCampoInferior y
'						strCampoSuperior), para permitir mostrar mensajes mas personalizados,
'						dependiendo del contexto desde donde sea llamada la funcion.
*****************************************************************************************/
function CompararFechas(AnnoInferior, MesInferior, DiaInferior, AnnoSuperior, MesSuperior, DiaSuperior, strCampoInferior, strCampoSuperior) {

	var mensaje = 'La fecha ' + strCampoInferior + ' debe ser menor o igual que la fecha ' + strCampoSuperior;
	// --------------
	var intAnnoInferior = parseInt(AnnoInferior);
	var intMesInferior = parseInt(MesInferior);
	var intDiaInferior = parseInt(DiaInferior);
	// --------------
	var intAnnoSuperior = parseInt(AnnoSuperior);
	var intMesSuperior = parseInt(MesSuperior);
	var intDiaSuperior = parseInt(DiaSuperior);

	var dteFechaInferior = new Date(parseInt(AnnoInferior), parseInt(MesInferior) - 1, parseInt(DiaInferior))
	var dteFechaSuperior = new Date(parseInt(AnnoSuperior), parseInt(MesSuperior) - 1, parseInt(DiaSuperior))

	// Restar la fecha inferior de la superior
	dif_dias = dteFechaSuperior - dteFechaInferior
	if (dif_dias < 0) {
		alert(mensaje);
		return false;
	}

	return true;
}


