// JavaScript Document
//////////////////////////////////////////////////////////////////////////////////////////////
var band=0; //para errores, centinela
var error=""; //acumulador de errores
function nuevoAjax()
{ 
	req=false;
	if(window.XMLHttpRequest){
		req=new XMLHttpRequest();
	}
	else{
			if(ActiveXObject){
				//definimos un vector con las distintas posibilidades var vector con las distintas posibilidades
				var vectorVersiones=["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
				//lo recorremos e intentamos instanciar cada uno
				for(var i=0; i<vectorVersiones.length; i++){
					try{
							req=new ActivateXObject(vectorVersiones[i]);
							return req;
						}
						catch(e){}
				}
			}
		}
		return req;
}
/*---------------------------------------------------------------------------------------*/
// valida longitud
function validaLongitud(valor, permiteVacio, minimo, maximo)
{
	var cantCar=valor.length;
	if(valor=="")
	{
		if(permiteVacio) return true;
		else return false;
	}
	else
	{
		if(cantCar>=minimo && cantCar<=maximo) return true;
		else return false;
	}
}
/*---------------------------------------------------------------------------------------*/
//LIMPIAR CAMPOS
function limpiar(f)
{
	var x=document.getElementById(f).value;
	 var checkOK = "0123456789";
	  var checkStr = x;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid)
	  { 
	    document.getElementById(f).value="";
		return false; 
	  }		
}
/*---------------------------------------------------------------------------------------*/
//ELIMINAR ESPACIOS EN BLANCO
function eliminaEspacios(cadena)
{
	// Funcion para eliminar espacios delante y detras de cada cadena
	while(cadena.charAt(cadena.length-1)==" ") cadena=cadena.substr(0, cadena.length-1);
	while(cadena.charAt(0)==" ") cadena=cadena.substr(1, cadena.length-1);
	return cadena;
}
/*---------------------------------------------------------------------------------------*/
//convertir a mayusculas
function upperCase(f)
{
	var x=document.getElementById(f).value;
	x=eliminaEspacios(x);
	document.getElementById(f).value=x.toUpperCase();
}
/*---------------------------------------------------------------------------------------*/
// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="pais";
listadoSelects[1]="ciudad";

function buscarEnArray(array, dato)
{
	// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
	var x=0;
	while(array[x])
	{
		if(array[x]==dato) return x;
		x++;
	}
	return null;
}

function cargaContenido(idSelectOrigen)
{
	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);
	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	if(opcionSeleccionada==0)
	{
		var x=posicionSelectDestino, selectActual=null;
		// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
		while(listadoSelects[x])
		{
			selectActual=document.getElementById(listadoSelects[x]);
			selectActual.length=0;
			
			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Select option...";
			selectActual.appendChild(nuevaOpcion);	selectActual.disabled=true;
			x++;
		}
	}
	// Compruebo que el select modificado no sea el ultimo de la cadena
	else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
	{
		// Obtengo el elemento del select que debo cargar
		var idSelectDestino=listadoSelects[posicionSelectDestino];
		var selectDestino=document.getElementById(idSelectDestino);
		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "../register/ciudades.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Load...";
				selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;	
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
			} 
		}
		ajax.send(null);
	}
}
/*---------------------------------------------------------------------------------------*/
// RECORRER NOMBRE 
function valNombre(campo)
{
	  var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚabcdefghijklmnñopqrstuvwxyzáéíóú ";
	  var checkStr = campo;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid)
	  { 
	    error=error +"\n- Verify name, fill out only letters";
		band=1;
		return true; 
	  }	
	  else
	  	return false;
}
/*---------------------------------------------------------------------------------------*/
// RECORRER APELLIDOS
function valApellidos(campo)
{
	  var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚabcdefghijklmnñopqrstuvwxyzáéíóú ";
	  var checkStr = campo;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid)
	  { 
	    error=error +"\n- Verify  last name, fill out only letters";
		band=1;
		return true; 
	  }	
	  else
	  	return false;
}
/*---------------------------------------------------------------------------------------*/
// CORREO ELECTRONICO
function valCorreo(campo)
{
	 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(campo))
	 {
	 	return false; 
	 } 
	 else
	 { 
	    error=error +"\n- Verify email, and fill out correctly";
		band=1;
		return true; 
	 }		   	
}
/*---------------------------------------------------------------------------------------*/
// LADA
function valLada(campo)
{
	  var checkOK = "0123456789";
	  var checkStr = campo;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid||campo.length>4)
	  { 
	    error=error +"\n- Verify area code";
		band=1;
		return true; 
	  }	
	  else
	  	return false;
}
/*---------------------------------------------------------------------------------------*/
// TELEFONO
function valTelf(campo)
{
	  var checkOK = "0123456789";
	  var checkStr = campo;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid||campo.length<8)
	  { 
	    error=error +"\n- Verify telephone number";
		band=1;
		return true; 
	  }	
	  else
	  	return false;
}
/*---------------------------------------------------------------------------------------*/
// EXTENSION
function valExt(campo)
{
	  var checkOK = "0123456789";
	  var checkStr = campo;
	  var allValid = true;
	  for (i = 0;  i < checkStr.length;  i++)
	  { ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		  break;
		if (j == checkOK.length)
		{ allValid = false;
		  break; }
	  } 
	  if (!allValid||campo.length>6)
	  { 
	    error=error +"\n- Verify extension";
		band=1;
		return true; 
	  }	
	  else
	  	return false;
}
/*---------------------------------------------------------------------------------------*/
/* ENTARR */
function reserva()
{
	var capa=document.getElementById("contenido");
	var nombre=document.rsvp.nombre.value;
	var apellidos=document.rsvp.apellidos.value;
	var trato=document.rsvp.trato.value;
	var ocupacion=document.rsvp.ocupacion.value;
	var correo=document.rsvp.correo.value;
	var pais=document.rsvp.pais.value;
	var ciudad=document.rsvp.ciudad.value;
	var lada=document.rsvp.lada.value;
	var telf=document.rsvp.telf.value;
	var ext=document.rsvp.ext.value; 
		if(ext=='Ext'||ext=="") ext='000';
	var telefono=lada+"-"+telf+"-"+ext;
	var tipotelf=document.rsvp.tipo.value;
	var empresa=document.rsvp.empresa.value;
	var cargo=document.rsvp.cargo.value;
	var direccion=document.rsvp.direccion.value;
	var lada2=document.rsvp.lada2.value;	
		if(lada2=='Lada'||lada2=="") lada2='000';
	var telf2=document.rsvp.telf2.value;
		if(telf2=='Teléfono'||telf2=="") telf2='00000000';
	var ext2=document.rsvp.ext2.value;	
		if(ext2=='Ext'||ext2=="") ext2='000';
	var telefono2=lada2+"-"+telf2+"-"+ext2;	
	var sp1=0;
	var sp2=0;
	var sp3=0;
	var sp4=0;
	var sp10=0;
	
	var sexo="";
	
	if( document.rsvp.Fem.checked==true)
		sexo=document.rsvp.Fem.value;

	if( document.rsvp.Masc.checked==true)
		sexo=document.rsvp.Masc.value;

	if( document.rsvp.sp1.checked==true)
		var sp1=document.rsvp.sp1.value;
	if( document.rsvp.sp2.checked==true)
		var sp2=document.rsvp.sp2.value;
	if( document.rsvp.sp3.checked==true)
		var sp3=document.rsvp.sp3.value;
	if( document.rsvp.sp4.checked==true)
		var sp4=document.rsvp.sp4.value;
	if( document.rsvp.sp10.checked==true)
		var sp10=document.rsvp.sp10.value;


	var medio=0;
	if( document.rsvp.tv.checked==true)
		medio=document.rsvp.tv.value;
	if( document.rsvp.radio.checked==true)
		medio=document.rsvp.radio.value;
	if( document.rsvp.periodico.checked==true)
		medio=document.rsvp.periodico.value;
	if( document.rsvp.revista.checked==true)
		medio=document.rsvp.revista.value;
	if( document.rsvp.internet.checked==true)
		medio=document.rsvp.internet.value;
	if( document.rsvp.email.checked==true)
		medio=document.rsvp.email.value;
	if( document.rsvp.invitacion.checked==true)
		medio=document.rsvp.invitacion.value;
	if( document.rsvp.llamada.checked==true)	
		medio=document.rsvp.llamada.value;
	if( document.rsvp.webicyt.checked==true)	
		medio=document.rsvp.webicyt.value;
	if( document.rsvp.otro.checked==true)	
		medio=document.rsvp.otro.value;
	var edad=document.rsvp.edad.value;
	// VALIDAR NOMBRE 
	if(validaLongitud(nombre, 0, 4, 30)==false)
	{
		error=error + "\n- Fill out name, from 4 to 30 characters";
		band=1;
	}
	else	
	  valNombre(nombre);
	
	// VALIDAR APELLIDOS
	if(validaLongitud(apellidos, 0, 4, 30)==false)
	{
		error=error + "\n- Fill out last name, from 4 to 30 characters";
		band=1;
	}
	else	
	  valApellidos(apellidos);
	
	if(sexo=="")
	{
		error=error + "\n- Select sex";
		band=1;
	}

	if(edad==0)
	{
		error=error + "\n- Select age";
		band=1;
	}
	
	if(trato==0 && ocupacion=="")
	{
		error=error + "\n- Fill out occupation and/or title";
		band=1;
	}
	
	if(ocupacion!="")
	{
		// VALIDAR OCUPACIÓN
		if(validaLongitud(ocupacion, 0, 8, 150)==false)
		{
			error=error + "\n- indicate your current position";
			band=1;
		}
	}
	//VALIDAR CORREO
	valCorreo(correo);
	
	//VALIDAR LADA
	if(validaLongitud(lada, 1, 2, 4)==false)
	{
		error=error + "\n- Verify area code, from 2 to 4 characters";
		band=1;
	}
	else
		valLada(lada);
	
	//VALIDAR TELEFONO
	if(validaLongitud(telf, 0, 8, 13)==false)
	{
		error=error + "\n- Verify telephone number";
		band=1;
	}
	else
		valTelf(telf);
	
	//VALIDAR EXTENSION
	if(validaLongitud(ext, 1, 1, 6)==false)
	{
		error=error + "\n- Verify extension to 6 characters";
		band=1;
	}
	else
		valExt(ext);
	
	if(tipotelf==0)
	{
		error=error + "\n- Select type of pone";
		band=1;
	}
	
	if(pais==0)
	{
		error=error + "\n- Indicate country";
		band=1;
	}
	
	if(ciudad.disable==true || ciudad==0)
	{
		error=error + "\n- Indicate city";
		band=1;
	}	
	// VALIDAR EMPRESA 
	if(validaLongitud(empresa, 0,8, 250)==false)
	{
		error=error + "\n-  Fill out complete name of institution, organization, or company, from 8 to 250 characters";
		band=1;
	}
	
	// VALIDAR CARGO
	if(validaLongitud(cargo, 0,8, 250)==false)
	{
		error=error + "\n- Fill out complete your current position, from 8 to 250 characters";
		band=1;
	}
	// VALIDAR DIRECCION 
	if(validaLongitud(direccion, 0, 10, 150)==false)
	{
		error=error + "\n- Fill out your whole mailing address (with zip code)";
		band=1;
	}
	//VALIDAR LADA 2
	if(validaLongitud(lada2, 0, 2, 4)==false)
	{
		error=error + "\n- Verify area code, from 2 to 4 characters";
		band=1;
	}
	else
		valLada(lada2);
	
	//VALIDAR TELEFONO 2
	if(validaLongitud(telf2, 0, 8, 10)==false)
	{
		error=error + "\n- Verify phone, from 8 to 10 characters";
		band=1;
	}
	else
		valTelf(telf2);
	
	//VALIDAR EXTENSION 2
	if(validaLongitud(ext2, 1, 1, 6)==false)
	{
		error=error + "\n- Verify extension to 6 characters";
		band=1;
	}
	else
		valExt(ext2);
	
	if(document.rsvp.sp1.checked==false && document.rsvp.sp2.checked==false && document.rsvp.sp3.checked==false && document.rsvp.sp4.checked==false && document.rsvp.sp10.checked==false)
	{
		error=error + "\n- Indicate your areas of interest";
		band=1;
	}

	
	if(medio==0)
	{
		error=error + "\n- Indicate how you found out about the event";
		band=1;
	}
	
	//ENVIAR DATOS
	if(band==0)
	{
		var ajax=nuevoAjax();
		capa.innerHTML="Cargando...";
		ajax.open("POST", "../register/comprobante.php", true);
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("nombre="+nombre+"&apellidos="+apellidos+"&trato="+trato+"&ocupacion="+ocupacion+"&correo="+correo+"&pais="+pais+"&ciudad="+ciudad+"&telefono="+telefono+"&tipotelf="+tipotelf+"&direccion="+direccion+"&empresa="+empresa+"&cargo="+cargo+"&telefono2="+telefono2+"&sp1="+sp1+"&sp2="+sp2+"&sp3="+sp3+"&sp4="+sp4+"&sp10="+sp10+"&medio="+medio+"&sexo="+sexo+"&edad="+edad);
	
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4)
			{
				capa.innerHTML=ajax.responseText;
			}
		}
	}
	else //MARCAR ERRORES 
	{
		alert("The following spaces are mandatory: "+error);
		band=0;
		error="";
	}
}