// Variables a utilizar en las funciones

var digits="0123456789";
var digits1="0123456789.";
var digits2="0123456789,";
var digits3="0123456789.,";
var textchars="/'\"[]{}()*&^%$#@!~?<>-_+=|\\ \r\t\n.,:;`";
var lwr="abcdefghijklmnopqrstuvwxyz";
var upr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var diac_lwr='áàâäåéèëêìíîïòóôõöøùúûüýñæßç';
var diac_upr='ÁÀÂÄÅÉÈËÊÌÍÎÏÒÓÔÕÖØÙÚÛÜÝÑÆßÇ';
var espacio=" ";
var whitespace=" \t\n\r";                     
var decimalPointDelimiter=".";                  
var phoneNumberDelimiters="()- ";  
var ZIPCodeDelimiters=".";

var PassLength=6;
var LoginLength=6;
var bgcolor_error = "#ff8f75";
var bgcolor_normal = "#ffffff";

var validPhoneChars=digits + phoneNumberDelimiters;
var validDNIChars=digits + upr + lwr;
var validZIPCodeChars=digits;

var digitsInPhoneNumber=9;
var digitsInDNI=9;
var digitsInZIPCode1=5;
var digitsInZIPCode2=4;


/**********************************************************************/
// esVacio
// Función para comprobar si el valor está vacio. 
/**********************************************************************/

function esVacio(s){
	return((s==null)||(s.length==0))
}

/**********************************************************************/
// esValido
// Función para comprobar si el valor es válido comparandolo con los valores pasados. 
/**********************************************************************/

function esValido(parm,val){
	if(parm=="")return true;
	for(i=0;i<parm.length;i++){
		if(val.indexOf(parm.charAt(i),0)==-1)return false;
	}
	return true;
}

/**********************************************************************/
// esLetra
// Función para comprobar si el valor es una letra. 
/**********************************************************************/

function esLetra(c){
	return (((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z")))
}

/**********************************************************************/
// esDigito
// Función para comprobar si el valor es un dígito. 
/**********************************************************************/

function esDigito(c){
	return ((c>="0")&&(c<="9"))
}


/**********************************************************************/
// esEspacio
// Función para comprobar si el valor es un espacio. 
/**********************************************************************/

function esEspacio(s){
	for(i=0;i< s.length;i++){
		c=s.charAt(i);
		if(whitespace.indexOf(c)==-1) return false;
	} 
	return true;
}

/**********************************************************************/
// esEntero
// Función para comprobar si el valor es un número entero. 
/**********************************************************************/

function esEntero(valor){ 
	var i;
	if(esVacio(valor)){
		if(esEntero.arguments.length==1) return false;
		else return (esEntero.arguments[1]==true); 
	}
	for(i=0;i< valor.length;i++){ 
		c=valor.charAt(i); 
		if(!esDigito(c)) return false; 
	} 
	return true;
}

/**********************************************************************/
// esDNI
// Funcion para comprobar si el valor es un DNI correcto. 
/**********************************************************************/

function esDNI(valor){
	if (esValido(valor,validDNIChars) && valor.length==digitsInDNI) {
		for(var i=0; i<(valor.length)-1;i++){
			if(esDigito(valor.charAt(i))==false) {
				return false;
			}
		}
		if (esLetra(valor.charAt(i))){
			// Ahora compruebo si es un DNI correcto, es decir, si es la letra correcta.
			var numero = valor.substr(0,valor.length-1);
			var letra = valor.substr(valor.length-1,1);
	  		numero = numero % 23;
			var cadena='TRWAGMYFPDXBNJZSQVHLCKET';
			cadena=cadena.substring(numero,numero+1);
			return (cadena==letra.toUpperCase()); 
		} else return false;
	} else return false;
}

function str_replace(search, replace, subject) {
    var f = search, r = replace, s = subject;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
 
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    };
 
    return sa ? s : s[0];
}

//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function valida_nif_cif_nie(a) 
{
	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
 
	if (temp!==''){
		//si no tiene un formato valido devuelve error
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			return 0;
		}
 
		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//algoritmo para comprobacion de codigos tipo CIF
		suma = parseInt(a[2])+parseInt(a[4])+parseInt(a[6]);
		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a[i]);
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a[i]);
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}
 
			suma += (parseInt(temp1) + parseInt(temp2));
		}
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
 
		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a[8] == String.fromCharCode(64 + n))
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			temp = n + '';
			if (a[8] == String.fromCharCode(64 + n) || a[8] == parseInt(temp.substring(temp.length-1, temp.length)))
			{
				return 2;
			}
			else
			{
				return -2;
			}
		}
 
		//comprobacion de NIEs
		//T
		if (/^[T]{1}/.test(temp))
		{
			if (a[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
 
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			pos = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp).substring(0, 8) % 23;
			if (a[8] == cadenadni.substring(pos, pos + 1))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
	}
 
	return 0;
}

/**********************************************************************/
// esEmail
// Funcion para comprobar si el valor es un DNI correcto. 
/**********************************************************************/

function esEmail(s){
	if(esVacio(s))
		if(esEmail.arguments.length==1) return false;
		else return(isEmail.arguments[1]==true);
		
		if(esEspacio(s)) return false;
		i=1;
		sLength=s.length;
		while((i<sLength) && (s.charAt(i) !="@")){
			i++
		};
		if((i >=sLength) || (s.charAt(i) !="@")) return false;
		else i +=2;
		while((i < sLength) && (s.charAt(i) !=".")){
			i++
		};
		if((i >=sLength - 1) || (s.charAt(i) !=".")) return false;
		else return true;
}

/**********************************************************************/
// es_telefono
// Funcion para comprobar si el valor es un teléfono. 
/**********************************************************************/

function es_telefono(numero)
{
	return (esEntero(numero)&& numero.length==digitsInPhoneNumber);
}

/**********************************************************************/
// esCodigoPostal
// Funcion para comprobar si el valor es un teléfono. 
/**********************************************************************/

function esCodigoPostal(s){
	return (esValido(s,validZIPCodeChars) && (s.length==digitsInZIPCode1 || s.length==digitsInZIPCode2));
}

/**********************************************************************/
/* Esta función valida el formulario de Acceso Privado de la página.  */
/* 																      */
/**********************************************************************/

function validar_login()
{
// Ponemos todas las casillas sin fondo
document.form_login.login.style.background=bgcolor_normal;
document.form_login.pass.style.background=bgcolor_normal;
	var error="";
		
	if (vacio(document.form_login.login.value)) 
	{
		error+="Debe introducir el usuario.\n";
		document.form_login.login.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.form_login.login.value,lwr+upr))
		{
			error+="El usuario contiene caracteres no válidos.\n";
			document.form_login.login.style.background=bgcolor_error;
		}
	}	

	if (vacio(document.form_login.pass.value)) 
	{
		error+="Debe introducir la clave.\n";
		document.form_login.pass.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.form_login.pass.value,lwr+upr+digits))
		{
			error+="La clave contiene caracteres no válidos.\n";
			document.form_login.pass.style.background=bgcolor_error;
		}
	}	

	if (!error)
	{
		document.form_login.action="login.php";
		document.form_login.submit();
	}
	else {
		alert(error);
	}
}

function validar_login2()
{
// Ponemos todas las casillas sin fondo
document.form_login2.login.style.background=bgcolor_normal;
document.form_login2.pass.style.background=bgcolor_normal;
	var error="";
		
	if (vacio(document.form_login2.login.value)) 
	{
		error+="Debe introducir el usuario.\n";
		document.form_login2.login.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.form_login2.login.value,lwr+upr))
		{
			error+="El usuario contiene caracteres no válidos.\n";
			document.form_login2.login.style.background=bgcolor_error;
		}
	}	

	if (vacio(document.form_login2.pass.value)) 
	{
		error+="Debe introducir la clave.\n";
		document.form_login2.pass.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.form_login2.pass.value,lwr+upr+digits))
		{
			error+="La clave contiene caracteres no válidos.\n";
			document.form_login2.pass.style.background=bgcolor_error;
		}
	}	

	if (!error)
	{
		document.form_login2.action="login.php";
		document.form_login2.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de Contacto de la página.        */
/* 																      */
/**********************************************************************/

function validar_form()
{
// Ponemos todas las casillas sin fondo
document.formulario.nombre.style.background=bgcolor_normal;
document.formulario.apellidos.style.background=bgcolor_normal;
document.formulario.telefono.style.background=bgcolor_normal;
document.formulario.email.style.background=bgcolor_normal;
document.formulario.asunto.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.formulario.nombre.value)) 
	{
		error+="Debe introducir el nombre.\n";
		document.formulario.nombre.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.formulario.nombre.value,lwr + upr + digits3 + textchars + diac_lwr + diac_upr))
		{
			error+="El nombre debe ser solamente carácteres alfabéticos.\n";
			document.formulario.nombre.style.background=bgcolor_error;
		}
	}	

	if (vacio(document.formulario.apellidos.value)) 
	{
		error+="Debe introducir los apellidos.\n";
		document.formulario.apellidos.style.background=bgcolor_error;
	}
	else
	{
		if (!esValido(document.formulario.apellidos.value,lwr + upr + digits3 + textchars + diac_lwr + diac_upr))
		{
			error+="Los apellidos deben ser solamente carácteres alfabéticos.\n";
			document.formulario.apellidos.style.background=bgcolor_error;
		}
	}	

	if (vacio(document.formulario.email.value)) 
	{
		error+="Debe introducir una dirección de correo electrónico.\n";
		document.formulario.email.style.background=bgcolor_error;
	}
	else
	{
		if (!es_correo(document.formulario.email.value))
		{
			error+="El email debe ser una dirección de correo electrónico válida.\n";
			document.formulario.email.style.background=bgcolor_error;
		}
	}
		
	if (!es_telefono(document.formulario.telefono.value))
	{
		error+="El Teléfono debe ser un teléfono válido de "+digitsInPhoneNumber+" caracteres.\n";
		document.formulario.telefono.style.background=bgcolor_error;
	}
			
	if (vacio(document.formulario.asunto.value)) 
	{
		error+="Debe introducir texto en el asunto.\n";
		document.formulario.asunto.style.background=bgcolor_error;
	}
	
	if (!error)
	{
		document.formulario.action="?seccion=contacto";
		document.formulario.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de Registro de la página.        */
/* 																      */
/**********************************************************************/

function validar_registro()
{

// Ponemos todas las casillas sin fondo
document.formulario.login.style.background=bgcolor_normal;
document.formulario.password.style.background=bgcolor_normal;
document.formulario.password2.style.background=bgcolor_normal;
document.formulario.nombre.style.background=bgcolor_normal;
document.formulario.apellidos.style.background=bgcolor_normal;
document.formulario.dni.style.background=bgcolor_normal;
document.formulario.email.style.background=bgcolor_normal;
document.formulario.direccion.style.background=bgcolor_normal;
document.formulario.cp.style.background=bgcolor_normal;
document.formulario.municipio.style.background=bgcolor_normal;
document.formulario.provincia.style.background=bgcolor_normal;
document.formulario.telefono.style.background=bgcolor_normal;
document.formulario.fax.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.formulario.login.value)) {
		error+="Debe introducir el usuario.\n";
		document.formulario.login.style.background=bgcolor_error;
	} else if (!esValido(document.formulario.login.value,lwr + upr))	{
		error+="El usuario contiene caracteres no válidos.\n";
		document.formulario.login.style.background=bgcolor_error;
	}	

	if (vacio(document.formulario.password.value)) {
		error+="Debe introducir la clave.\n";
		document.formulario.password.style.background=bgcolor_error;
	} else if (!esValido(document.formulario.password.value,lwr + upr + digits)) {
		error+="La clave contiene caracteres no válidos.\n";
		document.formulario.password.style.background=bgcolor_error;
	} else if (document.formulario.password.value.length<PassLength){
		error+="La clave debe de contener más de "+PassLength+" caracteres.\n";
		document.formulario.password.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.password2.value)) {
		error+="Debe confirmar la clave.\n";
		document.formulario.password2.style.background=bgcolor_error;
	} else if (!esValido(document.formulario.password2.value,lwr + upr + digits)) {
		error+="La confirmación de la clave contiene caracteres no válidos.\n";
		document.formulario.password2.style.background=bgcolor_error;
	} else if (document.formulario.password2.value.length<PassLength){
		error+="La confirmación de la clave debe de contener más de "+PassLength+" caracteres.\n";
		document.formulario.password2.style.background=bgcolor_error;
	} else if (document.formulario.password.value!=document.formulario.password2.value) {
		error+="La confirmación de la clave no coincide con la clave.\n";
		document.formulario.password.style.background=bgcolor_error;
		document.formulario.password2.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.nombre.value)) {
		error+="Debe introducir el nombre.\n";
		document.formulario.nombre.style.background=bgcolor_error;
	} 
	
	if (vacio(document.formulario.apellidos.value)) {
		error+="Debe introducir los apellidos.\n";
		document.formulario.apellidos.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.dni.value)) {
		error+="Debe introducir el DNI/NIF/CIF/NIE.\n";
		document.formulario.dni.style.background=bgcolor_error;
	} else {
		if (valida_nif_cif_nie(document.formulario.dni.value)==-1) {
			error+="El número de DNI/NIF debe ser correcto. Ej. 12345678A\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if (valida_nif_cif_nie(document.formulario.dni.value)==-2) {
			error+="El número de CIF debe ser correcto. Ej. A12345678\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if (valida_nif_cif_nie(document.formulario.dni.value)==-3) {
			error+="El número de NIE debe ser correcto. Ej. X1234567H\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if(valida_nif_cif_nie(document.formulario.dni.value)==0) {
			error+="El DNI/NIF/CIF/NIE es erroneo\n";
			document.formulario.dni.style.background=bgcolor_error;			
		}

	}
	
	if (vacio(document.formulario.email.value)) {
		error+="Debe introducir el E-mail.\n";
		document.formulario.email.style.background=bgcolor_error;
	} else if (!es_correo(document.formulario.email.value)) {
		error+="El E-mail debe ser una dirección de correo electrónico válida.\n";
		document.formulario.email.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.telefono.value)) {
		error+="Debe introducir el Teléfono.\n";
		document.formulario.telefono.style.background=bgcolor_error;
	} else if (!es_telefono(document.formulario.telefono.value) && !esVacio(document.formulario.telefono.value)) {
		error+="El Teléfono debe ser un número de teléfono válido de "+digitsInPhoneNumber+" dígitos\n";
		document.formulario.telefono.style.background=bgcolor_error;
	}
	
	if (!es_telefono(document.formulario.fax.value) && !esVacio(document.formulario.fax.value)) {
		error+="El Fax debe ser un número de fax válido de "+digitsInPhoneNumber+" dígitos.\n";
		document.formulario.fax.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.provincia.value)) {
		error+="Debe introducir la provincia.\n";
		document.formulario.provincia.style.background=bgcolor_error;
	}

	if (vacio(document.formulario.cp.value)) {
		error+="Debe introducir el Código Postal.\n";
		document.formulario.cp.style.background=bgcolor_error;
	} else if (!esCodigoPostal(document.formulario.cp.value)) {
		error+="El Código Postal tiene que ser un número de "+digitsInZIPCode1+" dígitos.\n";
		document.formulario.cp.style.background=bgcolor_error;
	}

	if (vacio(document.formulario.municipio.value)) {
		error+="Debe introducir el municipio.\n";
		document.formulario.municipio.style.background=bgcolor_error;
	}

	if (vacio(document.formulario.direccion.value)) {
		error+="Debe introducir la dirección.\n";
		document.formulario.direccion.style.background=bgcolor_error;
	}
	
	if (!error)
	{
		document.formulario.action="?seccion=registrar";
		document.formulario.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de modificación de               */
/* datos del perfil.                                                  */
/* 																      */
/**********************************************************************/

function validar_perfil()
{

// Ponemos todas las casillas sin fondo
document.formulario.nombre.style.background=bgcolor_normal;
document.formulario.apellidos.style.background=bgcolor_normal;
document.formulario.dni.style.background=bgcolor_normal;
document.formulario.email.style.background=bgcolor_normal;
document.formulario.direccion.style.background=bgcolor_normal;
document.formulario.cp.style.background=bgcolor_normal;
document.formulario.municipio.style.background=bgcolor_normal;
document.formulario.provincia.style.background=bgcolor_normal;
document.formulario.telefono.style.background=bgcolor_normal;
document.formulario.fax.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.formulario.nombre.value)) {
		error+="Debe introducir el nombre.\n";
		document.formulario.nombre.style.background=bgcolor_error;
	} 
	
	if (vacio(document.formulario.apellidos.value)) {
		error+="Debe introducir los apellidos.\n";
		document.formulario.apellidos.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.dni.value)) {
		error+="Debe introducir el DNI/NIF/CIF/NIE.\n";
		document.formulario.dni.style.background=bgcolor_error;
	} else {
		if (valida_nif_cif_nie(document.formulario.dni.value)==-1) {
			error+="El número de DNI/NIF debe ser correcto. Ej. 12345678A\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if (valida_nif_cif_nie(document.formulario.dni.value)==-2) {
			error+="El número de CIF debe ser correcto. Ej. A12345678\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if (valida_nif_cif_nie(document.formulario.dni.value)==-3) {
			error+="El número de NIE debe ser correcto. Ej. X1234567H\n";
			document.formulario.dni.style.background=bgcolor_error;			
		} else if(valida_nif_cif_nie(document.formulario.dni.value)==0) {
			error+="El DNI/NIF/CIF/NIE es erroneo\n";
			document.formulario.dni.style.background=bgcolor_error;			
		}

	}
	
	if (vacio(document.formulario.email.value)) {
		error+="Debe introducir el E-mail.\n";
		document.formulario.email.style.background=bgcolor_error;
	} else if (!es_correo(document.formulario.email.value)) {
		error+="El E-mail debe ser una dirección de correo electrónico válida.\n";
		document.formulario.email.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.telefono.value)) {
		error+="Debe introducir el Teléfono.\n";
		document.formulario.telefono.style.background=bgcolor_error;
	} else if (!es_telefono(document.formulario.telefono.value) && !esVacio(document.formulario.telefono.value)) {
		error+="El Teléfono debe ser un número de teléfono válido de "+digitsInPhoneNumber+" dígitos\n";
		document.formulario.telefono.style.background=bgcolor_error;
	}
	
	if (!es_telefono(document.formulario.fax.value) && !esVacio(document.formulario.fax.value)) {
		error+="El Fax debe ser un número de fax válido de "+digitsInPhoneNumber+" dígitos.\n";
		document.formulario.fax.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.direccion.value)) {
		error+="Debe introducir la dirección.\n";
		document.formulario.direccion.style.background=bgcolor_error;
	}
	
	if (vacio(document.formulario.cp.value)) {
		error+="Debe introducir el Código Postal.\n";
		document.formulario.cp.style.background=bgcolor_error;
	} else if (!esCodigoPostal(document.formulario.cp.value)) {
		error+="El Código Postal tiene que ser un número de "+digitsInZIPCode1+" dígitos.\n";
		document.formulario.cp.style.background=bgcolor_error;
	}

	if (vacio(document.formulario.municipio.value)) {
		error+="Debe introducir el municipio.\n";
		document.formulario.municipio.style.background=bgcolor_error;
	}

	if (vacio(document.formulario.provincia.value)) {
		error+="Debe introducir la provincia.\n";
		document.formulario.provincia.style.background=bgcolor_error;
	}

	if (!error)
	{
		document.formulario.action="?seccion=registrar";
		document.formulario.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de cambio de contraseña          */
/* 																      */
/**********************************************************************/

function validar_password()
{

// Ponemos todas las casillas sin fondo
document.form_pass.password.style.background=bgcolor_normal;
document.form_pass.new_pass.style.background=bgcolor_normal;
document.form_pass.new_pass2.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.form_pass.password.value)) {
		error+="Debe introducir la clave actual.\n";
		document.form_pass.password.style.background=bgcolor_error;
	} else if (!esValido(document.form_pass.password.value,lwr + upr))	{
		error+="La clave actual contiene caracteres no válidos.\n";
		document.form_pass.password.style.background=bgcolor_error;
	}	

	if (vacio(document.form_pass.new_pass.value)) {
		error+="Debe introducir la nueva clave.\n";
		document.form_pass.new_pass.style.background=bgcolor_error;
	} else if (!esValido(document.form_pass.new_pass.value,lwr + upr)) {
		error+="La nueva clave contiene caracteres no válidos.\n";
		document.form_pass.new_pass.style.background=bgcolor_error;
	}
	if (vacio(document.form_pass.new_pass2.value)) {
		error+="Debe confirmar la nueva clave.\n";
		document.form_pass.new_pass2.style.background=bgcolor_error;
	} else if (!esValido(document.form_pass.new_pass2.value,lwr + upr)) {
		error+="La confirmación de la nueva clave contiene caracteres no válidos.\n";
		document.form_pass.new_pass2.style.background=bgcolor_error;
	} else if (document.form_pass.new_pass.value!=document.form_pass.new_pass2.value) {
		error+="La confirmación de la nueva clave no coincide con la nueva clave.\n";
		document.form_pass.new_pass.style.background=bgcolor_error;
		document.form_pass.new_pass2.style.background=bgcolor_error;
	}
	
	if (!error)
	{
		document.form_pass.action="?seccion=perfil";
		document.form_pass.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de enviar producto a una amigo   */
/* 																      */
/**********************************************************************/

function validar_enviar() {
// Ponemos todas las casillas sin fondo
document.form_enviar.nombre1.style.background=bgcolor_normal;
document.form_enviar.email1.style.background=bgcolor_normal;
document.form_enviar.nombre2.style.background=bgcolor_normal;
document.form_enviar.email2.style.background=bgcolor_normal;
	var error="";
	
	if (vacio(document.form_enviar.nombre1.value)) {
		error+="Debe introducir su nombre.\n";
		document.form_enviar.nombre1.style.background=bgcolor_error;
	}
		
	if (vacio(document.form_enviar.email1.value)) {
		error+="Debe introducir su email.\n";
		document.form_enviar.email1.style.background=bgcolor_error;
	} else if (!es_correo(document.form_enviar.email1.value)) {
			error+="Su email debe ser una dirección de correo electrónico válida.\n";
			document.form_enviar.email1.style.background=bgcolor_error;
	}

	if (vacio(document.form_enviar.nombre2.value)) {
		error+="Debe introducir el nombre de su amigo.\n";
		document.form_enviar.nombre2.style.background=bgcolor_error;
	}
		
	if (vacio(document.form_enviar.email2.value)) {
		error+="Debe introducir el email de su amigo.\n";
		document.form_enviar.email2.style.background=bgcolor_error;
	} else if (!es_correo(document.form_enviar.email2.value)) {
			error+="El email de su amigo debe ser una dirección de correo electrónico válida.\n";
			document.form_enviar.email2.style.background=bgcolor_error;
	}

	if (!error) {
		document.form_enviar.action="recomendar.php";
		document.form_enviar.submit();
	} else alert(error);
}



/**********************************************************************/
/* Esta función valida el formulario de añadir un comentario a un     */
/* producto de la tienda.                                             */
/* 																      */
/**********************************************************************/

function validar_comentario() {
// Ponemos todas las casillas sin fondo
document.form_coment.nombre.style.background=bgcolor_normal;
document.form_coment.comentario.style.background=bgcolor_normal;
	var error="";
	
	if (vacio(document.form_coment.nombre.value)) {
		error+="Debe introducir su nombre.\n";
		document.form_coment.nombre.style.background=bgcolor_error;
	}
		
	if (vacio(document.form_coment.comentario.value)) {
		error+="Debe introducir el comentario.\n";
		document.form_coment.comentario.style.background=bgcolor_error;
	}
		
	if (!error) {
		document.form_coment.action="add_comentario.php";
		document.form_coment.submit();
	} else alert(error);
}



/**********************************************************************/
/* Esta función valida el formulario de Sugerencias de la página.        */
/* 																      */
/**********************************************************************/

function validar_sugerencia()
{

// Ponemos todas las casillas sin fondo
document.form_sug.nombre.style.background=bgcolor_normal;
document.form_sug.apellidos.style.background=bgcolor_normal;
document.form_sug.sugerencia.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.form_sug.nombre.value)) {
		error+="Debe introducir el nombre.\n";
		document.form_sug.nombre.style.background=bgcolor_error;
	} 
	
	if (vacio(document.form_sug.apellidos.value)) {
		error+="Debe introducir los apellidos.\n";
		document.form_sug.apellidos.style.background=bgcolor_error;
	}
	
	if (vacio(document.form_sug.sugerencia.value)) {
		error+="Debe introducir la sugerencia.\n";
		document.form_sug.sugerencia.style.background=bgcolor_error;
	}
	
	if (!error)
	{
		document.form_sug.action="?seccion=sugerencias";
		document.form_sug.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función valida el formulario de Sugerencias de la página.        */
/* 																      */
/**********************************************************************/

function validar_reclamacion()
{

// Ponemos todas las casillas sin fondo
document.form_rec.nombre.style.background=bgcolor_normal;
document.form_rec.apellidos.style.background=bgcolor_normal;
document.form_rec.reclamacion.style.background=bgcolor_normal;

	var error="";
		
	if (vacio(document.form_rec.nombre.value)) {
		error+="Debe introducir el nombre.\n";
		document.form_rec.nombre.style.background=bgcolor_error;
	} 
	
	if (vacio(document.form_rec.apellidos.value)) {
		error+="Debe introducir los apellidos.\n";
		document.form_rec.apellidos.style.background=bgcolor_error;
	}
	
	if (vacio(document.form_rec.reclamacion.value)) {
		error+="Debe introducir la reclamación.\n";
		document.form_rec.reclamacion.style.background=bgcolor_error;
	}
	
	if (!error)
	{
		document.form_rec.action="?seccion=sugerencias";
		document.form_rec.submit();
	}
	else alert(error);
}


/**********************************************************************/
/* Esta función devuelve verdadero si el valor pasado como argumento  */
/* es una cadena vacia.					                    	      */
/**********************************************************************/


function vacio(valor)
	{
		if (valor=="")
			{
				return(true);
			}
		else
			{
				return(false);
			}
	}


/**********************************************************************/
/*  Esta funcion comprobará si el valor introducido en la variable    */
/*  'valor' tiene el número de caracteres introducidos en la          */
/*   variable 'num'.                                                  */   
/**********************************************************************/


function num_caracteres(valor,num)
	{
		if (valor.length==num) 
			
				return true;
			
		else
			
				return false;
			
		
	}
	


/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos.                                                  */
/**********************************************************************/

function es_entero(numero)
	{
		cadena2="1234567890";
		valido=true;			
		cadena=numero;			
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y espacios.                                       */
/**********************************************************************/


/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y una coma.                                                  */
/**********************************************************************/

function es_real(numero)
	{
		cadena2="1234567890.";
		contador=0;
		valido=true;			
		cadena=numero;			
		longitud=cadena.length;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				if (ch==".") 
					{
						++contador;
					}
					
				
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
	
		if (contador>=2 || cadena.charAt(longitud-1)==".")
			{
				 valido=false;
			}
		
		
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por caracteres válidos para hacer una inserción en una base   */	
/* de datos.                                                          */
/**********************************************************************/

function es_valido(valor)
	{
		cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
		valido=true;
		cadena=valor;
		
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{
						if (ch==cadena2.charAt(j)) break;
							
					}
					if (j == cadena2.length)
						{
      							valido = false;
      							break;
    						}
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}


function es_campo_valido(valor)
	{
		cadena2="AÁÀÂÃÄBCDEÉÈÊËFGHIÍÌÎÏJKLMNÑOÓÒÔÖÕPQRSTUÚÙÛÜVWXYZaáàâãäbcdeéèêëfghiíìîïjklmnñoóòôöõpqrstuúùûüvwxyz1234567890_- ,.";
		valido=true;
		cadena=valor;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{
						if (ch==cadena2.charAt(j)) break;
							
					}
					if (j == cadena2.length)
						{
      							valido = false;
      							break;
    						}
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/
/*  Esta función recibe como argumento una cadena de caracteres       */
/* y devuelve verdadero si la cadena posée los caracteres '@' y '.'   */
/**********************************************************************/

function es_correo(email)
	{		
		if ((email.indexOf("@") == -1) || (email.indexOf(".") == -1))
			{
				return(false);
			}
		else
			{
				return(true);
			}
	}
/**********************************************************************/
/*Esta función valida si una fecha introducida es válida              */
/*    Ej: mm/dd/yyyy o mm-dd-yyyy o mm.dd.yyyy                      */
/*    								      */
/* 								      */
/**********************************************************************/	
function validar_fecha( strValue ) {

  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
  //Revisa si está en el formato correcto
  if(!objRegExp.test(strValue))
    return false; //no se ajusta al patron, fecha no valida
  else{
    var strSeparator = strValue.substring(2,3) //encuentra separador de fechas
    var arrayDate = strValue.split(strSeparator); //separa la fecha en dia, mes y año
    //crea un vector con los meses no iguales a febrero
    var arrayLookup = { '01' : 31,'03' : 31,'04' : 30,'05' : 31,'06' : 30,'07' : 31,'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
    var intDay = arrayDate[1]-0; 
    //revisa si el valor del día y del mes son válidos
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //encontrado en el vector, fecha valida
    }
    
    //revisa febrero
    var intYear = arrayDate[2]-0;
    var intMonth = arrayDate[0]-0;
    if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
      return true; //Feb. tiene un número valido de días
  }
  return false; //cualquier otro valor, fecha no valida
}
	
	
/**********************************************************************/
//Validar fecha
//Este codigo JavaScript Permite validar la fecha en formato 00/00/0000. 
//formato fecha: dd/mm/yyyy
//Valida bisiestos y meses de 30 y 31 dias, 
//asegurandose demás de que la fecha sea mayor de 1900.
/**********************************************************************/

function fecha_correcta(fecha)
{ 
   if(fecha)
   {
      borrar = fecha;
      if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))
      {      
         for (i=0; i<10; i++)
	     {	
            if (((fecha.substr(i,1)<"0") || (fecha.substr(i,1)>"9")) && (i != 2) && (i != 5))
			{
               borrar = '';
               break;  
			}  
         }
	     if (borrar)
	     { 
	        a = fecha.substr(6,4);
		    m = fecha.substr(3,2);
		    d = fecha.substr(0,2);
//		    if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			if((a < 1900) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			{
		       borrar = '';
			 }
		    else
		    {
		       if((a%4 != 0) && (m == 2) && (d > 28))	 
			   {  
		          borrar = ''; // Año no biciesto y es febrero y el dia es mayor a 28
				}
			   else	
			   {
		          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
				  {
			         borrar = '';	    
  				  }	 
			   }  // else
		    } // fin else
         } // if (error)
      } // if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))			    			
	  else
	  {
	     borrar = '';
	  }
   } // if (fecha)   
   if (borrar == '')  return false;
   else	return true;
}

/**********************************************************************/
//limitar el número de los textarea
//Este codigo JavaScript Permite limitar el número de caracteres de los. 
//campos textarea
/**********************************************************************/

function cuenta(nombre,numero)
{ 
	var cadena="";
	
	if (eval("document.formulario." + nombre + ".value.length>" + numero))
	{
		for (i=0;i<numero;i++)
		{
			eval("cadena+=document.formulario." + nombre + ".value.charAt(" + i + ")");
		}
		
		eval("document.formulario." + nombre + ".value=cadena");
	}
}

/**********************************************************************/
// enviar
// Este codigo JavaScript permite devolver la ruta del archivo subido al 
// servidor.
/**********************************************************************/
function enviar_datos(valor, campo, directorio)
{
	var elemento = window.opener.document.getElementById(campo);
	var imagen = window.opener.document.getElementById(campo + '_img');
	
	if(elemento != null) elemento.value = valor;
	if(imagen != null) imagen.src = directorio + valor;
} 

function cerrarwindows(valor, campo, directorio)
{ 
	var elemento = window.opener.document.getElementById(campo);
	var imagen = window.opener.document.getElementById(campo + '_img');
	
	if(elemento != null) elemento.value = valor;
	if(imagen != null) imagen.src = directorio + valor;

	window.close();
}

/**********************************************************************/
// Ampliar foto
// Este codigo JavaScript abre un pop-up con una imagen. 
/**********************************************************************/

function abrir(archivo,foto,referencia)
{   
	nueva_ventana=window.open(archivo+ "?foto=" + foto + "&referencia=" + referencia, "" ,"scrollbars=no,toolbar=no,directories=no,menubar=no,left=15,top=15,resizable=no,status=no,width=660,height=550");
}

