/**
 * Objeto modulo.
 */
var Modulo = Class.create({
	/**
	 * Iniciar el objeto.
	 */
	initialize: function(h, capacidades, criterios, Buscador) {
		this._fields = h;		
		this.buscador = Buscador;
		this._capacidades = null
		
		this._init();
	
		this.insertCapacidades(capacidades, criterios);
	},
	
	/**
	 * Acciones del init
	 */
	_init : function() {
		this._capacidades = new Array();		
	},
	
	/**
	 * Insertar los realizaciones.
	 * @param {Object} realizaciones
	 */
	insertCapacidades : function(capacidades, criterios) {
		for (var i = 0, len = capacidades.length; i < len; ++i) {
			var capacidad = new Capacidad($H(capacidades[i]), criterios, this.buscador);
			var id = capacidad.getField('id');
			this._capacidades.push(id);
			this.buscador.insertCapacidad(id, capacidad);
		}
	},
	
	/**
	 * Recoger los datos de un campo 
	 * @param {String} fieldname
	 */
	getField : function(fieldname) {
		return this._fields.get(fieldname);
	},
	
	/**
	 * Abrir el popup con informacion sobre la unidad
	 */
	showInfoPopup : function() {
		//Si ya existe, solo mostrarlo. Sino, crearlo.
		var id_popup = 'modulo_info_popup.' + this.getField('id');
		if ($(id_popup)) {
			$(id_popup).show();
		} else {
			var popup_div = new Element('div', {'id': id_popup, 'class': 'unidad_info_popup'});
			var popup_title = new Element('div', {'class': 'ficha_content1 txt2'}).update(this.getField('denominacion'));
			var popup_ficha = new Element('div', {'class': 'ficha_content2 txt2a', 'id': 'info_popup_layer_capacidades.' + this.getField('id')});
			var boton_cerrar = new Element('button', {'class': 'temp_boton_style'}).update('Cerrar');
			var popup_footer = new Element('div', {'class': 'ficha_content3'});
	
			//Juntar los elementos
			popup_div.appendChild(popup_title);
			popup_div.appendChild(popup_ficha);
			popup_div.appendChild(popup_footer);
			popup_footer.appendChild(boton_cerrar);
			
			//Poner el handler
			boton_cerrar.observe('click', this._closeInfoPopupHandler.bindAsEventListener(this, id_popup));
			
			//Añadir la capa al container_home
			$('container_home').appendChild(popup_div);
			
			//Dibujar las realizaciones
			for (var i = 0, len = this._capacidades.length; i < len; ++i) {
				var id = this._capacidades[i];
				oCapacidad = this.buscador.getCapacidad(id);
				oCapacidad.drawInfoPopupHTML(this.getField('id'));
			}						
		}
		this.buscador.showPopupBlocker();
	},	
	
	/**
	 * Mostrar el popup de contenido
	 */
	showContenidoInfoPopup : function() {
		//Si ya existe, solo mostrarlo. Sino, crearlo.
		var id_popup = 'modulo_info_contenido_popup.' + this.getField('id');
		if ($(id_popup)) {
			$(id_popup).show();
		} else {
			//Crear los elementos 
			var popup_div = new Element('div', {'id': id_popup, 'class': 'unidad_info_popup'});
			var popup_title = new Element('div', {'class': 'ficha_content1 txt2'}).update(this.getField('denominacion'));
			var popup_ficha = new Element('div', {'class': 'ficha_content2 txt2a'}).update(this.getField('contenidos'));
			var boton_cerrar = new Element('button', {'class': 'temp_boton_style'}).update('Cerrar');
			var popup_footer = new Element('div', {'class': 'ficha_content3'});
	
			//Juntar los elementos
			popup_div.appendChild(popup_title);
			popup_div.appendChild(popup_ficha);
			popup_div.appendChild(popup_footer);
			popup_footer.appendChild(boton_cerrar);
			
			//Poner el handler
			boton_cerrar.observe('click', this._closeInfoPopupHandler.bindAsEventListener(this, id_popup));
			
			//Añadir la capa al container_home
			$('container_home').appendChild(popup_div);		
		}	
		this.buscador.showPopupBlocker();
	},
	
	/**
	 * Mostrar el popup de contexto
	 */
	showContextInfoPopup : function() {
		//Si ya existe, solo mostrarlo. Sino, crearlo.
		var id_popup = 'modulo_info_context_popup.' + this.getField('id');
		if ($(id_popup)) {
			$(id_popup).show();
		} else {
			//Crear los elementos 
			var popup_div = new Element('div', {'id': id_popup, 'class': 'unidad_info_popup'});
			var popup_title = new Element('div', {'class': 'ficha_content1 txt2'}).update(this.getField('denominacion'));
			var popup_ficha = new Element('div', {'class': 'ficha_content2 txt2a'});
			var div_espacios = new Element('div');
			var div_perfil = new Element('div', {'class': 'margintop_popupline'});
			var div_espacios_title = new Element('div', {'class': 'bold'}).update('Espacios e instalaciones');
			var div_perfil_title = new Element('div', {'class': 'bold'}).update('Perfil profesional del formador');
			var div_espacios_text = new Element('div').update(this.getField('espacios'));
			var div_perfil_text = new Element('div').update(this.getField('perfil'));
			var boton_cerrar = new Element('button', {'class': 'temp_boton_style'}).update('Cerrar');
			var popup_footer = new Element('div', {'class': 'ficha_content3'});
	
			//Juntar los elementos
			popup_div.appendChild(popup_title);
			popup_div.appendChild(popup_ficha);
			popup_ficha.appendChild(div_espacios);
			popup_ficha.appendChild(div_perfil);			
			div_espacios.appendChild(div_espacios_title);
			div_espacios.appendChild(div_espacios_text);
			div_perfil.appendChild(div_perfil_title);
			div_perfil.appendChild(div_perfil_text);			
			popup_div.appendChild(popup_footer);
			popup_footer.appendChild(boton_cerrar);
			
			//Poner el handler
			boton_cerrar.observe('click', this._closeInfoPopupHandler.bindAsEventListener(this, id_popup));
			
			//Añadir la capa al container_home
			$('container_home').appendChild(popup_div);		
		}
		this.buscador.showPopupBlocker();
	},
	
	/**
	 * Mostrar (y crear) la capa de formacion
	 * @param {Int} unidad_id
	 * @param {String} pagina
	 */
	showFormacionLayer : function(unidad_id, pagina) {
		if (arguments.length==1) {
			pagina = '';
		}
		
		var layer = $('resumen_formacion' + pagina + '.' + unidad_id + '.' + this.getField('id'));
		if (layer.innerHTML=='') {
			
			//Crear los elementos
			var container_div = new Element('div');
			var div_titulo_layer = new Element('div', {'class': 'mod_tit txt2c'}).update('M&Oacute;DULO FORMATIVO:');
			var div_titulo_modulo = new Element('div', {'class': 'mod_cont txt3'}).update(this.getField('denominacion'));
			var div_cerrar = new Element('div', {'class': 'mod_close'});
			var div_buttons = new Element('div', {'class': 'mod_bots'});
			var button1 = new Element('div', {'class': 'mod_boton'});
			var button2 = new Element('div', {'class': 'mod_boton'});
			var button3 = new Element('div', {'class': 'mod_boton'});
			var img_button1 = new Element('img', { 'src': 'images/bot_cap.gif', 'class': 'clickable'});
			var img_button2 = new Element('img', { 'src': 'images/bot_conten.gif', 'class': 'clickable'});
			var img_button3 = new Element('img', { 'src': 'images/bot_context.gif', 'class': 'clickable'});
			var boton_cerrar = new Element('img', { 'src': 'images/menos.gif', 'class': 'clickable'});
			
			//Juntar los elementos
			button1.appendChild(img_button1);
			button2.appendChild(img_button2);
			button3.appendChild(img_button3);
			div_buttons.appendChild(button1);
			div_buttons.appendChild(button2);
			div_buttons.appendChild(button3);
			container_div.appendChild(div_titulo_layer);
			container_div.appendChild(div_titulo_modulo);
			div_cerrar.appendChild(boton_cerrar);
			container_div.appendChild(div_cerrar);
			container_div.appendChild(div_buttons);
			
			//Poner los handlers
			img_button1.observe('click', this._openInfoPopupHandler.bindAsEventListener(this));
			img_button2.observe('click', this._openContenidosInfoPopupHandler.bindAsEventListener(this));
			img_button3.observe('click', this._openContextoInfoPopupHandler.bindAsEventListener(this));
			boton_cerrar.observe('click', this._closeFormacionHandler.bindAsEventListener(this, layer));
			
			//Insertar el html en la capa
			layer.appendChild(container_div);
		}
		layer.show();
	},
		
	/**
	 * Cerrar un popup
	 * @param {Object} event
	 */
	_openInfoPopupHandler : function(event) {
		this.showInfoPopup();
	},

	/**
	 * Cerrar un popup
	 * @param {Object} event
	 */
	_closeInfoPopupHandler : function(event) {
		id_popup = arguments[1];
		if($(id_popup)) {
			$(id_popup).hide();
		}
		this.buscador.hidePopupBlocker();
	},
	
	/**
	 * Abrir el popup de contenidos
	 * @param {Object} event
	 */
	_openContenidosInfoPopupHandler : function(event) {
		this.showContenidoInfoPopup();
	},
	
	/**
	 * Abrir el popup de contexto
	 * @param {Object} event
	 */
	_openContextoInfoPopupHandler : function(event) {
		this.showContextInfoPopup();
	},
	
	/**
	 * Cerrar la capa de formacion
	 * @param {Object} event
	 */
	_closeFormacionHandler : function(event) {
		layer_formacion = arguments[1];
		if($(layer_formacion)) {
			$(layer_formacion).hide();
		}
	}
})
