//--------------------------------------------------------------------
//EMAIL
//--------------------------------------------------------------------

function validarEmail(campo) {
	e = trim(campo.value);
	if (isEmail(e))
		return true;
	alert('La dirección de Email no es correcta');
	campo.focus();
	return false;
}

//Comprueba que el email es correcto
function ComprobarEmail(email,requerido) { 
	if ((requerido != true) && (Trim(email)==""))
	return true
	var PosArroba=email.indexOf("@");
	var PosPunto=email.indexOf(".");
	if (email == "" ) {
		alert('Debe introducir su dirección de correo electrónico');
		return false;
	}
	else if ((PosArroba < 1)||(PosPunto<0)) {
			alert('La dirección de correo electrónico no es correcta');
			return false;
	}
	else
		return true;
}

//función que indica si la dirección de email tiene la sintaxis correcta
function isEmail(argvalue) {
  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;

  // arrayString = argvalue.split("@"); (works only in netscape3 and above.)
  var retSize = customSplit(argvalue, "@", "arrayString");

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".") {
    return false;
  }
  return true;
}
//--------------------------------------------------------------------
//OBLIGATORIO
//--------------------------------------------------------------------
function ComprobarOblig(campo, mensaje) {	
	if (trim(campo.value) == '') {
		campo.focus();
		alert(mensaje);
		return  false;
	}
	else
		return  true;
}
function ComprobarOblig0(campo, mensaje)
{	
	if (trim(campo.value) == ''|| trim(campo.value) == '0') {
		campo.focus();
		alert(mensaje);
		return  false;
	}
	else
		return  true;
}
function ComprobarObligSinFoco(campo, mensaje) {
	
	if (campo.value == '') {
		alert(mensaje);
		return  false;
	}
	else
		return  true;
}
function ComprobarObligCombo(campo, mensaje) {
	
	if (campo.selectedIndex == 0) {
		campo.focus();
		alert(mensaje);
		return  false;
	}
	else
		return  true;
}
function ComprobarObligComboSinFoco(campo, mensaje) {
	
	if (campo.selectedIndex == 0) {
		alert(mensaje);
		return  false;
	}
	else
		return  true;
}

//--------------------------------------------------------------------
//IGUALES
//--------------------------------------------------------------------
function ComprobarIguales(campo, campo2, mensaje) {	
	if (campo.value != campo2.value) {
		campo.focus();
		alert(mensaje);
		return  false;
	}
	else
		return  true;

}
//--------------------------------------------------------------------
//CP
//--------------------------------------------------------------------
function ValidarCP(campo) {
	cp = campo.value;
	if (isNaN(cp) == false)
		if (cp.length == 5) 
			if ((cp.substr(0,2)*1 > 0 ) && (cp.substr(0,2)*1 <= 52 ) && (cp.substr(2,3)*1 > 0))
				return true;
	alert('El código postal no es correcto');
	campo.focus();
	return false;
}
function ValidarCPSinFoco(campo) {
	cp = campo.value;
	if (isNaN(cp) == false)
		if (cp.length == 5) 
			if ((cp.substr(0,2)*1 > 0 ) && (cp.substr(0,2)*1 <= 52 ) && (cp.substr(2,3)*1 > 0))
				return true;
	alert('El código postal de facturación no es correcto');
	return false;
}
//--------------------------------------------------------------------
//NIF
//--------------------------------------------------------------------
function comprobarNIF(campo) {
	if (ValidarNIF(campo.value)){
		return true;
	}
	else {
		campo.focus();
		alert('La letra del NIF introducido no es correcta. Por favor, introduzcala de nuevo.');
		return false;
	}
}
function ValidarNIF(NIF) {
	var prim;
	if (NIF.length < 6){
		return false;
	}
	NIF = NIF.toUpperCase();
	prim = NIF.substr(0,1);
	if (isNaN(prim)) {
		resto = NIF.substring(1, NIF.length);
		if (prim == LetraNIFFisicas(resto))
			return true;
		else
			return false;
	}
	else {
		fin = NIF.substr(NIF.length -1,1);
		resto = NIF.substr(0, NIF.length -1);
		if (fin == LetraNIFFisicas(resto))
			return true;
		else
			return false;
	}
}
function LetraNIFFisicas(Caracter) {
  var Cadena;
  var i;
  var resp;
  if (isNaN(Caracter)) return 'AB';
  Cadena = "TRWAGMYFPDXBNJZSQVHLCKE";
  i = parseInt(Caracter / 23);
  i = Caracter - i * 23 + 1;
  resp = Cadena.substr(i-1, 1);
  return resp;
}
//no se donde se usa
function comprobarDNI(campo) {	
	if (numCheck(campo.value))
		return true;
	else {
		campo.focus();
		alert('Introduzca sólo números para el DNI.');
		return false;
	}
}
function ValidarCif(cif) {
	var prim;
	var r1,r2,p1,p3,p5,p7;
	var cociente, resto, dc;
	
	cadena = "ABCDEFGHSPQ"
	EQUIV = "ABCDEFGHIJ"
	
	if (cif.length != 9) {
		return false;
  	}
  	
  	cif = cif.toUpperCase();
	prim = cif.substr(0,1);
  	if (cadena.search(prim) == -1) {
  		return false;
  	}
  
	if (isNaN(cif.substr(1,7))) {
		return false;
	}
  	  
  	r1 = parseInt(cif.charAt(2)) + parseInt(cif.charAt(4)) + parseInt(cif.charAt(6));
  	p1 = 2 * parseInt(cif.charAt(1));
  	cociente = parseInt(p1/10);
  	resto = (p1%10);
	p1 = cociente + resto;
	p3 = 2 * parseInt(cif.charAt(3));
	cociente = parseInt(p3/10);
	resto = (p3%10);
	p3 = cociente + resto
	p5 = 2 * parseInt(cif.charAt(5));
	cociente = parseInt(p5/10);
	resto = (p5%10);
	p5 = cociente + resto;
	p7 = 2 * parseInt(cif.charAt(7));
	cociente = parseInt(p7/10);
	resto = (p7%10);
	p7 = cociente + resto;
	r2 = p1 + p3 + p5 + p7;
	r = r1 + r2;
	resto = (r%10);
	resto = 10 - resto;
	dc = cif.substr(cif.length -1,1);
	
	cadena = cadena.substr(0,8);
	if ((cadena.search(prim) != -1) && !(isNaN(dc))) {
		if (resto == 10) {
			resto = 0;
		}
		if (resto != parseInt(dc)) {
			return false;
		}
	} else {
		dig = EQUIV.substr(resto-1,1);
		if (dc != dig) {
			return false;
		}
	}
	return true;  	
}
//--------------------------------------------------------------------
//NIF
//--------------------------------------------------------------------
function validarTelefono(campo){
	if (((campo.value.substr(0, 1)=='9') || (campo.value.substr(0, 1)=='6')) && (campo.value.length == 9))
		return true;
	else
		campo.focus();
		alert('Debe introducir un numero de telefono valido.');
		return false;
}
//--------------------------------------------------------------------
//FECHAS
//--------------------------------------------------------------------
function ComprobarFechaValida(campo, mensaje) {	
	return fecha_correcta(campo.value);
}

/* Fecha correcta ? */
function fecha_correcta (cadena)
{
  var error = 0;
  var dia = 0;
  var mes = 0;
  var anio = 0;

  if (cadena.length != 10)
  {
    alert ("La fecha debe tener 10 caracteres\nFormato correcto: dd/mm/aaaa");
    return false;
  }
  for (i=0;i<cadena.length;i++)
  {
    if (i==2 || i==5)
    {
      if (cadena.charAt(i) != '/')
      {
        alert ("El separador debe ser el caracter \"/\"\nFormato correcto: dd/mm/yyyy");
        return false;
      }
    }
    else
      if (cadena.charAt(i) < '0'|| cadena.charAt(i) > '9')
      {
        alert ("La fecha s" + unescape("%F3") + "lo puede contener caracteres num" + unescape("%E9") + "ricos\n o el caracter \"/\"\nFormato correcto: dd/mm/yyyy");
        return false;
      }
  }
  /* Comprobar dias, meses, anios */
  if (cadena.charAt(0) == '0' && 
      (cadena.charAt(1) == '8' || cadena.charAt(1) == '9'))
    dia = parseInt (cadena.charAt(1), 10);
  else
    dia = parseInt (cadena.substring(0,2), 10);

  if (cadena.charAt(3) == '0' && 
      (cadena.charAt(4) == '8' || cadena.charAt(4) == '9'))
    mes = parseInt (cadena.charAt(4), 10);
  else
    mes = parseInt (cadena.substring(3,5), 10);

  anio = parseInt (cadena.substring(6,10), 10);

  if (!dia || !mes || !anio)
    error = 1;
  else
    if (mes < 0 || mes > 12)
      error = 2;
    else
      if (mes == 2 && (dia > 29 || dia < 0))
        error = 3;
      else
        if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 ||
             mes == 8 || mes == 10 || mes == 12) && (dia < 0 || dia > 31))
          error = 4;
        else
          if ((mes == 2 || mes == 4 || mes == 6 || mes == 9 ||
               mes == 11) && (dia < 0 || dia > 30))
            error = 5;
  if (error != 0)
    alert ("La fecha no es correcta: el d" + unescape("%ED") + "a no se corresponde con el mes\nFormato correcto: dd/mm/yyyy");
  return (error == 0);
}

//--------------------------------------------------------------------
//NUMEROS
//--------------------------------------------------------------------
//función que devuelve si un campo sólo contiene números
function numCheck(argvalue) {

  if (argvalue.length == 0)
    return false;

  for (var n = 0; n < argvalue.length; n++)
    if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
      return false;

  return true;
}
function ValidarNumero(n){
	numero = n.value;
	var longitud = numero.length;
	var posic = numero.indexOf(",");
	if(posic != -1){
		dcha = numero.substring(0,posic);
		izda = numero.substring(posic+1, longitud);
		numero = dcha + '.' +izda;
		n.value=numero;
//		eval("form."+n.name+".value=numero");
	}
	if(isNaN(numero)){
	  alert('Introduzca un numero valido.');
	  return(false);
	}
	else
	  return(true);
}

function ValidarNumeroNegativo(n){
	numero = n.value;
	var longitud = numero.length;
	var posic = numero.indexOf(",");
	if(posic != -1){
		dcha = numero.substring(0,posic);
		izda = numero.substring(posic+1, longitud);
		numero = dcha + '.' +izda;
		n.value=numero;
//		eval("form."+n.name+".value=numero");
	}
	if ('-'==numero.substring (0,1))
	{
	 alert('Introduzca valores positivos.');
	  return(false);
	}
	if(isNaN(numero)){
	  alert('Introduzca un numero valido.');
	  return(false);
	}
	else
	  return(true);
}
//--------------------------------------------------------------------
//STRINGS
//--------------------------------------------------------------------
//función que ejecuta un trim a un string
function trim(argvalue) {
  var tmpstr = ltrim(argvalue);
  return rtrim(tmpstr);
}

//función que ejecuta un trim por la izquierda a un string
function ltrim(argvalue) {

  while (1) {
    if (argvalue.substring(0, 1) != " ")
      break;
    argvalue = argvalue.substring(1, argvalue.length);
  }

  return argvalue;
}
//función que ejecuta un trim por la derecha a un string
function rtrim(argvalue) {

  while (1) {
    if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
      break;
    argvalue = argvalue.substring(0, argvalue.length - 1);
  }
  return argvalue;
}


//función que separa un string por un separador concreto y lo introduce en
//	otro array de strings
function customSplit(strvalue, separator, arrayName) {
  var n = 0;

  if (separator.length != 0) {
    while (strvalue.indexOf(separator) != -1) {
      eval("arr"+n+" = strvalue.substring(0, strvalue.indexOf(separator));");
      strvalue = strvalue.substring(strvalue.indexOf(separator)+separator.length,
          strvalue.length+1);
      n++;
    }
    eval("arr" + n + " = strvalue;");
    arraySize = n+1;
  }
  else {
    for (var x = 0; x < strvalue.length; x++) {
      eval("arr"+n+" = \"" + strvalue.substring(x, x+1) + "\";");
      n++;
    }
    arraySize = n;
  }

  eval(arrayName + " = new makeArray(arraySize);");

  for (var i = 0; i < arraySize; i++)
    eval(arrayName + "[" + i + "] = arr" + i + ";");

  return arraySize;
}

//--------------------------------------------------------------------
//ARRAY
//--------------------------------------------------------------------
//función que crea un array
function makeArray(IntarrSize) {
  for (var n = 0; n < IntarrSize; n++)
    this[n] = "";

  return this;
}

//--------------------------------------------------------------------
//LISTAS DE CHECKS OBLIGATORIOS
//--------------------------------------------------------------------
function checkOblig(control, n, form3){
	var cond;
	var i;

	var form = MM_findObj(form3);

	cond = "form." + control[0].name + "[0].checked == false ";
	for(i=1;i<n;i++){
		cond = cond + "&& " + "form." + control[i].name + "[" + i +"].checked == false ";
	}
	if(eval(cond)){
		eval("form." + control[0].name + "[0].focus()");
		alert("Debe marcar una de las respuestas.");
	}
	return !eval(cond);
}

//--------------------------------------------------------------------
//CHEQUEO DE LA IDENTIFICACION DEL USUARIO (REGISTRO ÚNICO)
//--------------------------------------------------------------------
function validarCliente(nombreForm, urlDestino, voto, copy, copyNombre){

	var form = MM_findObj(nombreForm);

	if (form.CLI_ID.value == ""){
		window.open ("/ideas/registro/login.asp?formulario=" + nombreForm + "&voto=" + voto + "&urlDestino=" + urlDestino + "&copys=" + escape(copy) + "&copyNombre=" + escape(copyNombre), "registro", "scrollbars=yes,resizable=yes,toolbar=0,location=0,directories=0,status=0,menubar=0,copyhistory=0");
		return false;
	}
	else
		return true;
}