//------------------------------------------------------------------------
// Fichero: fun_comun.js
// Objeto: Funciones javascript comunes para el foro de opinión
// Autor: Agora Solutions
// (c) Copyright 2005, Agora Solutions. Todos los derechos reservados.
// Para cualquier duda, pueden dirigirse a jibarra@agora-solutions.com
//------------------------------------------------------------------------

//-abrirv-//Esta función abre una nueva ventana
function abrirv(pagina,w,h){
	var opciones='';
	var scrol = '';
	var nombre = 'producto';
	var top = (screen.height-h)/2;
	var left = (screen.width-w)/2;
	if (screen.height < h || screen.width < w) {
		scrol = 'yes';
			if (screen.height < h) {
					h = screen.height - 50;				
			} else {
				h = h + 20;
			}
			if (screen.width < w) {
					w = screen.width - 20;				
			}
		top = 0;
		left = 0;
	} else {
		scrol = 'no';
	}
	opciones = 'scrollbars=yes,resizable=yes,width='+w+',height='+h+',top='+top+',left='+left+'';
	window.open (pagina,nombre,opciones);
}	


//-estaVacio-//Esta función comprueba si un campo está vacío
function estaVacio(campo, etiqueta) {
	if (campo.value.length == 0) {
		alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") no puede estar vacío.");
		campo.focus();
		return true;
	}
	return false;
}


//-longitud-//Esta función comprueba la longitud del usuario y el password
function tieneLongitud(campo, etiqueta, valor1, valor2) {
    if (!(campo.value.length == 0))
	{
		if (campo.value.length < valor1 || campo.value.length > valor2) {
			if (valor1 == valor2)
			{
			alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") tiene que tener " + valor1 + " caracteres.");
			}
			else {
			alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") tiene que tener entre " + valor1 + " y " + valor2 + " caracteres.");
			}

			campo.focus();
			return true;
		}
		return false;
	}
	return false;
}

//-longitud-//Esta función comprueba la longitud del usuario y el password
function codigovalido(campo, etiqueta) {
    if (!(campo.value.length == 0))
	{
		if (campo.value.substring(0,2) > 50) {
			alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") no es correcto.");
			campo.focus();
			return true;
		}
		return false;
	}
	return false;
}

//-cif - nif valido //Esta función comprueba que el cif se valido (8 numeros y una letra)
function cif_valido (campo, etiqueta) {
    
	 var temp = campo.value.toUpperCase();
	 // son 9 dígitos
	 if (!/^[A-Za-z0-9]{9}$/.test(temp))  {
		alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") tiene que tener 9 caracteres. Formato A00000000 o 000000000A o A0000000A");
		campo.focus();
		return true;
	} 
	if (campo.value.substring(0,1).toUpperCase() == 'X' || campo.value.substring(0,1).toUpperCase() == 'Y' ) { // Es un NIE
		if (!esNum (campo.value.substring(1,7))) {
   			alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto (NIE).");
			campo.focus();
			return true;
 		} else {
  			var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
			var numero = '0' + campo.value.substring(1,8);
			numero = numero%23;
			if (temp.substring(8) != letras.substring(numero,numero+1)) {
   				alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto.\nLa letra no es válida (NIE).");
				campo.focus();
				return true;
			} else {
			 return false;
			}
		}
	} else if (!esNum (campo.value.substring(0,1))) { // Es un CIF
		// Es una letra de las admitidas ?
		if (!/^[ABCDEFGHJKLMNPQSVU]/.test(temp)) {
   			alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto. Formato A00000000 o 000000000A o A0000000A");
			campo.focus();
			return true;
		// Tiene 7 números
		} else if (!esNum (campo.value.substring(1,7))) {
   			alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto. Formato A00000000 o 000000000A o A0000000A");
			campo.focus();
			return true;
		// Comprobamos el dígito de control
		} else {
			
		   var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
		   var temp = 0;
		   for( i = 2; i <= 6; i += 2 ) 	{
		    temp = temp + v1[ parseInt(campo.value.substr(i-1,1))];
		    temp = temp + parseInt(campo.value.substr(i,1));
   		   };
			temp = temp + v1[ parseInt(campo.value.substr(7,1))];
			temp = (10 - ( temp % 10));
		  	switch (temp) {
				case 10: 
					numero = "0";
					letra = "J";
					break;
				case 9:
					numero = "9";
					letra = "I";
					break;
				case 8:
					numero = "8";
					letra = "H";
					break;
				case 7:
					numero = "7";
					letra = "G";
					break;
				case 6:
					numero = "6";
					letra = "F";
					break;
				case 5:
					numero = "5";
					letra = "E";
					break;
				case 4:
					numero = "4";
					letra = "D";
					break;
				case 3:
					numero = "3";
					letra = "C";
					break;
				case 2:
					numero = "2";
					letra = "B";
					break;
				case 1:
					numero = "1";
					letra = "A";
					break;					
				case 0:
					numero = "0";
					letra = "J";
					break;
				 };
  		
			if (campo.value.substring(8) != numero && campo.value.substring(8) != letra) {
		   		alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto. Formato A00000000 o 000000000A o A0000000A");
				campo.focus();
				return true;
			} else {
				return false;
			}
		}
	} else { // Es un NIF
		// Comprobamos que sean 8 numeros
		if (!esNum (campo.value.substring(0,8))) {
   			alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto.");
			campo.focus();
			return true;
 		} else {
  			var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	  		var numero = campo.value.substring(0,8)%23;
			if (temp.substring(8) != letras.substring(numero,numero+1)) {
   				alert("Atención, el campo requerido (" + etiqueta.toUpperCase() + ") es incorrecto.\nLa letra no es válida.");
				campo.focus();
				return true;
			} else {
			 return false;
			}
		}
	}
}
function esNum(dato){
	var numchars=0;
	var vabien=true;
	var subdato;
	
		numchars=eval(dato.length);
		for (var c=0;c<numchars;c++){
			subdato = dato.substring(c,c + 1);
			if (esNumero(subdato)==false) {
				vabien = false;
			}
		}
		return(vabien);
}
function esNumero(d){
	if ((d!='0') && (d!='1') && (d!='2') && (d!='3') && (d!='4') && (d!='5') &&
		(d!='6') && (d!='7') && (d!='8') && (d!='9')) {
		return false;
	}else{
		return true;
	}
}
//-tieneLongitud-//Esta función comprueba la longitud del usuario y el password
function tieneLongitud(campo, etiqueta, valor1, valor2) {
    if (!(campo.value.length == 0))
	{
		if (campo.value.length < valor1 || campo.value.length > valor2) {
			if (valor1 == valor2) {
				alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") tiene que tener " + valor1 + " caracteres.");
			}else {
				alert("Atención, el valor del campo requerido (" + etiqueta.toUpperCase() + ") tiene que tener entre " + valor1 + " y " + valor2 + " caracteres.");
			}
			campo.focus();
			return true;
		}
		return false;
	}
	return false;
}

//-noNumerico-//Estas funciones comprueban si el campo es numérico
function noNumerico(campo, etiqueta) {
	if (!esNum(campo.value)) {
		alert("Atención, el valor del campo requerido " + etiqueta.toUpperCase() + " debe ser numérico.");
		campo.focus();
		return true;
	}
	return false;
}

//Esta función comprueba si es una dirección valida
function noEsMail(campo, etiqueta) {
	var sArroba=/^(.+)@(.+)$/;
	if (campo.value.match(sArroba)==null) {
		alert("ERROR: Campo incorrecto (" + etiqueta.toUpperCase() + ").");
		campo.focus();
		return true;
	}	
	var sPunto=campo.value.match(sArroba)[2];
	var iPunto=sPunto.length;
	var encontrado=0;
	for (i=0;i<iPunto;i++) {
		if (sPunto.charAt(i)==".") {
			encontrado = 1;
		}
	}
	if (!encontrado) {
		alert("ERROR: Campo incorrecto (" + etiqueta.toUpperCase() + ").");
		campo.focus();
		return true;
	}
	return false;
}
