// JavaScript Document

function Config()
{
	//clase base
	
	//ejemplo de event delegation:
	//funciona en Mozilla, hace las veces de menu de salto en el select del anyo
	//en el form de busqueda de aptos de cria
	//deshabilitado de momento, para no causar confusion....
	//$("#responseText").change(Config.prototype.MenuSaltoAptosCria_SelectAnyo);
	
	$("#checkitout").live("click",function(e){comprobarCenso(e);});
}

//cambio aleatorio de imagen en el banner de la cabecera
//las llamadas se producen desde showDataMh() y showDataMv(), de forma que la imagen solo cambia
//cuando se hace una peticion ajax desde los menus horizontal y vertical
Config.prototype.getBannerImg=function() {
		n = Math.floor(Math.random()*39+1);
		img="banner" + n + ".jpg";
		$("img:last","#cabecera").attr("src","../img/banner/recortado/" + img).attr("alt",img);
	}
	
Config.prototype.MenuSaltoAptosCria_SelectAnyo=function (event) {
	
	//definida en xmlHttpObject_sendForm.js
	sendForm('xmlResponseText/mv/eyc/aptos/aptosCria.php','form1');
		
	}

config=new Config();



//pop-up's para anuncios o eventos especiales en pagina de entrada index.htm o en principal inicio.php
	function newWindow(url)
	{
	//window.open(URL,name,specs,replace)
	window.open(url,'','width=500,height=600,left=200,top=200,location=0,menubar=0,toolbar=0,titlebar=0,status=1,resizable=0','');
	}
	
	/* JUNTA NACIONAL INFORMA: abre pop-up con contenido */
	function MM_openBrWindow(theURL,winName,features) 
	{
	window.open(theURL,winName,features);
	}
	
	
	/* FORO: abre el pop-up con sugerencias para formatear los mensajes */
	function sugerencias_formato()
	{
	//window.open(URL,name,specs,replace)
	window.open('xmlResponseText/mh/foro/sugerencias_formato.htm','','width=550,height=650,left=0,top=0,location=0,menubar=0,toolbar=0,titlebar=0,status=1,resizable=0','');
	}
	
	
	
	
function comprobarCenso(e)
{
	/*if(validateForm(e))
	{*/
		
			var socio=$("#socio").val();
			var dni=$("#dni").val();
			var error="Lo sentimos. Se produjo un error de conexión con el servidor.\nVuelva a intentarlo en unos minutos.\nGracias!";
			
			$.ajax({
				   url:"xmlResponseText/mh/inc/censo2009.php",
				   type:"GET",
				   data:{socio:socio,dni:dni},
				   error:function(xhr,txtStatus,errThrown){alert(error);},
				   success:function(data,textStatus){$("#resultados").html(data);},
				   dataType:"html"
				   });
			
	/*}*/
	
}
	
	//validacion de datos antes de enviarlos al servidor
function validateForm(e)
{
	
	/*if(confirm("¿Está seguro/a de que desea continuar?")) 
	{*/
		//sguiente paso: validacion de los datos del formulario
	
		var id=$(e.target).closest("form").attr("id");//id del formulario que hay que validar
		var params=[];
		
		
		//asignamos la matriz de opciones de validacion segun el caso
		//params[
		//["nombre campo",
		//obligatorio(0|1),
		//"tipo de dato",(string,number,imagen etc...any=cualquier tipo de dato)
		//longitud minima(0=no hay minimo),
		//longitud maxima(0=no hay maximo)],
		//opciones,........]
		
		//inicialmente solo existen restricciones en la obligatoriedad de algunos campos, esto podria cambiar
		switch(id)
		{
		case 'censosocios':
		params=[["socio",1,"number",1,4,null],
				["dni",1,"dni",0,9,null]];
		break;
		}
	
		//encapsulamos la validacion en bloque try/catch para facilitar el proceso
		//en caso de error en los datos 
		try
		{
			//validamos los datos
			results=checkForm(params);
			//si los datos no pasan la  validacion generamos un error
			//y enviamos el string con los errores al bloque catch
			if(results!="ok") throw results;
			//si los datos son correctos devolvemos true para que pueda continuar
			//la accion por defecto del evento submit, enviando los datos al servidor
			return true;
		}
		catch(results)
		{
			e.preventDefault();//evitamos que se produzca el submit
			alert(results);//mostramos los errores
			return false;//se acaba la fiesta
		}
	
	/*}
	else
	{*/
		/*frm=document.forms[0];
		var mssg="Elementos del formulario:\n";
		for(elem in frm.elements)
		{
				mssg+=frm.elements[elem].name + "\n";
		}
		file=frm.elements['foto'].type;
		value=frm.elements['foto'].value;
		mssg+=file + "\n" + value;
		alert(mssg);*/
		/*e.preventDefault();*/
		/*return false;*///el usuario no desea  continuar enviando los datos
	/*}*/
	
	//validacion de datos! esta funcion es la que lleva a cabo todo el proceso de validacion
	//contrastando los valores actuales del formulario con el array de requisitos para cada valor del formulario
	function checkForm(params)
	{	
		var errores="Por favor, revise los siguientes errores:\n";
		var err=false;
		
		
		//vamos a validar solo los campos especificados en el array de parametros
		for(index in params)
		{	
			
			//ahora iniciamos los valores requeridos para el campo actual y recuperamos sus valores
			campo=params[index][0];//nombre del campo que se analiza
			required=params[index][1];//campo obligatorio-no obligatorio
			value=$("#" + campo + "").val();//valor actual del campo
			valueLength=value.length;//longitud del valor actual
			minLength=params[index][3];//longitud minima requerida
			maxLength=params[index][4];//longitud maxima requerida
			//opciones=params[index][5];//opciones adicionales
			type=params[index][2];//tipo de dato requerido
			valueType=typeof(value);//tipo de dato actual
			
			
			//proceso de validacion
			//es un campo obligatorio
			if(required && (value==null || valueLength==0 || /^\s+$/.test(value)))
			{
				err=true;
				errores+=campo + ": el campo es obligatorio\n";
				continue;
			}
			
			//archivos
			//TODO: todo.... :)
			if(type=="file" && (value!=null || valueLength!=0 || /^\s+$/.test(value)))
			{
				
				/*err=true;
				errores+=campo + ": el campo es obligatorio\n";
				continue;*/
				continue;
			}
			
			//tipos numericos
			//TODO: ampliar tipos numericos
			if(type=="number" && isNaN(Number(value)))
			{	
				err=true;
				errores+=campo + ": el valor es incorrecto\n";
				continue;
			}
			
			//validacion de urls
			//TODO: validacion de cualquier URI
			if(type=="url")
			{
				var patt0 = new RegExp("^http://www.","i");
				var patt1 = new RegExp("^http://","i");
				var patt2 = new RegExp("^www.","i");
				
				if(!patt0.test(value))
				{
					if(!patt1.test(value))
					{
						if(!patt2.test(value))
						{
							err=true;
							errores+=campo + ": la dirección es incorrecta\n";
							continue;
						}
					}
				}
			
			}
			
			
			//validacion de dni
			if(type=="dni")
			{
				var letras=['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J','Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
				try
				{
					if(!/^\d{8}[A-Z]$/.test(value)) 
					{
					throw ": el valor es incorrecto\n";
					}
					else if(value.charAt(8)!=letras[(value.substring(0, 8))%23]) 
					{
					throw ": la letra no es correcta\n";
					}
				}
				catch(error)
				{
					err=true;
					errores+=campo + error;
					continue;
				}
				
			}
			
			
			//longitudes maximas y minimas
			if(valueLength)
			{
				if(minLength && (valueLength<minLength))
				{
					err=true;
					errores+=campo + ": el valor es incorrecto\n";
					continue;
				}
				
				if(maxLength && valueLength>maxLength)
				{
					err=true;
					errores+=campo + ": el valor es incorrecto\n";
					continue;
				}
				
				
			}
			
			
		
			
				
		}
		
		if(err) return errores;
	
		return "ok";//resultados;
	
	}
	
}

//acaba validacion de formularios//
	





