/**
 * Objeto resumen.
 */
var Resumen = Class.create({
    /**
     * Iniciar el objeto.
     */
    initialize: function(Buscador){
        this.buscador = Buscador;
    },
    
    drawResumen: function(){
		//Antes de dibujar, vaciar la capa
		$('resumen_competencias').update('');
		
        //Coger los cualificaciones gue son checked
        var cualificaciones = this.buscador.getCheckedCualificaciones();
        
        //Recorrerlos
        for (var i = 0, len = cualificaciones.length; i < len; ++i) {
        
            //Coger la cualificacion
            var oCualificacion = cualificaciones[i];
            
            var div_container = new Element('div', {'class': 'em_familia'});
            var div_title = new Element('div', {'class': 'cuali_fila txt5'});
			var div_nombre = new Element('div', {'class': 'fam_nombre'}).update(oCualificacion.getField('denominacion'));
			var div_toggle = new Element('div', {'class': 'fam_boton1'});
			var img_toggle = new Element('img', { 'class': 'clickable', 'src': 'images/menos.gif', 'id': 'toggle_cualificacion_resumen.' + oCualificacion.getField('id'), 'open_src': 'images/mas.gif', 'close_src': 'images/menos.gif'});
            var div_unidades = new Element('div', {'id': 'resumen_cualificacion.' + oCualificacion.getField('id')});
            
			//Crear los handlers de capa titulo
			img_toggle.observe('click', this._toggleHandler.bindAsEventListener(this, oCualificacion.getField('id')));
			
            //Poner los unidades
            var unidades = oCualificacion.getUnidades();
            for (var j = 0, len2 = unidades.length; j < len2; ++j) {
                oUnidad = unidades[j];
                
				//Crear el imagen
                var img_avance = new Element('img', {
                    'id': 'img_unidad_avance.' + oCualificacion.getField('id') + '.' +  oUnidad.getField('id'),
                    'class': 'clickable img_unidad_avance_' + oUnidad.getField('id'),
                    'src': 'images/ico_g0.gif',
                    '_0pct_src': 'images/ico_g0.gif',
                    '_50pct_src': 'images/ico_g50.gif',
                    '_100pct_src': 'images/ico_g100.gif',
					'_5050pct_src': 'images/ico_g5050.gif',
					'_0100pct_src': 'images/ico_g0100.gif'
                });
				
				//Coger el src correcto
				switch (oUnidad.getPercent()) {
					case 0:
						if (oUnidad.getCheckedAdquisicion()) {
							img_avance.src = img_avance.getAttribute('_0100pct_src');
						}
						break;
					case 100:
						img_avance.src = img_avance.getAttribute('_100pct_src');
						break;
					default:
						if (oUnidad.getCheckedAdquisicion()) {
							img_avance.src = img_avance.getAttribute('_5050pct_src');
						} else {
							img_avance.src = img_avance.getAttribute('_50pct_src');
						}
						break
				}
               
                //Crear la capa con el texto
                var div_container_unidad = new Element('div', {'class': 'uc_fila'});
				var div_container_unidad_imagen = new Element('div', {'class': 'uc_fila_bot'});
				var div_container_unidad_texto = new Element('div', {'class': 'uc_fila_txt txt2c'});
				var div_container_unidad_texto_title = new Element('div');
				var div_container_unidad_texto_mas = new Element('div');
				var div_container_unidad_texto_capa_formacion = new Element('div');
				var text_unidad = new Element('span', {'class': 'span_open_popup'}).update(oUnidad.getField('denominacion'));
				var text_mas = new Element('span', {'class': 'span_open_layer'}).update('Ver información modulo formativo');
				var div_container_formacion = new Element('div', {'class': 'formacion', 'id': 'resumen_formacion.' + oUnidad.getField('id') + '.' + oUnidad.getModulo()});				
				
				//Crear los handlers de las fila
				//El handler de info de unidad
				text_unidad.observe('click', this._openInfoPopupUnidadHandler.bindAsEventListener(this, oCualificacion.getField('id_familia'), oUnidad.getField('id')));
		
				//El handler para sacar la informacion del modulo formativo
				text_mas.observe('click', this._openLayerModuloHandler.bindAsEventListener(this, oUnidad.getField('id'), oUnidad.getModulo()));
		
				//El handler del icono
				img_avance.observe('click', this._modificarUnidadHandler.bindAsEventListener(this, oCualificacion.getField('id'), oUnidad.getField('id')));
				
                //Juntar los elementos
                div_container_unidad_imagen.appendChild(img_avance);
				div_container_unidad_texto.appendChild(div_container_unidad_texto_title);
				div_container_unidad_texto.appendChild(div_container_unidad_texto_mas);
				div_container_unidad_texto_title.appendChild(text_unidad);
				div_container_unidad_texto_mas.appendChild(text_mas);
				div_container_unidad.appendChild(div_container_unidad_imagen);
				div_container_unidad.appendChild(div_container_unidad_texto);
				div_unidades.appendChild(div_container_unidad);
				div_unidades.appendChild(div_container_formacion);
				div_container_formacion.hide();
            }
            
			//Juntar los elementos
            div_title.appendChild(div_toggle);
			div_title.appendChild(div_nombre);
			div_toggle.appendChild(img_toggle);
			div_container.appendChild(div_title);
            div_container.appendChild(div_unidades);
			
			//Insertarlos
            $('resumen_competencias').insert(div_container);
        }
    },

	/**
	 * Abrir un popup con informacion del unidad
	 * @param {Object} event
	 */
	_openInfoPopupUnidadHandler : function(event){
		var familia_id = arguments[1];
		var unidad_id = arguments[2];

		//Forzar la carga de cualificacion. Si ya esta cargado, no hace nada.
		var cualificaciones = this.buscador.loadCompetencia(familia_id, unidad_id);

		//Coger el unidad
		if (cualificaciones.length > 0) {
			var oUnidad = this.buscador.getUnidad(unidad_id);
			oUnidad.showInfoPopup(cualificaciones[0]);
		}
	},
	
	_openLayerModuloHandler : function(event){        
		var unidad_id = arguments[1];
		var modulo_id = arguments[2];
		
		//Coger el modulo
		var oModulo = this.buscador.getModulo(modulo_id);
		if (!oModulo) {
			var oModulo = this.buscador.getModulo(modulo_id);
		}
		
		oModulo.showFormacionLayer(unidad_id);	
	},
	
	/**
	 * Abrir el popup con informacion de modulo
	 * @param {Object} event
	 */
	_openInfoPopupModuloHandler : function(event) {
		var modulo_id = arguments[1];
		
		//Coger el modulo
		var oModulo = this.buscador.getModulo(modulo_id);
		if (!oModulo) {
			var oModulo = this.buscador.getModulo(modulo_id);
		}
		
		oModulo.showInfoPopup();
		
	},
	
	_modificarUnidadHandler : function(event) {		
		//Si se hace click en el, se abre.
		var id_cualificacion = arguments[1];
		var unidad_id = arguments[2];
		
		//Coger el unidad
		var oUnidad = this.buscador.getUnidad(unidad_id);
		
		//Abrir el popup para seleccionar los conocimientos y para apuntar si se va a aprenderlo o no.
		oUnidad.showConocimientoPopup(id_cualificacion);
	},
	
	/**
	 * El handler cuando se hace click en un toggle de una familia
	 * @param {Object} event
	 */
	_toggleHandler : function(event) {		
		//Si se hace click en el, se abre.
		var id_cualificacion = arguments[1];
		this._toggle(id_cualificacion);
	},
	
	/**
	 * Abrir o cerrar una rama familia
	 */
	_toggle : function(id_cualificacion) {
		//Comprobar si esta abiero o cerrado.
		var layer = $('resumen_cualificacion.' + id_cualificacion);
		var toggle = $('toggle_cualificacion_resumen.' + id_cualificacion);

		if (layer.visible()) {
			toggle.src = toggle.getAttribute('open_src');
			layer.hide();
		} else {
			toggle.src = toggle.getAttribute('close_src');
			layer.show();
		}
	}
})

