function esCadenaNumerica(cadenaEntrada) {
	var caracteresValidos = "0123456789";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresValidos.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function validarFecha(dia, mes, anyo) {
    if (!anyo) return false;
    if (anyo<1850) return false;
    if (!mes) return false;
    if (!dia) return false;
    var test = new Date(anyo, mes-1, dia);
    if ( (test.getFullYear() != anyo) || (mes-1 != test.getMonth()) || (dia != test.getDate()) ) return false;
    return true;
}

/* -------------------------------------------------------------------------------------------------------*/

function ValidacionFecha(fecha, sep) {
    var numeros = "0123456789";
    var pos1 = fecha.indexOf(sep);
    var pos2 = fecha.indexOf(sep, pos1+1);
    var dia, mes, ano;
    var i;

    if ((pos1 == -1)||(pos2 == -1)) {
        return "";
    }
    dia = fecha.substring(0, pos1);
    mes = fecha.substring(pos1+1, pos2);
    ano = fecha.substring(pos2+1, fecha.length);

    if ((dia.length < 1)||(dia.length > 2)) {
        return "";
    }
    for(i=0;i<dia.length;i++) {
        if (numeros.indexOf(dia.charAt(i)) == -1) {
            return "";
        }
    }

    if (dia < 1) {
        return "";
    }

    if ((mes.length < 1)||(mes.length > 2)) {
        return "";
    }
    for(i=0;i<mes.length;i++) {
        if (numeros.indexOf(mes.charAt(i)) == -1) {
            return "";
        }
    }

    if (ano.length != 4) {
        return "";
    }
    for(i=0;i<ano.length;i++) {
        if (numeros.indexOf(ano.charAt(i)) == -1) {
            return "";
        }
    }

    if (parseInt(ano,10) < 1880) {
        return "";
    }

    if (validarFecha(parseInt(dia,10), parseInt(mes,10), parseInt(ano,10))) {
        if (dia.length == 1) dia = "0" + dia;
        if (mes.length == 1) mes = "0" + mes;
        return dia + "/" + mes + "/" + ano
    }
}

/* -------------------------------------------------------------------------------------------------------*/

function ValidarTelefono(numero) {
	if (ValidarFijo(numero)||ValidarMovil(numero)) {
		return true;
	} else {
		return false;
	}
}

/* -------------------------------------------------------------------------------------------------------*/

function ValidarFijo(numero){
	var NUMEROS="1234567890";
	if (numero.length==9) {
		for (var i=0;i<numero.length;i++) {
			if (NUMEROS.indexOf(numero.charAt(i))<0) {
				return false;
			}
			if ((numero.charAt(0)!='9'||numero.charAt(1)==0)) {
				return false;
			}
		}
		return true;
	} else {
		return false;
	}
}

/* -------------------------------------------------------------------------------------------------------*/

function ValidarMovil(numero){
	var NUMEROS="1234567890";
	if (numero.length==9) {
		for (var i=0;i<numero.length;i++) {
			if (NUMEROS.indexOf(numero.charAt(i))<0) {
				return false;
			}
			if (numero.charAt(0)!='6') {
				return false;
			}
		}
		return true;
	} else {
		return false;
	}
}

/* -------------------------------------------------------------------------------------------------------*/

function ValidarDirCorreoElectronico(email) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.";
    var i;
    var valido = true;
    var pos_arroba = email.indexOf("@");
    var pos_ultimo_punto = email.lastIndexOf(".");
    var email_minus = email.toLowerCase();
    var trozo;

    if (pos_arroba == -1) {
        return false;
    }
    if (email_minus.indexOf("login@yaonline.es") != -1){
        return false;
    }
    if (pos_ultimo_punto == -1) {
        return false;
    }
    trozo = email.substring(0, pos_arroba);
    for(i=0;i<trozo.length;i++) {
        if (caracteres.indexOf(trozo.charAt(i)) == -1) {
            valido = false;
            break;
        }
    }
    if (!valido) {
        return false;
    }
    valido = true;
    trozo = email.substring(1+pos_arroba, pos_ultimo_punto);
    for(i=0;i<trozo.length;i++) {
        if (caracteres.indexOf(trozo.charAt(i)) == -1) {
            valido = false;
            break;
        }
    }
    if (!valido) {
        return false;
    }
    valido = true;
    trozo = email.substring(1+pos_ultimo_punto, email.length);
    if ((trozo.length >= 2)&&(trozo.length <= 3)) {
        for(i=0;i<trozo.length;i++) {
            if (caracteres.indexOf(trozo.charAt(i)) == -1) {
                valido = false;
                break;
            }
        }
        if (!valido) {
            return false;
        }
    } else {
        return false;
    }
    return true;
}

/* -------------------------------------------------------------------------------------------------------*/

function validaCP(f) {
	if (!esDigito(f.DIR_CP.value)){
		alert("El Código Postal debe ser numérico");
		f.DIR_CP.focus();
		return false;
	}

    if (f.DIR_CP.value.length!=5){
		alert("El Código Postal debe tener 5 dígitos");
		f.DIR_CP.focus();
		return false;
	}
	var provinciaSeleccionada = f.PRO_ID_PROVINCIA.options[f.PRO_ID_PROVINCIA.selectedIndex].value;
	while (provinciaSeleccionada.length<2) provinciaSeleccionada = "0" + provinciaSeleccionada;

	if (f.DIR_CP.value.substring(0,2)!=provinciaSeleccionada){
		alert("El Código Postal introducido no se corresponde con la provincia seleccionada.");
		f.DIR_CP.focus();
		return false;
	}

	return true;
}

/* -------------------------------------------------------------------------------------------------------*/

function checkZipCode(f, c, p, text) {
	if (!esDigito(c.value)){
		alert("El " + text + " debe ser numérico");
		c.focus();
		return false;
	}
    if (c.value.length != 5){
		alert("El " + text + " debe tener 5 dígitos");
		c.focus();
		return false;
	}
	var provinciaSeleccionada = p.options[p.selectedIndex].value;
	while (provinciaSeleccionada.length < 2) provinciaSeleccionada = "0" + provinciaSeleccionada;
	if (c.value.substring(0,2) != provinciaSeleccionada){
		alert("El " + text + ", introducido no se corresponde con la provincia seleccionada.");
		c.focus();
		return false;
	}
	return true;
}

/* -------------------------------------------------------------------------------------------------------*/

function esTexto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function esTextoMinusculas(cadenaEntrada) {
    var caracteres = "abcdefghijklmnopqrstuvwxyz0123456789.-_";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function esTextoCompleto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ -.,?!¿¡;:()ºª$[]{}áÁéÉíÍóÓúÚñÑçÇ";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function esDigito(cadenaEntrada) {

	for (i=0;i<cadenaEntrada.length;i++)	{
		if  (isNaN(parseInt(cadenaEntrada.substring(i,i+1),10))) return (false);	//Netscape
		if ((cadenaEntrada.substring(i,i+1))!=(parseInt(cadenaEntrada.substring(i,i+1),10))) return (false);	//Explorer
    }
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function quitarCerosIzquierda(cadena) {
    var i=0;
    while (cadena.charAt(i)==0){
        cadena=cadena.substring(1,cadena.length);
        i++;
    }
    return cadena;
}

/* -------------------------------------------------------------------------------------------------------*/

/**
* TCSIYA-7912: se modifica función validaNif(cadenaNif,matchDoc) en este fichero. Esta función
* se copia de la que existe en el fichero "html/mod/general_functions.js" del proyecto para Admin
* de Business. Así, garantizamos que la lógica asociada a las validaciones de nº de documento
* que hay que hacer (se hacen para NIF, NIE y CIF), sea la misma en todas las aplicaciones de
* Business.
*/
function validaNif(cadenaNif,matchDoc) {
	var valoresNif= new Array ("0","1","2","3","4","5","6","7","8","9","K","L","M");
	var valoresNie= "X";
	var valoresCif= new Array ("A","B","C","D","E","F","G","H","N","P","Q","S");
	var controlCif= new Array ("A","B","C","D","E","F","G","H","I","J");
	var controlNif = 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");

	// MÍNIMO DOS CARACTERES Y MÁXIMO 10 CARACTERES COMO Nº DE DOCUMENTO
    if(cadenaNif.length<2 || cadenaNif.length>10)
        return 1; // nº de caracteres incorrecto

	// TIPO DE DOCUMENTO EN FUNCIÓN DEL PRIMER CARACTER DEL Nº DE DOCUMENTO
	primerCaracter=cadenaNif.substring(0,1).toUpperCase();
	var tipo="desconocido";

    if(primerCaracter==valoresNie)
        tipo = "NIE";

    if (tipo=="desconocido"){
        for (i=0;i<valoresNif.length;i++) {
            if (valoresNif[i]==primerCaracter) tipo="NIF";
        }
    }

	if (tipo=="desconocido"){
		for (i=0;i<valoresCif.length;i++) {
            if (valoresCif[i]==primerCaracter) tipo="CIF";
        }
	}

    // SI SE ESPECIFICA EL TIPO DE DOCUMENTO ESPERADO O QUE DEBERÍA CORRESPONDER AL Nº DE DOCUMENTO
    // ENVIADO, SE VALIDA QUE ASÍ SEA.
    if ((matchDoc!=null)&&(tipo!=matchDoc.toUpperCase())) {
        return (7); // se proporciona macheo de documento y este no es valido
    }

	if (tipo=="desconocido") return (5); // primer caracter del nº de documento no es válido

	// OBTENEMOS EL CARACTER DE CONTROL QUE ES EL ÚLTIMO CARACTER DEL Nº DE DOCUMENTO
    caracterControl=cadenaNif.substring(cadenaNif.length-1,cadenaNif.length).toUpperCase();

    // VALIDAMOS Nº DE DOCUMENTO. LA VALIDACIÓN A REALIZAR DEPENDE DEL TIPO DE DOCUMENTO
	if (tipo=="NIF" || tipo=="NIE") {
	    // SEGÚN REAL DECRETO 338/1990, DE 9 DE MARZO DE 1990, POR EL QUE SE REGULA LA
	    // COMPOSICIÓN Y LA FORMA DE UTILIZACIÓN DEL NÚMERO DE IDENTIFICACIÓN FISCAL:
		// 1) españoles menores de catorce años y extranjeros menores de dieciocho --> primer caracter
		// es K
		// 2) españoles mayores de catorce años residiendo en el extranjero y que se trasladan por tiempo
		// inferior a seis meses a España --> primer caracter es L
		// 3) extranjeros mayores de dieciocho años --> primer caracter es M
		// En los tres casos especiales anteriores, tras la primera letra vienen dos números asociados a
		// provincia y luego otros 5 dígitos asociados a un nº secuencial dentro de cada provincia. Al
		// final, hay un caracter de verificación alfabético.
		if ((primerCaracter=="K") || (primerCaracter=="L") || (primerCaracter=="M")){
            if(cadenaNif.length!=9)
                return 1; // nº de caracteres incorrecto
			var provincia=cadenaNif.substring(1,3);
			if (!esDigito(provincia)) return 2;   //Codigo de provincia no válido
			numero=cadenaNif.substring(3,8);
		} else if (tipo=="NIE"){
		    // NIE puede tener 9 caracteres o 10, aunque entonces el 2º caracter debe ser un 0
            if(cadenaNif.length!=9 && cadenaNif.length!=10)
                return 1; // nº de caracteres incorrecto
            if(cadenaNif.length==10 && cadenaNif.substring(1,2)!=0)
                return 1; // nº de caracteres incorrecto
			numero=cadenaNif.substring(1,cadenaNif.length-1);
		} else {
            if(cadenaNif.length>9)
                return 1; // nº de caracteres incorrecto
			numero=cadenaNif.substring(0,cadenaNif.length-1);
		}
		if (!esDigito(numero)) return 3;   //Parte numérica del Nif no válida
		caracterControlCalculado=controlNif [((parseFloat(numero)%23))];  //El algoritmo dice que al resto hay que
																		  //sumarle 1, eso lo hacemos al indexar el
																		  //array ya que los indices empiezan en 0
		if (caracterControl != caracterControlCalculado) return 4;   //Carácter Control incorrecto
	} else if (tipo=="CIF"){
        if(cadenaNif.length!=9)
            return 1; // nº de caracteres incorrecto
		if (primerCaracter=="N") {
			pais=cadenaNif.substring(1,4);
			if (!esDigito(pais)) return 6;   //Codigo de pais no válido
			numero=cadenaNif.substring(4,8);
		}else {
			numero=cadenaNif.substring(1,8);
		}
		if (!esDigito(numero)) return 3;   //Parte numérica del Nif no válida
		caracterControlCalculado = 10 -((Math.floor( 0.2*parseInt(cadenaNif.substring(1,2),10) )+
		                                (2*parseInt(cadenaNif.substring(1,2),10) %10)+
		                                Math.floor( 0.2*parseInt(cadenaNif.substring(3,4),10))+
							            (2*parseInt(cadenaNif.substring(3,4),10) %10) +
							            Math.floor( 0.2*parseInt(cadenaNif.substring(5,6),10) ) +
							            (2*parseInt(cadenaNif.substring(5,6),10) %10) +
							            Math.floor(0.2*parseInt(cadenaNif.substring(7,8),10) ) +
							            (2*parseInt(cadenaNif.substring(7,8),10) %10) +
							            parseInt(cadenaNif.substring(2,3),10) +
							            parseInt(cadenaNif.substring(4,5),10) +
							            parseInt(cadenaNif.substring(6,7),10))
							        % 10);
		if ((primerCaracter=="N")||(primerCaracter=="P")||(primerCaracter=="Q")||(primerCaracter=="S")){
			caracterControlCalculado = controlCif[caracterControlCalculado-1];
		}
		if (caracterControlCalculado==10) caracterControlCalculado=0;
		if (caracterControl != caracterControlCalculado) return 4;   //Carácter Control incorrecto
	}
	return 0;  //todo bien.
}

/* -------------------------------------------------------------------------------------------------------*/

function validaCC(e,o,d,n) {
	var pesos = new Array (6,3,7,9,10,5,8,4,2,1);

	var total=e*10000+o*1;

	var acc=0;
	for (var i=0;i<8;i++){
		var c = total%10;
		acc	= acc + c*pesos[i];
		total=(total-c)/10;
	}
	var dig1=acc%11;
	dig1=11-dig1;
	if (dig1==10) dig1=1;
	if (dig1==11) dig1=0;

	total=n;
	acc=0;

	for (var i=0;i<10;i++){
		var c = total%10;
		acc	= acc + c*pesos[i];
		total=(total-c)/10;
	}
	var dig2=acc%11;
	dig2=11-dig2;
	if (dig2==10) dig2=1;
	if (dig2==11) dig2=0;


	var dig=dig1*10+dig2;

	if (d!=dig) return false;
	return true;
}

/* -------------------------------------------------------------------------------------------------------*/

function ignoreSpaces(string) {
	var temp = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	temp += splitstring[i];
	return temp;
}

/* -------------------------------------------------------------------------------------------------------*/

function esCadenaValida(cadenaEntrada) {
	var caracteresMal = "\'\%\"\^\*\\";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresMal.indexOf(c)!=-1) {
			return false;
		}
	}
	return (true);
}

/* -------------------------------------------------------------------------------------------------------*/

function validateDataHousing(f) {

    var NUMEROS="1234567890";

    /* **************************NEEDED FIELDS************************************************ */

    // testing "nombre"
	if (ignoreSpaces(f.nombre2.value).length<1) {
		alert ("Introduzca el nombre");
		f.nombre2.focus();
		return(false);
	}

	if (f.nombre2.value.length>128) {
		alert ("Abrevie el nombre: Ha introducido demasiados caracteres");
		f.nombre2.focus();
		return(false);
	}

    if (!esCadenaValida(f.nombre2.value)) {
		alert("El nombre no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
		f.nombre2.focus();
		return(false);
	}

    // testing "nombre"
	if (ignoreSpaces(f.apellido.value).length<1) {
		alert ("Introduzca el apellido");
		f.apellido.focus();
		return(false);
	}

	if (f.apellido.value.length>128) {
		alert ("Abrevie el apellido: Ha introducido demasiados caracteres");
		f.apellido.focus();
		return(false);
	}

    if (!esCadenaValida(f.apellido.value)) {
		alert("El apellido no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
		f.apellido.focus();
		return(false);
	}

	if (f.compania2.value.length>0 ) {
        if (f.compania2.value.length>128 ) {
            alert ("Abrevie la compañía: Ha introducido demasiados caracteres");
            f.compania2.focus();
            return false;
        }
        if (!esCadenaValida(f.compania2.value)) {
            alert("La compañía no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
            f.compania2.focus();
            return false;
        }
    }

    // testing "telefono"
 	if (f.telefono.value.length<9) {
  		alert ("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.");
  		f.telefono.focus();
  		return false;
 	}

 	if (f.telefono.value.length>16) {
  		alert ("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.");
  		f.telefono.focus();
  		return false;
	}

 	for (var i=0;i<f.telefono.value.length;i++) {
  		if (NUMEROS.indexOf(f.telefono.value.charAt(i))<0) {
  			alert("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.")
  			return false;
  		}
  }

  // all data correct!
  return(true);

}

/* -------------------------------------------------------------------------------------------------------*/

function validateDataDistribuidores() {

    f = document.forms['form1'];
	var NUMEROS="1234567890";

  /* **************************NEEDED FIELDS************************************************ */
 // testing "nombre de empresa"
	if (f.compania2.value.length>0 ) {
   	if (f.compania2.value.length>128 ) {
   		alert ("Abrevie la compañía: Ha introducido demasiados caracteres");
   		f.compania2.focus();
   		return false;
   	}
   	if (!esCadenaValida(f.compania2.value)) {
   		alert("La compañía no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
   		f.compania2.focus();
   		return false;
   	}
 }

 // testing "nombre"
	if (ignoreSpaces(f.nombre2.value).length<1) {
		alert ("Introduzca el nombre");
		f.nombre2.focus();
		return(false);
	}
	if (f.nombre2.value.length>128) {
		alert ("Abrevie el nombre: Ha introducido demasiados caracteres");
		f.nombre2.focus();
		return(false);
	}
 if (!esCadenaValida(f.nombre2.value)) {
		alert("El nombre no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
		f.nombre2.focus();
		return(false);
	}

 // testing "actividad"
	if (ignoreSpaces(f.actividad.value).length<1) {
		alert ("Introduzca la actividad");
		f.actividad.focus();
		return(false);
	}
	if (f.actividad.value.length>128) {
		alert ("Abrevie la actividad: Ha introducido demasiados caracteres");
		f.actividad.focus();
		return(false);
	}
 if (!esCadenaValida(f.actividad.value)) {
		alert("La actividad no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
		f.actividad.focus();
		return(false);
	}

// testing "telefono"
 	if (f.telefono.value.length<9) {
  		alert ("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.");
  		f.telefono.focus();
  		return false;
 	}
 	if (f.telefono.value.length>16) {
  		alert ("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.");
  		f.telefono.focus();
  		return false;
	 }

 	for (var i=0;i<f.telefono.value.length;i++) {
  		if (NUMEROS.indexOf(f.telefono.value.charAt(i))<0) {
  			alert("El número de teléfono ha de tener nueve dígitos.\n Puede ser un teléfono fijo o un móvil.")
  			return false;
  		}
  }

// testing "e-mail"
  if (f.email.value.length==0) {
  alert ("La dirección de e-mail que ha introducido no es válida.\n Recuerde que las direcciones de e-mail deben contener una @ para separar el nombre del dominio o proveedor de correo que ya tengas, al estilo nombre@correo.com");
  f.email.focus();
  return false;
  }
  if (f.email.value.length>255) {
  alert ("Su dirección de email de contacto es demasiado larga");
  f.email.focus();
  return false;
  }
  if (f.email.value.length<5 || !ValidarDirCorreoElectronico(f.email.value) ) {
  alert ("La dirección de e-mail que ha introducido no es válida.\n Recuerde que las direcciones de e-mail deben contener una @ para separar el nombre del dominio o proveedor de correo que ya tengas, al estilo nombre@correo.com");
  f.email.focus();
  return false;
  }

 // testing "url"
	if (f.url2.value.length>0 ) {
   	if (f.url2.value.length>255 ) {
   		alert ("Abrevie la URL: Ha introducido demasiados caracteres");
   		f.url2.focus();
   		return false;
   	}
   	if (!esCadenaValida(f.url2.value)) {
   		alert("La URL no puede contener ninguno de los siguientes caracteres : ( \' \% \" \^ \* \\ )");
   		f.url2.focus();
   		return false;
   	}
 }
  // testing "url"
	if (ignoreSpaces(f.url2.value).length<1) {
		alert ("Introduzca la url de la empresa");
		f.url2.focus();
		return(false);
	}
	if (f.url2.value.length>128) {
		alert ("Abrevie la url de la empresa: Ha introducido demasiados caracteres");
		f.url2.focus();
		return(false);
	}

 // all data correct!
return(true);

} // end validateDataDistribuidores

function validarDominioES_2Nivel(domain) {
    var extension  = "";
    if (domain.value == ""){
        alert("Debe seleccionar un nombre de dominio");
        domain.focus();
        return false;
    } else {
        pos = domain.value.indexOf(".");
        if (pos != -1)
            extension = domain.value.substring(pos, domain.value.length);
        if (extension == ".es") {
            /*alert("Debido a que el registro de un dominio .es no se realiza\n" +
                   "de una manera automática y requiere de al menos 12 días\n" +
                   "para ser completado deberá contratar por separado el registro\n" +
                   "del dominio y posteriormente el plan de alojamiento web\n" +
                   "una vez registrado el dominio.");*/
            domain.focus();
            return true;
        } else {
            return false;
        }
    }
}

/* -------------------------------------------------------------------------------------------------------*/
// Función que valida los dominios para el caso específico de la compra de cuentas de correo
// La primera variable irá a true si queremos que la función compruebe si el dominio lleva extensión o no
// La segunda variable irá a true si queremos que la función compruebe si el dominio es de los que ofrecemos
// La tercera variable irá a true si además, queremos que la función devuelva el dominio sin extensión

// Los ejemplos más comunes son:
// Validar dominio para registro: validarDominio(dom,true,true,true);
// Validar dominio desde portada: validarDominio(dom,false,false,true);
// Validar dominio para Transferencia: validarDominio(dom,true,true,false);
// Validar dominio para Renovación: validarDominio(dom,true,true,false);
// Validar dominio cuando el usuario tiene el dominio con otro proveedor: validarDominio(dom,true,false,false);

function validarDominio(dom, comprobarExtension, validarExtension, quitarExtension){
    var validChars, domain, extension, pos;
    // Comprobamos si el dominio es vacío
    if (dom.value==""){
        alert("Debe seleccionar un nombre de dominio");
        dom.focus();
        return (null);
    }

    domain = dom.value;
    // Eliminamos las www
    if (domain.substring(0,4)=="www.")
    {
        domain = domain.substring(4,domain.length);
    }

    // Comprobamos si el dominio tiene extensión
    if (comprobarExtension) {
        pos = domain.indexOf(".");
        if (pos<0) {
            alert("Debe introducir el nombre de dominio con extensión");
            dom.focus();
            return (null);
        }
    }

    validChars = "abcdefghijklmnopqrstuvwxyz1234567890-.";
    // Comprobamos que el dominio tiene una extensión de las que ofrecemos. Si el dominio viene sin extensión,
    // pues asignamos como posición la longitud del dominio
    pos = domain.indexOf(".");
    if (pos==-1) {
        pos = domain.length;
    }
    extension = domain.substring(pos,domain.length);
    if (validarExtension) {
        if (!(extension==".es" ||
            extension==".com" ||
            extension==".org" ||
            extension==".net" ||
            extension==".biz" ||
            extension==".info" ||
            extension==".com.es" ||
            extension==".nom.es" ||
            extension==".org.es"))
            {
              alert("Debe introducir una extensión de dominio tipo: .com, .net, .org, .biz, .info, .es, .com.es, .nom.es, .org.es");
              dom.focus();
              return (null);
        }
    }

    if (quitarExtension) {
        validChars = validChars.substring(0,validChars.length - 1);
        domain = domain.substring(0,pos);
    }

	for (i=0; i<domain.length; i++) {
        // does it contain any invalid characters?
		goodChar = domain.charAt(i);
		if (validChars.indexOf(goodChar,0) < 0) {
            alert("El dominio no puede contener caracteres distintos a: abcdefghijklmnopqrstuvwxyz1234567890-");
            dom.focus();
			return (null);
		}
	}

	if (domain.length<3) {
	    alert("El dominio no puede ser menor de 3 caracteres");
	    dom.focus();
	    return (null);
	}
    if(domain.charAt(0) == '-'){
	    alert("El dominio no puede comenzar con el caracter -");
		dom.focus();
		return (null);
	}
	if(domain.charAt(domain.length-1) == '-'){
	    alert("El dominio no puede finalizar con el caracter -");
		dom.focus();
		return (null);
    }
	return (domain);

}
/* -------------------------------------------------------------------------------------------------------*/

function validarDominioPara(dom){
    return validarDominioCompleto(dom,true,false);
}

function validarDominioCompleto(dom,checkFirstLevel,requireFirstLevel){
    var invalidChars, Domain, extension, pos;
    if (dom.value==""){
        alert("Debe seleccionar un nombre de dominio");
        dom.focus();
        return (null);
    }

    Domain = dom.value;

    if (Domain.substring(0,4)=="www.") {
        Domain = Domain.substring(4,Domain.length);
    }

    // Si tenemos que admitir cualquier dominio de primer nivel (checkFirstLevel=false),
    // el punto es válido, si no, no lo es, porque lo eliminamos nosotros junto al .com, .net o .org
    validChars = "abcdefghijklmnopqrstuvwxyz1234567890-";
    if (checkFirstLevel) {
        invalidChars = invalidChars + ".";
        // Comprobamos que es un dominio de primer o segundo nivel válido
        pos = Domain.indexOf(".");
        if (pos>=0) {
            extension = Domain.substring(pos,Domain.length);
            if (extension==".es" ||
                extension==".com" ||
                extension==".org" ||
                extension==".net" ||
                extension==".biz" ||
                extension==".info" ||
                extension==".com.es" ||
                extension==".nom.es" ||
                extension==".org.es")
            {
                Domain = Domain.substring(0,pos);
            } else if (requireFirstLevel) {
              //mal
              alert("Formato de dominio incorrecto");
              return null;
            }
        } else if (requireFirstLevel) {
            //mal
            alert("Formato de dominio incorrecto");
            return null;
        }
    }

	for (i=0; i<invalidChars.length; i++) {
        // does it contain any invalid characters?
		badChar = invalidChars.charAt(i);
		//if
		if (Domain.indexOf(badChar,0) > -1)
        {
            if (badChar=="."){
                alert("Formato de dominio incorrecto");
            }
            else {
                alert("El dominio no puede contener el caracter '"+badChar+"'");
            }
            dom.focus();
			return (null);
		}
	}

	if (Domain.length<3) {
	    alert("El dominio no puede ser menor de 3 caracteres");
	    dom.focus();
	    return (null);
	}
    if(Domain.charAt(0) == '-') {
	    alert("El dominio no puede comenzar con el caracter -");
		dom.focus();
		return (null);
	}
	if(Domain.charAt(Domain.length-1) == '-') {
	    alert("El dominio no puede finalizar con el caracter -");
		dom.focus();
		return (null);
    }
	return (Domain);

} // end validarDominio
//Validar contraseña distribuidores
function formValidationDistributor(formUserDistributor) {
    if (formUserDistributor.pwd.value.length == "") {
		alert ("La clave de acceso no puede estar vacía");
		return false;
	}
       formUserDistributor.submit();
}

function validateDNSName(name){
    if (name.length>128){
        alert('No pude tener más de 128 caractéres');
        return(false);
    }

    if(!name.match(/^([a-z0-9\-\*]+)$/)){
        alert('El campo nombre contiene caracteres no válidos');
        return(false);
    }

    if(name.match(/\*/) && !name.match(/^\*$/)){
        alert('El asterisco "*" no puede ir acompañado de más caracteres');
        return(false);
    }

    if(name.match(/^\-/) || name.match(/\-$/)){
        alert('El guión "-" solo puede aparecer en medio del nombre');
        return(false);
    }
    return(true);
}
/* -------------------------------------------------------------------------------------------------------*/