/********************************/	
/* VALIDACION DE CAMPOS VACIOS. */
/********************************/
// Valida que el campo no este vacio y no tenga solo espacios en blanco, es decir es "", " ", "  ", ...
function validaSiNoVacio( campo ) {
	
	if(cadenaVacia(campo.value) == false) {
		
		return false
		
	} else {
		
		return true
		
	}
	
}
			
// Verifica si la cadena pasada como parametro es vacia, es decir es "", " ", "  ", ...
function cadenaVacia( cadena ) {
	
	for (i = 0; i < cadena.length; i++) {
		
		if (cadena.charAt(i) != " ") {
			
			return true
			
		}
		
	}
	
	return false
}			
/************************************/	
/* FIN VALIDACION DE CAMPOS VACIOS. */
/************************************/			


/***********************************/	
/* VALIDACION DE CAMPOS NUMERICOS. */
/***********************************/
// Comprueba si es un digito el caracter pasado como parametro.
function esDigito(caracter) {
	
	var digito = caracter.charCodeAt(0);
	
	return ((digito > 47) && (digito < 58));
	
}

//Comprobamos si es un numero positivo.
function validaNumero(numero) {
	
	var resultado=true;
	
	for (var i = 0; i < numero.length; i++) {
			
		resultado = resultado && esDigito(numero.charAt(i));
		
	}
	
	return resultado;	
}
/***************************************/	
/* FIN VALIDACION DE CAMPOS NUMERICOS. */
/***************************************/


/*******************************************************************************/	
/* VALIDACION DE CAMPOS FECHA. FORMATO: 'dia'-'mes'-'anyo'  'dia'/'mes'/'anyo' */
/*******************************************************************************/
// Compruebo si es correcta la mascara de separacion de la fecha.
function validaSeparadores(fecha) {
	
	var resultado = false;
	
	resultado = resultado || ((fecha.value.charAt(2) == "-") && (fecha.value.charAt(5) == "-"));
	resultado = resultado || ((fecha.value.charAt(2) == "/") && (fecha.value.charAt(5) == "/"));
	
	return resultado;
}

// Devuelvo cual es el ultimo da del mes pasado en el parametro fecha.
function finMes(fecha) {

	var numeroMes = parseInt(fecha.value.substr(3, 2), 10);
	var numeroAno = parseInt(fecha.value.substr(6), 10);
	var resultado = 0;
	
	switch (numeroMes) {
		
		case 1: resultado = 31; break;
		case 2: if(numeroAno % 4 == 0) resultado = 29;
				else resultado = 28; 
				break;
		case 3: resultado = 31; break;
		case 4: resultado = 30; break;
		case 5: resultado = 31; break;
		case 6: resultado = 30; break;
		case 7: resultado = 31; break;
		case 8: resultado = 31; break;
		case 9: resultado = 30; break;
		case 10: resultado = 31; break;
		case 11: resultado = 30; break;
		case 12: resultado = 31; break;
	
	}
	
	return resultado;
}

// Validamos el dia pasado como parametro.
function validaDia(fecha) {
	
	var resultado = false;
	var numeroDia = parseInt(fecha.value.substr(0, 2), 10);
	
	resultado = resultado || ((numeroDia >= 1) && (numeroDia <= finMes(fecha)));
	
	return resultado;
}

// Validamos el mes pasado como parametro.
function validaMes(fecha) {
	
	var resultado = false;
	var numeroMes = parseInt(fecha.value.substr(3, 2), 10);
	
	resultado = resultado || ((numeroMes >= 1) && (numeroMes <= 12));
	
	return resultado;
}

// Validamos el anyo pasado como parametro.	
function validaAno(fecha) {
	
	var resultado = true;
	var numeroAno = fecha.value.substr(6);
	
	resultado = resultado && ((numeroAno.length == 2) || (numeroAno.length == 4));
	if (resultado) {
		
		for (var i = 0; i < numeroAno.length; i++) {
			
			resultado = resultado && esDigito(numeroAno.charAt(i));
			
		}
		
	}
	
	return resultado;
}

// Validamos la fecha pasada como parametro.
function validaFecha(fecha) {

	var resultado = true;
	
	if (fecha.value != "") {
		
		resultado = resultado && (validaAno(fecha));
		resultado = resultado && (validaMes(fecha));
		resultado = resultado && (validaDia(fecha));
		resultado = resultado && (validaSeparadores(fecha));
		if (!resultado) {
			
			fecha.value = "";
			fecha.focus();
			
		}
		
	}
	
	return resultado;				
}
/************************************/	
/* FIN VALIDACION DE CAMPOS FECHA. */
/************************************/		


/*****************************************************************************/	
/* VALIDACION DE CAMPOS DE TELEFONO.                                         */
/* 9 cifras seguidas.														 */
/*****************************************************************************/
function validaTelefono(telefono) {
	
	// Expresion regular para telefonos, permite campos vacios y guiones.
	var er_telefono = /^\d{9}$/ 

	// Comprueba el campo telefono pasado. Usa el metodo test de expresion regular.
	if(!er_telefono.test(telefono.value)) {
		
	   return false
	   
	}

	return true
} 	
/*****************************************/	
/* FIN VALIDACION DE CAMPOS DE TELEFONO. */
/*****************************************/	

					
/**********************************/	
/* VALIDACION DE CAMPOS DE EMAIL. */
/**********************************/			
function validaEmail(email) {
	
	// Expresion regular para emails.
	var er_email = /^([\w-\.])+@([\w-]+\.)+([A-Za-z]){2,4}$/
	
	// Comprueba el campo email pasado. Usa metodo test de la expresion regular.
	if(!er_email.test(email.value)) { 
	
	   return false   
	   
	}

	return true         
}
/**************************************/	
/* FIN VALIDACION DE CAMPOS DE EMAIL. */
/**************************************/	

						
/************************************************************************/	
/* VALIDACION DE CAMPOS DE URL.                                         */				
/* Valida una direccin URL valida. Incluyendo el "http://"  "ftp://".   */
/************************************************************************/
function validaURL(URL) {
	
	// Expresion regular para URLs.
	var er_URL = /^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\\/\\\+&amp;%\$#_]*)?$/
	
	// Comprueba el campo URL pasado. Usa metodo test de la expresion regular.
	if(!er_URL.test(URL.value)) {
		
	   return false  
	   
	}

	return true       
}	
/**************************************/	
/* FIN VALIDACION DE CAMPOS DE URL.   */
/**************************************/							


/************************************************************************/	
/* VALIDACION DE CAMPOS CONTRASENA.                                     */				
/* Valida si la contrasena pasada como parametro es segura. (Entre 8 y  */
/* 10 caracteres, por lo menos un digito y un alfanumerico, y no puede  */
/* contener caracteres especiales).                                     */
/************************************************************************/			
function validaContrasena(contrasena) {
	
	// Expresion regular para contraseas seguras.
	var er_contrasena = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$/
	
	// Comprueba el campo contrasena pasado. Usa metodo test de la expresion regular.
	if(!er_contrasena.test(contrasena.value)) { 
	
	   return false  
	   
	}

	return true       
}
/*****************************************/	
/* FIN VALIDACION DE CAMPOS CONTRASENA.  */
/*****************************************/											
	

/******************************************************************/	
/* VALIDACION DE NUMEROS DE TARJETAS DE CREDITOS.                 */				
/* Valida el numero de tarjeta de credito pasado como parametro.  */
/******************************************************************/				
function validaTarjetaCredito(numeroTarjetaCredito) {
	
	// Expresion regular para numeros de tarjetas de creditos.
	var er_numeroTarjetaCredito = /^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$/
	
	// Comprueba el campo numeroTarjetaCredito pasado. Usa metodo test de la expresion regular.
	if(!er_numeroTarjetaCredito.test(numeroTarjetaCredito.value)) { 
	
	   return false   
	   
	}

	return true       
}	
/*******************************************************/	
/* FIN VALIDACION DE NUMEROS DE TARJETAS DE CREDITOS.  */
/*******************************************************/				


/***************************************************/	
/* VALIDACION DE CODIGOS POSTALES.                 */				
/* Valida el codigo postal pasado como parametro.  */
/***************************************************/	
function validaCodigoPostal(codigoPostal) {
	
	// Expresion regular para codigos postales.
	var er_codigoPostal = /^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/
	
	// Comprueba el campo codigoPostal pasado. Usa metodo test de la expresion regular.
	if(!er_codigoPostal.test(codigoPostal.value)) { 
	
	   return false 
	   
	}

	return true       
}	
/****************************************/	
/* FIN VALIDACION DE CODIGOS POSTALES.  */
/****************************************/				


/*****************************************/	
/* VALIDACION DE DNIs.                   */				
/* Valida el DNI pasado como parametro.  */
/*****************************************/	
function validaDNI(dni) {
	
	// Expresin regular para DNIs.
	var er_dni = /^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$/
	
	// Comprueba el campo DNI pasado. Usa metodo test de la expresion regular.
	if(!er_dni.test(dni.value)) {
		
	   return false
	   
	}

	return true       
}
/****************************/	
/* FIN VALIDACION DE DNIs.  */
/****************************/