
// Definición de variables
var digitos = "0123456789";
var minusculas = "abcdefghijklmnopqrstuvwxyz";
var mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var vocalesTildadas = "áéíóúÁÉÍÓÚ";
var caracteresNoBritanicos = "ÄËÏÖÜäëïöüñÑ.-";
var caracteresEmail = "@.+_-";
var caracteresPaginaWeb = "./~-";
var caracteresLoginPassword = "._-";
var espacio = " ";
var strNuestroPais = "ESPAÑA";
var guion = "-";
var proh = "<>/\'\\\"";  //cadena de caracteres prohibidos,  \'=' , \\=\,  \"="
var proh1 = "<>\'\\\"";  //cadena de caracteres prohibidos,  \'=' , \\=\,  \"="


function aleatorio(inferior,superior){ 
    numPosibilidades = superior - inferior 
    aleat = Math.random() * numPosibilidades 
    aleat = Math.round(aleat) 
    return parseInt(inferior) + aleat 
} 

function prohibidos(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);
                
                if (perteneceA(c,proh))
                {
                        result = false;
                        break;
                }
        }
        return result;
}

function prohibidos1(t)
{
        var c;
        var result = true;

        for (var i = 0; i < t.length; i++)
        {
                c = t.charAt(i);
                
                if (perteneceA(c,proh1))
                {
                        result = false;
                        break;
                }
        }
        return result;
}

function FechaValida(Annod,Mesd,Diad)
{

 if ((Mesd > 12) || (Diad > 31))
        return false
 else
 {
        if (((Mesd == 01) || (Mesd == 03) || (Mesd == 05) || (Mesd == 07) || (Mesd == '08') || (Mesd == 10) || (Mesd == 12)) &&
            (Diad > 31))
                return false
        else
        {
                if (((Mesd == 04) || (Mesd == 06) || (Mesd == '09') || (Mesd == 11)) &&
                    (Diad > 30))
                        return false
                else
                {
                 if ((Mesd == 02))
                 {
                        if (Diad > 29)
                                return false
                        else
                        {
                                resto = Annod % 4
                                if ((resto != 0) && (Diad > 28))
                                        return false
                                else
                                {
                                        resto = Annod / 100;
                                        if ((resto == 0) && (Diad > 28))
                                                return false
                                }
                        }
                 }
                }
         }
 }
return true
}

function isDecimal(cadena)
{
  var checkOK = "0123456789";
  var allValid = true;
  var allNum = "";
  var puntos=0;
  for (i = 0;  i < cadena.length;  i++)
  {
    ch = cadena.charAt(i);
    for (j = 0;  j < checkOK.length;  j++){
      if (ch == checkOK.charAt(j) || ch=='.' || ch==','){
        
        if(ch=='.' || ch==',')puntos++;
        //alert(puntos)
        break;
      }
		}
    if (j == checkOK.length || puntos>1)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if(allValid == true)
        return (true);
  if(allValid == false)
        return (false);
}

function isDigit (caracter)
{
	return ((caracter >= "0") && (caracter <= "9"))
}


function isInteger (numero)
{   var i;

    for (i = 0; i < numero.length; i++)
    {
        var caracter = numero.charAt(i);
        if( i != 0 ) {
            if (!isDigit(caracter))
            	return false;
        } else {
            if (!isDigit(caracter) && (caracter != "-") || (caracter == "+"))
            	return false;
        }
    }
    return true;
}

function BuscaCaracter (Cadena , Caracter)
{

  for (i=0;i< Cadena.length ; i++)
   {
      if (Cadena.charAt (i) == Caracter)
         {
           return true
         }
   }
   return false
}

function BuscaGuiones(Cadena)
{
  var encontrado=false;
  for (i=0;i<Cadena.length;i++)
   {
      if (Cadena.charAt(i)=='-')
         {
              encontrado=true;
         }
   }
 if (encontrado==true)
 {
      return (true);
 }
 else
  {
     return (false);
  }
}

function bValidaMail (Email){
	
		var val_mail=/^[a-zA-z0-9][a-zA-Z0-9-_.]*[a-zA-Z0-9_]{1,}[@][a-zA-Z0-9-_]{1,}[.][a-zA-Z0-9-_.]{1,}[a-zA-Z]{1,}$/;

		if((Email.search(val_mail)==-1)&&(Email.value!="")){
			Reason1="El formato del eMail es incorrecto";
							return (false);
		} else{
			return (true);
		}
}
/*
function bValidaMail (Email)
{
  var Reason1 = ""
  var checkStr = Email
  var ix = (checkStr.length - 4)
  var RC = true;
  var x = AtSignValid = DoublePeriod = PeriodValid = SpaceValid = ExtValid = RL = 0;
  for (i = 0;  i < checkStr.length;  i++)
  {
    if (checkStr.charAt(i) == '@')
      AtSignValid++;
    else if (checkStr.charAt(i) == '.')
    {
      if (x == (i-1))
        DoublePeriod++;
      else
      {
        x = i;
        PeriodValid++;
      }
    }
    else if (checkStr.charAt(i) == ' ')
      SpaceValid ++;
  }
  RL = Reason1.length;
  if (AtSignValid != 1){
    Reason1 += "Debe existir un signo @ único en la dirección del E-mail.  ";
  }
  if (PeriodValid == 0){
    Reason1 += "La dirección del E-mail debe contener al menos un punto.  ";
  }
  if (SpaceValid > 0){
    Reason1 += "No se deben introducir espacios en el E-Mail  ";
  }
  if (DoublePeriod > 0){
    Reason1 += "La dirección de E-Mail contiene múltiples puntos sucesivos.  ";
  }
  if (RL != Reason1.length)
  {
    RC= false
  }
  else
  {
    RC= true
  }
  return RC
}

*/

function isValidDate(s) {
  d = new Date(s)
  if (isNaN( d.valueOf() ))
    return false;

  sArray = s.split("/")
  
  
  return FechaValida(sArray[2],sArray[1],sArray[0])
  
}

function estaVacio(s)
{
        return ((s == null) || (s.length == 0));
}

function perteneceA(c,s)
{
        var result = false;

        for (var i = 0; i < s.length; i++)
        {
                if (c == s.charAt(i))
                {
                        result = true;
                        break;
                }
        }

        return result;
}

// Validación V01
//
// Determina si la longitud de la cadena s es de al menos l caracteres
function valV01(s,l)
{
        return (s.length >= l);
}

// Validación V02
//
// Determina si la longitud de la cadena s es de l caracteres
function valV02(s,l)
{
        return (s.length == l);
}

// Validación V03
//
// Determina si los caracteres de un campo de entrada son sólo alfanuméricos (excluyendo espacios en blanco)
function valV03(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) || perteneceA(c,digitos)))
                {
                        result = false;
                        break;
                }
        }
        return result;
}


// Validación V04
//
// Determina si un campo de entrada comienza por una letra
function valV04(s)
{
	var empieze=perteneceA(s.charAt(0),minusculas) || perteneceA(s.charAt(0),mayusculas)|| perteneceA(s.charAt(0),digitos);
	var i=s.length -1;
	var terminar=perteneceA(s.charAt(i),minusculas) || perteneceA(s.charAt(i),mayusculas)|| perteneceA(s.charAt(i),digitos);

        return (empieze && terminar);
}

// Validaci\363n V04b
//
// Determina si los caracteres de una cadena son alfanum\351ricos o es un espacio en blanco
function valV04b(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) || perteneceA(c,espacio) ))
                {
                        result = false;
                        break;
                }
        }
        return result;
}

// Validación V05
//
// Determina si los caracteres de una cadena son alfanuméricos, vocales tildadas, caracteres no británicos o es
// un espacio en blanco
function valV05(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);
                if (((i == 0) || (i == s.length-1)) && perteneceA(c,espacio)) {
                    result = false;
                    break;
                }

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) || perteneceA(c,vocalesTildadas) ||
                      perteneceA(c,caracteresNoBritanicos) || perteneceA(c,espacio) || perteneceA(c,digitos)))
                {
                        result = false;
                        break;
                }
        }
        return result;
}


// Validación V06
//
// Determina si en el campo de entrada existe al menos un dígito
function valV06(s)
{
        var c;
        var result = false;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (perteneceA(c,digitos))
                        result = true;
        }

        return result;
}


// Validacion V07
//
// Determina si dos campo son iguales
function valV07(s1,s2)
{
        return (s1 == s2);
}


// Validacion V08
//
// Determina si dos campo son distintos
function valV08(s1,s2)
{
        return (s1 != s2);
}


// Validación V09
//
// Deternima si un campo de entrada correspondiente a un código postal pertenece al rango [01xxx ...52xxx]
// Para que no haya problemas, esta validación ha de realizar tras comprobar que la longitud mínima es de
// 5 caracteres, y que dichos caracteres corresponden a números enteros.
function valV09(s)
{
        var sIni = s.substr(0,2);               // Obtenemos los dos primeros caracteres del código postal
        var iIni = parseInt(sIni,10);           // Convertimos la cadena en un número decimal

        if ((iIni < 01) || (iIni > 52))
                result = false;
        else
                result = true;

        return result;
}


// Validación V10
//
// Determina si los caracteres de un campo de entrada equivalen a un número entero
// Es usada en bValidaIdentificacion
function valV10(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);
				if (!(perteneceA(c,digitos)))
                {
                        result = false;
                        break;
                }
        }
		return result;
}


// Validación V11
//
// Determina si un campo de entrada finaliza por una letra
function valV11(s)
{
		var pos = s.length - 1;
		return (perteneceA(s.charAt(pos),minusculas) || perteneceA(s.charAt(pos),mayusculas));
}


// Validación V12
//
// Valida el login :Determina si los caracteres de una cadena son números, letras, guión bajo "_" o punto "."
function valV12(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) ||
					  perteneceA(c,caracteresLoginPassword) || perteneceA(c,digitos)))
                {
                        result = false;
                        break;
                }
        }
        return result;
}


// Valida el login :Determina si los caracteres de una cadena son números, letras
function valCaracteresLogin(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) ||
					  perteneceA(c,digitos) || perteneceA(c,caracteresLoginPassword)))
                {
                        result = false;
                        break;
                }
        }
        return result;
}
// Validación V13
//
// Deternima si un campo de entrada correspondiente al día de una fecha es válido.
function valV13(s)
{
		// Le añadimos un cero delante si procede
		if (s.length == 1)
		{
			s = "0" + s;
		}

        if ((s < "01") || (s > "31"))
                result = false;
        else
                result = true;

        return result;
}

// Validación V14
//
// Deternima si un campo de entrada correspondiente al mes de una fecha es válido.
function valV14(s)
{
		// Le añadimos un cero delante si procede
		if (s.length == 1)
		{
			s = "0" + s;
		}

        if ((s < "01") || (s > "12"))
                result = false;
        else
                result = true;

        return result;
}


// Validación V15
//
// Determina si la cadena pasada es una dirección de correo electrónico válida
function valV15(s)
{
        // En primer lugar se verifica la validez de los caracteres de la cadena
        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) || perteneceA(c,caracteresEmail) ||
                      perteneceA(c,digitos)))
                {
                        result = false;
                }
        }

   atOffset = s.lastIndexOf('@');

   if ( atOffset < 1 )
        return false;
   else
   {
                dotOffset = s.indexOf('.', atOffset);

      if ( dotOffset < atOffset + 2 || dotOffset > s.length - 2 )
        return false;
   }

   return true;
}

// Validación V16
//
// Determina si un año de nacimiento es anterior al actual
function valV16(s)
{
		today = new Date();
		var anyoActual = today.getFullYear();
		var anyoNacimiento = new Number(s);

		if (anyoNacimiento > anyoActual)
		{
				return false;
		}
		else
		{
				return true;
		}
}

// Validación V18
//
// Determina si los caracteres de una cadena son alfabéticos, vocales tildadas, caracteres no británicos o
// un espacio en blanco
function valV18(s)
{
        var c;
        var result = true;

        for (var i = 0; i < s.length; i++)
        {
                c = s.charAt(i);
				if (((i == 0) || (i == s.length-1)) && perteneceA(c,espacio)) {
                    result = false;
                    break;
                }

                if (!(perteneceA(c,minusculas) || perteneceA(c,mayusculas) || perteneceA(c,vocalesTildadas) ||
                      perteneceA(c,caracteresNoBritanicos) || perteneceA(c,espacio) || perteneceA(c,caracteresLoginPassword)))
                {
                        result = false;
                        break;
                }
        }
        return result;
}

// Verifica que un login o alias no pertenezca a la lista de palabras prohibidas
//
function valPalabraReservada(sPalabra)
{
		var encontrado = true;
		for (var i = 0 ; i < arrayPalabrasReservadas.length ; i++)
		{
				if (arrayPalabrasReservadas[i] == sPalabra)
				{
						encontrado = false;
						break;
				}
		}

		return encontrado;
}




function DiferenciaFechas (CadenaFecha1,CadenaFecha2) {
   
   //Obtiene dia, mes y año
   var fecha1 = CadenaFecha1.split("/");   
   var fecha2 = CadenaFecha2.split("/");
   
   //Obtiene objetos Date
   var miFecha1 = new Date( fecha1[2], fecha1[1]-1, fecha1[0] ) //Enero =0
   var miFecha2 = new Date( fecha2[2], fecha2[1]-1, fecha2[0] ) //Enero =0
  
   //compara fechas
   if(miFecha1.getTime() > miFecha2.getTime()){
        return false;
   }else{
        return true;
   }
   
   
   
}

function ponINTROS(texto){
	a = texto.split("<<<");
	cadena = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena = a[0];
		}else{
		  cadena = cadena + "\r\n" + a[i];
		}
	}
	return cadena;
}

function quitaINTROS(texto){
	a = texto.split("\r\n");
	cadena = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena = a[0];
		}else{
		  cadena = cadena + " " + a[i];
		}
	}
	return cadena;
}

function escapaComillas(texto){
	a = texto.split("\"");
	cadena = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena = a[0];
		}else{
		  cadena = cadena + "\'" + a[i];
		}
	}
	a = cadena.split("\'");
	cadena2 = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena2 = a[0];
		}else{
		  cadena2 = cadena2 + "\' " + a[i];
		}
	}	
	
	return cadena2;	
}

function escapaComillasUpdate(texto){
	a = texto.split("\"");
	cadena = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena = a[0];
		}else{
		  cadena = cadena + "\'" + a[i];
		}
	}
	a = cadena.split("\'");
	cadena2 = "";
	for(var i=0;i<=a.length-1;i++){
		if(i==0){
			cadena2 = a[0];
		}else{
		  cadena2 = cadena2 + "\'\' " + a[i];
		}
	}	
	
	return cadena2;	
}

function FechaValidaNegativos(Annod,Mesd,Diad)
{

 if ((Mesd > 12) || (Diad > 31))
        return false
 else
 {
 	if(Annod==-1 || Mesd==-1 || Diad==-1){
 		return false;
 	}else{
        if (((Mesd == 01) || (Mesd == 03) || (Mesd == 05) || (Mesd == 07) || (Mesd == '08') || (Mesd == 10) || (Mesd == 12)) &&
            (Diad > 31))
                return false
        else
        {
                if (((Mesd == 04) || (Mesd == 06) || (Mesd == '09') || (Mesd == 11)) &&
                    (Diad > 30))
                        return false
                else
                {
                 if ((Mesd == 02))
                 {
                        if (Diad > 29)
                                return false
                        else
                        {
                                resto = Annod % 4
                                if ((resto != 0) && (Diad > 28))
                                        return false
                                else
                                {
                                        resto = Annod / 100;
                                        if ((resto == 0) && (Diad > 28))
                                                return false
                                }
                        }
                 }
                }
         }
    }
 }
return true
}
function LTrim(s){
	// Devuelve una cadena sin los espacios del principio
	var i=0;
	var j=0;
	
	// Busca el primer caracter <> de un espacio
	for(i=0; i<=s.length-1; i++)
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	return s.substring(j, s.length);
}
function RTrim(s){
	// Quita los espacios en blanco del final de la cadena
	var j=0;
	
	// Busca el último caracter <> de un espacio
	for(var i=s.length-1; i>-1; i--)
		if(s.substring(i,i+1) != ' '){
			j=i;
			break;
		}
	return s.substring(0, j+1);
}
function Trim(s){
	// Quita los espacios del principio y del final
	return LTrim(RTrim(s));
}

function leftTrim(sString) 
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
return sString;
}

function rightTrim(sString) 
{
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}


function trimAll(sString) 
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}

