/**
 * Objeto capacidades.
 */
var Capacidad = Class.create({
    /**
     * Iniciar el objeto.
     */
    initialize: function(h, criterios, Buscador){
		this._fields = h;
        this._criterios = null;
        this.buscador = Buscador;
        this._init();
        this.insertCriterios(criterios);
    },
    
    /**
     * Acciones del init
     */
    _init: function(){
        this._criterios = new Array();
    },
    
    /**
     * Insertar los criterios
     * @param {Object} criterios
     */
    insertCriterios: function(criterios){
        for (var i = 0, len = criterios.length; i < len; ++i) {
            var criterios_array = criterios[i];
            for (var j = 0, len2 = criterios_array.length; j < len2; ++j) {
				var criterio_hash = $H(criterios_array[j]);
				
				if (criterio_hash.get('id_cap') == this.getField('id')) {
					var criterio = new Capacidad_criterio(criterio_hash, this.buscador);
					var id = criterio.getField('id');
					this._criterios.push(id);
					this.buscador.insertCapacidad_criterio(id, criterio);
				}
            }
        }
    },
	
    /**
     * Recoger los datos de un campo
     * @param {String} fieldname
     */
    getField: function(fieldname){
        return this._fields.get(fieldname);
    },
	
   /**
     * Dibujar el html de popup de informacion
     */
    drawInfoPopupHTML: function(id_modulo){
		//Coger el id
		var id = id_modulo + '_' + this.getField('id');
      
        //Crear el elemento
        var div = new Element('div', {'class': 'realizaciontr_topline txt2a container'});
        var div_line = new Element('div', {'class': 'line'});
        var div_toggle = new Element('div', {'class': 'left realizacion_toggle'});
        var div_title = new Element('div', {'class': 'left realizacion_title_infopopup'}).update(this.getField('capacidad'));
        var img_toggle = new Element('img', {'src': 'images/c3.gif','id': 'infopopup_toggle_capacidad_criterios.' + id,'open_src': 'images/c3.gif','close_src': 'images/e3.gif'});
        var div_criterios = new Element('div', {'id': 'infopopup_layer_capacidad_criterios.' + id,'class': 'line_popup_subcontent left'});
        
        //Juntar los elementos
        div.appendChild(div_line);
        div_line.appendChild(div_toggle);
        div_line.appendChild(div_title);
        div_toggle.appendChild(img_toggle);
        div.appendChild(div_criterios);
        
        //Ocultar la capa de unidades
        div_criterios.hide();
        
        //Crear los handlers
        img_toggle.observe('click', this._toggleHandler.bindAsEventListener(this, id));
        
        //Añadir la capa a la lista de cualificaciones
        $('info_popup_layer_capacidades.' + id_modulo).appendChild(div);
    },

    /**
     * El handler cuando se hace click en un toggle de una cualificacion
     * @param {Object} event
     */
    _toggleHandler: function(event){
		var id = arguments[1];
				
		//Si se hace click en el, se abre.
		this._toggle(id);
    },
	
    /**
     * Abrir o cerrar una rama de criterios
     */
    _toggle: function(id){
		var layer = $('infopopup_layer_capacidad_criterios.' + id);
		var toggle = $('infopopup_toggle_capacidad_criterios.' + id);
       
	    //Comprobar si esta abiero o cerrado.
        if (layer.visible()) {
            toggle.src = toggle.getAttribute('open_src');
            layer.hide();
        }
        else {
            toggle.src = toggle.getAttribute('close_src');
            layer.show();
        }
        
        //Dibujar el html de criterio.
		if (layer.innerHTML == '') {
			var id_array = id.split('_');
			var id_modulo = id_array[0];
			
			//Coger los ids
			for (var i = 0, len = this._criterios.length; i < len; ++i) {
				var id = this._criterios[i];
				criterio = this.buscador.getCapacidad_criterio(id);
				
				criterio.drawInfoPopupHTML(id_modulo, this.getField('id'));
			}
		}
    }
})
