Element.addMethods({
  pieAlFinal: function pieAlFinal (pie) {
    Element.calcularPosicionamientoPie(pie);
    Event.observe(window, "resize", function() {
      Element.calcularPosicionamientoPie(pie);
    });
  },
  calcularPosicionamientoPie: function calcularPosicionamientoPie (pie) {
    var elementoHtml = $$('html')[0];
    var altoDocumento = document.body.clientHeight;
    var altoAreaVisible = document.viewport.getHeight();

    if (altoAreaVisible>altoDocumento) {
      elementoHtml.setStyle({position:'relative',minHeight:altoAreaVisible+'px'});
      if(/MSIE 6.0/i.test(navigator.userAgent)) {elementoHtml.setStyle({height:altoAreaVisible+'px'});}
      pie.setStyle({bottom:'0',left:'0',position:'absolute'})
    } else {
      elementoHtml.setStyle({position:'',minHeight:''});
      if(/MSIE 6.0/i.test(navigator.userAgent)) {elementoHtml.setStyle({height:''});}
      pie.setStyle({bottom:'',left:'',position:''})
    }
  }
});

Element.addMethods({
   closest: function closest (element, cssRule) {
      var $element = $(element);
      // Return if we don't find an element to work with.
      if(!$element) {
         return;
      }
      return $element.match(cssRule) ? $element : $element.up(cssRule);
   }
});

Element.addMethods({
	appendTo: function(elemento, nuevoContenedor, posicion) { 
		var opciones; 
		opciones = {}; 
		opciones[posicion] = elemento; 
		nuevoContenedor.insert(opciones); 
		return elemento; 
}});

Element.addMethods({ 
	outerWidth: function(elemento) {
		var anchoTotal = elemento.getWidth();
		anchoTotal += parseInt(elemento.getStyle("paddingLeft"), 10) + parseInt(elemento.getStyle("paddingRight"), 10); // Se añade padding
		anchoTotal += parseInt(elemento.getStyle("margin-left"), 10) + parseInt(elemento.getStyle("margin-right"), 10); //Se añade margen
		anchoTotal += parseInt(elemento.getStyle("borderLeftWidth"), 10) + parseInt(elemento.getStyle("borderRightWidth"), 10); //Se añade borde
		return anchoTotal;
}});

Element.addMethods({ 
	add: function(grupo,elemento) {
		grupo.push(elemento);
		return grupo;
}});

Element.addMethods({ 
	nextUntil: function(elemento,selectorHasta) {
		var grupoInicial = elemento.nextSiblings();
		var grupo = new Array();
		var esHasta = false;
		var i = 0;
		while (i<grupoInicial.length) {
			if (grupoInicial[i].match(selectorHasta)) {esHasta=true; break;}
			grupo.push(grupoInicial[i]);
			i++;
		}
		
		return grupo;
}});

Element.addMethods({ 
	prevUntil: function(elemento,selectorHasta) {
		var grupoInicial = elemento.previousSiblings();
		var grupo = new Array();
		var esHasta = false;
		var i = 0;
		while (i<grupoInicial.length) {
			if (grupoInicial[i].match(selectorHasta)) {esHasta=true; break;}
			grupo.push(grupoInicial[i]);
			i++;
		}
		
		return grupo;
}});

document.observe("dom:loaded", function() {
	
	//reticulacion();
	
	var busca1 = new CajetinBusqueda();
		busca1.inicia();
		
	var popup1 = new VentanaPopup();
		popup1.inicia();
		
	var modal1 = new TinyBox_v3();
		modal1.inicia();
	
	var galeria1 = new Carrusel();
	galeria1.inicia();
	
	var destacados1 = new Destacados();
		destacados1.inicia();
	
	var faq1 = new PreguntasFrecuentes();
		faq1.inicia();
	
	mapasGoogle();
	
	
	var op1 = new OpcionesRadio();
		op1.inicia();
		
	var emergente1 = new AyudaEmergente();
		emergente1.datos = {
			capa: 'div.componenteEmergenteAyuda',
			capaAyudaGenerica: 'div.componenteEmergente div.emergente',
			capaAyuda: 'div.componenteEmergenteAyuda div.emergente',
			claseJs1: 'componenteEmergente-js',
			claseJs2: 'componenteEmergenteAyuda-js',
			htmlEnlace: '<a href="#" rel="capa-emergente" class="enlace-emergente enlace-emergente-insertado"><img src="/Portal/imagenes/CM_IMG_ico_ayuda_01.gif" alt="Ayuda" /></a>',
			htmlEnlaceImg: '/Portal/imagenes/CM_IMG_ico_ayuda_01.gif',
			htmlEnlaceImgHover: '/Portal/imagenes/CM_IMG_ico_ayuda_01_hover.gif',
			htmlEnlaceCerrar: '<p class="cerrar"><a href="#" rel="cerrar-emergente"><img src="/Portal/imagenes/CM_IMG_ico_cerrar.gif" alt="Cerrar" /></a></p>',
			relEnlace: 'capa-emergente',
			relEnlaceCerrar: 'cerrar-emergente',
			idActivo: 'grupo-emergente-activo'
		}
		emergente1.inicia();
		
	var emergente2 = new AyudaEmergente();
		emergente2.datos = {
			capa: 'div.componenteEmergenteError',
			capaAyudaGenerica: 'div.componenteEmergente div.emergente',
			capaAyuda: 'div.componenteEmergenteError div.emergente',
			claseJs1: 'componenteEmergente-js',
			claseJs2: 'componenteEmergenteError-js',
			htmlEnlace: '<a href="#" rel="capa-emergente" class="enlace-emergente enlace-emergente-insertado"><img src="/Portal/imagenes/CM_IMG_ico_error_01.gif" alt="Ayuda" /></a>',
			htmlEnlaceImg: '/Portal/imagenes/CM_IMG_ico_error_01.gif',
			htmlEnlaceImgHover: '/Portal/imagenes/CM_IMG_ico_error_01_hover.gif',
			htmlEnlaceCerrar: '<p class="cerrar"><a href="#" rel="cerrar-emergente"><img src="/Portal/imagenes/CM_IMG_ico_cerrar.gif" alt="Cerrar" /></a></p>',
			relEnlace: 'capa-emergente',
			relEnlaceCerrar: 'cerrar-emergente',
			idActivo: 'grupo-emergente-activo'
		}
		emergente2.inicia();
		
	var pestanas1 = new ComponentePestanas();
		pestanas1.inicia();
	
	var compartir1 = new Compartir();
		compartir1.inicia();
	
	var desp1 = new ContenidoDesplegable();
		desp1.inicia();
		
	var desp2 = new ContenidoDesplegable();
		desp2.datos = {
			capa: 'div.componenteCajaContenidoDesplegable',
			capaInferior: 'div.texto-caja-contenido',
			titulo: '.titulo',
			claseDesplegado: 'desplegado',
			claseSinPlegar: 'sinPlegar',
			claseAccionPlegar: '.plegar-caja',
			enlaceTitulo: '.titulo-caja-contenido a',
		cajaContenido: '.texto-caja-contenido',
			niveles: 1
		}
		desp2.inicia();
		
		
	var pestanas2 = new ComponentePestanas();
		pestanas2.datos = {
			selectorComponente: 'div.componenteCategoriasPie',
			selectorPestana: 'div.componenteCategoriasPie div.pestana-categoria',
			clasePestana: 'pestana-categoria',
			clasePestanaEnlace: 'enlace',
			selectorClasePestana: '.pestana-categoria',
			claseSeleccionado: 'seleccionado',
			claseSeleccionadoPrimera: 'primera-seleccionado',
			selectorTitulo: 'div.componenteCategoriasPie .titulo-pestana',
			selectorEnlace: 'div.componenteCategoriasPie div.listaPestanas a',
			selectorElementoLista: 'div.componenteCategoriasPie div.listaPestanas li',
			clasePrimera: 'primera',
			claseUltima: 'ultima',
			listadoGenerado: '<div class="listaPestanas"><ul class="clear"></ul></div>',
			prefijoId: 'pestana_'
		}
		pestanas2.inicia();
		
	var foco1 = new Foco();
		foco1.datos = {
			selector: 'input[type="text"], input[type="password"], select, textarea'
			,claseFoco: 'activo'
		}
		foco1.inicia();
		
	var ordenacion1 = new EnlacesOrdenacion();
		ordenacion1.inicia();
		
	var tabla1 = new TablaDesplegable();
		tabla1.inicia();
		
	
	var pag1 = new Paginacion();
		pag1.inicia();
		
	var mapaRegiones1 = new mapaImagenRegiones();
		mapaRegiones1.inicia();

	var facetado1 = new Facetado();
		facetado1.inicia();
		
	var cuenta1 = new NumeroContrato();
		cuenta1.inicia();
		
	var superpuesta1 = new GaleriaSuperpuesta();
		superpuesta1.inicia();
		
	var foco1 = new FocoListadoErrores();
		foco1.inicia();
		
	var rolloverMenu1 = new RolloverMenu();
		rolloverMenu1.inicia();
		
	var dl1 = new ListasDefinicion();
		dl1.inicia();
		
	var clcss1 = new ClasesCSS();clcss1.datos={elemento:'.c05-i5.d-imagen-enlazada',claseNueva:'c05-i5-imagen-enlazada'};clcss1.inicia();
	var clcss2 = new ClasesCSS();clcss2.datos={elemento:'.c05-i5p.d-imagen-enlazada',claseNueva:'c05-i5p-imagen-enlazada'};clcss2.inicia();
	var clcss3 = new ClasesCSS();clcss3.datos={elemento:'.c04-i4.d-imagen-enlazada',claseNueva:'c04-i4-imagen-enlazada'};clcss3.inicia();
	var clcss4 = new ClasesCSS();clcss4.datos={elemento:'.c04-i4p.d-imagen-enlazada',claseNueva:'c04-i4p-imagen-enlazada'};clcss4.inicia();
	var clcss5 = new ClasesCSS();clcss5.datos={elemento:'.c03-i3.d-imagen-enlazada',claseNueva:'c03-i3-imagen-enlazada'};clcss5.inicia();
	var clcss6 = new ClasesCSS();clcss6.datos={elemento:'.c03-i3p.d-imagen-enlazada',claseNueva:'c03-i3p-imagen-enlazada'};clcss6.inicia();
	var clcss7 = new ClasesCSS();clcss7.datos={elemento:'.c02-i2.d-imagen-enlazada',claseNueva:'c02-i2-imagen-enlazada'};clcss7.inicia();
	var clcss8 = new ClasesCSS();clcss8.datos={elemento:'.c02-i2p.d-imagen-enlazada',claseNueva:'c02-i2p-imagen-enlazada'};clcss8.inicia();
	
	var hover1 = new HoverGenerico();
		hover1.selectores = {elementoHover: 'input[type="button"], input[type="submit"]'}
		hover1.clases = {hover:'botonHover'}
		hover1.inicia();
		
	var galeriaCarrusel1 = new galeriaCarrusel();
		galeriaCarrusel1.inicia();
		
		
		
		
	// SELECTOR IDIOMAS
	var idioma = $$('html')[0].readAttribute('lang');
	var textosIdioma = {
		'es': 'Idioma seleccionado:||. Seleccionar otro idioma:'
		,'ca': 'Idioma seleccionat:||. Selecciona un altre idioma:'
		,'ct': 'Idioma seleccionat:||. Selecciona un altre idioma:'
		,'eu': 'Aukeratutako hizkuntza:||. Hautatu beste hizkuntza bat:'
		,'gl': 'Idioma seleccionado:||. Seleccione outro idioma:'
		,'fr': 'Certaines langues:||. Choisir une autre langue:'
		,'en': 'Selected language:||. Select other language:'
	}
	
	var selIdioma1 = new SeleccionIdioma();
	selIdioma1.datos = {
		textoIntroduccion: textosIdioma[idioma]
		,caracterParticionTexto: '||'
	}
	selIdioma1.inicia();

});

function SeleccionIdioma () {
	this.selectores = {
		capa: '.componenteSeleccionIdioma'
		,idioma: 'li'
		,lista: 'ul'
		,parrafo: 'p'
		,idiomaSeleccionado: '.idioma-activo'
	}
	this.clases = {
		indentado: 'indentado'
		,js: 'idioma-js'
		,activo: 'idiomas-desplegados'
	}
	this.datos = {
		textoIntroduccion: ''
		,caracterParticionTexto: '||'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.capa).each(function (el) {
			var str= window.location; 
			var idiomaSeleccionado = 'es';
			var idiomas = new Array('en','ca','va','es','fr','eu','gl');
			for (i=0; i<idiomas.length; i++) {
				var patt1=new RegExp("/"+idiomas[i]+"/");
				if (patt1.test(window.location)) {
					idiomaSeleccionado = idiomas[i];
				}
			}
			var listadoDeIdiomas = el.select('ul')[0];
			var posicionIdioma = 0;
			var idiomaSeleccionadoLang = idiomaSeleccionado;
			if (idiomaSeleccionado=='va') {
				posicionIdioma = 1;
				idiomaSeleccionadoLang = 'ca';
				if (listadoDeIdiomas.select('a[lang="va"]').length>0) {
					listadoDeIdiomas.select('a[lang="va"]')[0].lang = 'ca';
				}
			}
			if (listadoDeIdiomas.select('a[lang="'+idiomaSeleccionadoLang+'"]').length>0) {
				var activoAnterior = listadoDeIdiomas.select('.idioma-activo')[0];
				activoAnterior.removeClassName('idioma-activo');
				activoAnterior.addClassName('idioma-inactivo');
				listadoDeIdiomas.select('a[lang="'+idiomaSeleccionadoLang+'"]')[posicionIdioma].addClassName('idioma-activo');
			}
			
			
			el.addClassName(that.clases.js);
			that.parrafoSeleccion(el);
		});
	}
	
	this.parrafoSeleccion = function (capa) {
		var that = this;
		var texto = that.datos.textoIntroduccion.split(that.datos.caracterParticionTexto);
		var texto1 = texto[0];
		var texto2 = texto[1];
		//var texto3 = capa.select(that.selectores.idiomaSeleccionado)[0].innerHTML;
		var idiomaSeleccionado = capa.select(that.selectores.idiomaSeleccionado)[0];
		var texto3 = idiomaSeleccionado.textContent||idiomaSeleccionado.innerText;
		var parrafo = capa.select(that.selectores.parrafo)[0];
		parrafo.update('<span class="indentado">'+texto1+' </span><a href="#"><strong>'+texto3+'</strong><span class="indentado">'+texto2+'</span></a>');
		
		that.listadoIdiomas(capa,parrafo);
	}
	
	this.listadoIdiomas = function (capa,parrafo) {
		var that = this;
		var lista = capa.select(that.selectores.lista)[0];
		that.ocultarLista(lista,capa);
		var enlace = parrafo.select('a')[0];
		enlace.observe('click',function (ev) {
			Event.stop(ev);
			lista.toggle();
			capa.toggleClassName(that.clases.activo);
		});
		
	
		that.ocultarAlClicarFuera(lista,capa);
	}
	
	this.ocultarLista = function (lista,capa) {
		var that = this;
		lista.hide();
		capa.removeClassName(that.clases.activo);
	}
	
	this.ocultarAlClicarFuera = function (lista,capa) {
		var that = this;
		
		var mouse_is_inside = false;
			
			
			capa.observe('mouseover',function () {
				mouse_is_inside=true;
			});
			capa.observe('mouseout',function () {
				mouse_is_inside=false;
			});

			$$('body')[0].observe('mouseup',function () {
				if(!mouse_is_inside) {
					that.ocultarLista(lista,capa);
				}
			});
		
		
	}
}


function galeriaCarrusel () {
	
	this.selectores = {
		capa: '.componenteGaleriaCarrusel'
		,lista: '.listado-miniaturas'
		,elementoLista: 'li'
		,predeterminado: '.predeterminada'
		,seleccionado: '.seleccionado'
		,imagenGrande: '.imagen-grande'
		,textoImagenGrande: '.texto-imagen-grande'
		,interiorTextoImagenGrande: 'p'
		,controles: '.controles-carrusel'
		,controles2: '.controles-carrusel-sobre-imagen'
		,enlaceControlSiguiente: '.control-siguiente'
		,enlaceControlAnterior: '.control-anterior'
		,posiciones: '.posiciones'
		,posicionesInicial: '.posicion-inicial'
		,posicionesFinal: '.posicion-final'
		,posicionesTotal: '.posicion-total'
		,vistaMultimedia: '.vista-multimedia'
		,contenedorMultimedia: '.multimedia-carrusel'
	}
	this.clases = {
		capa: 'componenteGaleriaCarrusel-js'
		,predeterminado: 'predeterminada'
		,seleccionado: 'seleccionado'
		,multimedia: 'multimedia'
		,imagenGrande: 'imagen-grande'
		,textoImagenGrande: 'texto-imagen-grande'
		,prefijoelementoLista: 'carrusel-js-'
	}
	
	this.html = {
		controles: '<ul class="controles-carrusel"><li class="contenedor-control-siguiente"><a href="#" class="control-siguiente"><img src="/Portal/imagenes/CM_IMG_CSS_control_carrusel_02_derecha_activo.gif" alt="Siguiente" /></a></li><li class="contenedor-control-anterior"><a href="#" class="control-anterior"><img src="/Portal/imagenes/CM_IMG_CSS_control_carrusel_01_izquierda_activo.gif" alt="Anterior" /></a></li></ul>'
		,posicion: '<p class="posiciones">Mostrando de la <strong class="posicion-inicial"></strong>&nbsp;a la <strong class="posicion-final"></strong>&nbsp;de <strong class="posicion-total"></strong></p>'
		,controles2: '<div class="controles-carrusel-sobre-imagen"><ul class="clear"><li class="contenedor-control-siguiente"><a href="#" class="control-siguiente"><span>&nbsp;</span><img src="/Portal/imagenes/CM_IMG_CSS_control_carrusel_04_derecha_grande.gif" alt="Siguiente" /></a></li><li class="contenedor-control-anterior"><a href="#" class="control-anterior"><span></span>&nbsp;<img src="/Portal/imagenes/CM_IMG_CSS_control_carrusel_03_izquierda_grande.gif" alt="Anterior" /></a></li></ul></div>'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.capa).each(function (el) {
			el.addClassName(that.clases.capa);
			that.ocultarMultimedia(el);
			that.prepararImagen(el);
			that.prepararControles(el);
			
			var listado = el.select(that.selectores.lista)[0];
			listado.wrap('div', { 'class': 'js-contenedor-lista' });
			that.anchoListado(listado);
			that.prepararPosicion(el);
			that.selecciona(listado);
			that.activarImagen(el,listado);
		});
	}
	
	this.ocultarMultimedia = function (capa) {
		var that = this;
		capa.select(that.selectores.contenedorMultimedia).each(function (el) {
			el.hide();
		});
		
	}
	
	this.prepararPosicion = function (capa) {
		var that = this;
		
		Element.insert(capa,{bottom:that.html.posicion});
		var listado = capa.select(that.selectores.lista)[0];
		var elementoPredeterminado = listado.select(that.selectores.predeterminado)[0];
		var elementosListaNum = listado.select(that.selectores.elementoLista).length;
		listado.select(that.selectores.elementoLista).each(function (el,index) {
			el.addClassName(that.clases.prefijoelementoLista+(index+1));
			el.writeAttribute("data-numero",(index+1));
		});
		
		if (elementoPredeterminado.hasClassName('carrusel-js-1')) {
			that.ocultarControlesAnterior(capa);
		} else {
			var numero = parseInt(elementoPredeterminado.readAttribute("data-numero"));
			var anchoSuperior = listado.up().getWidth();
			var anchoListado = listado.getWidth();
			var movimiento = anchoListado/elementosListaNum*numero*(-1);
			var anchoTodo = anchoListado-anchoSuperior;
			if (movimiento<(anchoTodo*(-1))) {movimiento=anchoTodo*(-1);}
			if (anchoSuperior>anchoListado) {movimiento=0;}
			listado.setStyle({left:movimiento+'px'});
		}
		if (elementoPredeterminado.hasClassName(that.clases.prefijoelementoLista+elementosListaNum)) {
			that.ocultarControlesSiguiente(capa);
		}
		
		var capaPosicion = capa.select(that.selectores.posiciones)[0];
		capaPosicion.select(that.selectores.posicionesTotal)[0].update(elementosListaNum);
		
		that.variarPosicion(capaPosicion,listado,elementosListaNum);
	}
	
	this.variarPosicion = function (capaPosicion,listado,elementosListaNum) {
		var that = this;
		var anchoUno = listado.getWidth()/elementosListaNum;
		var posInicial = 1;
		if (parseInt(listado.getStyle('left'))<0) {
			posInicial = (parseInt(listado.getStyle('left'))*(-1)/anchoUno)+1;
		}
		var numeroVisibles = Math.ceil(listado.up().getWidth()/anchoUno);
		var posFinal = posInicial+(numeroVisibles-1);
		if (posFinal>elementosListaNum) {posFinal=elementosListaNum;}
		capaPosicion.select(that.selectores.posicionesInicial)[0].update(posInicial);
		capaPosicion.select(that.selectores.posicionesFinal)[0].update(posFinal);
		
	}
	
	this.anchoListado = function (listado) {
		var that = this;
		var anchoLista=0;
		listado.select(that.selectores.elementoLista).each(function (el) {
			var anchoElemento = el.getWidth();
			anchoLista += anchoElemento;
		});
		listado.setStyle({width: anchoLista+'px'});
	}
	
	this.selecciona = function (listado) {
		var that =this;
		var elementoPredeterminado = listado.select(that.selectores.predeterminado)[0];
		var enlace = elementoPredeterminado.select('a')[0]
		var imagen = enlace.href;
		var capaImagen = Element.closest(listado,that.selectores.capa).select(that.selectores.imagenGrande)[0];
		var capaTexto = Element.closest(listado,that.selectores.capa).select(that.selectores.textoImagenGrande)[0].select(that.selectores.interiorTextoImagenGrande)[0];
		var imagenSeleccionadaContenedor = capaImagen.select('p')[0];
		var imagenSeleccionada = capaImagen.select('img')[0];
		capaImagen.select(that.selectores.vistaMultimedia).each(function (el) {
			Element.remove(el);
		});
		
		var texto = elementoPredeterminado.select('img')[0].alt.split(' (')[0];
		if (elementoPredeterminado.select('.descripcion-imagen').length>0) {
			var elementoDescripcion = elementoPredeterminado.select('.descripcion-imagen')[0];
			//var textoDescripcion = elementoDescripcion.textContent||elementoDescripcion.innerText;
			var textoDescripcion = elementoDescripcion.innerHTML;
		} else {textoDescripcion=' ';}
	
		
		
		capaTexto.update('<strong>'+texto+'</strong>'+textoDescripcion);
		
		if (enlace.hasClassName(that.clases.multimedia)) {
			imagenSeleccionadaContenedor.hide();
			var elementoMultimedia = enlace.rel.split('||')
			var urlMultimedia = elementoMultimedia[0];
			var imagenMultimedia = elementoMultimedia[1];
			var textoMultimedia = elementoMultimedia[2];
			
			var contenidoAlternativo = '<p><img src="'+imagenMultimedia+'" alt="'+textoMultimedia+'" /></p>';
			/*if (elementoMultimedia.length>3) {
				var enlaceMultimedia = elementoMultimedia[3];
				var contenidoAlternativo = '<p><a href="'+enlaceMultimedia+'"><img src="'+imagenMultimedia+'" alt="'+textoMultimedia+'" /></a></p>';
			}*/
			
			
			var altoFlash = capaImagen.getHeight();
			var anchoFlash = capaImagen.getWidth();
			var htmlParam = '<div class="vista-multimedia">';
			htmlParam += '<object height="'+altoFlash+'" width="'+anchoFlash+'" tabindex="0" type="application/x-shockwave-flash" data="'+urlMultimedia+'">';
			htmlParam += '<param value="'+urlMultimedia+'" name="movie" />';
			htmlParam += '<param value="true" name="allowFullScreen" />';
			htmlParam += '<param value="always" name="allowscriptaccess" />';
			htmlParam += contenidoAlternativo;
			htmlParam += '</object>';
			htmlParam += '</div>';
			Element.insert(capaImagen,{bottom:htmlParam});
		} else {
			imagenSeleccionada.alt = texto;
			imagenSeleccionada.src = imagen;
			imagenSeleccionadaContenedor.show();
		}
		elementoPredeterminado.addClassName(that.clases.seleccionado);
		
		
	}
	
	this.predetermina = function (el,listado) {
		var that =this;
		var elemento = Element.closest(el,that.selectores.elementoLista);
		elemento.siblings().each(function (el2) {
			el2.removeClassName(that.clases.predeterminado)
			el2.removeClassName(that.clases.seleccionado);
		});
		elemento.addClassName(that.clases.predeterminado);
		that.selecciona(listado);
	}
	
	this.activarImagen = function (capa,listado) {
		var that =this;
		listado.select('a').each(function (el) {
			el.observe('click',function (ev) {
				Event.stop(ev);
				that.predetermina(el,listado);
				var elementoLista = Element.closest(el,that.selectores.elementoLista);
				var numElementosLista = listado.select(that.selectores.elementoLista).length;
				if (elementoLista.hasClassName(that.clases.prefijoelementoLista+'1')) {that.ocultarControlesAnterior(capa);}
				else {that.mostrarControlesAnterior(capa);}
				if (elementoLista.hasClassName(that.clases.prefijoelementoLista+numElementosLista)) {that.ocultarControlesSiguiente(capa);}
				else {that.mostrarControlesSiguiente(capa);}
			});
		});
	}
	
	this.activarControles = function (capa) {
		var that =this;
		
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select('.controles-carrusel-sobre-imagen')[0];
		
		/*capaControles2.select('span').each(function (el) {
			el.setStyle({
				opacity:'.4'
				,filter: 'alpha(opacity=40)'
			});
			
		});*/
		//capaControles.select(that.selectores.enlaceControlAnterior)[0].hide();
		
		capaControles.select(that.selectores.enlaceControlSiguiente)[0].observe('mouseover',function () {
			this.select('img')[0].src='/Portal/imagenes/CM_IMG_CSS_control_carrusel_02_derecha_hover.gif';
		});
		capaControles.select(that.selectores.enlaceControlSiguiente)[0].observe('mouseout',function () {
			this.select('img')[0].src='/Portal/imagenes/CM_IMG_CSS_control_carrusel_02_derecha_activo.gif';
		});
		capaControles.select(that.selectores.enlaceControlAnterior)[0].observe('mouseover',function () {
			this.select('img')[0].src='/Portal/imagenes/CM_IMG_CSS_control_carrusel_01_izquierda_hover.gif';
		});
		capaControles.select(that.selectores.enlaceControlAnterior)[0].observe('mouseout',function () {
			this.select('img')[0].src='/Portal/imagenes/CM_IMG_CSS_control_carrusel_01_izquierda_activo.gif';
		});
		
	
		
		capaControles.select(that.selectores.enlaceControlSiguiente)[0].observe('click',function (ev) {
			Event.stop(ev);
			var direccion = -1;
			that.determinarMovimiento(direccion,capa,capaControles);
		});
		capaControles.select(that.selectores.enlaceControlAnterior)[0].observe('click',function (ev) {
			Event.stop(ev);
			var direccion = 1;
			that.determinarMovimiento(direccion,capa,capaControles);
		});
		
		capaControles2.select(that.selectores.enlaceControlSiguiente)[0].observe('click',function (ev) {
			Event.stop(ev);
			var direccion = -1;
			that.determinarMovimiento(direccion,capa,capaControles);
		});
		capaControles2.select(that.selectores.enlaceControlAnterior)[0].observe('click',function (ev) {
			Event.stop(ev);
			var direccion = 1;
			that.determinarMovimiento(direccion,capa,capaControles);
		});
		
		
	}
	
	this.determinarMovimiento = function (direccion,capa,capaControles) {
		var that = this;
		var listado = capa.select(that.selectores.lista)[0];
		var anchoTodo = listado.getWidth()-listado.up().getWidth();
		var anchoUno = listado.select(that.selectores.elementoLista)[0].getWidth();
		var posicionActual = parseInt(listado.getStyle('left'));
		var posicionNueva = posicionActual+(anchoUno*direccion);
		var num = listado.select(that.selectores.elementoLista).length;
		var ultimo = listado.select(that.selectores.elementoLista)[num-1];
		
		if (posicionNueva<1 && direccion>0) {
			that.mover(direccion,posicionNueva,listado,capa);
		}
		else if ((posicionNueva*(-1))<=anchoTodo && direccion<0) {
			that.mover(direccion,posicionNueva,listado,capa);
		} else {
			that.mover((2*direccion),posicionNueva,listado,capa);
		}
		
	}
	
	this.mostrarControlesAnterior = function (capa) {
		var that=this;
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select(that.selectores.controles2)[0];
		capaControles.select(that.selectores.enlaceControlAnterior)[0].show();
		capaControles2.select('li')[1].show();
	}
	
	this.ocultarControlesAnterior = function (capa) {
		var that=this;
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select(that.selectores.controles2)[0];
		capaControles.select(that.selectores.enlaceControlAnterior)[0].hide();
		capaControles2.select('li')[1].hide();
	}
	
	this.mostrarControlesSiguiente = function (capa) {
		var that=this;
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select(that.selectores.controles2)[0];
		capaControles.select(that.selectores.enlaceControlSiguiente)[0].show();
		capaControles2.select('li')[0].show();
	}
	
	this.ocultarControlesSiguiente = function (capa) {
		var that=this;
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select(that.selectores.controles2)[0];
		capaControles.select(that.selectores.enlaceControlSiguiente)[0].hide();
		capaControles2.select('li')[0].hide();
	}
	
	this.mover = function (direccion,posicionNueva,listado,capa) {
		var that = this;
		var elementoPredeterminado = listado.select(that.selectores.predeterminado)[0];
		var capaControles = capa.select(that.selectores.controles)[0];
		var capaControles2 = capa.select(that.selectores.controles2)[0];
		var capaPosicion = capa.select(that.selectores.posiciones)[0];
		var elementosListaNum = listado.select(that.selectores.elementoLista).length;
		
		if (direccion<0) {
			var elementoListado = elementoPredeterminado.next();
			if (elementoListado) {var enlace = elementoListado.select('a')[0];}
			
			if (elementoPredeterminado.hasClassName('carrusel-js-'+(elementosListaNum-1))) {
				that.ocultarControlesSiguiente(capa);
			}
			that.mostrarControlesAnterior(capa);
		} else {
			var elementoListado = elementoPredeterminado.previous();
			if (elementoListado) {var enlace = elementoListado.select('a')[0];}
			if (elementoPredeterminado.hasClassName('carrusel-js-2')) {
				that.ocultarControlesAnterior(capa);
			}
			that.mostrarControlesSiguiente(capa);
		}
		
		
		if (direccion>-2 && direccion<2) {
			var mover = false;
			
			var numeroInicial = parseInt(capaPosicion.select(that.selectores.posicionesInicial)[0].firstChild.nodeValue);
			var numeroFinal = parseInt(capaPosicion.select(that.selectores.posicionesFinal)[0].firstChild.nodeValue);
			var elementoPredeterminado = listado.select(that.selectores.seleccionado)[0];
			if (direccion<0) {
				var numero = numeroFinal;
				if (listado.select('.carrusel-js-'+numero)[0].hasClassName(that.clases.predeterminado)) {mover=true;}
				
			} else {
				var numero = numeroInicial;
				if (listado.select('.carrusel-js-'+numero)[0].hasClassName(that.clases.predeterminado)) {mover=true;}
			}
			
			if (mover) {
				
				listado.setStyle({left:posicionNueva+'px'});
				that.variarPosicion(capaPosicion,listado,elementosListaNum);
			}
		}
		if (elementoListado) {that.predetermina(enlace,listado);}
	}
	
	this.prepararImagen = function (capa) {
		var that =this;
		var imagenSeleccionada = capa.select(that.selectores.predeterminado)[0].select('img')[0];
		var texto = imagenSeleccionada.alt.split(' (')[0];
		var url = imagenSeleccionada.up().href;
		Element.insert(capa,{bottom:'<div class="texto-imagen-grande"><p>'+texto+'</p></div>'});
		Element.insert(capa,{bottom:'<div class="imagen-grande"><p><img src="'+url+'" alt="'+texto+'" /></div>'});
		
	}
	
	this.prepararControles = function (capa) {
		var that = this;
		Element.insert(capa,{bottom:that.html.controles});
		Element.insert(capa,{bottom:that.html.controles2});
		that.activarControles(capa);
	}
	
}

function HoverGenerico () {
	this.selectores = {
		elementoHover: ''
	}
	this.clases = {
		hover:''
	}
	
	this.inicia = function () {
		var that = this;
		$$(this.selectores.elementoHover).each(function (el) {
			el.observe('mouseover',function () {
				el.addClassName(that.clases.hover);
			});
			el.observe('mouseout',function () {
				el.removeClassName(that.clases.hover);
			});
		});
	}
}

function ClasesCSS () {
	this.datos = {
		elemento:''
		,claseEliminada:''
		,claseNueva:''
	}
	
	this.inicia = function () {
		var that = this;
		if(/MSIE 6.0/i.test(navigator.userAgent)) {
			$$(that.datos.elemento).each(function (el) {
				if (!el.hasClassName(that.datos.claseNueva)) {
					el.addClassName(that.datos.claseNueva);
				}
			});
		}
	}
}

function ListasDefinicion () {
	this.selectores = {
		lista: 'dl.componenteCamposSalida'
	}
	
	this.clases = {
		js: 'componenteCamposSalida-js'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.lista).each(function (lista) {
		
			lista.addClassName(that.clases.js);
			
			lista.select('dt').each(function (termino) {
				var definicion = termino.next('dd');
				
		var fuente = parseFloat(Element.getStyle(termino,'font-size'));
		var correccion1 = 1; if (fuente<8) {correccion1=10;}
		var correccion2 = 0; if (fuente<8) {correccion2=1;}
		var alturaTermino = termino.getHeight()+(parseFloat(Element.getStyle(termino,'margin-top'))*correccion1)+(parseFloat(Element.getStyle(termino,'margin-bottom'))*correccion1);
    var alturaDefinicion = definicion.getHeight()+(parseFloat(Element.getStyle(definicion,'margin-top'))*correccion1)+(parseFloat(Element.getStyle(definicion,'margin-bottom'))*correccion1);

    if (alturaDefinicion>alturaTermino) {
      var diferencia = alturaDefinicion-alturaTermino;
      var margen = parseFloat(Element.getStyle(termino,'margin-bottom'))*correccion1;
      termino.setStyle({marginBottom:(margen+diferencia+correccion2)+'px'});
    }
    if (alturaTermino>alturaDefinicion) {
      var diferencia = alturaTermino-alturaDefinicion;
      var margen = parseFloat(Element.getStyle(definicion,'margin-bottom'))*correccion1;
      definicion.setStyle({marginBottom:(margen+diferencia+correccion2)+'px'});
    }
		
			});
		
		});
	}
}

function FocoListadoErrores () {
	this.selectores = {
		enlace: '.componenteInformeErrores li a'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.enlace).each(function (enlace) {
			enlace.observe('click',function (ev) {
				Event.stop(ev);
				var destino = enlace.href.split('#')[1];
				$(destino).select('input,select,textarea')[0].focus();
			});
		});
	}
}

function GaleriaSuperpuesta () {
this.selectores = {
	componente: '.componenteGaleriaSuperpuesta'
	,componenteInterior: '.interior-superpuesta-2'
	,elementoLista:'.bloque-superpuesta'
	,interiorElementoLista: '.bloque-superpuesta-interior-1'
	,activarSuperpuesta: '.activar-superpuesta'
	,elementoMultimedia: '.elemento-multimedia'
	,activo: '.bloque-activo'
}

this.clases = {
	claseJs: 'componenteGaleriaSuperpuesta-js'
	,activo: 'bloque-activo'
	,focoActivarSuperpuesta: 'activar-superpuesta-focus'
}
this.opciones = {
	htmlCapaActivacion: '<a href="#" class="activar-superpuesta"><span class="indentado">Activar</span></a>'
	,opacidad: 20
	,opacidadHover: 20
	,indiceEjeZ: 1
	,animacion:true
	,tiempoAnimacion:.5 // en segundos
}

this.datos = {}
	
this.inicia = function () {
	var that = this;
	$$(that.selectores.componente).each(function(componente){
		that.datos.componente = componente;
		that.datos.componenteInterior = that.datos.componente.select(that.selectores.componenteInterior)[0];
		that.datos.componente.addClassName(that.clases.claseJs); // Se añade clase que indica que Javascript está activo
		that.insertarEnlaceActivacion();
	});
}
		
this.insertarEnlaceActivacion = function () { // Se inserta el enlace que produce la opacidad y permite activar los elementos
	var that = this;
	that.datos.elementoLista = that.datos.componente.select(that.selectores.elementoLista);
	that.datos.elementoLista.each(function (el) {
		var destino = el.select(that.selectores.interiorElementoLista)[0];
		Element.insert(destino,{top:that.opciones.htmlCapaActivacion});
		that.opacidadEnlaceActivador(destino);
	});
	that.posicionarElementosLista();
}

this.opacidadEnlaceActivador = function (destino) {
	// Alternancia de opacidad en el hover del enlace. Necesario para Internet Explorer 8 e inferiores
	var that = this;
	var enlace = destino.select(that.selectores.activarSuperpuesta)[0];
	that.opacidadReposada(enlace);
	enlace.observe('mouseover',function () {
		that.opacidadActiva(enlace);
	});
	enlace.observe('mouseout',function () {
		that.opacidadReposada(enlace);
	});
	
	enlace.observe('focus',function () {
		enlace.addClassName(that.clases.focoActivarSuperpuesta);
	});
	enlace.observe('blur',function () {
		enlace.removeClassName(that.clases.focoActivarSuperpuesta);
	});
}

this.opacidadReposada = function (enlace) {
	var that = this;
	enlace.setStyle({
		'opacity':'.'+(that.opciones.opacidad/10)
		,'filter':'alpha(opacity='+that.opciones.opacidad+')'
	});
}

this.opacidadActiva = function  (enlace) {
	var that = this;
	enlace.setStyle({
		'opacity':'.'+(that.opciones.opacidadHover/10)
		,'filter':'alpha(opacity='+that.opciones.opacidadHover+')'
	});
}

this.posicionarElementosLista = function () { // Se posicionan los elementos de lista
	var that = this;
	
	var dimensionesComponente = new Element.Layout(that.datos.componenteInterior);
	that.datos.anchoComponente = dimensionesComponente.get('width'); // Ancho componente
	//that.datos.anchoComponente = that.datos.componente.getWidth(); // Ancho componente
	//that.datos.anchoElementoLista = Element.outerWidth(that.datos.elementoLista[0]); // Ancho de elemento de lista
	that.datos.anchoElementoLista = that.datos.elementoLista[0].getWidth(); // Ancho de elemento de lista
	
	
	that.datos.anchoElementoListaSimple = that.datos.elementoLista[0].getWidth(); // Ancho de elemento de lista sin bordes o padding
	that.datos.numElementoLista = that.datos.elementoLista.length; // Número de elementos de lista
	
	that.datos.anchoParaOcultos = Math.floor((that.datos.anchoComponente-that.datos.anchoElementoLista)/(that.datos.numElementoLista-1)); // Ancho visible de elementos ocultos
	that.datos.variacionPosicionMostrar = that.datos.anchoElementoLista-that.datos.anchoParaOcultos; // Distancia de movimiento al activar un elemento
	
	var elementoListaCentral = Math.ceil(that.datos.numElementoLista/2)-1; // Elemento central
	var posicionElemento = 0;
	var ejeZ = that.opciones.indiceEjeZ; // Z-index: debe evolucionar de menor a mayor, para que las superposiciones funcionen adecuadamente
	
	
	var index = 0;
	while (index<that.datos.elementoLista.length) { // Se aplican las posiciones a los elementos
		that.datos.elementoLista[index].setStyle({
			'left':posicionElemento+'px'
			,'zIndex':ejeZ
		});
		if (elementoListaCentral==index) {
			posicionElemento +=that.datos.anchoElementoLista;
			that.datos.elementoLista[index].select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoElementoListaSimple+'px'})
			that.datos.elementoLista[index].addClassName(that.clases.activo)
			that.datos.elementoLista[index].select(that.selectores.elementoMultimedia)[0].setStyle({'left':'0'});
		} else {
			that.datos.elementoLista[index].select('a:not('+that.selectores.activarSuperpuesta+')').each(function (enlaceAnulado) {
				enlaceAnulado.writeAttribute('tabindex','-1');
			});
			that.datos.elementoLista[index].select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoParaOcultos+'px'})
			posicionElemento +=that.datos.anchoParaOcultos;
		}
		ejeZ++;
		index++;
	}
	
	var anchoFinalComponente = that.datos.anchoElementoListaSimple+(that.datos.anchoParaOcultos*(that.datos.elementoLista.length-1))
	that.datos.componenteInterior.setStyle({'width':anchoFinalComponente+'px'})
	
	that.eventoAlternarElementosLista();
}

this.eventoAlternarElementosLista = function () { // Evento para seleccionar elementos
	var that = this;
	that.datos.componente.select(that.selectores.activarSuperpuesta).each(function (el) {
		el.observe('click',function (ev) {
			
			Event.stop(ev);
			
			var elementoLista = Element.closest(el,that.selectores.elementoLista); // Elemento a mostrar
			
			// Distinción de la dirección hacia la que tienen que moverse los elementos
			var elementoListaActivo = elementoLista.up().select(that.selectores.activo)[0];
			
			var esSiguiente = false;
			elementoLista.nextSiblings().each(function (el) {
				if (el.match(that.selectores.activo)) {esSiguiente=true;}
			});
			
			if (esSiguiente==true) {
				//var elementoListaActivo = elementoLista.next(that.selectores.activo)[0];
				// Formación del grupo de elementos a mover
				var grupo = Element.nextUntil(elementoLista,that.selectores.activo);
				grupo = Element.add(grupo,elementoListaActivo);
				
				var direccion = 1;
			} else {
				// Formación del grupo de elementos a mover
				var grupo = Element.prevUntil(elementoLista,that.selectores.activo);
				grupo = Element.add(grupo,elementoLista);
				
				var direccion = -1;
			}
			
			grupo.each(function (el) { // Se produce el movimiento de los elementos 
				var nuevaPosicion = parseInt(el.getStyle('left').split('px')[0])+(that.datos.variacionPosicionMostrar*direccion);
				//el.animate({left:nuevaPosicion},250)
				
				if (that.opciones.animacion==true) {
					new Effect.Move(el, { x: nuevaPosicion, y: 0, mode: 'absolute',duration: that.opciones.tiempoAnimacion,transition:Effect.Transitions.sinoidal, afterFinish:function () {
						elementoLista.select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoElementoListaSimple+'px'});
						elementoListaActivo.select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoParaOcultos+'px'});
					}});
				} else {
					el.setStyle({'left':nuevaPosicion+'px'})
				}
			});
			
			// Se cambia el elemento activo y se mueven las imágenes para que queden posicionadas siempre al centro
			var posicionActiva = (that.datos.variacionPosicionMostrar/2*(-1));
			elementoListaActivo.removeClassName(that.clases.activo);
			
			if (that.opciones.animacion==true) {
				new Effect.Move(elementoListaActivo.select(that.selectores.elementoMultimedia)[0], { x: posicionActiva, y: 0, mode: 'absolute',duration: that.opciones.tiempoAnimacion,transition:Effect.Transitions.sinoidal});
			} else {
				elementoListaActivo.select(that.selectores.elementoMultimedia)[0].setStyle({'left':posicionActiva+'px'});
				elementoListaActivo.select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoParaOcultos+'px'})
			}
			elementoListaActivo.select('a:not('+that.selectores.activarSuperpuesta+')').each(function(enlaceAnulado) {
				enlaceAnulado.writeAttribute('tabindex','-1');
			});
			
			elementoLista.addClassName(that.clases.activo);
			
			if (that.opciones.animacion==true) {
				new Effect.Move(elementoLista.select(that.selectores.elementoMultimedia)[0], { x: 0, y: 0, mode: 'absolute',duration: that.opciones.tiempoAnimacion,transition:Effect.Transitions.sinoidal});
			} else {
				elementoLista.select(that.selectores.elementoMultimedia)[0].setStyle({'left':'0'});
				elementoLista.select(that.selectores.activarSuperpuesta)[0].setStyle({'width':that.datos.anchoElementoListaSimple+'px'});
			}
			elementoLista.select('a:not('+that.selectores.activarSuperpuesta+')').each(function(enlaceAnulado) {
				enlaceAnulado.writeAttribute('tabindex','');
			});
		})
	});
}


}








function NumeroContrato () {
	this.selectores = {
		componente: '.componenteCombinadoIbanCCC'
		,iban: '.campos-iban .componenteCampoCombinado'
		,elementoIban: '.componenteCampoCCC'
		,textoIban: 'span.label'
		,textoIbanInterior: '.texto-iban'
		,enlaceSeleccionar: '.seleccionar-pais'
		,listaIbanPaises: '.listado-paises'
		,elementosListaIbanPaises: '.listado-paises li:not(.predeterminado)'
		,desplegablePaises: '.lista-seleccion-paises'
		,listaDesplegablePaises: '.lista-seleccion-paises-grupos'
		,listaDesplegablePaisesCerrar: '.cerrar a'
		,ibanActivo: '.iban-activo'
		
		,camposCCC: '.campos-ccc'
		,camposIBAN: '.campos-iban'
		,camposIBANCodigoPais: 'input.campo-persistente'
		
		,campoPais: '.campo-pais'
		,grupoIBAN: '.grupo-iban-'
		
		,botonBuscar: '.buscar-numero'
	}
	
	this.clases = {
		indentado: 'indentado'
		,oculto: 'oculto'
		,predeterminado: 'predeterminado'
		,conJs: 'componenteCombinadoIbanCCC-js'
		,camposCCC: 'campos-ccc'
		,camposIBAN: 'campos-iban'
		,camposIBANCodigoPais: 'campo-persistente'
		,ibanActivo: 'iban-activo'
	}
	
	this.datos = {
		imagenSeleccionar: '/Portal/imagenes/CM_IMG_ico_paises.gif'
		,imagenSeleccionarHover: '/Portal/imagenes/CM_IMG_ico_paises_hover.gif'
		,numGrupos: 3
	}
	
	this.html = {
		listaSeleccion: '<div class="lista-seleccion-paises" style="display:none;"><div class="lista-seleccion-paises-interior"><p class="titulo"><strong>Países</strong></p><div class="lista-seleccion-paises-grupos"></div><p class="cerrar"><a href="#"><img src="/Portal/imagenes/CM_IMG_ico_cerrar.gif" alt="Cerrar"</a></p></div></div>'
		,botonBuscarInactivo: '<span class="botonBuscar botonBuscarInactivo" href="#">Buscar</span>'
		,botonBuscarActivo: '<a class="botonBuscar" href="#">Buscar</a>'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.componente).each(function (componente) {
			componente.addClassName(that.clases.conJs);
			that.camposConValores(componente);
			that.generarEnlaces(componente);
			that.ocultarInicialIban(componente);
			that.alternar(componente);
			that.autotabular(componente);
			//that.buscar(componente);
		});
	}
	
	this.camposConValores = function (componente) {
		var that = this;
		componente.select(that.selectores.camposIBANCodigoPais).each(function (campo) {
			campo.rel = campo.value;
		});;
	}
	
	this.autotabular = function (componente) {
		var that = this;
		componente.select('input[type="text"]').each(function (campo) {
			
			var grupoIban = Element.closest(campo,that.selectores.elementoIban);
			campo.observe('keyup',function () {
				if (campo.value.length==parseInt(campo.readAttribute('maxlength'))) {
					if (campo.up().next('label')) {
						var id = campo.up().next('label').down('input').id;
						$(id).focus();
						$(id).select();
					}
					that.comprobarRelleno(componente,grupoIban);
				}
			});
		});
	}
	
	this.comprobarRelleno = function (componente,grupoIban) {
		var that = this;
		var campos = grupoIban.select('input[type="text"]');
		var i = 0; var numCampos = campos.length;
		var maximo = 0; var valor = 0;
		while (i<numCampos) {
			
			maximo +=parseInt(campos[i].readAttribute('maxlength'));
			valor +=parseInt(campos[i].value.length);
			
			i++;
		}
	}
	
	this.alternar = function (componente) {
		var that = this;
		
		var iban = componente.select(that.selectores.camposIBAN)[0];
		var ccc = componente.select(that.selectores.camposCCC)[0];
		var campo = componente.select('select')[0];
		var campoId = campo.id;
		
		iban.hide();
		campo.observe('change',function () {
			if ($F(campoId)==that.clases.camposIBAN) {
				ccc.hide().down(that.selectores.elementoIban).removeClassName(that.clases.ibanActivo);
				iban.show();
				that.ocultarInicialIban(componente);
				iban.select(that.selectores.elementoIban)[0].addClassName(that.clases.ibanActivo);
				that.borrarCampos(ccc);
			}
			if ($F(campoId)==that.clases.camposCCC) {
				iban.hide();
				iban.select(that.selectores.ibanActivo)[0].removeClassName(that.clases.ibanActivo);
				ccc.show().down(that.selectores.elementoIban).addClassName(that.clases.ibanActivo);;
				that.borrarCampos(iban);
			}
		})
		
	}
	
	this.borrarCampos = function (elemento) {
		var that = this;
		elemento.select('input[type="text"]').each(function (campo) {
			if (campo.hasClassName(that.clases.camposIBANCodigoPais)) {
				campo.value = campo.rel;
			} else {
				campo.value = '';
			}
		});
	}
	
	this.ocultarInicialIban = function (componente) {
		var that = this;
		componente.select(that.selectores.iban).each(function (iban) {
			if (!iban.hasClassName(that.clases.predeterminado)) {iban.hide();} else {iban.show();}
			iban.select(that.selectores.textoIban)[0].addClassName(that.clases.indentado)
		});
	}
	
	this.generarEnlaces = function (el) {
		var that = this;
		var parrafo = el.select(that.selectores.enlaceSeleccionar)[0];
		var texto = parrafo.firstChild.nodeValue;
		parrafo.update('<a href="#"><img src="'+that.datos.imagenSeleccionar+'" alt="'+texto+'" /></a>');
		var enlace = parrafo.select('a')[0];
		var enlaceImagen = parrafo.select('a img')[0];
		
		enlace.observe('mouseover',function() {
			enlaceImagen.src = that.datos.imagenSeleccionarHover;
		});
		enlace.observe('mouseout',function() {
			enlaceImagen.src = that.datos.imagenSeleccionar;
		});
		
		that.generarLista(el,parrafo,enlace);
		
		var desplegablePaises = el.select(that.selectores.desplegablePaises)[0];
		enlace.observe('click',function(ev) {
			Event.stop(ev);
			desplegablePaises.show();
		});
		desplegablePaises.select(that.selectores.listaDesplegablePaisesCerrar)[0].observe('click',function (ev) {
			Event.stop(ev);
			desplegablePaises.hide();
		});
		that.alternarIban(el,desplegablePaises);
	}
	
	this.alternarIban = function (componente,desplegablePaises) {
		var that = this;
		componente.select(that.selectores.listaDesplegablePaises+' a').each(function (enlace) {
			var fragmentosEnlace = enlace.href.split('#');
			var id = fragmentosEnlace[fragmentosEnlace.length-1];
			
			enlace.observe('click',function (ev) {
				//that.buscar(componente);
				Event.stop(ev);
				that.finalizarAlternarIban(desplegablePaises,id);
			});
			
		});
		
		componente.select(that.selectores.campoPais).each(function (campo) {
			campo.observe('keyup',function () {
				var valor = campo.value.toLowerCase();
				if (valor.length==2) {
					var grupo = componente.select(that.selectores.grupoIBAN+valor);
					if (grupo.length==1) {
						var id = grupo[0].id;
						that.finalizarAlternarIban(desplegablePaises,id);
					}
				}
			})
		});
	}
	
	this.finalizarAlternarIban = function (desplegablePaises,id) {
		var that = this;
		$(id).show().addClassName(that.clases.ibanActivo).siblings().each(function (iban) {
			iban.hide().removeClassName(that.clases.ibanActivo);
			that.borrarCampos(iban);
			desplegablePaises.hide();
		});
		var campoFoco = $(id).select('input[type="text"]')[0];
		campoFoco.focus();
	}
	
	this.generarLista = function (el,parrafo,enlace) {
		var that = this;
		var elementoIban = el.select(that.selectores.elementosListaIbanPaises);
		var numElementoIban = elementoIban.length;
		var i = 0; var j = 1;
		var enlaceSeleccionPais = '';
		var unidadesPorGrupo = Math.ceil(numElementoIban/that.datos.numGrupos);
		while (i<numElementoIban) {
			var textoIban = elementoIban[i].select(that.selectores.textoIbanInterior)[0].firstChild.nodeValue;
			if (i==0) {enlaceSeleccionPais += '<ul class="primero">';}
			enlaceSeleccionPais += '<li><a href="#'+elementoIban[i].id+'">'+textoIban+'</a></li>';
			if (j==unidadesPorGrupo && (i+1)<numElementoIban) {enlaceSeleccionPais += '</ul><ul>'; j=1;}
			else if ((i+1)==numElementoIban) {enlaceSeleccionPais += '</ul>';}
			else {j++;}
			i++;
		}
		Element.insert(parrafo,{after:that.html.listaSeleccion});
		var listado = parrafo.next().select(that.selectores.listaDesplegablePaises)[0];
		Element.insert(listado,{bottom:enlaceSeleccionPais})
	}
	
}



function Facetado () {
	this.selectores = {
		contenedor: '.componenteMenuFacetado'
		,bloque: '.componenteMenu>li'
		,bloqueAlternable: 'ul'
		,seleccionado: '.seleccionado'
	}
	
	this.clases = {
		plegado: 'plegado'
		,seleccionado: 'seleccionado'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.contenedor).each(function (el) {
			el.select(that.selectores.bloque).each(function (el2) {
				if (!el2.hasClassName(that.clases.seleccionado)) {
					that.alternar(el2);
				}
				el2.select('a')[0].observe('click',function (ev) {
					Event.stop(ev);
					that.alternar(el2);
				})
			});
		});
	}
	
	this.alternar = function (elemento) {
		var that = this;
		elemento.select(that.selectores.bloqueAlternable)[0].toggle();
		elemento.select('a')[0].toggleClassName(that.clases.plegado);
	}
}

function mapaImagenRegiones () {
	this.selectores = {
		imagen: 'img.mapa'
		,contenedor: '.componenteMapaRegiones'
	}
	this.identificadores = {
		tooltip: 'mensaje-mapa-regiones'
	}
	this.datos = {
		rutaImagenesRollover: '/Portal/imagenes/mapa_espana_regiones/'
		,extensionImagenesRollover: 'gif'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.contenedor).each(function (el) {
			var imagen = el.select('img')[0];
			var rutaImagen = imagen.src;
			el.select('area').each(function (el2) {
				that.preparaRollover(el,el2,imagen,rutaImagen)
			});
		});
	}
	
	this.preparaRollover = function (el,el2,imagen,rutaImagen) {
		var that = this;
		var rutaRollover = that.datos.rutaImagenesRollover+el2.id+'.'+that.datos.extensionImagenesRollover;
		that.precargar(rutaRollover);
		var textoAlternativo = el2.alt.split(': ');
		var coordenadas = that.posicionarTooltip(el2.coords);
		var htmlTooltip = '<span id="mensaje-mapa-regiones" style="left:'+coordenadas[0]+'px; top:'+coordenadas[1]+'px;"><span><strong>'+textoAlternativo[0]+':</strong>&nbsp;'+textoAlternativo[1]+'</span></span>';
		that.rollover(el,el2,imagen,rutaImagen,rutaRollover,htmlTooltip);
	}
	
	this.rollover = function (el,el2,imagen,rutaImagen,rutaRollover,htmlTooltip) {
		var that=this;
		el2.observe('mouseover',function () {
			Element.insert(el,{bottom: htmlTooltip});
			imagen.src = rutaRollover;
		});
		el2.observe('mouseout',function () {
			imagen.src = rutaImagen;
			if ($(that.identificadores.tooltip)) {$(that.identificadores.tooltip).remove();}
		});
	}
	
	this.precargar = function (ruta) {
		var precarga = new Image();
		precarga.src = ruta;
	}
	
	this.posicionarTooltip = function (coordenadas){
		var posiciones = coordenadas.split(","); //Al partir la cadena de texto de coordenadas obtengo un Array
		
		var num1 = 0; // Para empezar por lo impares del array posiciones (eje X)
		var totalHorizontal = 0;
		while(num1<posiciones.length){
			totalHorizontal = totalHorizontal+parseInt(posiciones[num1])
			num1++; num1++;
		}
		var mediaHorizontal = Math.floor(totalHorizontal/(posiciones.length/2));
		
		var num2 = 1;// Para empezar por los pares del array posiciones (eje Y)
		var numeroMayor = 0;
		while(num2<posiciones.length){
			var numPosicion = parseInt(posiciones[num2]); // Casting a numero entero
			if(numPosicion>numeroMayor){
				numeroMayor = numPosicion;
			}
			num2++; num2++;
		}
		
		var valores = new Array();
		valores[0]=mediaHorizontal;
		valores[1]=numeroMayor+1;
		return valores
	}
}


function Compartir () {
	this.datos = {
		capa: '.componenteCompartir .componenteBotonera .botones'
		,htmlBoton: '<input type="button" value="Cancelar" class="boton negativo plegar-caja" />'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.datos.capa).each(function (el) {
			Element.insert(el,{bottom:that.datos.htmlBoton});
		});
	}
}

function Paginacion () {
	this.datos = {
		selector: '.componentePaginacion select'
	}
	
	this.inicia = function () {
		var that = this;
		var select = $$(that.datos.selector).each(function (el) {
			el.up().next().remove();
			el.observe('change',function () {
				var formulario = Element.closest(this,'form');
				if (formulario) {
					formulario.submit();
				}
			});
		});
	}
}

function TablaDesplegable () {
	this.datos = {
		bloqueTbody: 'tbody.ampliable',
		fila: 'tbody.ampliable tr.ampliacion',
		claseFila: '.ampliacion',
		imgPlegado: '/Portal/imagenes/CM_IMG_control_plegado.gif',
		textoPlegado: 'Ampliar información',
		imgDesplegado: '/Portal/imagenes/CM_IMG_control_desplegado.gif',
		textoDesplegado: 'Ocultar información',
		claseDesplegado: 'ampliado',
		clasePlegado: 'noAmpliado',
		claseFilaActiva: 'fila-activa'
	}
	
	this.inicia = function () {
		var that = this;
		that.ocultarFilas();
		that.insertarEnlaces();
	}
	
	this.insertarEnlaces = function () {
		var that = this;
		$$(that.datos.bloqueTbody).each(function (el) {
			var celda = el.down('td',0);
			Element.insert(celda,{bottom: '<a href="#"><img src="'+that.datos.imgPlegado+'" alt="'+that.datos.textoPlegado+'" /></a>'});
			var enlace = celda.down('a');
			that.alternarFilas(enlace);
		});
	}
	
	this.alternarFilas = function (enlace) {
		var that = this;
		enlace.observe('click',function (ev) {
			Event.stop(ev);
			var filaAlternada = enlace.up().up().next();
			var imagen = enlace.down();
			var filaOriginal = Element.closest(enlace,'tr');
			
			if (enlace.hasClassName(that.datos.claseDesplegado)) {
				imagen.src = that.datos.imgPlegado;
				imagen.alt = that.datos.textoPlegado;
				filaOriginal.removeClassName(that.datos.claseFilaActiva);
			}
			else {
				imagen.src = that.datos.imgDesplegado;
				imagen.alt = that.datos.textoDesplegado;
				filaOriginal.addClassName(that.datos.claseFilaActiva);
			}
			
			enlace.toggleClassName(that.datos.claseDesplegado);
			filaAlternada.toggleClassName(that.datos.clasePlegado);
			filaAlternada.toggle();
		});
	}
	
	this.ocultarFilas = function () {
		var that = this;
		$$(that.datos.fila).each(function (el) {
			el.addClassName(that.datos.clasePlegado);
			el.hide();
		});
	}
}

function EnlacesOrdenacion () {
	
	this.datos = {
		enlace: 'div.componenteTabla table thead th a',
		diferencia: '_hover'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.datos.enlace).each(function (el) {
			if (el.down('img')) {
				var imagen = el.down('img').readAttribute('src');
				var imagenFragmento = imagen.split('.');
				var extension = imagen.split('.');
				extension = extension[extension.length-1];
				extension = '.'+extension;
				
				var imagenSinExtension = '';
				var fragmento = 0; while (fragmento<(imagenFragmento.length-1)) {
					imagenSinExtension = imagenSinExtension+imagenFragmento[fragmento];
					fragmento++;
				}
				
				el.observe('mouseover', function () {
					el.down('img').src = imagenSinExtension+that.datos.diferencia+extension;
				});
				
				el.observe('mouseout', function () {
					el.down('img').src = imagenSinExtension+extension;
				});
			}
			
		});
	}
	
}

function Foco () {
	this.datos = {
		selector: ''
		,claseFoco: 'activo'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.datos.selector).each(function (el) {
			el.observe('focus',function () {
				el.addClassName(that.datos.claseFoco);
			});
			
			el.observe('blur',function () {
				el.removeClassName(that.datos.claseFoco);
			});
		});
	}
}

/*function ComponentePestanas () {
	this.datos = {
		selectorComponente: 'div.componentePestanasDinamico',
		selectorPestana: 'div.componentePestanasDinamico div.pestana',
		clasePestana: 'pestana',
		clasePestanaEnlace: 'enlace',
		selectorClasePestana: '.pestana',
		claseSeleccionado: 'seleccionado',
		claseSeleccionadoPrimera: 'primeraSeleccionado',
		selectorTitulo: 'div.componentePestanasDinamico .tituloPestana',
		selectorEnlace: 'div.componentePestanasDinamico div.listaPestanas a',
		selectorElementoLista: 'div.componentePestanasDinamico div.listaPestanas li',
		clasePrimera: 'primera',
		claseUltima: 'ultima',
		listadoGenerado: '<div class="listaPestanas"><ul class="clear"></ul></div>',
		prefijoId: 'pestana_'
	}
	
	this.inicia = function () {
		var that = this;
		that.ocultarTitulos();
		that.tratarPestanasInicial();
		that.generarListas();
		that.generarElementosDeListas();
		that.alternarPestanas();
	}
	
	this.ocultarTitulos = function () {
		var that = this;
		$$(that.datos.selectorTitulo).each(function (el,indice) {
			el.hide();
			el.id = that.datos.prefijoId+''+indice;
		});
	}
	
	this.tratarPestanasInicial = function () {
		var that = this;
		$$(that.datos.selectorPestana).each(function (el) {
			if (!el.hasClassName(that.datos.clasePrimera)) {
				el.hide();
			}
		});
	}
	
	this.ocultarPestanasEnAlternancia = function (elemento) {
		var that = this;
		elemento.up(3).siblings().each(function (el) {
			if (el.hasClassName(that.datos.clasePestana)) {
				el.hide();
			}
		});
	}
	
	
	this.generarListas = function () {
		var that = this;
		$$(that.datos.selectorPestana+'.'+that.datos.clasePrimera).each(function (el) {
			Element.insert(el,{before: that.datos.listadoGenerado});
		});
	}
	
	this.generarElementosDeListas = function () {
		var that = this;
		
		$$(that.datos.selectorTitulo).each(function (el) {
			var clase = ''; var numClases = 0;
			if (el.up().hasClassName(that.datos.clasePrimera)) {
				clase = that.datos.claseSeleccionado;
				numClases++;
			}
			if (el.up().hasClassName(that.datos.clasePestanaEnlace)) {
				if (numClases>0) {clase += ' ';}
				clase += that.datos.clasePestanaEnlace;
				numClases++;
			}
			
			if (numClases>0) {clase = ' class="'+clase+'"';}
			
			var texto = el.firstChild.nodeValue;
			var lista = el.up().up().down('div',0).down('ul');
			var idTitulo = el.id;
			Element.insert(lista,{bottom:'<li'+clase+'><span><a href="#'+idTitulo+'">'+texto+'</a></span></li>'});
		});
		
		$$(that.datos.selectorElementoLista+':first-child').each(function (el) {
			el.addClassName(that.datos.clasePrimera);
			el.addClassName(that.datos.claseSeleccionadoPrimera);
		});
		
		$$(that.datos.selectorElementoLista+':last-child').each(function (el) {
			el.addClassName(that.datos.claseUltima);
		});
	}
	
	this.alternarPestanas = function () {
		var that = this;
		$$(that.datos.selectorEnlace).each(function (el) {
			el.observe('click',function (ev) {
				Event.stop(ev);
				var marcador = el.href.split('#'); marcador = marcador[(marcador.length-1)];
				that.ocultarPestanasEnAlternancia(el);
				that.variarSeleccionado(el);
				$(marcador).up().show();
			});
		});
	}
	
	this.variarSeleccionado = function (elemento) {
		var that = this;
		var pestana = elemento.up(1);
		pestana.siblings().each(function (el) {
			el.removeClassName(that.datos.claseSeleccionado);
			if (el.match(that.datos.selectorElementoLista+':first-child')) {el.removeClassName(that.datos.claseSeleccionadoPrimera);}
		});
		pestana.addClassName(that.datos.claseSeleccionado);
		if (pestana.match(that.datos.selectorElementoLista+':first-child')) {pestana.addClassName(that.datos.claseSeleccionadoPrimera);}
	}
}*/

function ContenidoDesplegable () {
	this.datos = {
		capa: 'div.componenteContenidoDesplegable',
		capaInferior: 'div.texto',
		titulo: '.titulo',
		claseDesplegado: 'desplegado',
		claseSinPlegar: 'sinPlegar',
		claseAccionPlegar: '.plegar-caja',
		enlaceTitulo: '.titulo-caja-contenido a',
		cajaContenido: '.texto-caja-contenido',
		niveles: 0
	}
	
	this.inicia = function () {
		var that = this;
		that.generaEnlaceYOcultaContenido();
		that.alternaContenido();
	}
	
	this.alternaContenido = function () {
		var that = this;
		$$(that.datos.capa+' '+that.datos.titulo+' a, '+that.datos.capa+' '+that.datos.claseAccionPlegar).each(function (el) {
			el.observe('click',function (ev) {
				Event.stop(ev);
				var capa = Element.closest(el,that.datos.capa);
				capa.select(that.datos.enlaceTitulo)[0].toggleClassName(that.datos.claseDesplegado);
				capa.toggleClassName(that.datos.claseDesplegado);
				capa.select(that.datos.cajaContenido)[0].toggle();
			});
		});
	}
	
	this.generaEnlaceYOcultaContenido = function () {
		var that = this;
		$$(that.datos.capa).each(function (el) {
			var titulo = el.down(that.datos.titulo).firstChild;
			var enlace = new Element('a', { 'href': '#' });
			Element.wrap(titulo,enlace);
			if (el.hasClassName(that.datos.claseSinPlegar)) {el.down(that.datos.titulo).down('a').addClassName(that.datos.claseDesplegado);}
			else {el.down(that.datos.capaInferior).hide();}
		});
	}
}

function ComponentePestanas () {
	this.datos = {
		selectorComponente: 'div.componentePestanasDinamico',
		selectorPestana: 'div.componentePestanasDinamico div.pestana',
		clasePestana: 'pestana',
		clasePestanaEnlace: 'enlace',
		selectorClasePestana: '.pestana',
		claseSeleccionado: 'seleccionado',
		claseSeleccionadoPrimera: 'primeraSeleccionado',
		selectorTitulo: 'div.componentePestanasDinamico .tituloPestana',
		selectorEnlace: 'div.componentePestanasDinamico div.listaPestanas a',
		selectorElementoLista: 'div.componentePestanasDinamico div.listaPestanas li',
		clasePrimera: 'primera',
		claseUltima: 'ultima',
		listadoGenerado: '<div class="listaPestanas"><ul class="clear"></ul></div>',
		prefijoId: 'pestana_'
	}
	
	this.inicia = function () {
		var that = this;
		that.ocultarTitulos();
		that.tratarPestanasInicial();
		that.generarListas();
		that.generarElementosDeListas();
		that.alternarPestanas();
	}
	
	this.ocultarTitulos = function () {
		var that = this;
		$$(that.datos.selectorTitulo).each(function (el,indice) {
			el.hide();
			el.id = that.datos.prefijoId+''+indice;
		});
	}
	
	this.tratarPestanasInicial = function () {
		var that = this;
		$$(that.datos.selectorPestana).each(function (el) {
			if (!el.hasClassName(that.datos.clasePrimera)) {
				el.hide();
			}
		});
	}
	
	this.ocultarPestanasEnAlternancia = function (elemento) {
		var that = this;
		elemento.up(3).siblings().each(function (el) {
			if (el.hasClassName(that.datos.clasePestana)) {
				el.hide();
			}
		});
	}
	
	
	this.generarListas = function () {
		var that = this;
		$$(that.datos.selectorPestana+'.'+that.datos.clasePrimera).each(function (el) {
			Element.insert(el,{before: that.datos.listadoGenerado});
		});
	}
	
	this.generarElementosDeListas = function () {
		var that = this;
		
		$$(that.datos.selectorTitulo).each(function (el) {
			var clase = ''; var numClases = 0;
			if (el.up().hasClassName(that.datos.clasePrimera)) {
				clase = that.datos.claseSeleccionado;
				numClases++;
			}
			if (el.up().hasClassName(that.datos.clasePestanaEnlace)) {
				if (numClases>0) {clase += ' ';}
				clase += that.datos.clasePestanaEnlace;
				numClases++;
			}
			
			if (numClases>0) {clase = ' class="'+clase+'"';}
			
			var texto = el.firstChild.nodeValue;
			if (el.select('img').length>0) {
				texto = el.innerHTML;
			}
			
			var lista = el.up().up().down('div',0).down('ul');
			var idTitulo = el.id;
			Element.insert(lista,{bottom:'<li'+clase+'><span><a href="#'+idTitulo+'">'+texto+'</a></span></li>'});
		});
		
		$$(that.datos.selectorElementoLista+':first-child').each(function (el) {
			el.addClassName(that.datos.clasePrimera);
			el.addClassName(that.datos.claseSeleccionadoPrimera);
		});
		
		$$(that.datos.selectorElementoLista+':last-child').each(function (el) {
			el.addClassName(that.datos.claseUltima);
		});
	}
	
	this.alternarPestanas = function () {
		var that = this;
		$$(that.datos.selectorEnlace).each(function (el) {
			el.observe('click',function (ev) {
				Event.stop(ev);
				var marcador = el.href.split('#'); marcador = marcador[(marcador.length-1)];
				that.ocultarPestanasEnAlternancia(el);
				that.variarSeleccionado(el);
				$(marcador).up().show();
			});
		});
	}
	
	this.variarSeleccionado = function (elemento) {
		var that = this;
		var pestana = elemento.up(1);
		pestana.siblings().each(function (el) {
			el.removeClassName(that.datos.claseSeleccionado);
			if (el.match(that.datos.selectorElementoLista+':first-child')) {el.removeClassName(that.datos.claseSeleccionadoPrimera);}
		});
		pestana.addClassName(that.datos.claseSeleccionado);
		if (pestana.match(that.datos.selectorElementoLista+':first-child')) {pestana.addClassName(that.datos.claseSeleccionadoPrimera);}
	}
}

function AyudaEmergente () {
	
	this.datos = {
		capa: '',
		capaAyudaGenerica: '',
		capaAyuda: '',
		claseJs1: '',
		claseJs2: '',
		htmlEnlace: '',
		htmlEnlaceImg: '',
		htmlEnlaceImgHover: '',
		htmlEnlaceCerrar: '',
		relEnlace: '',
		relEnlaceCerrar: '',
		idActivo: ''
	}
	
	this.inicia = function () {
		var that = this;
		that.claseJs();
		that.ocultarAyuda();
		that.generarEnlace();
	}
	
	this.generarEnlace = function () {
		var that = this;
		$$(that.datos.capaAyuda).each(function (el) {
			if (el.previous().select('a[rel="'+that.datos.relEnlace+'"]').length<1) {
				Element.insert(el.previous(),{bottom: that.datos.htmlEnlace});
			}
			Element.insert(el.down(),{bottom: that.datos.htmlEnlaceCerrar});
		});
		that.alternarAyudas();
	}
	
	this.alternarAyudas = function () {
		var that = this;
		$$(that.datos.capa+' a[rel="'+that.datos.relEnlace+'"]').each(function (enlace) {
			enlace.observe('click',function (ev) {
				Event.stop(ev);
				that.ocultarAyuda();
				enlace.up(1).id = that.datos.idActivo;
				if(/MSIE 6.0/i.test(navigator.userAgent)) {alternarSelect('ocultar');}
				enlace.up(0).next().show();
			});
		});
		
		$$(that.datos.capa+' a[rel="'+that.datos.relEnlaceCerrar+'"]').each(function (enlace) {
			enlace.observe('click',function (ev) {
				Event.stop(ev);
				that.cerrarEmergente();
			});
		});
	}
	
	this.cerrarEmergente = function () {
		var that = this;
		that.ocultarAyuda();
		if(/MSIE 6.0/i.test(navigator.userAgent)) {alternarSelect('mostrar');}
	}
	
	this.ocultarAyuda = function () {
		var that = this;
		$$(that.datos.capaAyudaGenerica).each(function (el) {
			el.hide();
			el.up().id = '';
		});
	}
	
	this.claseJs = function () {
		var that = this;
		$$(that.datos.capa).each(function (el) {
			el.addClassName(that.datos.claseJs1);
			el.addClassName(that.datos.claseJs2);
		});
	}
	
}


function OpcionesRadio () {
	
	this.datos = {
		capa: 'div.componenteOpcionesRadio',
		radio: 'div.componenteOpcionesRadio div.componenteCampoRadio input[type="radio"]'
	}
	
	this.inicia = function () {
		var that = this;
		
		$$(that.datos.capa).each(function (el) {
			that.preparacion(el);
		});
	}
	
	this.preparacion = function (el) {
		var that = this;
		that.ocultarOpciones(el);
		var radios = el.down(0).getElementsByTagName('input');
		for (i=0;i<radios.length;i++) {
			var radio = radios[i];
			radio.observe('click',function () {
				that.ocultarOpciones(el);
				$(this.up().readAttribute('class')).show();
			});
		}
	}
	
	this.ocultarOpciones = function (el) {
		var that = this;
		var radios = el.down(0).getElementsByTagName('input');
		for (i=0;i<radios.length;i++) {
			var radio = radios[i];
			if (!radio.checked) {$(radio.up().readAttribute('class')).hide();}
		}
	}
	
}

function mapasGoogle () {
	$$('.componenteMapaGoogle').each(function (el) {
		var identificador = el.id;
		gmaps_iniciar(identificador,'ubicacion-'+identificador);
	});
}

function gmaps_iniciar (idMapa,idUbicacion) {
	var map,geocoder;
	geocoder = new google.maps.Geocoder();
	var myOptions = {
		zoom: 15,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	$(idMapa).update('');
	map = new google.maps.Map(document.getElementById(idMapa), myOptions);
	gmaps_ubicar(idUbicacion,geocoder,map);
	setTimeout('gmaps_teclado("'+idMapa+'");',6000);
}

function gmaps_ubicar(ubicacion,geocoder,map) {
	var address = $(ubicacion).innerHTML.stripTags();
	if (geocoder) {
		geocoder.geocode( { 'address': address}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map.setCenter(results[0].geometry.location);
				var marker = new google.maps.Marker({
						map: map, 
						position: results[0].geometry.location
				});
			} else {
				alert("Error en la localización: " + status);
			}
		});
	}
}
//Cambiar estilo de mapa
function gmaps_teclado(mapa) {
	var capaMapa = mapa; // cambiar por id de la capa en la que se inserta el mapa
	var button, button_style = 'width:100%;height:100%;padding:2px;margin:2px;background:transparent;border-width:0px;border-style:solid;cursor:pointer;overflow:hidden;text-indent:-100em;position:absolute;top:-2px;left:-2px;';
	var divs = document.getElementById(capaMapa).getElementsByTagName('div');
	for (var i = 0; i < (divs.length); i++) {
		if ( divs[i].getAttribute('title')) {
			// Se genera el button
			button = document.createElement("button");
			button.setAttribute('id','boton-mapa-'+i);
			button.setAttribute('value',divs[i].getAttribute('title'));
			
			// estilos...
			button.setAttribute('style',button_style); // Para navegadores de verdad
			button.style.cssText = button_style; // Para IE
			
			// Se añade el button
			divs[i].appendChild(button);
			$('boton-mapa-'+i).style.height = button.up().getHeight()+'px';
		}
	}
}


function PreguntasFrecuentes () {
	
	this.datos = {
		capa: 'div.componenteFaq',
		pregunta: '.faq-pregunta',
		respuesta: '.faq-respuesta',
		claseDesplegado: 'desplegado',
		htmlAlternarTodo: '<ul class="faq-alternar clear"><li class="desplegar"><a href="#">Desplegar todas</a></li><li class="plegar"><a href="#">Contraer todas</a></li></ul>',
		alternarTodas: '.faq-alternar',
		desplegarTodas: '.desplegar',
		plegarTodas: '.plegar'
	}
	
	
	this.inicia = function () {
		var that = this;
		$$(that.datos.capa).each(function (faq) {
			that.ocultarRespuestas(faq);
			that.generarEnlaces(faq);
			that.generarEnlacesAlternarTodo(faq);
		});
	}
	
	this.generarEnlacesAlternarTodo = function (faq) {
		var that = this;
		Element.insert(faq,{top:that.datos.htmlAlternarTodo});
		var alternarTodas = faq.select(that.datos.alternarTodas)[0];
		alternarTodas.down(that.datos.plegarTodas).hide();
		that.alternarTodas(faq,alternarTodas);
	}
	
	this.generarEnlaces = function (faq) {
		var that = this;
		faq.select(that.datos.pregunta).each(function (el) {
			
			if (el.select('p, span, div').length>0) {
				var enlace = new Element('a', { 'href': '#' });
				el.down().wrap(enlace);
			} else {
				var texto = el.firstChild.nodeValue;
				el.update('<a href="#">'+texto+'</a>');
			}
			
			that.alternarIndividual(el.down('a'));
		});
	}
	
	this.alternarTodas = function (faq,alternarTodas) {
		var that = this;
		var desplegar = alternarTodas.down(that.datos.desplegarTodas);
		var enlaceDesplegar = desplegar.down('a');
		var plegar = alternarTodas.down(that.datos.plegarTodas);
		var enlacePlegar = plegar.down('a');
		
		enlaceDesplegar.observe('click',function (ev) {
			Event.stop(ev);
			desplegar.hide();
			plegar.show();
			that.mostrarRespuestas(faq);
		});
		
		enlacePlegar.observe('click',function (ev) {
			Event.stop(ev);
			plegar.hide();
			desplegar.show();
			that.ocultarRespuestas(faq);
		});
	}
	
	this.alternarIndividual = function (enlace) {
		var that = this;
		enlace.observe('click',function (ev) {
			Event.stop(ev);
			enlace.toggleClassName(that.datos.claseDesplegado);
			enlace.up().next().toggle();
		});
	}
	
	this.ocultarRespuestas = function (faq) {
		var that = this;
		faq.select(that.datos.respuesta).each(function (el) {
			el.hide();
			var enlace = el.previous().down('a');
			if (enlace) {enlace.removeClassName(that.datos.claseDesplegado);}
		});
	}
	this.mostrarRespuestas = function (faq) {
		var that = this;
		faq.select(that.datos.respuesta).each(function (el) {
			el.show();
			el.previous().down('a').addClassName(that.datos.claseDesplegado);
		});
	}
	
}

function IgualarAlturas () {
	
	this.datos =  {
		capaSuperior: '',
		claseCapaInferior: '',
		correccionAltura: ''
	}
	
	this.inicia = function () {
		var that = this;
		
		$$(that.datos.capaSuperior).each(function (el) {
			var capas = el.childElements();
			
			var i = 0; var alturaFinal = 0;
			while (i<capas.length) {
				altoCapa = capas[i].getHeight();
				if (altoCapa>alturaFinal) {alturaFinal=altoCapa;}
				i++;
			}
			alturaFinal=alturaFinal-that.datos.correccionAltura;
			capas.each(function (el2) {
				el2.style.height = alturaFinal+'px';
			});
		});
	}
}

function IgualarAlturasAvanzado () {
	
	this.datos =  {
		capaSuperior: ''
		,capaInferior: ''
		,correccionAltura: 0
		,jsFinal: ''
	}
	
	this.inicia = function () {
		var that = this;
		
		$$(that.datos.capaSuperior).each(function (el) {
			var capas = el.select(that.datos.capaInferior);
			
			var i = 0; var alturaFinal = 0;
			while (i<capas.length) {
				altoCapa = capas[i].getHeight();
				if (altoCapa>alturaFinal) {alturaFinal=altoCapa;}
				i++;
			}
			alturaFinal=alturaFinal-that.datos.correccionAltura;
			capas.each(function (el2) {
				el2.style.height = alturaFinal+'px';
			});
		});
		if (that.datos.jsFinal.length>0) {eval(that.datos.jsFinal);} 
	}
}


function Destacados () {
	this.selectores = {
		selector: '.dh, .dv'
		,imagen: '.imagen'
	}
	
	this.clases = {
		claseSinImagen: 'sin-imagen'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.selector).each(function (el) {
			if (el.select(that.selectores.imagen).length==0) {
				el.addClassName(that.clases.claseSinImagen);
				/*el.down('div',0).setStyle({
					cssFloat: 'none',
					width: 'auto'
				});*/
			}
		});
	}
}

function Carrusel () {
	this.datos = {
		listaPestanas: '.componenteGaleria>.lista'
		,correccionPosicionIzquierda: 1
		,correccionAnchoPestanas: 0
		,claseCarrusel: 'carrusel'
		,htmlNavegacion: '<ul class="navegacion-carrusel clear"><li class="anterior"><a href="#"><img src="/Portal/imagenes/AP_IMG_control_carrusel_01_anterior.gif" alt="Mover a la izquierda" /></a></li><li class="siguiente"><a href="#"><img src="/Portal/imagenes/AP_IMG_control_carrusel_02_siguiente.gif" alt="Mover a la derecha" /></a></li></ul>'
		,claseListaNavegacion: 'navegacion-carrusel'
		,claseIcoActivo: 'activo'
		,claseIcoAnterior: 'anterior'
		,icoAnterior: '/Portal/imagenes/AP_IMG_control_carrusel_01_anterior.gif'
		,icoAnteriorHover: '/Portal/imagenes/AP_IMG_control_carrusel_01_anterior_hover.gif'
		,claseIcoSiguiente: 'siguiente'
		,icoSiguiente: '/Portal/imagenes/AP_IMG_control_carrusel_02_siguiente.gif'
		,icoSiguienteHover: '/Portal/imagenes/AP_IMG_control_carrusel_02_siguiente_hover.gif'
		,claseIcoDesplegar: 'desplegar'
		,icoDesplegar: '/Portal/imagenes/AP_IMG_control_carrusel_03_desplegar.gif'
		,icoDesplegarHover: '/Portal/imagenes/AP_IMG_control_carrusel_03_desplegar_hover.gif'
		//,htmlListaSecundaria: '<ul class="lista-secundaria"></ul>'
		,listaSecundaria: '.lista-secundaria'
		,claseSeleccionado: 'seleccionado'
		,selectorComponente: '.componenteGaleria'
		,distanciaIndividual: 80
		,movimientoIndividual: 1
		,distanciaGrupo: 400
		,movimientoGrupo: 5
		,claseMovimientoIndividual: 'movimiento-individual'
		,htmlNumeracion: '<p class="numeracion"><span class="indentado">Viendo </span><em class="numeracion-parcial-inicio"></em> a <em class="numeracion-parcial-final"></em> de <em class="numeracion-total"></em></p>'
		,numeracion: '.numeracion'
		,numeracionParcialInicio: '.numeracion-parcial-inicio'
		,numeracionParcialFinal: '.numeracion-parcial-final'
		,numeracionTotal: '.numeracion-total'
		,listaImagenes: '.imagenes li'
		,imagenSeleccionada: '.imagen-seleccionada'
		,claseCarruselConImagenSeleccionada: 'carrusel-con-imagen-seleccionada'
		,htmlImagenSeleccionada: '<p></p>'
	}
	
	this.inicia = function () {
		var that = this;
		
		$$(that.datos.listaPestanas).each(function (el) {
			that.imagenSeleccionada(el.up());
			var pestanas = el.select('li');
			var anchoComponente = el.getWidth();
			
			var anchoLista = 0;
			var i=0; while (i<pestanas.length) {
				anchoLista = anchoLista+pestanas[i].getWidth();
				i++;
			}
			var anchoPestanas = ((i-1)*that.datos.correccionAnchoPestanas)+anchoLista;
			if (anchoPestanas>anchoComponente) {
				el.addClassName(that.datos.claseCarrusel);
				el.down('ul').setStyle({
					 width: (anchoPestanas/10)+'em'
				});
				Element.wrap(el.down('ul'),'div');
				//Element.insert(el,{bottom: that.datos.htmlListaSecundaria});
				
				that.navegacion(el.down('div'));
				
				/*var altoComponente = el.select('ul')[0].getHeight();
				el.setStyle({height: (altoComponente/10)+'em'});
				el.down('div').setStyle({height: (altoComponente/10)+'em'});*/
			}
		});
		
	}
	
	this.imagenSeleccionada = function (el) {
		var that = this;
		if (el.select(that.datos.imagenSeleccionada).length==1) {
			el.addClassName(that.datos.claseCarruselConImagenSeleccionada);
		}
	}
	
	this.navegacion = function (el) {
		var that = this;
		Element.insert(el,{bottom: that.datos.htmlNavegacion});
		var lista = el.select('.'+that.datos.claseListaNavegacion)[0];
		
		
		var anterior = lista.select('li.'+that.datos.claseIcoAnterior+' a')[0];if (el.up().style.left==0) {anterior.hide();}
		var siguiente = lista.select('li.'+that.datos.claseIcoSiguiente+' a')[0];
		
		
		that.rollover(anterior,that.datos.icoAnterior,that.datos.icoAnteriorHover);
		that.rollover(siguiente,that.datos.icoSiguiente,that.datos.icoSiguienteHover);
		
		this.numeracion(el.up());
		
		that.mover(siguiente,-1);
		that.mover(anterior,1);
		
	}
	
	this.numeracion = function (el) {
		var that = this;
		
		var primero = 1;
		var ultimo = that.datos.movimientoGrupo;
		var total = el.select(that.datos.listaImagenes).length;
		
		Element.insert(el,{top:that.datos.htmlNumeracion});
		el.select(that.datos.numeracionParcialInicio)[0].update(primero);
		el.select(that.datos.numeracionParcialFinal)[0].update(ultimo);
		el.select(that.datos.numeracionTotal)[0].update(total);
	}
	
	this.variarNumeracion = function (elemento,signo) {
		var that = this;
		
		var componente = Element.closest(elemento,that.datos.selectorComponente);
		var movimiento = that.datos.movimientoGrupo; if (componente.hasClassName(that.datos.claseMovimientoIndividual)) {movimiento = that.datos.movimientoIndividual;}
		
		var numeracion = componente.select(that.datos.numeracion)[0];
		var numPrimero = numeracion.select(that.datos.numeracionParcialInicio)[0];
		var numUltimo = numeracion.select(that.datos.numeracionParcialFinal)[0];
		
		var primero = (parseInt(numPrimero.firstChild.nodeValue))+(movimiento*signo*(-1));
		numPrimero.update(primero);
		
		var ultimo = (parseInt(numUltimo.firstChild.nodeValue))+(movimiento*signo*(-1));
		numUltimo.update(ultimo);
	}
	
	this.mover = function (elemento,signo) {
		var that = this;
		elemento.observe('click',function (ev) {
			that.variarNumeracion(elemento,signo);
			Event.stop(ev);
			if (signo>0) {
				Element.closest(elemento,'.'+that.datos.claseListaNavegacion).select('.'+that.datos.claseIcoSiguiente+' a')[0].show();
			} else {
				Element.closest(elemento,'.'+that.datos.claseListaNavegacion).select('.'+that.datos.claseIcoAnterior+' a')[0].show();
			}
			var listaPestanas = elemento.up(1).previous();
			var componente = Element.closest(elemento,that.datos.selectorComponente);
			var distancia = that.datos.distanciaGrupo; if (componente.hasClassName(that.datos.claseMovimientoIndividual)) {distancia = that.datos.distanciaIndividual;}
			var anchoListaPestanas = listaPestanas.getWidth();
			var capaPestanas = elemento.up(2);
			var diferencia = parseInt(capaPestanas.getStyle('padding-right').split('px')[0]);
			if(/MSIE /i.test(navigator.userAgent)) {diferencia = parseFloat(capaPestanas.getStyle('padding-right').split('em')[0])*10;}
			
			var anchoCapaPestanas = capaPestanas.getWidth();
			//var anchoCapaSuperior = anchoCapaPestanas+diferencia+(signo*that.datos.correccionAnchoPestanas);console.log(anchoCapaSuperior);
			var anchoCapaSuperior = anchoCapaPestanas+(signo*that.datos.correccionAnchoPestanas);
			
			//var posicionIzquierdaMaxima = (anchoListaPestanas-anchoCapaSuperior)*signo;
			var posicionIzquierdaMaxima = (anchoListaPestanas-anchoCapaSuperior+diferencia+that.datos.correccionPosicionIzquierda)*signo;
			var posicionIzquierdaActual = parseInt(listaPestanas.getStyle('left').split('px')[0]);//
			var posicionIzquierdaProxima = posicionIzquierdaActual+(signo*distancia);
			
			if (posicionIzquierdaProxima<posicionIzquierdaMaxima && signo<0) {
				posicionIzquierdaProxima=posicionIzquierdaMaxima;
				Element.closest(elemento,'.'+that.datos.claseListaNavegacion).select('.'+that.datos.claseIcoSiguiente+' a')[0].hide();
			}
			if (posicionIzquierdaProxima>0 && signo>0) {
				posicionIzquierdaProxima=0;
				Element.closest(elemento,'.'+that.datos.claseListaNavegacion).select('.'+that.datos.claseIcoAnterior+' a')[0].hide();
			}
			//console.log(posicionIzquierdaProxima+'>'+posicionIzquierdaMaxima)
			listaPestanas.setStyle({left: ((posicionIzquierdaProxima)/1)+'px'});
		});
	}
	
	this.rollover = function (elemento,imagen,imagenHover) {
		elemento.observe('mouseenter',function () {
			elemento.down('img').src = imagenHover;
		});
		elemento.observe('mouseout',function () {
			elemento.down('img').src = imagen;
		});
	}
	
	
	
}

function TinyBox_v3 () {
	
	this.datos = {
		enlace: 'a.tiny-show',
		capa1: 'tiny-over',
		capa2: 'tiny-tbox',
		capa3: '#contenidoModal',
		capa4: '#interior-contenido-modal',
		opacidad: 40,
		enlaceVolver: 'modal-volver',
		selectorEliminar:'.pop-up',
		htmlCerrar1: '<p id="modal-cerrar"><a href="#" class="tiny-hide"><img src="/Portal/imagenes/CM_IMG_ico_cerrar.gif" alt="Cerrar" /></a></p>',
		//htmlCerrar2: '<div class="componenteBotonera"><div class="grupo-botones"><p class="clear botones"><input type="button" class="boton negativo tiny-hide" value="Cerrar" /></p></div></div>',
		htmlCerrar2: '',
		imagenCerrar: '/Portal/imagenes/CM_IMG_ico_cerrar.gif',
		imagenCerrarHover: '/Portal/imagenes/CM_IMG_ico_cerrar_hover.gif',
		enlaceCierre: '.tiny-hide',
		enlaceInicial: 'modal-enlace-inicial',
		tituloModal: '.titulo-modal',
		contenedorModal: '.caja-modal-4',
		htmlEnlaceInicial: '<p style="visibility:hidden;"><a id="modal-enlace-inicial" href="#" class="tiny-hide">Cerrar modal</a></p>',
		usarVolver: true
	}
	
	this.precargar = {
		imagenes: ['CM_IMG_CSS_modal_04_inferior_derecha.png','CM_IMG_CSS_modal_03_inferior_izquierda.png','CM_IMG_CSS_modal_02_superior_derecha.png','CM_IMG_CSS_modal_01_superior_izquierda.png','CM_IMG_CSS_modal_08_interior_inferior_derecha.png','CM_IMG_CSS_modal_07_interior_inferior_izquierda.png','CM_IMG_CSS_modal_06_interior_superior_derecha.png','CM_IMG_CSS_modal_05_interior_superior_izquierda.png']
		,ruta: '/Portal/imagenes/'
	}
	
	this.inicia = function () {
		var that = this;
		that.precargarImagenes();
		$$(that.datos.enlace).each(function (enlace) {
			enlace.observe('click',function (ev) {
				Event.stop(ev);
				if(/MSIE 6.0/i.test(navigator.userAgent)) {alternarSelect('ocultar');}
				var url = enlace.readAttribute('href');
				var clase = enlace.readAttribute('rel');
				
				that.generarCapas(clase,enlace);
				that.estilarCapa1_Over();
				that.cargarExterno(url,enlace);
				//that.cargar
			});
		});
	}
	
	this.precargarImagenes = function () {
		var that = this;
		var imagenes = that.precargar.imagenes;
		var numImagenes = imagenes.length;
		var i =0;
		while (i<numImagenes) {
			var imagen = new Image();
			imagen.src = that.precargar.ruta+imagenes[i];
			i++;
		}
	}
	
	this.generarCapas = function (clase,enlace) {
		var that = this;
		var html = '<div id="'+that.datos.capa1+'"></div><div class="'+clase+'" id="'+that.datos.capa2+'">'+that.datos.htmlEnlaceInicial+'</div>';
		var bodyTag = $$('body')[0];
		
		
		Element.insert(bodyTag,{bottom: html});
		$(that.datos.capa2).hide();
		$(that.datos.capa1).observe('click',function () {
			that.cerrarModal(enlace);
		});
	}
	
	this.estilarCapa1_Over = function () {
		var that = this;
		
		var altoVisible = document.viewport.getHeight();
		var altoTotal = document.body.clientHeight; if (altoVisible>altoTotal) {altoTotal=altoVisible;}
		var anchoVisible = document.viewport.getWidth();
		
		$(that.datos.capa1).setStyle({
			height: altoTotal+'px',
			width: anchoVisible+'px',
			opacity: (that.datos.opacidad/100),
			filter: 'alpha(opacity = '+that.datos.opacidad+')'
		});
		
	}
	
	this.estilarCapa2_Tbox = function () {
		var that = this;
		
		var capa2 = $(that.datos.capa2);
		var anchoVisible = document.viewport.getWidth();
		var anchoModal = capa2.getWidth();
		var altoVisible = document.viewport.getHeight();
		var altoModal = capa2.getHeight();
		var altoInvisible = document.viewport.getScrollOffsets()[1];
		
		var arriba = ((altoVisible-altoModal)/2)+altoInvisible;
		var izquierda = (anchoVisible-anchoModal)/2;
		
		capa2.setStyle({
			left: izquierda+'px',
			top: arriba+'px'
		});
		$(that.datos.enlaceInicial).setStyle({
			left: izquierda+'px',
			top: arriba+'px'
		});
		
	}
	
	this.cerrarModal = function (enlaceApertura) {
		var that = this;
		$(that.datos.capa1).remove();
		$(that.datos.capa2).remove();
		if(/MSIE 6.0/i.test(navigator.userAgent)) {alternarSelect('mostrar');}
		enlaceApertura.focus();
	}
	
	this.cargarExterno = function (url,enlaceApertura) {
		var that = this;
		
		new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
				
				var capa2 = $(that.datos.capa2);
				
				Element.insert(capa2,{bottom: transport.responseText});

				var capa3 = $$(that.datos.capa3)[0];
				var capa4 = $$(that.datos.capa4)[0];
				that.eliminarFragmentos(capa2);
				that.tratarRespuesta(capa2);
				Element.insert(capa3, {bottom: that.datos.htmlCerrar1})
				//Element.insert(capa4, {after: that.datos.htmlCerrar2})
				//alert($$(that.datos.capa3).length)
				that.estilarCapa2_Tbox();
				$$(that.datos.capa3+' '+that.datos.enlaceCierre).each(function (enlace) {
					enlace.observe('click', function (ev) {
						Event.stop(ev);
						that.cerrarModal(enlaceApertura);
					});
				});
				//that.funciones();
				capa2.show();
				//$(that.datos.enlaceInicial).focus();
				if (capa2.select('.componentePestanasDinamico')) {
					var pestanasModal = new ComponentePestanas();
					this.pestanasModal = {
						selectorComponente: '#tiny-tbox div.componentePestanasDinamico',
						selectorPestana: 'div.componentePestanasDinamico div.pestana',
						clasePestana: 'pestana',
						clasePestanaEnlace: 'enlace',
						selectorClasePestana: '.pestana',
						claseSeleccionado: 'seleccionado',
						claseSeleccionadoPrimera: 'primeraSeleccionado',
						selectorTitulo: 'div.componentePestanasDinamico .tituloPestana',
						selectorEnlace: 'div.componentePestanasDinamico div.listaPestanas a',
						selectorElementoLista: 'div.componentePestanasDinamico div.listaPestanas li',
						clasePrimera: 'primera',
						claseUltima: 'ultima',
						listadoGenerado: '<div class="listaPestanas"><ul class="clear"></ul></div>',
						prefijoId: 'pestana_'
					}
					pestanasModal.inicia();
				}
				if (capa2.select('.componenteGaleriaCarrusel')) {
					var galeriaCarrusel2 = new galeriaCarrusel();
					galeriaCarrusel2.selectores = {
					capa: '#tiny-tbox .componenteGaleriaCarrusel'
					,lista: '.listado-miniaturas'
					,elementoLista: 'li'
					,predeterminado: '.predeterminada'
					,seleccionado: '.seleccionado'
					,imagenGrande: '.imagen-grande'
					,controles: '.controles-carrusel'
					,controles2: '.controles-carrusel-sobre-imagen'
					,enlaceControlSiguiente: '.control-siguiente'
					,enlaceControlAnterior: '.control-anterior'
					,posiciones: '.posiciones'
					,posicionesInicial: '.posicion-inicial'
					,posicionesFinal: '.posicion-final'
					,posicionesTotal: '.posicion-total'
				}
						galeriaCarrusel2.inicia();
				}
				
			}
		});
		
	}
	
	this.tratarRespuesta = function (capa2) {
		var that = this;
		var titulo = capa2.select(that.datos.tituloModal);
		if (titulo.length==1) {
			var tituloModal = titulo[0];
			var ubicacion = capa2.select(that.datos.contenedorModal)[0];
			Element.appendTo(tituloModal,ubicacion,'top');
		}
	}
	
	this.eliminarFragmentos = function (capa2) {
		var that = this;
		if (that.datos.usarVolver) {
			var enlaceVuelta = $(that.datos.enlaceVolver);
			Element.remove(enlaceVuelta);
		} else {
			capa2.select(that.datos.selectorEliminar).each(function (elementoPopup) {
				Element.remove(elementoPopup)
			});
		}
	}
	
	this.funciones = function () {
	}
	
}

function VentanaPopup () {
	this.datos = {
		enlace: 'a.ventana-popup',
		posicionHorizontal: 0,
		posicion_vertical: 0,
		identidad: null,
		parametros: 'location=0,status=0,scrollbars=1',
		// Parámetros dimensiones window.open
		ancho: null,
		alto: null
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.datos.enlace).each(function (el) {
			el.observe('click',function (ev) {
				Event.stop(ev);
				var url = el.href;
				that.lanza(url,el)
			});
		});
	}
	
	this.lanza = function (url,el) {
		var that = this;
		
		var rel = el.rel.split(' ');
		that.datos.identidad = rel[0];
		that.datos.ancho = rel[1].split('x')[0];
		that.datos.alto = rel[1].split('x')[1];
		
		var correccionAlto = 32;
		var resolucionAncho = window.screen.width;
		var resolucionAlto = window.screen.height-correccionAlto;
		
		that.datos.posicionHorizontal = (resolucionAncho-that.datos.ancho)/2;
		that.datos.posicionVertical = (resolucionAlto-that.datos.alto)/2;
		
		var ventana = window.open(url, ""+that.datos.identidad+"", "width="+that.datos.ancho+",height="+that.datos.alto+","+that.datos.parametros+"");
		ventana.moveTo(that.datos.posicionHorizontal,that.datos.posicionVertical);
	}
}

function RolloverMenu () {

	this.selectores = {
		elemento: '#menu-primario li'
	}
	
	this.clases = {
		hover: 'hover'
	}
	
	this.inicia = function () {
		var that = this;
		$$(that.selectores.elemento).each(function(el) {
		
			el.observe('mouseover',function () {
				el.addClassName(that.clases.hover);
			});
		
			el.observe('mouseout',function () {
				el.removeClassName(that.clases.hover);
			});
		
		});
		
	}

}

function CajetinBusqueda () {
	this.datos = {
		buscador: '.componenteBuscadorCabecera'
		,campoTexto: 'label input'
		,campoBoton: 'input.buscador-boton'
		,claseInactivo: 'claro'
		,textoCampo: 'Buscar'
		,imagenBoton:'/Portal/imagenes/CM_IMG_boton_cajetin_busqueda.gif'
		,imagenBotonHover:'/Portal/imagenes/CM_IMG_boton_cajetin_busqueda_hover.gif'
		,campo:''
		,boton:''
	}
	
	this.inicia = function () {
		var that = this;
		var buscador = $$(that.datos.buscador)[0];
		if (buscador) {
			that.datos.campo = buscador.select(that.datos.campoTexto)[0];
			that.datos.boton = buscador.select(that.datos.campoBoton)[0];
			
			that.preparaCampo();
			that.hoverBoton();
			that.datos.campo.observe('focus',function () {that.entradaFoco();});
			that.datos.campo.observe('blur',function () {that.salidaFoco();});
		}
	}
	
	this.hoverBoton = function () {
		var that = this;
		that.datos.boton.observe('mouseover',function () {
			that.datos.boton.src = that.datos.imagenBotonHover;
		});
		that.datos.boton.observe('mouseout',function () {
			that.datos.boton.src = that.datos.imagenBoton;
		});
	}
	
	this.entradaFoco = function () {
		var that = this;
		if (that.datos.campo.value==that.datos.textoCampo) {
			that.datos.campo.removeClassName(that.datos.claseInactivo);
			that.datos.campo.value = '';
		}
	}
	this.salidaFoco = function () {
		var that = this;
		if (that.datos.campo.value== '') {that.preparaCampo();}
	}
	
	this.preparaCampo = function () {
		var that = this;
		that.datos.campo.addClassName(that.datos.claseInactivo);
		that.datos.campo.value = that.datos.textoCampo;
	}
}

function alternarSelect (accion) {
	var visibilidad = '';
	if (accion=='ocultar') {visibilidad='hidden';}
	$$('select').each(function (el) {
		el.style.visibility = visibilidad;
	});
}

function reticulacion () {
	var cuerpo = $$('body')[0];
	Element.insert(cuerpo,{bottom:'<div id="reticula" style="height:718px; background:url(/Portal/imagenes/reticula.gif) repeat-y center 0; position:absolute; top:0; left:0; width:100%;opacity:.7; filter:alpha(opacity=70)">&nbsp;</div>'});
	
}
