/*
CASTELLÀ
------------------------

DNI
NUMERICO
MAIL
DATE
MINLENGTH
MINVALUE
MAXVALUE
IAMGEN (solo formato JPG para redimensionar)
*/
/*function checkState()
{
	if(document.readyState=="complete")
	{
		checkForms()
	}
}*/

//document.onreadystatechange = checkState

//window.onload=checkForms

function checkForms()
{
		formularios=document.getElementsByTagName("FORM")
		for(i=0;i<formularios.length;i++)
		{
			if(formularios[i].getAttribute("validar"))
			{
				formularios[i].onsubmit=function(){return validar(this)}
				for(j=0;j<formularios[i].length;j++)
				{
					if(formularios[i].elements[j].type=="text" || formularios[i].elements[j].type=="file")
					{
						formularios[i].elements[j].tmp=formularios[i].elements[j].onblur
						formularios[i].elements[j].onblur=function()
						{
							if(tipo(this))
							{
								if(this.tmp!=null)
								{
									this.tmp()
								}
							}
						}
					}
					
				}
			}
		}
}
function tipo(objeto)
{
	if(objeto.getAttribute("tipo"))
	{
		tipus=objeto.getAttribute("tipo").toUpperCase()
		if(tipus!="")
		{
			switch(tipus)
			{
				case "DNI": return dni(objeto);break;
				case "NUMERIC":return numeric(objeto) ;break;
				case "MAIL": return email(objeto);break;
				case "DATE":return fecha(objeto);break;
				case "IMAGE":if(llibreria_gd==1) { return imagen_gd1(objeto);break; } else { return imagen_gd2(objeto);break; }
			}
		}
	}
	if(objeto.getAttribute("minlength"))
	{
		if(objeto.value.length<objeto.getAttribute("minlength"))
		{
			alert("Longitud mínima de "+objeto.getAttribute("minlength")+ " carácteres.")
			objeto.focus()
			objeto.select()
			return false
		}
	}
	if(objeto.getAttribute("minvalue"))
	{
		if(parseInt(objeto.value)<parseInt(objeto.getAttribute("minvalue")))
		{
			alert("valor mínimo: "+objeto.getAttribute("minvalue"))
			objeto.focus()
			objeto.select()
			return false
		}
	}
	if(objeto.getAttribute("maxvalue"))
	{
		if(parseInt(objeto.value)>parseInt(objeto.getAttribute("maxvalue")))
		{
			alert("valor máximo: "+objeto.getAttribute("maxvalue"))
			objeto.focus()
			objeto.select()
			return false
		}
	}
}
function email(objeto)
{
	var re,s
	var s = objeto.value
	if(s!="")
	{
		//re = new RegExp("[0-9a-zA-Z]{1,*}@[0-9a-zA-Z](1,*).[0-9a-zA-Z]{2,4}","i"); 		
		//re=new RegExp("[0-9a-zA-Z]+@[0-9a-zA-Z]+[\.][a-zA-Z]{2,4}$","i"); 		
		re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
		r = s.match(re);
		if(r==null)
		{
			alert("Email incorrecto")
			objeto.focus()
			objeto.select()
			return false
		}
		return true
	}
}

function numeric(objeto)
{
	if(!isFinite(objeto.value))
	{
		alert("Número Incorrecto")
		objeto.focus()
		objeto.select()
		return false
	}
	else return true
}

function imagen_gd1(objeto)
{
	objeto.value=objeto.value.toUpperCase()
	valor=objeto.value
	valor_formato=valor.toUpperCase()
	
	if ((valor!="") && (valor_formato.lastIndexOf(".JPG"))==-1)
	{
		alert("Tipo de formato Incorrecto, solo JPG")
		objeto.focus()
		objeto.select()
		objeto.click()
		return false
	}
	else return true
}

function imagen_gd2(objeto)
{
	objeto.value=objeto.value.toUpperCase()
	valor=objeto.value
	valor_formato=valor.toUpperCase()
	
	if ((valor!="") && ((valor_formato.lastIndexOf(".GIF"))==-1 && (valor_formato.lastIndexOf(".JPG"))==-1))
	{
		alert("Tipo de formato Incorrecto, solo JPG o GIF")
		objeto.focus()
		objeto.select()
		objeto.click()
		return false
	}
	else return true
}

function validar(formulario)
{
	for(i=0;i<formulario.length;i++)
	{
		var elinput=formulario.elements[i]
		if(elinput.getAttribute("obligatorio")!=null)
		{
			if(elinput.value=="")
			{
				if(elinput.nombre==null) elinput.nombre=elinput.name
				alert("Falta un campo obligatorio:\n\n"+elinput.nombre)
				try{elinput.focus()}
				catch(e){
					cambia(eval(elinput.pestana_madre));
					elinput.focus()
				}
				return false
			}
		}
	}
	return formulario.submitActivo
}

function fecha(objeto)
{
	var r, re;
	var s = objeto.value
	var separador="/"
	if(s!="")
	{
		re = new RegExp("[0-3]{0,1}[0-9]{1}"+separador+"[0-1]{0,1}[0-9]{1}"+separador+"[0-9]{4}","i"); 
		r = s.match(re);
		if(r==null)
		{
			separador="-"
			re = new RegExp("[0-3]{0,1}[0-9]{1}"+separador+"[0-1]{0,1}[0-9]{1}"+separador+"[0-9]{4}","i"); 
			r = s.match(re);
		}
		if(r==null)
		{
			separador="."
			re = new RegExp("[0-3]{0,1}[0-9]{1}"+separador+"[0-1]{0,1}[0-9]{1}"+separador+"[0-9]{4}","i"); 
			r = s.match(re);
		}
		if(r!=null)
		{
			objeto.value=r
			s=objeto.value
			dia=s.substring(0,s.indexOf(separador))
			mes=s.substring(s.indexOf(separador)+1,s.lastIndexOf(separador))-1
			anyo=s.substring(s.lastIndexOf(separador)+1,s.length)
			try{
				var newfecha=new Date(anyo, mes, dia)
				dia2=newfecha.getDate()
				mes2=newfecha.getMonth()
				anyo2=newfecha.getFullYear()
				if(dia2!=dia || mes2!=mes || anyo2!=anyo || anyo<1990)
				{
					alert("Fecha incorrecta")
					objeto.focus()
					objeto.select()
					return false
				}
			}
			catch(e)
			{
				alert("Fecha incorrecta")
				objeto.focus()
				objeto.select()
				return false
			}
		}
		else
		{
			alert("Fecha incorrecta")
			objeto.focus()
			objeto.select()
			return false
		}
	}
}

function dni(objeto)
{
	objeto.value=objeto.value.toUpperCase()
	valor=objeto.value
	
	if (valor.length==0) return false
	if(valor.length>7 )
	{
		num=valor.substr(0,valor.length-1)
		if(valor.length==8) 
		{
			num=valor
		}
		if(valor.length==9 && isFinite(valor) && valor.substr(0,1)=="0") 
		{
			num=valor
		}
		if (valor.length>9 && valor.substr(0,1)!="0")
		{
			alert ("DNI incorrecto\n\nIntroducir 9 dígitos y la letra")
			objeto.focus()
			objeto.select()
			return false
		}
		letra=valor.substr(valor.length-1, valor.length)

		if (isFinite(num))
		{
			resto = num % 23;
			switch(resto) 
			{
				case 0: l="T"; break;
				case 1: l="R"; break;
				case 2: l="W"; break;
				case 3: l="A"; break;
				case 4: l="G"; break;
				case 5: l="M"; break;
				case 6: l="Y"; break;
				case 7: l="F"; break;
				case 8: l="P"; break;
				case 9: l="D"; break;
				case 10:l="X"; break;
				case 11:l="B"; break;
				case 12:l="N"; break;
				case 13:l="J"; break;
				case 14:l="Z"; break;
				case 15:l="S"; break;
				case 16:l="Q"; break;
				case 17:l="V"; break;
				case 18:l="H"; break;
				case 19:l="L"; break;
				case 20:l="C"; break;
				case 21:l="K"; break;
				case 22:l="E"; break;
				case 23:l="U"; break;
			}
			if(l!=letra)
			{
				objeto.value=num+l
				if(objeto.value.length<10)
				{
					objeto.value="0"+objeto.value
				}
				return true
				//alert ("DNI incorrecte\n\nIntroduïr 9 digits i la lletra")
				//objeto.focus()
				//objeto.select()
				//return false
			}
			else
			{
				if(objeto.value.length<10)
				{
					objeto.value="0"+objeto.value
				}
				return true
			}
		}
		else 
		{
			alert ("DNI incorrecto\n\nIntroducir 9 dígitos y la letra")
			objeto.focus()
			objeto.select()
			return false
		}
	}
	else 
	{
		alert ("DNI incorrecto\n\nIntroducir 9 dígitos y la letra")
		objeto.focus()
		objeto.select()
		return false
	}
}

function keys()
{
//	alert(event.keyCode )
//	alert(String.fromCharCode(event.keyCode))
	if(!isFinite(String.fromCharCode(event.keyCode)))
	{
		event.returnValue=false;
	}
	else return true

	alert(event.keyCode )
	
}

