
// MUY IMPORTANTE: 
// este archivo "form.js" tiene qe estar en el directorio de las imagenes
// para que la pagina de pangea lo pueda leer.
// si no es asi, desde la pagina de pangea NO SE PODRA ACCEDER A ESTAS FUNCIONES

function isErrorNumero(inShowAlert,inField) {
  // compruebo que existe
  if (!inField) { alert("Error debug! Element doesn't exist"); return true; }
  var auxNum = Number(inField.value);
  if ( !isNaN(auxNum) && (auxNum==inField.value) ) return false;
  // hay error
  inField.focus();
  if (inShowAlert) alert("\t\""+inField.name+"\"\nNúmero incorrecto.\nWrong number.\nNombre incorrecte.");
  return true;
}

function isErrorList(inShowAlert,inList) {
  // compruebo que existe
  if (!inList) { alert("Error debug! List doesn't exist"); return true; }
  if (inList.selectedIndex!=0) return false;
  // hay error
  inList.focus();
  if (inShowAlert) alert("\t\""+inList.name+"\"\nPor favor, seleccione una opción.\nPlease, choose an option.\nSi us plau, seleccioni una opció.");
  return true;
}

function isErrorField(inShowAlert,inField) {
  // compruebo que existe
  if (!inField) { alert("Error debug! Field doesn't exist"); return true; }
  if (inField.value && inField.value.length>0) return false;
  // hay error
  inField.focus();
  if (inShowAlert) alert("\t\""+inField.name+"\"\nPor favor, introduzca sus datos.\nPlease, enter your data.\nSi us plau, introdueixi les seves dades.");
  return true;
}

// funccion que comprueba si hay una donacion elegida
function isErrorDonacion(inCuota, inDonacion) {
  if (!inCuota || !inDonacion) { alert("Error debug! Donacion doesn't exist"); return true; }
  // cuota o donacion: no pueden estar los dos vacios al mismo tiempo
  if (  isErrorList (false,inCuota) && isErrorField(false,inDonacion)) {
	 alert("Por favor, indique el tipo de donación con la que desea colaborar."
	      + "\nPlease, choose the type of donation you want to collaborate."
	      + "\nSi us plau, indiqui el tipus de donació amb la que desitja col·laborar.");
 	 return true;
  }
  // donacion: si hay algo tiene que ser un numero
  if (!isErrorField(false,inDonacion)) {
	 if (isErrorNumero(true,inDonacion)) return true;
  } 
  // sin problemas
  return false;
}


// funccion que valida el tipo de documento elegido
function isErrorIdentificacion(inList, inField){
  if (!inList || !inField) { alert("Error debug! Identificacion doesn't exist"); return true; }
  if (inList.selectedIndex==1) return isErrorNIF(inField);
  if (inList.selectedIndex==2) return isErrorCIF(inField);
  return false;
}
 
function isErrorEmail(inField) {
  var auxValor = inField.value;
  if (!auxValor) {
    return false; // todo bien, ya que NO es obligatorio
  }
  else if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(auxValor)) {
   return false; // todo bien
  } 
  else {
    alert("E-mail incorrecto."+"\nWrong E-mail."+"\nE-mail incorrecte.");
	inField.focus();
	return true;
  }
}
 
// funccion que valida la letra del NIF
var auxInfoErrorNIF = "NIF incorrecto (Ejemplo: 12345678X)"
                    + "\nWrong NIF (Example: 12345678X)"
					+ "\nNIF incorrecte (Exemple: 12345678X)";
function isErrorNIF(inField) {
  if (!inField || !inField.value) {
    alert(auxInfoErrorNIF);
	inField.focus();
	return true;
  }
  var auxNumero = parseInt(inField.value.substr(0,8),10);
  var auxLetra  = inField.value.substr(inField.value.length-1,inField.value.length);
  var auxCadena = new String ('TRWAGMYFPDXBNJZSQVHLCKE');
  if (auxLetra.toUpperCase() != auxCadena.charAt(auxNumero%23)) {
    alert(auxInfoErrorNIF);
	inField.focus();
	return true;
  }
  return false;
}

// funcion que valida el digito de control del CIF
// chequear con Q3318001I, Q3150004D, F50020213, F11668399
var auxInfoErrorCIF = "CIF incorrecto (Ejemplo: X12345678)"
                    + "\nWrong CIF (Example: X12345678)"
					+ "\nCIF incorrecte (Exemple: X12345678)";
function isErrorCIF(inField)
{
  if (!inField || !inField.value || inField.value.length!=9) {
    alert(auxInfoErrorCIF);
	inField.focus();
	return true;
  }
  var pares = 0;
  var impares = 0;
  var suma;
  var ultima;
  var unumero;
  var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
  var xxx;
        
  var texto = inField.value.toUpperCase();
  var regular =/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g;
  if (!regular.exec(texto)) {
    alert(auxInfoErrorCIF);
	inField.focus();
	return true;
  }
  ultima = texto.substr(8,1);
  for (var cont = 1 ; cont < 7 ; cont ++){
    xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
    impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
    pares += parseInt(texto.substr(cont,1));
  }
  xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
  impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
  suma = (pares + impares).toString();
  unumero = parseInt(suma.substr(suma.length - 1, 1));
  unumero = (10 - unumero).toString();
  if(unumero == 10) unumero = 0;
  if ((ultima != unumero) && (ultima != uletra[unumero])) {
    alert(auxInfoErrorCIF);
	inField.focus();
	return true;
  }
  return false; // todo bien
}
  
// FUNCIÓN QUE VALIDA EL DIGITO DE CONTROL DE UNA CUENTA BANCARIA
// chequear con 21003405932200053004 y 21000150630200455826
function isErrorCtaCorriente(inField)
{
  if (!inField.value || inField.value.length!=20 || isErrorNumero(false,inField) ){
    alert("La cuenta bancaria tiene que ser un número de 20 dígitos."
	    +"\nThe bank account must be a number of 20 digits."
	    +"\nEl compte bancari ha de ser un nombre de 20 dígits.");
	inField.focus();
	return true;
  }

  var c1 = inField.value.substr(0,4);
  var c2 = inField.value.substr(4,4);
  var c3 = inField.value.substr(8,2);
  var c4 = inField.value.substr(10,10);
  var parte1 = c1 + c2;
  var parte2 = c4;
  var Apesos = new Array(1,2,4,8,5,10,9,7,3,6);
  var DC1=0;
  var DC2=0;
  var x=8;
  while(x>0) {
    digito = parte1.substr(x-1,1);
    DC1=DC1+(Apesos[x+2-1]*digito)
    x = x -1;
  }
  Resto = DC1 % 11;
  DC1=11-Resto;
  x=10;
  while(x>0) {
    digito = parte2.substr(x-1,1);
	DC2=DC2+(Apesos[x-1]*digito)
	x = x -1;
  }
  Resto = DC2 % 11;
  DC2=11-Resto;
  if (DC2==10) {DC1=1}
  if (DC2==11) {DC1=0}
  DC = DC1+""+DC2;
  if (DC!=c3) {
    alert("Los datos de la cuenta bancaria son incorrectos"
	     +"\nThe data of the bank account is wrong."
	     +"\nLes dades del compte bancari són incorrectes.");
	inField.focus();
	return true;
  }
  return false;
}


//==================================================================
//Trim(cadena) : devuelve una copia de una cadena sin espacios
//==================================================================
function Trim(str) {
    return lTrim(rTrim(str));
}

function lTrim(str) {
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(0)) != -1) {
      // Cadena con espacios en blanco al principio
      var j=0, i = s.length;
      // Almacena todos los caracteres habidos desde el primer no espacio hasta el último
      while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
         j++;
      s = s.substring(j, i);
   }
   return s;
}

function rTrim(str) {
   var whitespace = new String(" \t\n\r");
   var s = new String(str);
   if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
       // Cadena con espacios en blanco al final
      var i = s.length - 1;       // Longitud de la cadena
      // Almacena todos los caracteres habidos desde el último no espacio hasta el primero
      while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
         i--;
      s = s.substring(0, i+1);
   }
   return s;
}


