
	var formatoFecha = 'dd/mm/yyyy';	// Formato de fecha que vamos a utilizar
    var arrMeses = Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  
  // Función de validación de email
  function emailValido(valor) {
	var EmailOk = true;
	var AtSym = valor.indexOf('@');
	var Period = valor.lastIndexOf('.');
	var Space = valor.indexOf(' ');
	var Length = valor.length - 1;
	if ((AtSym < 1) || (Period <= AtSym+1) || (Period == Length ) || (Space  != -1)) {  
		  EmailOk = false;
	}
	return EmailOk;
  }

  function dniValido(valor)
  {
	var DNIok = true;
	exp_reg = /^[0-9]{8}[a-zA-Z]{1}$/;
	if ( exp_reg.test(valor) == false )
		DNIok=false;
	else
	{
		numeros = valor.substring(0,8);
		letra = valor[8];
		letra2 = letraDNI(numeros);
		if (letra.toUpperCase() != letra2.toUpperCase())
			DNIok=false;
	}
	return DNIok;
  }

  function letraDNI(dni)
  {
	cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	posicion = dni % 23;
	l = cadena.substring(posicion,posicion+1);
	return l;
  }

  
  // Función de validación de fecha
  function fechaValida(valor) {
  	var formatoFechaReg = formatoFecha;
  	formatoFechaReg = formatoFechaReg.replace('dd','([0-2][0-9]|3[0-1])');
  	formatoFechaReg = formatoFechaReg.replace('mm','(0[0-9]|1[0-2])');
  	formatoFechaReg = formatoFechaReg.replace(/y/g,'[0-9]');
  	formatoFechaReg = "^" + formatoFechaReg + "$";
  	var ExpReg = new RegExp(formatoFechaReg);
  	var fechaOK = ExpReg.test(valor);
  	return fechaOK;
  }
  
  // Función de validación de fotos
  function fotoValida(valor) {
	var formatoFoto = "^(.*)(\\\\|/)[\\w:/_-]+\\.(jpeg|jpg|gif)$";
  	var ExpRegFoto = new RegExp(formatoFoto,"i");
  	var fotoOK = ExpRegFoto.test(valor);
  	return fotoOK;
  }
  
    // Función de validación de videos
  function videoValido(valor) {
	var formatoVideo = "^(.*)(\\\\|/)[\\w:/_-]+\\.(wmv|avi|mov)$";
  	var ExpRegVideo = new RegExp(formatoVideo,"i");
  	var videoOK = ExpRegVideo.test(valor);
  	return videoOK;
  }
  
  function checkForm(frm) {
    for(i=0;i<frm.length;i++) {
    	campoForm = frm.elements[i];
		if(campoForm.disabled == false) {
			var datosCheck = campoForm.id.split('#');
			texto_explicativo = "";
			if(datosCheck[2])
				texto_explicativo = datosCheck[2];
			if(datosCheck[0].indexOf('*') != -1) {
				if(campoForm.value == "") {
					alert('No has rellenado el campo ' + datosCheck[1]);
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('numero') != -1) {
				if(isNaN(campoForm.value)) {
					alert('El campo ' + datosCheck[1] + ' tiene que ser numérico.' + texto_explicativo);
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('dni') != -1) {
				if(!dniValido(campoForm.value)) {
					alert('El DNI es incorrecto');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('email') != -1) {
				if(!emailValido(campoForm.value)) {
					alert('El campo ' + datosCheck[1] + ' tiene que ser un email');
					campoForm.focus();
					return false;
				}
			}
			if((datosCheck[0].indexOf('fecha') != -1) && (campoForm.value != "")) {
				if(!fechaValida(campoForm.value)) {
					alert('El formato del campo ' + datosCheck[1] + ' no es válido');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('checkbox') != -1) {
				if(campoForm.checked == false) {
					alert('No has rellenado el campo ' + datosCheck[1]);
					return false;
				}
			}
			if(datosCheck[0].indexOf('radio') != -1) {
				var radioCheck = 0;
				eval('var radioElemento = frm.' + campoForm.name);
				for(j=0;j<radioElemento.length;j++) {
					if(radioElemento[j].checked) {
						radioCheck = 1;
						break;
					}
				}
				if(radioCheck == 0) {
					alert('No has rellenado el campo ' + datosCheck[1]);
					return false;
				}
			}
			if(datosCheck[0].indexOf('select') != -1) {
				if(campoForm.selectedIndex == 0) {
					alert('No has rellenado el campo ' + datosCheck[1]);
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('selectMultiple') != -1) {
				seleccion = 0
				for(j=1;j<campoForm.length;j++) {
					if(campoForm.options[j].selected == true)
						seleccion = 1
				}
				if(seleccion == 0) {
					alert('No has rellenado el campo ' + datosCheck[1]);
					return false;
				}
			}
			var expReg = /[^A-Za-z0-9ñÑáéíóúÁÉÍÓÚüÜ_\s\¿\?\¡\!\<\>\.\,\:\;\(\)\@\#\$\€\%\&\\\/\*\=\+\-\{\}\[\]\ç\º\ª]/i;
			if(datosCheck[0].indexOf('parsear') != -1) {
				if(expReg.test(campoForm.value)) {
					alert('El campo ' + datosCheck[1] + ' no es válido\n');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('min') != -1) {
				posicion = datosCheck[0].indexOf('min') + 3;
				limite = "0";
				while((!isNaN(datosCheck[0].substring(posicion,posicion + 1))) && (posicion < datosCheck[0].length)) {
					limite = limite + datosCheck[0].substring(posicion,posicion + 1);
					posicion = posicion + 1;
				}
				limite = parseInt(limite,10);
				if(campoForm.value.length < limite) {
					alert('El campo ' + datosCheck[1] + ' tiene que tener al menos ' + limite + ' caracteres\n');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('max') != -1) {
				posicion = datosCheck[0].indexOf('max') + 3;
				limite = "0";
				while((!isNaN(datosCheck[0].substring(posicion,posicion + 1))) && (posicion < datosCheck[0].length)) {
					limite = limite + datosCheck[0].substring(posicion,posicion + 1);
					posicion = posicion + 1;
				}
				limite = parseInt(limite,10);
				if(campoForm.value.length > limite) {
					alert('El campo ' + datosCheck[1] + ' tiene que como máximo ' + limite + ' caracteres\n');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('foto') != -1) {
				if((campoForm.value != "") && !fotoValida(campoForm.value)) {
					alert('El formato de la foto no es correcta. Por favor, verifica que es un JPEG o un GIF o que el nombre no tiene espacios, acentos o caracteres extraños.');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('video') != -1) {
				if((campoForm.value != "") && !videoValido(campoForm.value)) {
					alert('El formato del vídeo no es correcto. Por favor, verifica que es un WMV o un AVI o un MOV o que el nombre no tiene espacios, acentos o caracteres extraños.');
					campoForm.focus();
					return false;
				}
			}
			if(datosCheck[0].indexOf('acepto') != -1) {
				if(campoForm.checked == false) {
					alert('Te rogamos que leas y aceptes las condiciones de uso antes de continuar');
					return false;
				}
			}
			if(datosCheck[0].indexOf('precio') != -1) {
				if((campoForm.value != "") && !precioValido(campoForm.value)) {
					alert('El formato del precio no es correcto. El formato correcto es 1000,11.');
					campoForm.focus();
					return false;
				}
			}
		}
    }
    return true;
  }
 

  function enviar(frm) {
	if(checkForm(frm)) {
		frm.submit();
	}
  }

