/*
//=================================================================
//
// Copyright 2000 Novasoft Servicios Informáticos S.A.
//             Todos los derechos reservados
// MODULO:
//   StringUtils
//
// DESCRIPCIÓN:
//   Contiene métodos relacionados con cadenas JScript cliente.
//
// CREADO:
//   19/12/2000  ARS
//=================================================================
*/

/*
//=================================================================
// FUNCIÓN:
//   str_valid_value
//
// DESCRIPCIÓN:
//  Comprueba si la cadena de entrada contiene sólo caracteres del
// conjunto de caracteres permitidos y un flag indicando si la
// comprobación debe ser sentiva a mayúsculas y minúsculas.
//
// ENTRADAS:
//	Cadena a comprobar.
//  Conjunto de caracteres permitidos en la cadena.
//  Flag indicando si la comprobación es o no sensitive case.
//  1 = sensitive case.
//
// SALIDAS:
//  True si la cadena sólo contiene los caracteres permitidos.
//  False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_valid_value(value,validchars,casesensitive) {

        /* If not case sensitive then convert both value and valid */
        /* characters to upper case */
        if (casesensitive!=1) {
                value=value.toUpperCase();
                validchars=validchars.toUpperCase();
        }

        /* Go through each character in value until either end or hit an
invalid char */
        charposn=0;
        while
((charposn<value.length)&&(validchars.indexOf(value.charAt(charposn))!=-
1)) {
                charposn++;
        }

        /* Check if stop was due to end of input string or invalid char and set
return code */
        /* accordingly */
        if (charposn==value.length) {
                return(true);
        } else {
                return(false);
        }
}

/*
//=================================================================
// FUNCIÓN:
//  charInString
//
// DESCRIPCIÓN:
//  Compara si un caracter está dentro de una cadena de caracteres
//
// ENTRADAS:
//	Caracter y cadena a comparar
//
// SALIDAS:
//  Rdo de la comparación
//
// CREADO:
//   17/04/2001 YDS
//
//=================================================================
*/

function charInString(a,b)
{
	var lb_iguales = false;
	var i;

	for (var i = 0; i < b.length; i++) {
		if (a == b.substring(i, 1)) {
			lb_iguales = true;
			break;
		}
	}

	return lb_iguales;
}


/*
//=================================================================
// FUNCIÓN:
//   str_ltrim
//
// DESCRIPCIÓN:
//  Elimina los espacios iniciales de una cadena.
//
// ENTRADAS:
//	Cadena cuyos espacios iniciales hay que eliminar
//
// SALIDAS:
//  La cadena de entrada después de eliminar los espacios iniciales.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_ltrim(s) {
				var i = 0;
				var whitespace = " \t\n\r";

		while ( (i < s.length) && charInString(s.charAt(i), whitespace) )
			 i++;
		return s.substring(i, s.length);
}

/*
//=================================================================
// FUNCIÓN:
//   str_rtrim
//
// DESCRIPCIÓN:
//  Elimina los espacios finales de una cadena.
//
// ENTRADAS:
//	Cadena cuyos espacios finales hay que eliminar
//
// SALIDAS:
//  La cadena de entrada después de eliminar los espacios finales.
//
// CREADO:
//   19/12/2000  ARS.
//
// MODIFICADO:
//		17/04/2001 YDS
//=================================================================
*/
function str_rtrim(s)
{
				/*var i = 0;
				var whitespace = " \t\n\r";
		while ( (i < s.length) && charInString(s.charAt(i), whitespace) )
			 i++;
		return s.substring(i, s.length);*/

	var i = s.length - 1;
	var whitespace = " \t\n\r";

	while ( (i >= 0) && charInString(s.charAt(i), whitespace) )
		i--;
	return s.substring(0, i + 1);

}

/*
//=================================================================
// FUNCIÓN:
//   str_trim
//
// DESCRIPCIÓN:
//  Elimina los espacios iniciales y finales de una cadena.
//
// ENTRADAS:
//	Cadena cuyos espacios iniciales y finales hay que eliminar
//
// SALIDAS:
//  La cadena de entrada después de eliminar los espacios iniciales
// y finales.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_trim(s) {
				return str_ltrim(str_rtrim(s));
}


/*
//=================================================================
// FUNCIÓN:
//   str_is_in_string
//
// DESCRIPCIÓN:
//  Comprueba si el caracter dado está en la cadena dada.
//
// ENTRADAS:
//	Caracter a comprobar en la cadena.
//  Cadena en la que ver si está el caracter.
//
// SALIDAS:
//  True si el caracter dado está en la cadena dada. False en otro caso
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_in_string(c, s) {
				for (i = 0; i < s.length; i++) {
								if (s.charAt(i) == c)
												return true;
		}
		return false
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_digit
//
// DESCRIPCIÓN:
//  Comprueba si el caracter dado es o no un dígito.
//
// ENTRADAS:
//	Caracter a comprobar si es un dígito.
//
// SALIDAS:
//  True si el caracter dado es un dígito. False en otro caso
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_digit(c) {
				return ( ( c >= "0" ) && ( c <= "9" ) )
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_integer
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un número.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un número.
//
// SALIDAS:
//  True si la cadena es un número. False en otro caso
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_integer(s) {
				var i;
		for ( i = 0; i < s.length; i++ )
		{
				var c = s.charAt(i);
				if ( ! str_is_digit(c) ) return false;
		}
		return true;
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_integer_in_range
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un número y está en el rango dado.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un número.
//  Inicio del rango.
//  Fin del rango.
//
// SALIDAS:
//  True si la cadena es un número en el rango dado. False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_integer_in_range(s, a, b) {
		if ( ! str_is_integer(s) ) return false;
		var num = parseInt (s);
		return ( ( num >= a ) && ( num <= b ) );
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_non_negative_integer
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada representa un número positivo.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un número positivo.
//
// SALIDAS:
//  True si la cadena es un número positivo. False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_non_negative_integer(s) {
		return ( str_is_signed_integer(s) && ( parseInt(s) >= 0 ) );
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_signed_integer
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada representa un número con signo
// (positivo o negativo).
//
// ENTRADAS:
//	Cadena a comprobar si es o no un número con signo.
//
// SALIDAS:
//  True si la cadena es un número con signo. False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_signed_integer(s) {
		var startPos = 0;
		if ( ( s.charAt(0) == "-" ) || ( s.charAt(0) == "+" ) )
			 startPos = 1;
		return ( str_is_integer(s.substring(startPos, s.length)) )
}


/*
//=================================================================
// FUNCIÓN:
//   str_is_phonenumber
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada tiene el formato NN NNNNNNN o
//  NNN NNNNNN. Siendo N un número del 0 al 9.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un número de telefono.
//
// SALIDAS:
//  True si la cadena es un número de telf. False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_phonenumber( strAux )
{
	var re1 = /\d{2} \d{7}/ ;
	var re2 = /\d{3} \d{6}/ ;

	if ( re1.test( strAux ) || re2.test( strAux ) ) {
		return false;
	}

	return true;
}

/*
//=================================================================
// FUNCIÓN:
//   str_is_email
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada tiene el formato .
//
// ENTRADAS:
//	Cadena a comprobar si es o no un email
//
// SALIDAS:
//  True si la cadena es un email. False en otro caso.
//
// CREADO:
//   19/12/2000  ARS.
//
//=================================================================
*/
function str_is_email( strAux )
{
	var erEmail = /^[^@]+@[^\.]+(\.[^\.]+)+$/;
	var valida = erEmail.test( strAux );
	if ( valida )
		return true
	else {
		return false;
	}
}


//=================================================================
// FUNCIÓN:
//   str_is_login
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un login válido: distinto del vacío y
// tiene entre 3 y 30 caracteres.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un login
//
// SALIDAS:
//  True si la cadena es un login. False en otro caso.
//
// CREADO:
//   20-02-2001		MJJL
//
//=================================================================
function str_is_login(as_login)
{
	var lb_resultado = true;

	if (as_login == '')
	{
		lb_resultado = false;		
		alert(G_CTE_JS_INTR_USU);
	}
	else
	{
		if ((as_login.length < 3) || (as_login.length > 30))
		{			
			alert(G_CTE_JS_ERR_COD_USU);
			lb_resultado = false;
		}
	}
	return lb_resultado;
}


//=================================================================
// FUNCIÓN:
//   str_is_password
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es una password válida: distinta del vacío y
// tiene entre 5 y 30 caracteres.
//
// ENTRADAS:
//	Cadena a comprobar si es o no una password
//
// SALIDAS:
//  True si la cadena es una password. False en otro caso.
//
// CREADO:
//   20-02-2001		MJJL
//
// MODIFICADO:
//	  10/05/2002		IMFD	R-DM-669
//=================================================================
function str_is_password(as_password)
{
	var lb_resultado = true;

	if (as_password == '')
	{
		lb_resultado = false;

		window.alert(G_CTE_JS_INTR_PASS);
	}
	else
	{
		if ((as_password.length < 4) || (as_password.length > 30))
		{
			window.alert(G_CTE_JS_ERR_PASS);

			lb_resultado = false;
		}
	}
	return lb_resultado;
}



//=================================================================
// FUNCIÓN:
//   str_is_password_clave
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es una password válida: distinta del vacío y
// tiene entre 5 y 20 caracteres.
//
// ENTRADAS:
//	Cadena a comprobar si es o no una password
//
// SALIDAS:
//  True si la cadena es una password. False en otro caso.
//
// CREADO:
//   20-02-2001		MJJL
//
// MODIFICADO:
//	  10/05/2002		IMFD	R-DM-669
//=================================================================
function str_is_password_clave(as_password,tipo)
{
	var lb_resultado = true;

	if (as_password == '')
	{
		lb_resultado = false;

		if (tipo==1)
		{
			window.alert(G_CTE_JS_INTR_PASS);
		}
		if (tipo==2)
		{
			window.alert(G_CTE_JS_INTR_PASS_NUEVA);
		}
		if (tipo==3)
		{
			window.alert(G_CTE_JS_INTR_PASS_CONF);
		}

	}
	else
	{
		if ((as_password.length < 4) || (as_password.length > 20))
		{

		if (tipo==1)
		{
			window.alert(G_CTE_JS_ERR_PASS);
		}
		else
		{
			window.alert(G_CTE_JS_ERR_PASS_NUEVA);
		}

			lb_resultado = false;
		}
	}
	return lb_resultado;
}



//=================================================================
// FUNCIÓN:
//   str_is_cp
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un cp válido: que tenga 5 caracteres
//
// ENTRADAS:
//	Cadena a comprobar si es o no un cp
//
// SALIDAS:
//  True si la cadena es un cp. False en otro caso.
//
// CREADO:
//   02-03-2001		IMFD
//
//=================================================================
function str_is_cp(as_cp)
{
	var lb_resultado = true;

	if ((as_cp.length > 5) || (as_cp.length < 5))
	{
		lb_resultado = false;
	}
	return lb_resultado;
}


//=================================================================
// FUNCIÓN:
//   str_is_confirm_password
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es una password válida: distinta del vacío y
// tiene entre 5 y 30 caracteres.
//
// ENTRADAS:
//	Cadena a comprobar si es o no una password
//
// SALIDAS:
//  True si la cadena es una password. False en otro caso.
//
// CREADO:
//   07-03-2001		JDLM
// MODIFICADO:
//	  10/05/2002		IMFD	R-DM-669
//
//=================================================================
function str_is_confirm_password(as_password)
{
	var lb_resultado = true;

	if (as_password == '')
	{
		lb_resultado = false;
		window.alert(G_CTE_JS_INTR_CONFIR_PASS);

	}
	else
	{
		if ((as_password.length < 5) || (as_password.length > 30))
		{
			window.alert(G_CTE_JS_ERR_CONFIR_PASS);

			lb_resultado = false;
		}
	}
	return lb_resultado;
}

//=================================================================
// FUNCIÓN:
//  validacion_login_password
//
// DESCRIPCIÓN:
//  Controla la validez del login, contraseña y confirmación de la
//  contraseña dados.
//
// IN:
//   Objeto input   ao_login            Input que contiene el nombre de
//																			usuario bajo el que se crea la sesion
//
//   Objeto input   ao_password         Input que contiene el password del
//																			usuario
//   Objeto input   ao_confirm_password Input que contiene la confirmación
//																		  del password
//
// OUT:
//  Boolean   lb_resultado         Resultado de la validación
//
// CREADO:
//  6/03/2002  JDLM R-NI-11
//
// MODIFICADO:
//	  10/05/2002		IMFD	R-DM-669
//
//=================================================================
  function validacion_login_password(ao_login, ao_password,ao_confirm_password)
  {
    var lb_resultado;

    lb_resultado = true;

    if (lb_resultado && ! str_is_login(ao_login.value) )
    {
			lb_resultado = false;
		}

		if (lb_resultado && ! str_is_password(ao_password.value) )
		{
			ao_password.focus();
			lb_resultado = false;
		}

		if (lb_resultado && !str_is_confirm_password(ao_confirm_password.value) )
		{
			ao_confirm_password.focus();
			lb_resultado = false;
		}

		if (lb_resultado && !(ao_password.value==ao_confirm_password.value) )
		{
			window.alert(G_CTE_JS_ERR_CONFIRM_PASS);

      ao_confirm_password.focus();
			lb_resultado = false;
		}

    return lb_resultado;

  }


//=================================================================
// FUNCIÓN:
//   str_is_nombre_o_apellido
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un nombre o apellido: máximo 30
//	caracteres.
//
// ENTRADAS:
//	String	as_nom				Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-03-2001		JDLM
//
//=================================================================
function str_is_nombre_o_apellido(as_nom)
{
	var lb_resultado = true;

	if ((as_nom == '') || (as_nom.length > 30) )
	{
		lb_resultado = false;
	}
	return lb_resultado;
}


//=================================================================
// FUNCIÓN:
//   str_is_domicilio
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un domicilio: máximo 60
//	caracteres.
//
// ENTRADAS:
//	String	as_dom				Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-03-2001		JDLM
//
//=================================================================
function str_is_domicilio(as_dom)
{
	var lb_resultado = true;

	if ((as_dom == '') || (as_dom.length > 60) )
	{
		lb_resultado = false;
	}
	return lb_resultado;
}


//=================================================================
// FUNCIÓN:
//   str_is_nif
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un nif con el formato correcto:
//	8 dígitos seguidos de una letra.
//
// ENTRADAS:
//	String	as_nif				Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-03-2001		JDLM
//
//=================================================================
function str_is_nif(as_nif)
{
  var exp_reg_nif=/^\d{8}([a-z]|[A-Z])$/;
	var lb_resultado = true;

	if ( (as_nif == '') || !exp_reg_nif.test(as_nif) )
	{
		lb_resultado = false;
	}
	return lb_resultado;
}

//=================================================================
// FUNCIÓN:
//   str_is_cif
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un cif con el formato correcto:
//	 una letra seguida de 8 dígitos.
//
// ENTRADAS:
//	String	as_cif				Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   03-07-2001		IMFD
//
//=================================================================
function str_is_cif(as_cif)
{
  var exp_reg_cif=/^([a-z]|[A-Z])\d{8}$/;
	var lb_resultado = true;

	if ( (as_cif == '') || !exp_reg_cif.test(as_cif) )
	{
		lb_resultado = false;
	}
	return lb_resultado;
}

//=================================================================
// FUNCIÓN:
//   str_is_cif_nif
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un cif o un nif con el formato
//	correcto:cif,una letra seguida de 8 dígitos.
//				nif,8 dígitos seguida de una letra
//
// ENTRADAS:
//	String	as_cif_nif				Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   25-07-2001		YDS
//
//=================================================================
function str_is_cif_nif(as_cif_nif)
{
	var lb_validacion = true;

	lb_validacion = str_is_nif(as_cif_nif);

	if(!lb_validacion)
	{
		lb_validacion = str_is_cif(as_cif_nif);
	}

	return lb_validacion;
}

//=================================================================
// FUNCIÓN:
//   str_is_telef_sin_formato
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es un teléfono sin formato:
//	un máximo de 20 dígitos y un mínimo de 9.
//
// ENTRADAS:
//	String	as_telef	Cadena a comprobar
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-03-2001		JDLM
//
//=================================================================
function str_is_telef_sin_formato(as_telef)
{
  var exp_reg_tel=/^\d{9,15}$/;
	var lb_resultado = true;

	if ( (as_telef == '') || !exp_reg_tel.test(as_telef) )
	{
		lb_resultado = false;
	}
	return lb_resultado;
}


//=================================================================
// FUNCIÓN:
//   str_is_email_obligatorio
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada tiene el formato y está informada,
//	dando un mensaje en caso contrario.
//
// ENTRADAS:
//	Cadena a comprobar si es o no un email
//
// SALIDAS:
//  True si la cadena es un email. False en otro caso.
//
// CREADO:
//   06/03/2001  JDLM
//
//=================================================================

function str_is_email_obligatorio( strAux )
{
	var erEmail = /^[^@]+@[^\.]+(\.[^\.]+)+$/;
	var lb_resultado = true;

	if ( (strAux == '') || !erEmail.test( strAux ) )
	{
		lb_resultado = false;
	}

	return lb_resultado;

}

//=================================================================
// FUNCIÓN:
//   str_is_cc
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada es una cuenta corriente con el
//	formato adecuado y sitúa el foco en el input erróneo. Formato:
//	Entidad: nnnn Sucursal: nnnn  D.C.:nn  Cuenta: n(10)
//
// ENTRADAS:
//	Objeto input	ao_entidad		Input a comprobar
//	Objeto input	ao_sucursal		Input a comprobar
//	Objeto input	ao_dc					Input a comprobar
//	Objeto input	ao_cuenta			Input a comprobar
//
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-03-2001		JDLM
// MODIFICADO:
//	  10/05/2002		IMFD	R-DM-669
//
//=================================================================
function  str_is_cc(ao_entidad,ao_sucursal,ao_dc,ao_cuenta)
{
  var exp_reg_entidad = /^\d{4}$/;
  var exp_reg_sucursal= /^\d{4}$/;
  var exp_reg_dc      = /^\d{2}$/;
  var exp_reg_cuenta  = /^\d{10}$/;

	var lb_resultado = true;

	if (lb_resultado && !exp_reg_entidad.test(ao_entidad.value) )
	{
		window.alert(G_CTE_JS_INTR_EBANC);
		//alert("La entidad bancaria debe estar informada y seguir el formato: Entidad: nnnn");
		ao_entidad.focus();
		lb_resultado = false;
	}

	if (lb_resultado &&  !exp_reg_sucursal.test(ao_sucursal.value) )
	{
		window.alert(G_CTE_JS_INTR_SUC_BANC);
		//alert("La sucursal bancaria debe estar informada y seguir el formato: Sucursal: nnnn");
		ao_sucursal.focus();
		lb_resultado = false;
	}

	if (lb_resultado &&  !exp_reg_dc.test(ao_dc.value) )
	{
		window.alert(G_CTE_JS_INTR_DC);
		//alert("El dígito de coltrol bancario debe estar informado seguir el formato: D.C: nn");
		ao_dc.focus();
		lb_resultado = false;
	}

	if (lb_resultado &&  !exp_reg_cuenta.test(ao_cuenta.value) )
	{
		window.alert(G_CTE_JS_INTR_CBANC);
		//alert("La cuenta bancaria debe estar informada seguir el formato: Cuenta: 10n");
		ao_cuenta.focus();
		lb_resultado = false;
	}

	return lb_resultado;

}



//=================================================================
// FUNCIÓN:
//   str_is_decimal
//
// DESCRIPCIÓN:
//  Comprueba si la cadena dada tiene un formato válido decimal.
//
// ENTRADAS:
//	Cadena a comprobar
//
// SALIDAS:
//  El numero en formato correcto para ser procesado o null en caso de error
//
// CREADO:
//   07/03/2002	YDS
//
//=================================================================

function str_is_decimal(as_dec)
{
	var ls_dec = as_dec ;
	var ll_pos;


	//if (str_valid_value(as_dec,"'1','2','3','4','5','6','7','8','9','0',',','.','-'",1))
	if (str_valid_value(as_dec,"1234567890,.-",1))
	{
		ls_dec = as_dec.replace(new RegExp(",","g"),".");

		if((ls_dec.length == 1))
		{
			if((ls_dec == ".") || (ls_dec == ",") ||
				(str_trim(ls_dec) == ""))
			{
				return null;
			}
		}

		ll_pos = ls_dec.indexOf(".");

		ll_pos_fin = ls_dec.lastIndexOf(".");

		if(((ll_pos != -1) && (ll_pos_fin != -1)) && (ll_pos != ll_pos_fin))
		{
			return null;		//La cadena tenía mas de un punto y/o coma
		}
		return ls_dec;
	}
	else
	{
		return null;
	}
}

//=================================================================
// FUNCIÓN:
//   str_is_sexo
//
// DESCRIPCIÓN:
// Comprueba q el sexo sea V o M
//
// ENTRADAS:
// String    as_sexo
//
//
// SALIDAS:
//  Boolean lb_resultado	Indica si la comprobación fue válida
//
// CREADO:
//   06-06-2002		PCV
//
//=================================================================
function  str_is_sexo(as_sexo)
{

	var lb_resultado = true;

	if ((as_sexo!="V") && (as_sexo!="v") && (as_sexo!="M") && (as_sexo!="m"))
	{
		alert("El campo sexo no es válido");
		lb_resultado = false;
	}

	return lb_resultado;

}

//***********************************
//Comprueba q sea un dia y mes valido
//****************************************

function fec_comprueba_fecha(dia, mes)
{
	var ll_mes;
	var ll_dia;

	ll_mes = parseInt(mes, 10);
	ll_dia = parseInt(dia, 10);

	if (ll_mes > 12)
	{
		return false;
	}
	if ((ll_dia >28) && (ll_mes == 2))
	{
		return false;
	}
	if ((ll_mes == 4) || (ll_mes == 6) || (ll_mes == 9) || (ll_mes == 11))
	{
		if (ll_dia > 30)
		{
			return false;
		}
	}
	else
	{
		if (ll_dia > 31)
		{
			return false;
		}
	}

	return true;
}


//====================================================================
// Función:
//   escape_euro
//
// Creado:
//   24/4/2003  MVSY
//====================================================================

function escape_euro(sTmp_esp)
{
   var cadena="";
   var ll_i=0;
   var la_aux;
   var lb_encuentra=false;

	//Comprueba si está el símbolo del euro
	while (sTmp_esp && ll_i<sTmp_esp.length && !lb_encuentra)
	{
		if (sTmp_esp.charAt(ll_i)=="€")
		{
		  lb_encuentra=true;
		}
		ll_i++;
	}
	//Si existe el caracter buscado, lo sustituye
	if (lb_encuentra)
	{
		la_aux=sTmp_esp.split("€");
		ll_i=0;
		while (ll_i<la_aux.length)
		{
			if (ll_i==(la_aux.length-1))
			{
				cadena+=la_aux[ll_i];
			}
			else
			{
				cadena+=la_aux[ll_i] + "&#8364";
			}
			ll_i++;
		}
	}
	else
	{
		cadena=sTmp_esp;
	}
	return cadena;
}


//************************************
// Sustituye comillas simples por dobles
//*************************************

function sustituir_comillas(ao_datos)
{
	var ls_cadena = ao_datos.value

	ls_cadena=ls_cadena.replace(/'/g,'"');
	ao_datos.value=ls_cadena;

}

//=================================================================
//	Funciones para validar documentos 
//=================================================================

// Valida Nif - Cif - Nie
function validarNifCif (texto)
{
   var letra = texto.substr(0,1);
   
   if ( isNaN(letra) )
   {  
   		return validar_cif(texto);
   }
   else
    return validar_nif(texto);
}
  
  
// Valida Cif
function validar_cif(valor)
{
		var cif=valor;
		if(!/^[A-Za-z0-9]{9}$/.test(cif)){
			alert("El CIF no es correcto. Debe tener 9 dígitos");
			return false;
		}
		else if(!/^[ABCDEFGHKLMNPQS]/.test(cif)){
			alert("El CIF no es correcto. El primer dígito debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S");
			return false;
		}
		
		var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
    var letra=cif.substr(0,1);
		var numeros=cif.substr(1,7);
		var control=cif.substr(8,9);
		if(isNaN(numeros)){
			alert("El CIF no es correcto. Los 7 dígitos del medio del CIF deben ser números");
			return false;
		}
		var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
		var temp=0;
		var temp1;
		
		for(i=2;i<=6;i+=2){
			temp=temp + v1[parseInt(cif.substr(i-1,1))];
			temp=temp + parseInt(cif.substr(i,1));
		}
		temp=temp + v1[parseInt(cif.substr(7,1))];
		temp=(10-(temp%10));
		
    if(temp == 10) temp = 0;
    
    
    if((temp!=control) && (uletra[temp]!=control)  ){
      alert("El CIF indicado no es correcto.");
			return false;
		}
		return true;
}
	
// Comprovación de la validez de un NIE	
function validar_nie(valor)
	{
		value=valor;
		letra= new Array();
		letra[0] = "T";
		letra[1] = "R";
		letra[2] = "W";
		letra[3] = "A";
		letra[4] = "G";
		letra[5] = "M";
		letra[6] = "Y";
		letra[7] = "F";
		letra[8] = "P";
		letra[9] = "D";
		letra[10] = "X";
		letra[11] = "B";
		letra[12] = "N";
		letra[13] = "J";
		letra[14] = "Z";
		letra[15] = "S";
		letra[16] = "Q";
		letra[17] = "V";
		letra[18] = "H";
		letra[19] = "L";
		letra[20] = "C";
		letra[21] = "K";
		letra[22] = "E";
	
		if(value.length<10)
		{
			alert("El NIE no es correcto. Debe tener 10 caracteres");
			return false;
		}
		else
		{
			var letra1=value.substring(0,1);
			var numeros=value.substring(1,9);
			var letra2=value.substring(9,10).toUpperCase();
			if(isNaN(numeros) || !isNaN(letra1) || !isNaN(letra2))
			{
				alert("El NIE no es correcto. Debe tener una letra al principio, ocho números y una letra al final");
				return false;
			}
			else{
				if(letra1!='X'){
					alert("el valor introducido no se corresponde con un NIE");
					return false;
				}
				var letra_2=(numeros%23);
				if(letra[letra_2]!=letra2)
				{
					alert("La letra final del NIE no es correcta");
					return false;
				}
			}
		}
		return true;
	
}


//Comprobación de la validez de un NIF
function validar_nif(valor)
	{
		var letra= new Array("T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E");
	
    if (valor.length<2)
		{
			alert("El NIF de la persona no es correcto");
			return false;
		}
		else
		{
      
      var longitud = valor.length;
      var numeros=valor.substring(0, longitud-1);
      var letranif=valor.substring(longitud-1,longitud);
      
			if(isNaN(numeros) || !isNaN(letranif))
			{
				alert("El NIF de la persona no es correcto");
				return false;
			}
			else{
				var letra_2=(numeros%23);
				if(letra[letra_2]!=letranif)
				{
					alert("La letra del NIF de la persona no es correcta");
        	return false;
				}
			}
		}
		return true;
}
