<!--
//Codigos Script
function obreFoto(ruta){
   i1 = new Image;
   i1.src = ruta;
   html = '<html><head><title>Imagen</title></head>';
   html += '<body leftmargin=0 marginwidth=0 topmargin=0 marginheight=0>';
   html += '<center><img src="'+ruta+'" border=0 name="Foto" ';
   html += 'onLoad="window.resizeTo(700,600)">';
   html += '</center></body></html>';
   popupImage = window.open('','_blank','scrollbars=1,resizable=1');
   popupImage.document.open();
   popupImage.document.write(html);
   popupImage.document.close();
}
var Base = {};
Base.ControladorInterfaz = Class.create();
Base.ControladorInterfaz.prototype  = {
	initialize: function(){ with(this) {
		if ($$(Base.Selectores.Validaciones.General).length > 0){
			insertaComportamiento().validacionesDeFormulario(busca().formularios());
		}
	}},
	insertaComportamiento: function () {
		return new Base.GeneradorComportamientos(this);
	},
	muestra: function() {with(this) {
		return new Base.ManipuladorInterfaz(this);
	}},
	busca: function() {with(this) {
		return new Base.BuscadorDeElementos(this);
	}},
	almacena: function () {
		return new Base.AlmacenadorDeDatos(this);
	},
	borra: function (controladorDatosAEliminar) {
		return new Base.EliminadorDeDatos(this, controladorDatosAEliminar);
	},
	construye: function () {
		return new Base.ConstructorInterfaz(this);
	}
	
}
Base.GeneradorComportamientos = Class.create();
Base.GeneradorComportamientos.prototype  = {
	initialize: function(controladorInterfaz){ with(this) {
		this.controladorInterfaz = controladorInterfaz;
	}},
	validacionesDeFormulario: function (formularios) { with(this) {
		formularios.each( function (formulario) {
			insertaValidacion().enCamposDeFormulario(formulario).enBotonDeEnvioDeFormulario(formulario);
		},this);
	}},
	insertaValidacion: function () { with(this) {
		return new Base.ValidadorFormulario(controladorInterfaz);
	}},	
	enEnlaceListadoErrores: function (enlace, nombreCampo) { with(this) {
		this.nombreCampo = nombreCampo;
		Event.observe(enlace, 'click', mandaFocoAlCampo.bind(this), false);
		return this;
	}},
	mandaFocoAlCampo: function (event){ with(this) {
		Event.stop(event);
		var enlace = Event.element(event);
		$(nombreCampo).focus();
		return this;
	}}
}

Base.BuscadorDeElementos = Class.create();
Base.BuscadorDeElementos.prototype  = {
	initialize: function(controladorInterfaz){ with(this) {
		this.controladorInterfaz = controladorInterfaz;
	}},
	formularios: function () { with(this) {
		var formularios = new Array();
		$$('form').each( function (formulario) {
			formularios.push(formulario);
		})
		return formularios;
	}},
	validacionesDelCampo: function (nombreValidacion,listaValidaciones) { with(this) {
		var validaciones;
		listaValidaciones.each( function (validacion) {
			if (esLaValidacionDeEsteCampo(validacion,nombreValidacion)){
				validaciones = validacion;
				throw $break;
			}
		});
		return validaciones.validaciones;
	}},
	esLaValidacionDeEsteCampo: function (validacion, nombreValidacion) { with(this) {
		return (validacion.campo == nombreValidacion);
	}},
	errorEnListadoDeErrores: function (listadoErrores, nombreError) { with(this) {
		var existeErrorActualEnListadoDeErrores = false;
		listadoErrores.each(function (errorDelListado) {
			if (esElMismoError(errorDelListado.nombreCampo, nombreError)){
				existeErrorActualEnListadoDeErrores = true;
				throw $break;
			}
				
		});
		return existeErrorActualEnListadoDeErrores;
	}},
	esElMismoError: function (nombreErrorListado, nombreErrorActual) { with(this) {
		return (nombreErrorListado == nombreErrorActual);
	}},
	numeroDeErroresDeValidacion: function (listadoErrores) { 
		return listadoErrores.length;
	},
	capaErroresValidacion: function (formulario){
		return (formulario.up(Base.Selectores.Formulario.ContenedorFormulario).down(Base.Selectores.Formulario.CapaErroresValidacion));
	}
}

Base.AlmacenadorDeDatos = Class.create();
Base.AlmacenadorDeDatos.prototype  = {
	initialize: function (ControladorInterfaz) {
		this.ControladorInterfaz = ControladorInterfaz;
	},
	errorEnListadoDeErrores: function (listadoErrores, error) { with(this) {
		if (!existeElError(listadoErrores, error.nombreCampo)){
			listadoErrores.push(error);
		}
	}},
	existeElError: function (listadoErrores, nombreCampo) { with(this) {
		return (busca().errorEnListadoDeErrores(listadoErrores, nombreCampo));
	}},
	busca: function () {
		return this.ControladorInterfaz.busca();
	}
}

Base.EliminadorDeDatos = Class.create();
Base.EliminadorDeDatos.prototype  = {
	initialize: function (ControladorInterfaz, ControladorDatosAEliminar) {
		this.ControladorInterfaz = ControladorInterfaz;
		this.ControladorDatosAEliminar = ControladorDatosAEliminar;
	},
	errorEnListadoDeErrores: function (nombreCampo) { with(this) {
		this.ControladorDatosAEliminar.constantes.listadoErrores.each( function (error) {
			if (error.nombreCampo == nombreCampo){
				this.ControladorDatosAEliminar.constantes.listadoErrores = this.ControladorDatosAEliminar.constantes.listadoErrores.without(error);
			}
			
		},this);
	}},
	existeElError: function (listadoErrores, nombreCampo) { with(this){ 
		return (busca().errorEnListadoDeErrores(listadoErrores, nombreCampo));
	}},	
	busca: function () {
		return this.ControladorInterfaz.busca();
	}
}

Base.ManipuladorInterfaz = Class.create();
Base.ManipuladorInterfaz.prototype  = {
	initialize: function (ControladorInterfaz) {
		this.ControladorInterfaz = ControladorInterfaz;
	},
	campoErroneo: function (campo) {
		campo.addClassName(Base.Clases.Formulario.CampoErroneo);
		return this;
	},
	campoValido: function (campo) {
		campo.removeClassName(Base.Clases.Formulario.CampoErroneo);
		return this;
	},
	erroresDeFormulario: function (listadoErrores, formulario) { with(this) {
		construye().capaErroresFormulario(formulario).listadoErroresFormulario(listadoErrores).contenedorErroresFormulario(formulario);
		return this;
	}},
	camposErroneos: function (listadoErrores) { with(this) {
		listadoErrores.each( function (error) {
			campoErroneo($(error.nombreCampo));
		},this)
	}},
	errorTachado: function (nombreCampo) { with(this) {
		if ($("enlaceError"+nombreCampo))
			$("enlaceError"+nombreCampo).addClassName(Base.Clases.Formulario.EnlaceError);
		return this;
	}},
	errorSinTachar: function (nombreCampo) { with(this) {
		if ($("enlaceError"+nombreCampo))
			$("enlaceError"+nombreCampo).removeClassName(Base.Clases.Formulario.EnlaceError);
		return this;
	}},
	construye: function () { with(this) {
		 return ControladorInterfaz.construye();
	}},
	Y: function () {
		return this;
	}
}

Base.ConstructorInterfaz = Class.create();
Base.ConstructorInterfaz.prototype  = {
	initialize: function (ControladorInterfaz) {
		this.ControladorInterfaz = ControladorInterfaz;
	},
	listadoErroresFormulario: function (listadoErrores) { with(this) {
		reseteaListadoErroresFormulario();
		listado = document.createElement('ul');
		var elementoListado;
		var texto;
		var enlace;
		listadoErrores.each( function (error) {
			texto= document.createTextNode(generaTextoErrorCampo(error));
			enlace = document.createElement("a");
			enlace.setAttribute("id", "enlaceError"+error.nombreCampo);
			enlace.setAttribute("href", "#"+error.nombreCampo);
			enlace.appendChild(texto);
			elementoListado = document.createElement('li');
			elementoListado.appendChild(enlace);
			//elementoListado.setAttribute("href", "#"+error.nombreCampo);
			listado.appendChild(elementoListado);
			insertaComportamiento().enEnlaceListadoErrores(enlace, error.nombreCampo);
			
		},this)
		return this;
	}},
	reseteaListadoErroresFormulario: function () {
		if (capa.getElementsByTagName("ul").length > 0){
			capa.innerHTML = "";
		}
	},
	generaTextoErrorCampo: function (error) { with(this) {
	//Bases.Textos.ErroresValidacion.Obligatorio
		var texto = "El camp " + error.nombreCampo;
		error.validacionesDelCampo.each( function (tipoError) {
			texto += ", " + Base.Textos.ErroresValidacion[tipoError.tipoValidacion] 
			if (tieneValoresDeValidacion(tipoError.valores)){
				texto += generaTextoDeErrorEntreValores(tipoError.valores)//tipoError.valores.menor + " y " +  tipoError.valores.mayor
			}
		},this);
		texto +=  "."
		return texto;
	}},
	tieneValoresDeValidacion: function (valores) { with(this) {
		return (valores.menor || valores.mayor);
	}},
	generaTextoDeErrorEntreValores: function (valores) { with(this) {
		var texto = "";
		if (valores.menor) {
			if (elValorEsElIdDeUnCampo(valores.menor)){
				texto += "m\u00e9s gran que el camp " + $(valores.menor).up("label").down("span").innerHTML;
			}else{
				texto += "m\u00e9s gran que " + valores.menor;
			}
		}
		if (valores.menor && valores.mayor)
			texto += " y ";
		if (valores.mayor) {
			if (elValorEsElIdDeUnCampo(valores.mayor)){
				texto += "menor que el camp " + $(valores.mayor).up("label").down("span").innerHTML;
			}else{
				texto += "menor que " + valores.mayor;
				}
		}
		return texto;
	}},
	elValorEsElIdDeUnCampo: function (idCampo) {
		return $(idCampo);
	},
	capaErroresFormulario: function (formulario) { with(this) {
		if (noExisteCapaYaCreadaDeErroresDeFormulario(formulario)){
			capa = document.createElement('div');
			capa.setAttribute(generaAtributoClass(), Base.Clases.Formulario.ErroresValidacion)
		}
		else
			capa = busca().capaErroresValidacion(formulario);
		return this;
	}},
	generaAtributoClass: function () {
		if(document.all) 
			return 'className';
		else
			return 'class';
	},
	contenedorErroresFormulario: function (formulario) { with(this) {
		capa.appendChild(listado);
		formulario.insert({top: capa})
		return this;
	}},
	noExisteCapaYaCreadaDeErroresDeFormulario: function (formulario) { with(this) {
		return (!busca().capaErroresValidacion(formulario));
	}},
	busca: function () {
		return this.ControladorInterfaz.busca();
	},
	insertaComportamiento: function () {
		return this.ControladorInterfaz.insertaComportamiento();
	}
}

Base.Contantes = {
	TiposValidaciones: {
		Obligatorio: 'obligatorio',
		Texto: 'texto',
		Numerico: 'numerico',
		Fecha: 'fecha',
		EntreValores: 'entreValores'
	}
}
Base.Selectores = {
	Validaciones: {
		General: '.validacionesDeFormularios',
		ReglaValidacion: '.reglaValidacion'
	},
	Formulario: {
		BotonEnvio: '.botonEnviar',
		ContenedorFormulario: 'div.formularioConValidacion',
		CapaErroresValidacion: 'div.erroresValidacion'
	}
}
Base.Clases = {
	Formulario: {
		CampoErroneo: 'campoErroneo',
		EnlaceError: 'enlaceError',
		ErroresValidacion: 'erroresValidacion'
	},
	Validaciones: {
		Valores : 'valores'
	}
}
Base.Textos = {
	ErroresValidacion: {
		obligatorio: '\u00e9s obligatori',
		texto: 'ha de tenir un format de text correcte',
		numerico: 'ha de tenir un format num\u00e8ric correcte',
		fecha: 'ha de tenir un format de data correcte',
		entreValores: 'ha de ser '
	}
}

	//CODIGO QUE LANZA TODAS LAS FUNCIONES
		Event.observe(window, 'load', lanzarEventos, false); 
		
	//CODIGOS PARA CORREGIR EL ONKEYPRESS
		function corregirOnkeypress(){if(document.getElementsByTagName){	var aes = document.getElementsByTagName("a");	for (var i = 0; i < aes.length; i++)		{
		if(aes[i].onkeypress){eval('var tmpOnkeypress' + i + ' =aes[i].onkeypress;');eval('aes['+i+'].onkeypress = function(evt){if (esTabulador(evt)) return true;return tmpOnkeypress'+i+'(); }');}}}}
		function esTabulador(evt){var keyCode = evt ? evt.keyCode : event.keyCode;	return (keyCode == 9);}
	
	//CODIGO PARA CARGAR DISTINTOS EVENTOS DE LA APLICACION
		function lanzarEventos() {
			corregirOnkeypress ()
			new AsignarComportamientos();
		}
		
			
			
			
			
		//CALSE PARA ASIGNAR COMPORTAMIENTOS A LOS OBJETOS DE LA APLICACION
		var AsignarComportamientos = Class.create();
		AsignarComportamientos.prototype  = {
			initialize: function(){
				//Llamo al metodo que lanza el comportamiento de las acciones de los enlaces.
				this.tagNuevaVentana();
				//Llamo al metodo que lanza el comportamiento que ajusta elheight de las columnas derecha e izquierda del esqueleto.
				this.ajustarHeightDeColumnasDeEstructura()	
				this.vaciarValueDeInputAlHacerFocus();
				this.vaciarValueDeInputAlHacerFocus();
				this.lanzaControladorInterfaz();
			},
			tagNuevaVentana: function () {
				var arrAHREF = $A(document.getElementsByTagName("A"));
		
				//Creo la clase en la que asignare el manejador del evento
				arrAHREF.each( function(Listas){
						if (Element.hasClassName(Listas, 'openBlank') || Element.hasClassName(Listas, 'openPdf') || Element.hasClassName(Listas, 'openMail')){
							//Llamo a cada uno con su manejador de eventos
							new manejadorEventoVentanaNueva(Listas);
						}
						
					});
			},
			ajustarHeightDeColumnasDeEstructura: function () {
				new ControladorDeDimensionesDeColumnas();
			},
			vaciarValueDeInputAlHacerFocus: function () {
				new generadorComportamientosInput();	
			},
			lanzaControladorInterfaz: function () {
				new Base.ControladorInterfaz();
			}
		}
		var generadorComportamientosInput = Class.create();
		generadorComportamientosInput.prototype  = {
			initialize: function(){
				var myThis = this;
				$$('input').each( function (campo) {
				 if (myThis.esUnCampoInput(campo)){
					Event.observe(campo, 'focus', myThis.borraValue.bind(myThis), false);
					Event.observe(campo, 'blur', myThis.restauraValueSiEsNecesario.bind(myThis), false);
				 }
				});
			},
			esUnCampoInput: function (campo) {
				return (campo.type == "text")
			},
			borraValue: function (event) {
				var input= Event.element(event);
				Event.stop(event); 
				this.valuePorDefecto = input.value;
				input.value= "";
				//return false;
			},
			restauraValueSiEsNecesario: function (event) {
				var input= Event.element(event);
				Event.stop(event); 
				if (this.noSeHaInsertadoValueCorrectoEnElCampo(input)){
					this.insertaNuevoValue(input)
				}
				//return false;
			},
			noSeHaInsertadoValueCorrectoEnElCampo: function (campo) {
			 return (this.valuePorDefecto == campo.value || campo.value == "")
			},
			insertaNuevoValue: function (input) {
				input.value = this.valuePorDefecto;
			}
		}
		
		
		
		//CONSTANTES
		
		
		var constantes =  {
			selectores: {
				columnasDePaginas: {
					obraSocial : {
						derecha: '#col_dreta',
						centro: '#col_central',
						izquierda: '#col_esquerra'
					},
					jornadas : {
						centro: '#conte_contingut',
						izquierda: '.menu_bo',
						derecha: ''
					},
					corporativo : {
						derecha: '#franjaderecha',
						centro: '#franjacentro',
						centro2: '#franjacentro2',
						izquierda: '#franjaizquierda'
					}
				},
				componentes: {
					corporativo: {
						derecha: '.contenedora_linea_der',
						izquierda: '.gris'
						//columnaSuperiorALaColumnaConFondoGrisIzquierda: '#contenedora'
					},
					obraSocial: {
						derecha: '',
						izquierda: '.fons_menu_productes3'
					},
					jornadas: {
						derecha: '',
						izquierda: ''
					}
					
					
					
				}
			},
			dimensiones: {
				correctivoColumnas: {
					corporativo: {
						izquierda: 20,
						derecha: 0 
					},
					obraSocial: {
						izquierda: 5,
						derecha: 0 
					},
					jornadas: {
						izquierda: 34,
						derecha: 0 
					}
				}
			}
		}
		
		
		
		//CLASE PARA CONTROLAR LAS DIMENSIONES DE LAS COLUMNAS
		var ControladorDeDimensionesDeColumnas = Class.create();
		ControladorDeDimensionesDeColumnas.prototype  = {	
			initialize: function(){ with(this) {
				ajustaHeightDeColumnas();
			}},
			ajustaHeightDeColumnas: function (){ with(this) {
				if (esUnaPaginaDeObraSocial())
					ajustaHeightDeColumnasDeObraSocial();
				else if (esUnaPaginaDeJornadas())
					ajustaHeightColumnasDeJornadas();
				else if (esUnaPaginaDeCorporativo())
					ajustaHeightDeColumnasDeCorporativo();			
			}},
			esUnaPaginaDeObraSocial: function () { with(this) {
				return ($$(constantes.selectores.columnasDePaginas.obraSocial.derecha).length > 0 && $$(constantes.selectores.columnasDePaginas.obraSocial.centro).length > 0 && $$(constantes.selectores.columnasDePaginas.obraSocial.izquierda).length > 0);
			}},
			esUnaPaginaDeJornadas: function () {with(this) {
			 return (($$(constantes.selectores.columnasDePaginas.jornadas.izquierda).length > 0) && ($$(constantes.selectores.columnasDePaginas.jornadas.centro).length > 0));
			}},
			esUnaPaginaDeCorporativo: function () { with(this) {
				return ($$(constantes.selectores.columnasDePaginas.corporativo.derecha).length > 0 && ($$(constantes.selectores.columnasDePaginas.corporativo.centro).length > 0 ||$$(constantes.selectores.columnasDePaginas.corporativo.centro2).length > 0) && $$(constantes.selectores.columnasDePaginas.corporativo.izquierda).length > 0);
			}},
			ajustaHeightDeColumnasDeObraSocial: function () { with(this) {
				igualaHeightDeColumnas().deObraSocial('obraSocial');
			}},
			ajustaHeightColumnasDeJornadas: function () { with(this) {
				igualaHeightDeColumnas().deJornadas('jornadas');
				//var columnaCentralJornadas = $(constantes.selectores.columnasDePaginas.jornadas.central).childElements()[2];
				//new manejadorAjusteAltoColumnasEsqueletoJornadas(document.getElementsByClassName(constantes.selectores.columnasDePaginas.jornadas.izquierda)[0],columnaCentralJornadas);
				//columnaCentralJornadas = null;
			}},
			ajustaHeightDeColumnasDeCorporativo: function () { with(this) {
				igualaHeightDeColumnas().deCorporativo('corporativo');
			}},
			igualaHeightDeColumnas: function () {
				return new IgualadorDeHeightDeColumnas();
			}
								/*
					var selectorColDerecha = 
					var selectorColIzquierda = ;
					var selectorColCentral = 
					var selectorColIzquierdaJornadas = ;
					var selectorColCentralJornadas = ;
					var selectorColIzquierdoCorporativo = ;
					var selectorColDerechaCorporativo = '';
					var selectorColCentralCorporativo = '';
					var selectorColCentralAlternativaCorporativo = 'franjacentro2';
					
					if (){
						
					}
					else if (document.getElementsByClassName(selectorColIzquierdaJornadas) != "" && $(selectorColCentralJornadas)) {
						if ($(selectorColCentralJornadas)){
						}
						
					}
					*/
		}
		
		//CLASE QUE CONTROLA E IGUALA EL HEIGHT DE LAS COLUMNAS DE LAS PAGINAS
		var IgualadorDeHeightDeColumnas = Class.create();
		IgualadorDeHeightDeColumnas.prototype  = {
			numeroDeColumnas: 3,
			initialize: function () {
				return this;
			},
			deCorporativo: function (tipoPagina) { with(this) {
				//this.selectorDeColumnas = selectorDeColumnas;
				this.tipoPagina = tipoPagina;
				//this.dimensionesCorrectivoColumnas = dimensionesCorrectivoColumnas;
				averiguaElSelectorDeLaColumnaQueTieneElContenidoCentral()
					.buscaLaColumnaConMasHeight()
					.calculaElHeightDeLaColumnaConMasHeight()
					.igualaElHeightDelRestoDeColumnas()
				
			}},
			deObraSocial: function (tipoPagina) { with(this) {
				this.tipoPagina = tipoPagina;
				//this.selectorDeColumnas = selectorDeColumnas;
				//this.dimensionesCorrectivoColumnas = dimensionesCorrectivoColumnas;
				buscaLaColumnaConMasHeight()
					.calculaElHeightDeLaColumnaConMasHeight()
					.igualaElHeightDelRestoDeColumnas()
				
				
			}},
			deJornadas: function (tipoPagina) { with(this) {
				this.tipoPagina = tipoPagina;
				//this.selectorDeColumnas = selectorDeColumnas;
				//this.dimensionesCorrectivoColumnas = dimensionesCorrectivoColumnas;
				averiguaElSelectorDeLaColumnaQueTieneElContenidoCentral()
					.buscaLaColumnaConMasHeight()
					.calculaElHeightDeLaColumnaConMasHeight()
					.igualaElHeightDelRestoDeColumnas()
				
				
			}},
			averiguaElSelectorDeLaColumnaQueTieneElContenidoCentral: function () { with(this) {
				if(esUnaPaginaDeCorporativo())
					averiguaElSelectorDeLaColumnaQueTieneElContenidoCentralEnCorporativo();
				else
					averiguaElSelectorDeLaColumnaQueTieneElContenidoCentralEnJornadas();
				return this;
			}},
			esUnaPaginaDeCorporativo: function () { with(this) {
				return (tipoPagina == "corporativo");
			}},
			averiguaElSelectorDeLaColumnaQueTieneElContenidoCentralEnCorporativo: function () { with(this) {
				if ($$(constantes.selectores.columnasDePaginas[tipoPagina].centro2) != "")
					cambiaElSelectorDeLaColumnaQueTieneElContenidoCentral(constantes.selectores.columnasDePaginas[tipoPagina].centro2);
			}},
			averiguaElSelectorDeLaColumnaQueTieneElContenidoCentralEnJornadas: function () { with(this) {
				cambiaElSelectorDeLaColumnaQueTieneElContenidoCentral("#"+$$(constantes.selectores.columnasDePaginas[tipoPagina].centro + " div")[2].id);
			}},
			cambiaElSelectorDeLaColumnaQueTieneElContenidoCentral: function (selector) { with(this) {
				constantes.selectores.columnasDePaginas[tipoPagina].centro = selector;	
				return this;
			}},
			buscaLaColumnaConMasHeight: function (){ with(this) {
				if (esLaColumnaIzquierdaLaQueTieneMasHeight())
					columnaConMasHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0];
				else {
					if (hayColumnaDeLaDerecha()){
						if (esLaColumnaDerechaLaQueTieneMasHeight())
							columnaConMasHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0];
						else{
							columnaConMasHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].centro)[0]}
					}
					else if (!esLaColumnaIzquierdaLaQueTieneMasHeight()){
							columnaConMasHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].centro)[0];
						
					}
				}
				return this;
			}},
			hayColumnaDeLaDerecha: function () { with(this){
				return ($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha).length > 0);
			}},
			esLaColumnaDerechaLaQueTieneMasHeight: function () { with(this) {
				return ((($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0].getHeight()) > ($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0].getHeight())) && (($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0].getHeight()) > ($$(constantes.selectores.columnasDePaginas[tipoPagina].centro)[0].getHeight())));
			}},
			esLaColumnaIzquierdaLaQueTieneMasHeight: function () { with(this) {
				if (hayColumnaDeLaDerecha())
					return ((($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0].getHeight()) > ($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0].getHeight())) && (($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0].getHeight()) > ($$(constantes.selectores.columnasDePaginas[tipoPagina].centro)[0].getHeight())))
				else
					return ((($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0].getHeight()) > ($$(constantes.selectores.columnasDePaginas[tipoPagina].centro)[0].getHeight())))
			}},
			calculaElHeightDeLaColumnaConMasHeight: function () { with(this) {
				heightDeColumnaConMasHeight = columnaConMasHeight.getHeight();
				return this;
			}},
			igualaElHeightDelRestoDeColumnas: function () {	 with(this) {
				if (hayColumnaDeLaDerecha()){
					if ($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0] != columnaConMasHeight){
						calculaElHeightAInsertarEnLaColumna($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0])
							.buscaElComponenteAlQueHayQueAnyadirElHeight($$(constantes.selectores.columnasDePaginas[tipoPagina].derecha + ' ' + constantes.selectores.componentes[tipoPagina].derecha))
							.igualaElHeightDeColumna();
					}
				}
				if ($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0] != columnaConMasHeight){
					calculaElHeightAInsertarEnLaColumna($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0])
						.buscaElComponenteAlQueHayQueAnyadirElHeight($$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda + ' ' + constantes.selectores.componentes[tipoPagina].izquierda))
						.igualaElHeightDeColumna();
				}
				return this;
			}},
			calculaElHeightAInsertarEnLaColumna: function (columna) { with(this) {
				if (esLaColumnaConMasHeight(columna))
					heightAInsertar = 0;
				else
					heightAInsertar = devuelveHeightAInsertar(columna);
				return this;
			}},
			esLaColumnaConMasHeight: function (columna) { with(this) {
				return (columna == columnaConMasHeight);
			}},
			devuelveHeightAInsertar: function (columna) { with(this) {
				var height;
				if (hayColumnaDeLaDerecha()){
					if (esLaColumnaDeLaDerecha(columna))
						return devuelveElHeightDeLaColumnaDerecha(columna);
				}
				if (esLaColumnaDeLaIzquierda(columna))
					return devuelveElHeightDeLaColumnaIzquierda(columna);
				else
					return 0;
				
			}},
			esLaColumnaDeLaDerecha: function (columna) { with(this) {
				return (columna == $$(constantes.selectores.columnasDePaginas[tipoPagina].derecha)[0]);
			
			}},
			devuelveElHeightDeLaColumnaDerecha: function (columna) { with(this) {
				var heightTotalColumna = columna.getHeight();
				var heightCorrectivo = constantes.dimensiones.correctivoColumnas[tipoPagina].derecha;
				//var selectorComponenteQueRestaHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda + ' ' + componentes.corporativo.columnaSuperiorALaColumnaConFondoGrisIzquierda)[0];
				//var heightQueRestaAlHeightTotal = selectorComponenteQueRestaHeight.getHeight();
				return (heightDeColumnaConMasHeight - (heightTotalColumna + heightCorrectivo));
				heightTotalColumna = null;
			}},
			esLaColumnaDeLaIzquierda: function (columna) { with(this) {
				return (columna == $$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda)[0]);
			
			}},
			devuelveElHeightDeLaColumnaIzquierda: function (columna) { with(this) {
			//	console.log("columna izquierda");
				var heightTotalColumna = columna.getHeight();
				var heightCorrectivo = constantes.dimensiones.correctivoColumnas[tipoPagina].izquierda;
				//var selectorComponenteQueRestaHeight = $$(constantes.selectores.columnasDePaginas[tipoPagina].izquierda + ' ' + componentes.corporativo.columnaSuperiorALaColumnaConFondoGrisIzquierda)[0];
				//var heightQueRestaAlHeightTotal = selectorComponenteQueRestaHeight.getHeight();
				return (heightDeColumnaConMasHeight - (heightTotalColumna + heightCorrectivo));
				heightTotalColumna = null;
			}},			
			buscaElComponenteAlQueHayQueAnyadirElHeight: function (componente) { with(this) {
				//console.log("buscaElComponenteAlQueHayQueAnyadirElHeight: " + componente)
				componenteAlQueHayQueAnyadirElHeight = componente;
				return this;
			
			}},
			igualaElHeightDeColumna: function () { with(this) {
				
				//console.log(componenteAlQueHayQueAnyadirElHeight[0].getHeight())
				//console.log(componenteAlQueHayQueAnyadirElHeight)
				//console.log(heightAInsertar + "px")
				//console.log($$(componenteAlQueHayQueAnyadirElHeight)[0].getHeight()+heightAInsertar + "px")

				componenteAlQueHayQueAnyadirElHeight[0].style.height = componenteAlQueHayQueAnyadirElHeight[0].getHeight() + heightAInsertar +"px";
				return this;
			
			}}
		}
		
		//CLASE PARA CARGAR ENLACES HREF EN VENTANAS NUEVAS
		var manejadorEventoVentanaNueva = Class.create();
		manejadorEventoVentanaNueva.prototype  = {
			initialize: function(paramObj){
					if (paramObj.hasClassName('openPdf')) {
						if (paramObj.innerHTML.indexOf("Abre archivo PDF en ventana nueva") == -1){
							paramObj.innerHTML = paramObj.innerHTML + "<span class='indentado'>. Abre archivo PDF en ventana nueva</span>";
						}
						paramObj.title = "Abre archivo PDF en ventana nueva";
						//this.eliminarImagenAbreEnVentanaNuevaSiExisten(paramObj);
						Event.observe(paramObj, 'click', this.abrirVentanaNueva, false); 
					}
					else if (paramObj.hasClassName('openBlank')) {
						if (paramObj.innerHTML.indexOf("Abre en ventana nueva") == -1){
							paramObj.innerHTML = paramObj.innerHTML + "<span class='indentado'>. Abre en ventana nueva</span>";
						}
						paramObj.title = "Abre en ventana nueva";
						//this.eliminarImagenAbreEnVentanaNuevaSiExisten(paramObj);
						Event.observe(paramObj, 'click', this.abrirVentanaNueva, false); 
					}
					else if (paramObj.hasClassName('openMail')) {
						if (paramObj.innerHTML.indexOf("Envio de correo electrónico a") == -1){
							paramObj.innerHTML = "<span class='indentado'>. Envio de correo electrónico a</span>"+ paramObj.innerHTML; 
						}
						//this.eliminarImagenEnvioElectronicoSiExisten(paramObj);
						paramObj.title = "Envio de correo electrónico a";
					}

					
				
				
			},
			abrirVentanaNueva: function (event) {
				//Metodo que lanza la carga en ventanas nuevas.
				var miObj= Event.element(event);
				if (miObj.tagName != "A") {
				this.href = miObj.up("A").href
				}else{
				this.href = miObj.href
				}
				window.open(this.href);
				Event.stop(event); 
				return false;
			}
		}
		//CLASE PARA AJUSTAR EL ALTO DE LAS COLUMNAS DEL ESQUELETO DE OBS
		var manejadorAjusteAltoColumnasEsqueletoOBS = Class.create();
		manejadorAjusteAltoColumnasEsqueletoOBS.prototype  = {
			initialize: function(nodoColumnaIzquierdaHijoPrimero, nodoColumnaCentral, nodoColumnaDerecha){
					this.columnas = ['columnaIzquierda', 'columnaDerecha', 'columnaCentral'];
					this.columnasDePagina = {
						columnaIzquierda: nodoColumnaIzquierdaHijoPrimero,
						columnaDerecha: nodoColumnaDerecha,
						columnaCentral: nodoColumnaCentral
					}
					this.recuperaLaColumnaConMasHeight();
					this.asignaHeightALasColumnasConMenosHeight();
			},
			recuperaLaColumnaConMasHeight: function () {
				if ((this.columnasDePagina.columnaIzquierda.getHeight() > this.columnasDePagina.columnaDerecha.getHeight()) && (this.columnasDePagina.columnaIzquierda.getHeight() > this.columnasDePagina.columnaCentral.getHeight())) {
					this.columnaConMasHeight = this.columnasDePagina.columnaIzquierda;
				}
				else if ((this.columnasDePagina.columnaDerecha.getHeight() > this.columnasDePagina.columnaIzquierda.getHeight()) && (this.columnasDePagina.columnaDerecha.getHeight() > this.columnasDePagina.columnaCentral.getHeight())) {
					this.columnaConMasHeight = this.columnasDePagina.columnaDerecha;
				}
				else {
					this.columnaConMasHeight = this.columnasDePagina.columnaCentral;
				}
			},
			asignaHeightALasColumnasConMenosHeight: function () {
				var myThis = this;
				this.columnas.each(function(columna){
					if (myThis.noEsLaColumnaConMasHeight(myThis.columnasDePagina[columna])) {
						var restoDeHegihtAInsertar = myThis.calcularRestoDeAnchoAInsertar(myThis.columnasDePagina[columna]);
						myThis.columnasDePagina[columna].style.height = myThis.columnaConMasHeight.getHeight() + restoDeHegihtAInsertar + "px"; 
					}
				});
			},
			calcularRestoDeAnchoAInsertar: function (columna){
				if (this.esLaColumnaDeLaIzquierda(columna)){
					return -17;
				}else {
					return 0;
				}
			},
			esLaColumnaDeLaIzquierda: function (columna) {
				return (columna == this.columnasDePagina.columnaIzquierda);
			},
			noEsLaColumnaConMasHeight: function (columna) {
				return (columna!=this.columnaConMasHeight);
			}
		}
		//CLASE PARA AJUSTAR EL ALTO DE LAS COLUMNAS DEL ESQUELETO DE JORNADAS
		var manejadorAjusteAltoColumnasEsqueletoJornadas = Class.create();
		manejadorAjusteAltoColumnasEsqueletoJornadas.prototype  = {
			initialize: function(nodoColumnaIzquierda, nodoColumnaCentral){;
					this.nodoColumnaLateral = nodoColumnaIzquierda;
					this.nodoColumnaCentral = nodoColumnaCentral;
					this.recuperarDimensionHeightDelNodoCentral();
					this.asignarDimensionAltoAColumnaIzquierda();
			},
			recuperarDimensionHeightDelNodoCentral: function () {
				this.heightColumnaCentral = (this.nodoColumnaCentral.getHeight() > this.nodoColumnaLateral.getHeight()) ? this.nodoColumnaCentral.getHeight() + 30 : this.nodoColumnaLateral.getHeight() +40 ;
			},
			asignarDimensionAltoAColumnaIzquierda: function () {
				this.nodoColumnaLateral.style.height = this.heightColumnaCentral -40 +"px";
			}
		}		
//-->		

<!--//--><![CDATA[//><!--

sfHover = function() {
	if (document.getElementById("col_esquerra")){
		var sfEls = document.getElementById("col_esquerra").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
//--><!]]>


