

/**
*	Funcion que utiliza continuarBoletines(objetoFormulario) para validar
*	y posteriormente realiza el submit
*/
function validarContinuar(objetoFormulario)
{
	with(objetoFormulario)
	{
		if (continuarBoletines(objetoFormulario)){
			botonContinuar.style.display='none';
			vacio.style.display='block';
			document.body.style.cursor='wait';									
			submit();
		}
	}
}


/** 
* Funcion que envia los datos del formulario después de validar su contenido
*/
function continuarBoletines(objetoFormulario)
{
	/* 
	* Nomenclatura en los nombres de los campos del formulario
	* - Checkbox de suscripción a cada boletín: codBoletin#suscripcion
	* - Radiobuttons de "formato": codBoletin#formato
	* - Campos de definición de cada boletin: codBoletin#codCampo|1
	* - Campos de personalización de cada boletin: codBoletin#codCampo|2
	*/

	// Comprobamos que, para cada boletín al que el usuario desea suscribirse:
	// 1.- El radiobutton de "formato" ha sido seleccionado
	// 2.- Todos los campos de definición han sido rellenados
	// 3.- Todos los campos de personalización han sido rellenados
	
	// Adicionalmente:			
	// los checkbox no seleccionados no son enviados al action por lo tanto no podemos saber qué parámetros debemos guardar 
	// con valor a vacio. Para solucionar esto, recorremos todos los campos del formulario y guardamos en la variable 
	// "camposNoSeleccionados" el nombre de aquellos checkbox que no han sido chequeados en ningún valor por el usuario.
	// Los unicos que pueden no estar seleccionados serán campos de Personalización ya que es obligatorio rellenar los 
	// de Definición
	
	//almacena los mensajes de error
	var mensajesError = '';
	
	with(objetoFormulario)
	{
		var seleccionados = boletinesSeleccionados.value;
		if (seleccionados.length == 0)
			mensajesError = mensajesError + validacion_boletines + '\n';
		else
		{
			// Para cada boletin seleccionado realizamos las comprobaciones indicadas
	
			//partimos de que no hay error y buscamos al menos una situación que las cumpla
			var error_formato = false; 
			var error_camposDefinicion = false;
			var error_camposPersonalizacion = false;
				
			arrayOfSeleccionados = seleccionados.split("#");
			for (var i=0; i < arrayOfSeleccionados.length; i++) 
			{   
				var codBoletin = arrayOfSeleccionados[i];
				
				if (codBoletin.length!=0)
				{
					// NOTA: como el nombre de los campos del formulario contienen el caracter # no podemos acceder utilizando
					// eval('document.forms[2].'+codBoletin+'#formato.value')
					// por lo que para buscar el campo que nos interesa cada vez recorremos todos los campos del formulario
					
					var nElementos = elements.length;
					for (var n = 0; n < nElementos; n++)
					{
						// nota: cada radio o check aunque tengan el mismo nombre, se consideran un elemento mas
						var nombreElemento = elements[n].name;
						var typeCampo = elements[n].type;
	
						// 1.- comprobamos que el campo codBoletin#formato está marcado						
						if (nombreElemento == codBoletin+'#formato')
						{
							// los radiobuttons y vienen en grupo por lo que es necesario evaluar todos
							var relleno = false;
							for (var nn = 0; (nn < nElementos) && (!relleno); nn ++)
							{
								//si tiene el mismo nombre
								if (elements[nn].name == nombreElemento)
								{							
									if (elements[nn].checked)
										relleno = true; // para este grupo de radiobuttons ya he encontrado uno checked
								}
								
							} // fin del for
							if (!relleno)
								error_formato = true; // si algún boletín no tiene chequeado el formato, ya hay error
						}	
						
						// de cada elemento del formulario obtenemos el codigo del boletin y el tipo deCampo (2 o 1) para
						// saber si se trata de un campo de personalizacion o definición del boletín que estamos tratando.
						var codBoletin_elemento = nombreElemento.substring(0,nombreElemento.indexOf("#"));
						var tipoCampo = nombreElemento.substring(nombreElemento.indexOf("|")+1,nombreElemento.length);
						
						// 2.- Todos los campos de definición han sido rellenados
						if ( (codBoletin == codBoletin_elemento) && (tipoCampo == '1') )
						{
							if ( (typeCampo == 'text') || (typeCampo == 'textarea') )
							{
								if (elements[n].value.length == 0) 
									error_camposDefinicion = true;	 // en cuanto encuentro un campo sin rellenar, ya hay error
							}
							else
							if ( (typeCampo == 'radio') || (typeCampo == 'checkbox')) 
							{
								// los radiobuttons y checkbox vienen en grupo por lo que es necesario evaluar todos
								var relleno = false;
								for (var nn = 0; (nn < nElementos) && (!relleno); nn ++)
								{
									//si tiene el mismo nombre
									if (elements[nn].name == nombreElemento)
									{							
										if (elements[nn].checked)
											relleno = true; // para este grupo de checkbox o radiobuttons ya he encontrado uno checked
									}
								} // fin del for
	
								if (!relleno)
									error_camposDefinicion = true; // si ninguno del grupo esta checked, ya hay un error
	
							} // fin del if
							else
							if (typeCampo == 'select-one')
							{
								//comprobamos que ha seleccionado una opcion distinta del [Seleccione]
								
								var indexSelected = elements[n].selectedIndex;
								var valorSelected = elements[n].options[elements[n].selectedIndex].text;
								
								var index = valorSelected.indexOf('Seleccione');
								if (index >= 0)
									error_camposPersonalizacion = true; // ya hay error
							}
							if (typeCampo == 'select-multiple')
							{
								// en los combos de selección múltiple puede ser que no haya una opción seleccionada 
								var indexSelected = elements[n].selectedIndex;
								if (indexSelected == -1)
									error_camposDefinicion = true; // ya hay error
							}
						} // fin del if (camposde definicion)			
						
						// 3.- TODOS los campos de personalización han sido rellenados
								// son todos los campos cuyo nombre sea de la forma codBoletin#nombreCampo|2
						if ( (codBoletin == codBoletin_elemento) && (tipoCampo == '2') )
						{
							if ( (typeCampo == 'text') || (typeCampo == 'textarea') )
							{
								if (elements[n].value.length == 0) 
									error_camposPersonalizacion = true;	 // en cuanto encuentro un campo sin rellenar, ya hay error
							}
							else
							if ( (typeCampo == 'radio') || (typeCampo == 'checkbox')) 
							{
								// los radiobuttons y checkbox vienen en grupo por lo que es necesario evaluar todos
								var relleno = false;
								for (var nn = 0; (nn < nElementos) && (!relleno); nn ++)
								{
									//si tiene el mismo nombre
									if (elements[nn].name == nombreElemento)
									{							
										if (elements[nn].checked)
											relleno = true; // para este grupo de checkbox o radiobuttons ya he encontrado uno checked
									}
								} // fin del for
	
								if (!relleno)
									error_camposPersonalizacion = true; // si ninguno del grupo esta checked, ya hay un error
	
							} // fin del if
							else
							if (typeCampo == 'select-one')
							{
								//comprobamos que ha seleccionado una opcion distinta del [Seleccione]
								
								var indexSelected = elements[n].selectedIndex;
								var valorSelected = elements[n].options[elements[n].selectedIndex].text;
								
								var index = valorSelected.indexOf('Seleccione');
								if (index >= 0)
									error_camposPersonalizacion = true; // ya hay error
							}
							if (typeCampo == 'select-multiple')
							{
								// en los combos de selección múltiple puede ser que no haya una opción seleccionada 
								var indexSelected = elements[n].selectedIndex;
								if (indexSelected == -1)
									error_camposPersonalizacion = true; // ya hay error
							}
						} // fin del if (camposde personalización)	
						
					} // fin del for interno (recorre los elementos del formulario)
						
				} // fin del if
				
			} // fin del for externo(boletines seleccionados)
			
			/*
			if (error_formato)
				mensajesError = mensajesError + 'Debe especificar en qué formato desea recibir los boletines a los que se suscribe. \n';
				
			if (error_camposDefinicion)
				mensajesError = mensajesError + 'Debe cumplimentar todos los campos de definición de cada boletín al que se suscribe. \n';
				
			if (error_camposPersonalizacion )
				mensajesError = mensajesError + 'Debe cumplimentar todos los campos de personalización de cada boletín al que se suscribe. \n';
			*/
			if ( error_formato || error_camposDefinicion || error_camposPersonalizacion )
				mensajesError = validacion_apartados;
			
		} // fin del else
					
		if (mensajesError.length == 0)
		{	
			//botonContinuar.style.display='none';
			//vacio.style.display='block';
			//document.body.style.cursor='wait';									
			//submit();
			return true;
		}
		else
		{
			//alert('Por favor, revise la siguiente información: \n' + mensajesError);
			alert(' ' + mensajesError);
			return false;
		}
			
	} // fin del with
}


/** 
* Funcion que envia los datos del formulario después de validar su contenido
*/
/*
		function continuarBoletines_OLD (objetoFormulario)
		{
			// 
			// Nomenclatura en los nombres de los campos del formulario
			// - Checkbox de suscripción a cada boletín: codBoletin#suscripcion
			// - Radiobuttons de "formato": codBoletin#formato
			// - Campos de definición de cada boletin: codBoletin#codCampo|1
			// - Campos de personalización de cada boletin: codBoletin#codCampo|2
			//
		
			// Comprobamos que, para cada boletín al que el usuario desea suscribirse:
			// 1.- El radiobutton de "formato" ha sido seleccionado
			// 2.- Todos los campos de definición han sido rellenados
			// 3.- Al menos un campo de personalización ha sido rellenado.
			// Adicionalmente:			
			// los checkbox no seleccionados no son enviados al action por lo tanto no podemos saber qué parámetros debemos guardar 
			// con valor a vacio. Para solucionar esto, recorremos todos los campos del formulario y guardamos en la variable 
			// "camposNoSeleccionados" el nombre de aquellos checkbox que no han sido chequeados en ningún valor por el usuario.
			// Los unicos que pueden no estar seleccionados serán campos de Personalización ya que es obligatorio rellenar los 
			// de Definición
			
			//almacena los mensajes de error
			var mensajesError = '';
			
			with(objetoFormulario)
			{
				var seleccionados = boletinesSeleccionados.value;
				if (seleccionados.length == 0)
					mensajesError = mensajesError + 'Debe indicar los boletines a los que desea suscribirse \n';
				else
				{
					// Para cada boletin seleccionado realizamos las comprobaciones indicadas
			
					//partimos de que no hay error y buscamos al menos una situación que las cumpla
					var error_formato = false; 
					var error_camposDefinicion = false;
					var error_camposPersonalizacion = false;
						
					arrayOfSeleccionados = seleccionados.split("#");
					for (var i=0; i < arrayOfSeleccionados.length; i++) 
					{   
						var codBoletin = arrayOfSeleccionados[i];
						
						if (codBoletin.length!=0)
						{
							// inicializamos la variable de este error para cada boletin --> suponemos que hay error y buscamos
							// al menos un campo de personalización relleno
							var error_boletin_camposPersonalizacion = true;		
							var hay_camposPersonalizacion_boletin = false;				
							
							// NOTA: como el nombre de los campos del formulario contienen el caracter # no podemos acceder utilizando
							// eval('document.forms[2].'+codBoletin+'#formato.value')
							// por lo que para buscar el campo que nos interesa cada vez recorremos todos los campos del formulario
							
							var nElementos = elements.length;
							for (var n = 0; n < nElementos; n++)
							{
								// nota: cada radio o check aunque tengan el mismo nombre, se consideran un elemento mas
								var nombreElemento = elements[n].name;
								var typeCampo = elements[n].type;
			
								// 1.- comprobamos que el campo codBoletin#formato está marcado						
								if (nombreElemento == codBoletin+'#formato')
								{
									// los radiobuttons y vienen en grupo por lo que es necesario evaluar todos
									var relleno = false;
									for (var nn = 0; (nn < nElementos) && (!relleno); nn ++)
									{
										//si tiene el mismo nombre
										if (elements[nn].name == nombreElemento)
										{							
											if (elements[nn].checked)
												relleno = true; // para este grupo de radiobuttons ya he encontrado uno checked
										}
										
									} // fin del for
									if (!relleno)
										error_formato = true; // si algún boletín no tiene chequeado el formato, ya hay error
								}	
								
								// de cada elemento del formulario obtenemos el codigo del boletin y el tipo deCampo (2 o 1) para
								// saber si se trata de un campo de personalizacion o definición del boletín que estamos tratando.
								var codBoletin_elemento = nombreElemento.substring(0,nombreElemento.indexOf("#"));
								var tipoCampo = nombreElemento.substring(nombreElemento.indexOf("|")+1,nombreElemento.length);
								
								// 2.- Todos los campos de definición han sido rellenados
								if ( (codBoletin == codBoletin_elemento) && (tipoCampo == '1') )
								{
									if ( (typeCampo == 'text') || (typeCampo == 'textarea') )
									{
										if (elements[n].value.length == 0) 
											error_camposDefinicion = true;	 // en cuanto encuentro un campo sin rellenar, ya hay error
									}
									else
									if ( (typeCampo == 'radio') || (typeCampo == 'checkbox')) 
									{
										// los radiobuttons y checkbox vienen en grupo por lo que es necesario evaluar todos
										var relleno = false;
										for (var nn = 0; (nn < nElementos) && (!relleno); nn ++)
										{
											//si tiene el mismo nombre
											if (elements[nn].name == nombreElemento)
											{							
												if (elements[nn].checked)
													relleno = true; // para este grupo de checkbox o radiobuttons ya he encontrado uno checked
											}
										} // fin del for
			
										if (!relleno)
											error_camposDefinicion = true; // si ninguno del grupo esta checked, ya hay un error
			
									} // fin del if
									else
									if (typeCampo == 'select-multiple')
									{
										// en los combos de selección múltiple puede ser que no haya una opción seleccionada 
										var indexSelected = elements[n].selectedIndex;
										if (indexSelected == -1)
											error_camposDefinicion = true; // ya hay error
									}
								} // fin del if (camposde definicion)			
								
								// 3.- Al menos un campo de personalización ha sido rellenado.
								// son todos los campos cuyo nombre sea de la forma codBoletin#nombreCampo|2
								if ( (codBoletin == codBoletin_elemento) && (tipoCampo == '2') )
								{
									hay_camposPersonalizacion_boletin = true; // para este boletín al menos hay un campo de personalizacion
		
									if ( (typeCampo == 'text') || (typeCampo == 'textarea') )
									{
										if (elements[n].value.length != 0) 
											error_boletin_camposPersonalizacion = false;	// en cuanto encuentro un campo relleno, ya no hay error para este boletin
									}
									else
									if ( (typeCampo == 'radio') || (typeCampo == 'checkbox')) 
									{
										if (elements[n].checked)
											error_boletin_camposPersonalizacion = false; // en cuanto encuentro uno checked, ya no hay error para este boletin
									
										// Comprobamos si hay que añdir el campo al grupo de "camposNoSeleccionados"
										var campoNoSeleccionado = true;
										for (var ss = 0; (ss < nElementos) && (campoNoSeleccionado); ss ++)
										{
											//si tiene el mismo nombre
											if (elements[ss].name == nombreElemento)
											{							
												if (elements[ss].checked)
													campoNoSeleccionado = false; // para este grupo de checkbox o radiobuttons ya he encontrado uno checked
											}
										} // fin del for
										
										if (campoNoSeleccionado)
										{
											// lo añadimos al campo oculto "camposNoSeleccionados"
											var losNoSeleccionados = camposNoSeleccionados.value;
											
											// comprobamos primero, que no esté ya añadido
											var encontrado = false;
											arrayOfNoSeleccionados = losNoSeleccionados.split("_");
											for (var ns =0; (ns < arrayOfNoSeleccionados.length) && (!encontrado); ns++) 
											{
												if (nombreElemento == arrayOfNoSeleccionados[ns])
													encontrado = true;
											}
											if (!encontrado)
												camposNoSeleccionados.value = losNoSeleccionados+nombreElemento+'_';
										}										
									}
									else
									if ( typeCampo == 'select-one')
									{
										// en los combos siempre hay una opcion seleccionada por defecto
										error_boletin_camposPersonalizacion = false; // ya no hay error para este boletin
									}
									else
									if (typeCampo == 'select-multiple')
									{
										// en los combos de selección múltiple puede ser que no haya una opción seleccionada 
										var indexSelected = elements[n].selectedIndex;
										if (indexSelected != -1)
											error_boletin_camposPersonalizacion = false; // ya no hay error para este boletin
									}
									
								} // fin del if (camposPersonalizacion)
								
							} // fin del for interno (recorre los elementos del formulario)
							
							// si para algún boletin no se ha rellenado al menos un campo de personalización, ya hay error de ese tipo
							if (hay_camposPersonalizacion_boletin && error_boletin_camposPersonalizacion)
								error_camposPersonalizacion = true;
								
						} // fin del if
						
					} // fin del for externo(boletines seleccionados)
					
					if (error_formato)
						mensajesError = mensajesError + 'Debe especificar en qué formato desea recibir los boletines a los que se suscribe. \n';
						
					if (error_camposDefinicion)
						mensajesError = mensajesError + 'Debe cumplimentar todos los campos de definición de cada boletín al que se suscribe. \n';
						
					if (error_camposPersonalizacion )
						mensajesError = mensajesError + 'Debe cumplimentar al menos un campo de personalización de cada boletín al que se suscribe. \n';
					
				}
							
				if (mensajesError.length == 0)
				{	
					botonContinuar.style.display='none';
					vacio.style.display='block';
					document.body.style.cursor='wait';									
					submit();
				}
				else
					alert('Por favor, revise la siguiente información: \n' + mensajesError);
					
			}
		}
*/




function seleccionar(check,objetoFormulario)
{
	with(objetoFormulario)
	{
		var index = check.name.indexOf('#');
		var nombreBol = check.name.substring(0,index);

		var seleccionados = boletinesSeleccionados.value;
		index = seleccionados.indexOf(nombreBol);
		
		if ( (check.checked) && (index == -1))
		{
			boletinesSeleccionados.value = seleccionados +nombreBol +'#';
		}
		else
		if ( (!check.checked) && (index != -1))
		{
			var parte1 = seleccionados.substring(0,index);
			var parte2 = seleccionados.substring(index+nombreBol.length+1,seleccionados.length);
			boletinesSeleccionados.value = parte1+parte2;
		}
	}
}


/**
 * Comprueba que una dirección de correo cumpla la RFC 822
 * @param pEmail Correo electrónico que se quiere validar
 * @return true / false
 */
/*
function emailValido(pEmail){
   try
   {
      //  Variables que se van a utilizar
      var strDireccion
      var strDominio
      var expresionRegular
      var arrResultadoBusqueda
      var arrDominios

      // Dividimos el email entre dirección y dominio
      expresionRegular = /["@"]/
      arrResultadoBusqueda = expresionRegular.exec(pEmail)

      if (arrResultadoBusqueda == null) 
	  	return false;

      strDireccion = pEmail.substr(0,arrResultadoBusqueda.index)
      strDominio = pEmail.substr(arrResultadoBusqueda.index+1,pEmail.length)

      // Comprueba que se ha introducido dirección
      if (strDireccion == "") 
	  	return false;

      //  Comprobamos que la direccion no contiene caracteres no validos
      expresionRegular = /[^A-Za-z0-9_.]/       //  Revisar con tiempo esta expresión
      arrResultadoBusqueda = expresionRegular.exec(strDireccion)
      if (arrResultadoBusqueda != null) 
	  	return false;

      //  Comprobamos que el dominio es correcto
      expresionRegular = /["."]/
      arrResultadoBusqueda = expresionRegular.exec(strDominio)
      if (arrResultadoBusqueda == null) 
	  	return false;

      arrDominios = strDominio.split(".")
      for(i = 0; i < arrDominios.length; i++)
	  {
         if (arrDominios[i] == "") 
		 	return false;
      }

      expresionRegular = /[^A-Za-z0-9.-]/       //  Revisar con tiempo esta expresión
      arrResultadoBusqueda = expresionRegular.exec(strDominio)
      if (arrResultadoBusqueda != null) 
	  	return false;
   
   }catch(e)
   {
      return false;
   }
   return true;
}
*/
function emailValido(valor) 
{
 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))
  {
    return true;
  } 
  else 
  {
    return false;
  }
  
}


function validarEntero(valor)
{ 
   	valor = parseInt(valor);
	if (isNaN(valor))  
       	return false; 
   	else 
       	return true;
} 

function validarCodPostal(campo)
{
	var msgError = '1'; // todo ok
	
	if ( eval('document.getElementById("'+campo+'").value.length') > 0) 
	{
	    if ( eval('document.getElementById("'+campo+'").value.length') != 5) 
			msgError = validacion_codigo_postal;
	
		var valido = true;	
		for(i=0; (i<5) && (valido); i++)
		{
			car = eval('document.getElementById("'+campo+'").value.charAt(i)'); 
			if (!validarEntero(car))
			{
				msgError = validacion_codigo_postal;
				valido = true;
			}	
		}
	}
	return msgError;
} 	

	
function validarAnio(campo)	
{
	var msgError = '1'; //todo ok

	if ( eval('document.forms[0].'+campo+'.value.length') > 0) 
	{
		var fechaSistema =new Date();
		var anioStma = fechaSistema.getYear();
		
		var valido = true;
		for(i=0; (i<5) && (valido); i++)
		{
			car = eval('document.forms[0].'+campo+'.value.charAt(i)'); 
			if( (car!= "") && (!validarEntero(car)) )
			{
				msgError = validacion_anio_nacimiento + ' ' + anioStma;
				valido = false;
			}
		}
		
		if ( (eval('document.forms[0].'+campo+'.value') < '1900')  || (eval('document.forms[0].'+campo+'.value') > anioStma) )
			msgError = validacion_anio_nacimiento + ' ' + anioStma;
	}
	return msgError;
}


//función que devuelve la posicion que ocupa el valor en el array indicado
function existeEnArray(nombreArray,valor)
{
	var encontrado = false;
	var posicion = -1;
	for (var c=0; c < eval(nombreArray+'.length'); c++)
	{
		var campo = eval(nombreArray+'['+c+']');
		if (campo.indexOf(valor) != -1)
		{
			posicion = c;
			encontrado = true;
		}
	}
	return posicion;
}

function eliminarValorArray(nombreArray, valor)
{
    //buscamos el elemento que queremos eliminar
	var encontrado = false;
	var posicion = 0;

		var numElem = eval(nombreArray+'.length');
	
	for (var c=0; c < numElem; c++)
	{
		var campo = eval(nombreArray+'['+c+']');
		if (campo == valor)
		{
			posicion = c;
			encontrado = true;
		}
	}
	
	if (encontrado)
	{
		for (var pos = posicion; pos <  numElem -1 ; pos++)
		{
			var posNext = eval(nombreArray+'['+pos+'+1 ]');
			eval(nombreArray+'['+pos+'] = "'+posNext+'"');
		}
		eval(nombreArray+'.length ='+nombreArray+'.length -1');
	}
}

function annadirValorArray(nombreArray,valor)
{
	var long = eval(nombreArray+'.length');			
	if (long == 0)
		eval(nombreArray+'[0] = "'+valor+'"');
	else
		eval(nombreArray+'['+long+'] = "'+valor+'"');
}


function marcarOpcionCombo(nombreCombo,codOpcion)
{
	eval('document.forms[2].'+nombreCombo+'.value='+codOpcion);
}


//p-jfm 02/08/06
// Funcion que muestra la capa del combo provincias. 
// visualizarProvincias (variable crearda e inicializada en la página que llama) Si = true se mostrará la capa
function mostrarProvincias(descCampo)
{	
	if (document.forms[0].prov)
	{
		// al seleccionar "España" en el combo de paises se pide también la provincia
		if (document.forms[0].pais.options[document.forms[0].pais.selectedIndex].value=='724')
		{
			document.getElementById('capaProvincias').style.display = 'block';   //provincia visible
			if (provinciaObligatoria)
			{
				annadirValorArray("camposObligatorios","prov"); 	// provincia obligatoria
				annadirValorArray("descCamposObligatorios",descCampo); 	
			}
		}
		else
		{
			document.getElementById('capaProvincias').style.display = 'none'; 	// provincia invisible
			eliminarValorArray("camposObligatorios","prov"); 	// provincia NO obligatoria
			eliminarValorArray("descCamposObligatorios",descCampo);
					
			//borramos el contenido del campo
			document.forms[0].prov.selectedIndex=0;
		}
	}
}



//f-jfm 02/08/06

function mostrarCodPostal(formulario,descCampo)
{
	if (formulario.codpostal)
	{
		// al seleccionar "España" en el combo de paises se pide también el código postal y este tiene que ser obligatorio
		if (formulario.pais.options[formulario.pais.selectedIndex].value=='724')
		{
			document.getElementById('capaCodPostal').style.display = 'block';   //codigo postal visible
			if (codigoPostalObligatorio)
			{
				annadirValorArray("camposObligatorios","codpostal"); 	// codigo postal obligatorio
				annadirValorArray("descCamposObligatorios",descCampo); 	
				annadirValorArray("funcionesValidacion","validarCodPostal('codpostal')"); 	// validamos por código postal
			}
		}
		else
		{
			document.getElementById('capaCodPostal').style.display = 'none'; 	// codigo postal invisible
			eliminarValorArray("camposObligatorios","codpostal"); 	// codigo postal NO obligatorio
			eliminarValorArray("descCamposObligatorios",descCampo); 	
			eliminarValorArray("funcionesValidacion","validarCodPostal('codpostal')"); 	// no validamos por código postal
			
			//borramos el contenido del campo
			formulario.codpostal.value='';
		}
	}
}



function mostrarCodPostalEmpresa(formulario,descCampo)
{
	
	// al seleccionar "España" en el combo de paises se pide también el código postal y este tiene que ser obligatorio
	if (formulario.empPais.options[formulario.empPais.selectedIndex].value=='724')
	{
		
		document.getElementById('capaCodPostal_emp').style.display = 'block';   //codigo postal visible
		
		annadirValorArray("camposObligatorios","empCodPostal"); 	// codigo postal obligatorio
		annadirValorArray("descCamposObligatorios",descCampo); 	
		annadirValorArray("funcionesValidacion","validarCodPostal('empCodPostal')"); 	// validamos por código postal
	}
	else
	{
		
		document.getElementById('capaCodPostal_emp').style.display = 'none'; 	// codigo postal invisible
		
		eliminarValorArray("camposObligatorios","empCodPostal"); 	// codigo postal NO obligatorio
		eliminarValorArray("descCamposObligatorios",descCampo); 	
		eliminarValorArray("funcionesValidacion","validarCodPostal('empCodPostal')"); 	// no validamos por código postal
		
		//borramos el contenido del campo
		formulario.empCodPostal.value='';
	}
}


function mostrarPregEsCliente(formulario,descCampo)
{
	if (formulario.cliente)
	{
		// al seleccionar "España" en el combo de paises se muestra también el campo "es cliente" y este tiene que ser obligatorio
		if (formulario.pais.options[formulario.pais.selectedIndex].value=='724')
		{
			document.getElementById('capaEsCliente').style.display = 'block';   //campo "es cliente" visible
			if (pregEsClienteObligatoria)
			{
				annadirValorArray("camposObligatorios","cliente"); 	 // campo "es cliente" obligatorio
				annadirValorArray("descCamposObligatorios",descCampo); 	
			}	
		}
		else
		{
			document.getElementById('capaEsCliente').style.display = 'none'; 	//campo "es cliente" invisible
			
			eliminarValorArray("camposObligatorios","cliente"); 	// campo "es cliente"  NO obligatorio
			eliminarValorArray("descCamposObligatorios",descCampo); 	
			
			//deseleccionamos el si y el no
			formulario.cliente[0].checked=false;
			formulario.cliente[1].checked=false;
			
			ocultarEsCliente('CLIENTE','');
		}
	}
}

function mostrarPregEsCliente_empresa(formulario,descCampo)
{
	// al seleccionar "España" en el combo de paises se muestra también el campo "es cliente" y este tiene que ser obligatorio
	if (formulario.empPais.options[formulario.empPais.selectedIndex].value=='724')
	{
		document.getElementById('capaEsCliente_emp').style.display = 'block';   //campo "es cliente" visible
	
		annadirValorArray("camposObligatorios","empCliente"); 	 // campo "es cliente" obligatorio
		annadirValorArray("descCamposObligatorios",descCampo); 	
	}
	else
	{
		document.getElementById('capaEsCliente_emp').style.display = 'none'; 	//campo "es cliente" invisible
		
		eliminarValorArray("camposObligatorios","empCliente"); 	// campo "es cliente"  NO obligatorio
		eliminarValorArray("descCamposObligatorios",descCampo); 	
		
		//deseleccionamos el si y el no
		formulario.empCliente[0].checked=false;
		formulario.empCliente[1].checked=false;
		
		ocultarEsCliente('EMPRESA',formulario);
	}
}


function mostrarEsCliente(tipo,descCampo1,descCampo2)
{
	// si responde SI a la pregunta de si es cliente Mapfre, automáticamente los campos tipoDocumento y nroDocumento 
	// pasan a ser obligatorios
	if (tipo == 'CLIENTE')
	{
		document.getElementById('idCliente1').style.display = 'block'; 
		document.getElementById('idCliente2').style.display = 'block'; 
		document.getElementById('idCliente3').style.display = 'block'; 

		annadirValorArray("camposObligatorios","codTipDoc"); 	
		annadirValorArray("descCamposObligatorios",descCampo1); 	
		
		annadirValorArray("camposObligatorios","numDoc"); 	
		annadirValorArray("descCamposObligatorios",descCampo2); 	
	}
	else
	if (tipo == 'EMPRESA')
	{
		document.getElementById('idEmpresa1').style.display = 'block'; 
		document.getElementById('idEmpresa2').style.display = 'block'; 

		annadirValorArray("camposObligatorios","empNroDoc"); 	
		annadirValorArray("descCamposObligatorios",descCampo2); 	
	}
}

function ocultarEsCliente(tipo,formulario)
{
	if (tipo == 'CLIENTE')
	{
		// si responde NO a la pregunta de si es cliente Mapfre, los campos tipoDocumento y nroDocumento no son obligatorios
		document.getElementById('idCliente1').style.display = 'none'; 
		document.getElementById('idCliente2').style.display = 'none'; 
		document.getElementById('idCliente3').style.display = 'none'; 				

		eliminarValorArray("camposObligatorios","codTipDoc"); 	
		eliminarValorArray("descCamposObligatorios",tipoDoc); 	
		
		eliminarValorArray("camposObligatorios","numDoc"); 	
		eliminarValorArray("descCamposObligatorios",nroDoc); 	
		
		//borramos el contenido de los campos 
		document.getElementById('numDoc').value='';
		document.getElementById('codTipDoc').selectedIndex = 0;
	}
	else
	if (tipo == 'EMPRESA')
	{
		document.getElementById('idEmpresa1').style.display = 'none'; 
		document.getElementById('idEmpresa2').style.display = 'none'; 				

		eliminarValorArray("camposObligatorios","empNroDoc"); 	
		eliminarValorArray("descCamposObligatorios",nroDoc); 	
		
		//borramos el contenido de los campos 
		formulario.empNroDoc.value='';
	}
}	





// funcion para mostrar la página home (la de suscripcion), hace el submit del código del area actual
function irHome()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='boletines.do';
		submit();
	}
}

// funcion para mostrar la página home (la de suscripcion) cuando se entra desde una area de registro accesible desde la OIM.
// También hace el submit del código del area actual.
function irHomeOIM()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='boletinesOIM.do';
		submit();
	}
}

// funcion para mostrar la página home (la de suscripcion) cuando se entra desde una area de registro accesible desde el ISV.
// También hace el submit del código del area actual.
function irHomeISV()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='boletinesISV.do';
		submit();
	}
}


// función para mostrar la página de suscripción, hace el submit del código del área actual
function irSuscripcion()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='boletines.do';
		submit();
	}
}

// función para mostrar la página de suscripción cuando se entra desde una area de registro accesible desde la OIM.
// También hace el submit del código del area actual.
function irSuscripcionOIM()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='boletinesOIM.do';
		submit();
	}
}


// función para mostrar la página con las distintas opciones de modificacion, hace el submit del código del área actual
function irModificacion()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='modificacion.do';
		submit();
	}
}

// función para mostrar la página de cancelacion de suscripciones, hace el submit del código del área actual
function irCancelacion()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='cancelarSuscripciones.do?inicio=ok';
		submit();
	}
}

// función para mostrar la página de cambio datos registro, hace el submit del código del área actual
function irCambioDatosRegistro()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='cambiarDatosRegistro.do';
		submit();
	}
}

// función para mostrar la página de cambio de email, hace el submit del código del área actual
function irCambioEmail()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='cambiarEmail.do';
		submit();
	}
}

// función para mostrar la página de cambio de password, hace el submit del código del área actual
function irCambioPassword()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='cambiarPassword.do';
		submit();
	}
}

// función para mostrar la página de cambio boletines, hace el submit del código del área actual
function irCambioBoletines()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='cambiarBoletines.do';
		submit();
	}
}

// función para mostrar la página de recomendar boletines, hace el submit del código del área actual
function irRecomendar()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='recomendarBoletines.do?inicio=ok';
		submit();
	}
}

// función para mostrar la página alta en la lista robinson, hace el submit del código del área actual
function irAltaLRobinson()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='altaLRobinson.do';
		submit();
	}
}


// función para mostrar la página con las opciones de baja (cancelar suscripciones o alta lista róbinson), hace el 
// submit del código del área actual
function irDarseDeBaja()
{
	with(document.forms['formPerdidaSesion'])
	{
		action='darseDeBaja.do';
		submit();
	}
}




//funcion que abre un popup del tamaño indicado. Hace el submit del código del área actual al action indicado en la url
function abrirVentana(url,ancho,alto)
{
	var winl = (screen.width - ancho) / 2;
	var wint = (screen.height - alto) / 2;
	winprops = 'height='+alto+',width='+ancho+',top='+wint+',left='+winl+',toolbar=no,directories=no, location=no, status=no, menubar=no, resizable=no, scrollbars=no'

	document.forms['formPerdidaSesion'].target = "ventana";
	document.forms['formPerdidaSesion'].action= url;

	ventana = window.open(url,'ventana',winprops);
	if (ventana && !ventana.closed)
		ventana.focus();
	
	document.forms['formPerdidaSesion'].submit();
	
	document.forms['formPerdidaSesion'].target = '';
}	


//función que abre una nueva ventana con la url indicada
function ventanaEjemplo(url)
{
	var ancho = 800;
	var alto= 600;
	var winl = (screen.width - ancho) / 2;
	var wint = (screen.height - alto) / 2;
	winprops = 'height='+alto+',width='+ancho+',top='+wint+',left='+winl+',resizable=yes, scrollbars=yes,toolbar=yes,directories=yes, location=yes, status=yes, menubar=yes'

	ventana = window.open(url,'Ejemplo',winprops);
	ventana.focus();
}

//function que bloquea el boton volver y muestra una pantalla u otra segun la funcion javascript invocada
//donde: funcion javascript
function volver(donde)
{
	botonVolver.style.display='none';
	volverVacio.style.display='block';
	document.body.style.cursor='wait';			
	eval(donde);
}


		




