// JavaScript Document

function checkObligat() {
   for (var i=0; i<arguments.length; i++) {
      if ((arguments[i].value.length==0) || (arguments[i]=="0")) {
		alert ("Por favor, rellene los campos obligatorios");
		arguments[i].focus();
		return false;
	   }
   }
}

function compruebaRegExp(regx, value){
  switch (regx){
  case "alfa":
    return ((/^[a-zA-Z]+$/).test(value));
  case "alfaEspacio":
    return ((/^[a-zA-Z ]+$/).test(value));
  case "alfaAcentos":
    return ((/^[a-zA-Zà-üÀ-Ü]+$/).test(value));
  case "alfaAcentosEspacio":
    return ((/^[a-zA-Zà-üÀ-Ü ]+$/).test(value));
  case "alfaAcentosSep":
    return ((/^[a-zA-Zà-üÀ-Ü ,\-\.\/]+$/).test(value));
  case "alfaNum":
    return ((/^[a-zA-Z0-9]+$/).test(value));
  case "alfaNumEspacio":
    return ((/^[a-zA-Z0-9 ]+$/).test(value));
  case "alfaNumSep":
    return ((/^[a-zA-Z0-9 ,\-\.\/]+$/).test(value));
  case "alfaNumAcentos":
    return ((/^[a-zA-Zà-üÀ-Ü0-9]+$/).test(value));
  case "alfaNumAcentosEspacio":
    return ((/^[a-zA-Zà-üÀ-Ü0-9 ]+$/).test(value));
  case "alfaNumAcentosSep":
    return ((/^[a-zA-Zà-üÀ-Ü0-9ªº ,\%\+\!\$\&\¿\?\-\'\.\/]+$/).test(value));
  case "general":
    return ((/^[a-zA-Zà-üÀ-Ü0-9ªº ,\%\+\¡\!\$\&\¿\?\-\'\.\/]+$/).test(value));
  case "numEntero":
    return ((/^\d+$/).test(value));
  case "numEnteroSep":
    return ((/^[\d \-]+$/).test(value));
  case "real":
    return ((/^(\+|-)?[0-9][0-9]*(\,[0-9]*)?$/).test(value));
  case "tarjeta":
    return ((/^\d+$/).test(value) && validacionLuhn(value));
  case "codPostEsp":
    return ((/^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/).test(value));
  case "email":
    return ((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/).test(value));
  case "moneda":
    return ((/^\d+([\.]\d\d)?$/).test(value));
  case "refProducto":
    return ((/^[a-zA-Z0-9\-]+$/).test(value));
  case "nombreArchivo":
    return ((/^[a-zA-Zà-üÀ-Ü0-9 \-\.\_]+$/).test(value));
  case "telefono":
    return ((/^[\d() \-\+]+$/).test(value));
  default:
    regx2=new RegExp(regx);
    return (regx2.test(value));
  }
}

function validacionLuhn(ccnum){
   // Checksum ("Mod 10")
   // Add even digits in even length strings or odd digits in odd length strings.
   var checksum = 0;
   for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
      checksum += parseInt(ccnum.charAt(i-1));
   }
   // Analyze odd digits in even length strings or even digits in odd length strings.
   for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
      var digit = parseInt(ccnum.charAt(i-1)) * 2;
      if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
   }
   return ((checksum % 10) == 0);
}

function quitaEspacios(textoALimpiar){
	textoALimpiar = textoALimpiar.replace(/[\u0000-\u000C\u000E-\u001F]+/g, "");
	textoALimpiar = textoALimpiar.replace(/\u000D+/g, " ");
	textoALimpiar = textoALimpiar.replace(/^ +/, "");
	textoALimpiar = textoALimpiar.replace(/ +$/, "");
	textoALimpiar = textoALimpiar.replace(/ +/g, " ");
	return(textoALimpiar);
}

function compruebaCampo(regx, campo){
	campo.value = quitaEspacios(campo.value);
   if (campo.value.length>0){
		if(compruebaRegExp(regx,campo.value)==false){
		   campo.focus();
			campo.select();
		   alert("Por favor, introduzca carácteres válidos");
		}
   }
}
