  /**********************************************/
  /* Reemplaza una subcadena por un nuevo valor */
  /* Autor: Manuel Borja Ruiz                   */
  /**********************************************/
  function reemplazaSubcadena(cadena, valorOriginal, valorNuevo)
  { 
    var nuevaCadena;
    var index;
    var longitudValorOriginal = valorOriginal.length;
    
    nuevaCadena = ""
    while((Index=cadena.indexOf(valorOriginal)) > -1)
    { 
      nuevaCadena += cadena.substring(0,Index); 
      nuevaCadena += valorNuevo;
      cadena = cadena.substring(Index + longitudValorOriginal, cadena.length);
    }
    nuevaCadena += cadena;
    return (nuevaCadena);
  }

  /***************************************/
  /* Rellena una cadena por la izquierda */
  /* Autor: Manuel Borja Ruiz            */
  /***************************************/
  function llenaCadenaIzquierda(cadena, longitud, valor)
  {
	while(cadena.length < longitud)
	  cadena = valor + cadena;
	return cadena;
  }

  /***********************************************************************/
  /* Elimina los blancos de una cadena por la izquierda y por la derecha */
  /* Autor: Manuel Borja Ruiz                                            */
  /***********************************************************************/
  function quitaBlancos(cadena)
  { 
    while(cadena.charAt(0) == ' ')
    { cadena = cadena.substring(1,cadena.length)
    }
    
    while(cadena.charAt(cadena.length-1) == ' ')
    { cadena = cadena.substring(0,cadena.length-1)
    }
    return (cadena)
  }

  /*****************************************************************/
  /* Agrega decimales a una cadena numérica y agrega coma de miles */
  /* Autor: Manuel Borja Ruiz                                      */
  /*****************************************************************/      
  function formateaNumero(cadena, comas, cantidadDecimales)
  {
	var i=0;
	var parteEntera="";	
	var parteDecimal="";
	var longitudDecimal;
	var char;

	while(((char=cadena.charAt(i)) != ".") && i < cadena.length)
	{ parteEntera += char;
	  i++;
	}
	
	i++;
	longitudDecimal = Math.min(cadena.length - i, cantidadDecimales);
	parteDecimal = cadena.substring(i, i + longitudDecimal);	
		
	while(parteDecimal.length < longitudDecimal)
	{ parteDecimal += "0";
	}

    if(comas)
    {

      var i,c=0;      
      var parteEnteraNueva="";
      var indComa=true;
      
      for(i=parteEntera.length-1; i>=0; i--)
      {        
        c++;
        parteEnteraNueva = parteEntera.charAt(i) + parteEnteraNueva;
		
        if(c%3 == 0)
        {
		  
          if(parteEntera.charAt(i) != "," && parteEntera.length > 1)
          {
            if(indComa)
              parteEnteraNueva = "," + parteEnteraNueva;
            else
              parteEnteraNueva = "'" + parteEnteraNueva;
          }
          indComa = !indComa ;
          c=0;
        }
        parteEntera = parteEntera.substring(0,parteEntera.length-1);
      }      
    }
    else
		parteEnteraNueva = parteEntera;
		
	if(parteDecimal!="")
	  parteDecimal = "." + parteDecimal;
    cadena = parteEnteraNueva + parteDecimal;
    return cadena;
  }

  
  /* Esta funcion responde al evento : onKeyPress = DatosNumericos() */
  function DatosNumericos() 
  { 
    if (((window.event.keyCode<48) || (window.event.keyCode>57)) && (window.event.keyCode != 46))
      window.event.returnValue=0; 		
  } 

  /* Esta funcion responde al evento : onKeyPress = DatosEnteros() */
  function DatosEnteros() 
  { 
    if (((window.event.keyCode<48) || (window.event.keyCode>57)))
      window.event.returnValue=0; 		
  } 

  /*************************************************************/
  function validarPuntoDecimal(str)
  {   
    return(str.indexOf(".") == str.lastIndexOf(".",str.length-1));
  } 	
  /*funcion que sirve para validar fechas*/
 function ComparaFechas(aFechaIni,aFechaFin,astrFlag) {
	
	//captura valores de la primera fecha
	dia1 = aFechaIni.substring(0,2);
	mes1 = aFechaIni.substring(3,5);
	ano1 = aFechaIni.substring(6,10);
    
    
	//captura valores de la segunda fecha
	dia2 = aFechaFin.substring(0,2);
	mes2 = aFechaFin.substring(3,5);
	ano2 = aFechaFin.substring(6,10);

	VFechaVal1 = new Date (mes1+"/"+dia1+"/"+ano1);	
	VFechaVal2 = new Date (mes2+"/"+dia2+"/"+ano2);		
	if (astrFlag=='1')
	{
		if ( VFechaVal1.valueOf() < VFechaVal2.valueOf()) 
		{
			return true;
		}
	}
	if (astrFlag=='2')
	{
		if ( VFechaVal1.valueOf() <= VFechaVal2.valueOf()) 
		{
			return true;	
		}
	}	
	return false;	
 }
 

function ValidaNumero(strNameObj){	

	//strNameObj : Nombre de la caja de texto a validar.
	var Obj = document.all[strNameObj];
	var intEncontrado = "1234567890,./".indexOf(String.fromCharCode(window.event.keyCode));		
	//alert(intEncontrado)
	if (intEncontrado == -1) {
		window.event.keyCode = 0;		
	}		
}


function ValidaTelefono(ps_NameObj) 
{
	//ps_NameObj : Nombre de la caja de texto a validar.
	var Obj = document.all[ps_NameObj];
	var intEncontrado = "1234567890".indexOf(String.fromCharCode(window.event.keyCode));
	//alert(intEncontrado)
	if (intEncontrado == -1) {
		window.event.keyCode = 0;		
	}		
}

// Devuelve True si "ps_CadenaValidar" contiene caracteres que no estan en "strCadenps_caracteresOk"
function CaracteresPermitidos(ps_caracteresOk, ps_CadenaValidar)
{	var strCaracter;
	// Recorriendo la cadena de caracteres
	for (i=0; i < ps_CadenaValidar.length; i++)
	{	strCaracter = ps_CadenaValidar.substr(i, 1);
		// Si el caracter no esta en la cadena valida lo retorna
		if (ps_caracteresOk.indexOf(strCaracter.toUpperCase()) == -1) return strCaracter;
	}
	return "";
}

function IsEmail (ps_mail)
{   
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = ps_mail.length;

    // look for @
    while ((i < sLength) && (ps_mail.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (ps_mail.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (ps_mail.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (ps_mail.charAt(i) != ".")) return false;
    else return true;
}

function FP_ComparaFecha(fechaD,fechaH) {

/*************************************************************************************
Modulo 		:    
Descripción :
Inputs		:    
Autor 		:    Evelyn De La Torre T.
Fecha/hora	:    05/12/2001 - 8:00 am.
Empresa		:    CosapiSoft S.A.
Notas		:    
*************************************************************************************/
	var vFechaD = eval(fechaD);
	var vFechaH = eval(fechaH);

	//captura valores de la primera fecha
	diaD = vFechaD.substring(0,2);
	mesD = vFechaD.substring(3,5);
	anoD = vFechaD.substring(6,10);

	//captura valores de la segunda fecha
	diaH = vFechaH.substring(0,2);
	mesH = vFechaH.substring(3,5);
	anoH = vFechaH.substring(6,10);

	VFechaValD = new Date (mesD+"/"+diaD+"/"+anoD);
	VFechaValH = new Date (mesH+"/"+diaH+"/"+anoH);
	
	if ( VFechaValD.valueOf() > VFechaValH.valueOf()) {
		return true	
	}
	else {
		return false;
	}
}

function FP_ValidaTextoGeneral(strNameObj) {
/*************************************************************************************
Empresa		:    CosapiSoft S.A.
*************************************************************************************/
	//strNameObj : Nombre de la caja de texto a validar.	
	var Obj = document.all[strNameObj];
	var ch_Caracter = String.fromCharCode(window.event.keyCode);
	var intEncontrado = "1234567890abcdefghijklmnñopqrstuvwxyzáéíóúÁÉÍÓÚ_-ABCDEFGHIJKLMNÑOPQRSTUVWXYZ() ".indexOf(ch_Caracter);
	if (intEncontrado == -1) {	
		window.event.keyCode = 0;		
	}
	else {
		window.event.keyCode = ch_Caracter.charCodeAt();
	}	
}

function FP_ValidaTextoDescripcionFinal(strCad){
//SE LLAMA AL GRABAR Y EN EL ONKEYPRESS SE DEBE LLAMAR A: FP_ValidaTextoFinal
/*************************************************************************************
Autor		: RMCA
Descripcion : Permite validar caracteres no validos (cortar/pegar)
Empresa		: CosapiSoft S.A.
*************************************************************************************/
	var strCadena = new String(strCad);
	if(strCad == "")
		return true;
			
	var valido = "0123456789abcdefghijklmnñopqrstuvwxyzáéíóúÁÉÍÓÚ_-ABCDEFGHIJKLMNÑOPQRSTUVWXYZ()., ";
			
	strCadena = strCadena;
	for (i = 0 ; i <= strCadena.length - 1; i++)
	{	
		if (valido.indexOf (strCadena.substring(i,i+1),0) == -1)
		{
			valido = strCadena.substring(i,i + 1);
			return false;
		} 
	}	
	return true;
}
function FP_ValidaTextoDescripcionFinal1(strCad){
//SE LLAMA AL GRABAR Y EN EL ONKEYPRESS SE DEBE LLAMAR A: FP_ValidaTextoFinal
/*************************************************************************************
Autor		: RMCA
Descripcion : Permite validar caracteres no validos (cortar/pegar)
Empresa		: CosapiSoft S.A.
*************************************************************************************/
	var strCadena = new String(strCad);
	if(strCad == "")
		return true;
			
	var valido = "0123456789 ";
			
	strCadena = strCadena;
	for (i = 0 ; i <= strCadena.length - 1; i++)
	{	
		if (valido.indexOf (strCadena.substring(i,i+1),0) == -1)
		{
			valido = strCadena.substring(i,i + 1);
			return false;
		} 
	}	
	return true;
}
