//nombrecampo
//obligatorio-noobligatorio
//texto-fecha-hora-cp-telefono
OBLIGATORIO="obligatorio";
TEXTO="texto";
MAIL="mail";
ENTERO="entero";
DECIMAL="decimal";
FECHA="fecha";
HORA="hora";
CP="cp";
TELEFONO="telefono";

function comprobar(miform)
{
mensaje="";
	for(i=0;i<miform.elements.length;i++)
	{

		//alert(mensaje);
		//alert(miform.elements[i].id);
		valor=miform.elements[i].value;


		if(miform.elements[i].id!="") // si no esta vacio el id sigo
		{

			arraycontenido=miform.elements[i].id.split("|");

			if(arraycontenido.length==3)//esto confirma que es de los mios
			{
				//alert(arraycontenido[0]);
				//(arraycontenido[1]);
				//alert(arraycontenido[2]);

				nombre=arraycontenido[0];
				obligatorio=arraycontenido[1];
				tipo=arraycontenido[2];
				//alert("estoy "+obligatorio+"_"+valor+"_"+tipo);
				
				if(obligatorio.toLowerCase()==OBLIGATORIO || valor!="")// ahora es cuando actuo
				{
					//alert("valor a comprobar |"+valor+"|");
					aux=valor;

					while(aux.indexOf(" ")!=-1)
						aux=aux.replace(" ","");

					//alert(tipo+" "+valor);

					if(aux ==""  )
					{
						mensaje+="El campo "+nombre+" debe ser rellenado\n";
					}
					else
					{

							if(tipo.toLowerCase()==TEXTO)
							{
								
								//alert("Bien");
							}

							if(tipo.toLowerCase()==FECHA)
							{


								if(comprobarFecha(valor))
									mensaje+="El campo "+nombre+" debe ser una fecha valida (dd/mm/aaaa)\n";
								//else
								//	alert("bien");
							}

							if(tipo.toLowerCase()==HORA)
							{


								if(comprobarHora(valor))
									mensaje+="El campo "+nombre+" debe ser una hora valida \n";
								//else
									//alert("bien");

							}

							if(tipo.toLowerCase()==CP)
							{


								if(comprobarCP(valor))
									mensaje+="El campo "+nombre+" debe ser un codigo postal valido \n";
								//else
									//alert("bien");

							}

							if(tipo.toLowerCase()==TELEFONO)
							{


								if(comprobarTelefono(valor))
									mensaje+="El campo "+nombre+" debe ser un numero de telefono válido \n";
								//else
									//alert("bien");

							}
							if(tipo.toLowerCase()==ENTERO)
							{


								if(comprobarEntero(valor))
									mensaje+="El campo "+nombre+" debe ser un numero entero \n";
								//else
								//	alert("bien");

							}
							if(tipo.toLowerCase()==DECIMAL)
							{


								if(comprobarDecimal(valor))
									mensaje+="El campo "+nombre+" debe tener un numero entero o decimal (el separador decimal es el '.') \n";
								//else
								//	alert("bien");

							}

							if(tipo.toLowerCase()==MAIL)
							{


								if(comprobarMail(valor))
									mensaje+="El campo "+nombre+" debe tener un email valido.\n";
								//else
								//	alert("bien");

							}
					}


				}



			}
		}

	}

	//alert(mensaje);
	if(mensaje!="")
		alert(mensaje);
	else
		miform.submit();
}










//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarMail(cadena)
{
	nota=0
					arroba0=cadena.indexOf("@",0)
					arroba1=cadena.lastIndexOf("@", cadena.length )
					punto0=cadena.indexOf(".",0)
					punto1=cadena.lastIndexOf(".", cadena.length )

					//solo una arroba
					if(arroba0!=arroba1){ nota=1}
					// arroba no primera

					if(arroba0<1){ nota=1}

					//arroba antes que el ultimo punto

					if(arroba0>punto1){  nota=1}

					// la arroba no esta pegasa al punto
					if(cadena.charAt(arroba0-1)=='.' || cadena.charAt(arroba0+1)=='.'){  nota=1}

					//mirar qu ehay 2 o mas espacios detras del punto
					if(punto1>=cadena.length-2){  nota=1}

					if(cadena.indexOf("*")!=-1 || cadena.indexOf(" ")!=-1|| cadena.indexOf("\\")!=-1 || cadena.indexOf("/")!=-1) nota=1;

					if(nota==1)
					{

						return true;

					}



		return false;
}
//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarFecha(cadena)
{
	var error=false;
	arraydatos=cadena.split("/");
	if(arraydatos.length!=3)
		arraydatos=cadena.split("-");

	if(arraydatos.length!=3) return true;

	dia=arraydatos[0];
	mes=arraydatos[1];
	ano=arraydatos[2];
			//primero miro si introducen algo y si eso es un numero

			if(isNaN(dia) || dia=="" || dia=="0"|| dia=="00" || dia.length!=2) error=true;

			if(isNaN(mes) || mes=="" || mes=="0"|| dia=="00" || mes.length!=2)  error=true;

			if(isNaN(ano) || ano=="" || ano=="0000" || ano.length!=4 || ano>2200 || ano<1900)error=true;

			if(dia<32 && mes<13)
			{
				if( mes==2)
				{
					if(dia>29)
					{
						error=true

					}
					else
					{
						if(dia==29 && !(ano==1900  || ano==1904  || ano==1908  || ano==1912  || ano==1916  || ano==1920  || ano==1924  || ano==1928  || ano==1932  || ano==1936  || ano==1940  || ano==1944  || ano==1948  || ano==1952  || ano==1956  || ano==1960  || ano==1964  || ano==1968  || ano==1972  || ano==1976  ||ano==1980  || ano==1984  || ano==1988  || ano==1992  || ano==1996 || ano==2000 || ano==2004))
						{
							error=true;

						}

					}
				}

				if( (mes==4  ||	mes==6  ||  mes==9  ||  mes==11) && dia==31 ) error=true;

			}
			else  error=true;

			if (error==true) return true
			else return false;

}



//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarHora(cadena)
{

}
//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarCP(cadena)
{
	if(cadena.length!=5 || isNaN(cadena))
				return true;

	return false;

}


//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarTelefono(cadena)
{
	if(cadena.length<9  )
					return true;

	return false;

}




//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarLongitudExacta(cadena,longitud)
{

	if(cadena.length==longitud)
			return true;

	return false;
}


//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarLongitudMayor(cadena,longitud)
{

	if(cadena.length>longitud)
		return true;

	return false;
}



//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarEntero(cadena,longitud)
{

	if(cadena.length>longitud)
		return true;
	if(isNaN(cadena) || cadena=="")
		return true;
	else
	{
		for (var i=0;i<cadena.length;i++)
		{
			caracter=cadena.substring(i,i+1);
			if (caracter=="." || caracter==",")
			{

				return true;
			}
		}

	}

	return false;
}



//-------- devuelve false si todo esta correcto y true en caso de haber un error
function comprobarDecimal(cadena,longitud)
{

	if(cadena.length>longitud)
		return true;
	if(isNaN(cadena) || cadena=="")
		return true;


	return false;
}







