
/**
 * Objeto QCollectionPanel - controlador de uma lista de paineis
 * 
 * @param args {
 * 		name 	- nome/id da div (obrigatorio)
 * 		opened	- id do painel que inicializará aberto (default - o primeiro)
 * }
 * 
 * @since 1.0 28/07/2009
 * @author Inacio Gomes Klassmann
 */
function QCollectionPanel(args) {
	var name 		= args.name;
	var opened		= args.opened ? args.opened : null;
	var collection	= null;
	var me			= this;
	me.panel		= [];


	/**
	 * Adiciona um painel ao controlador
	 * 
	 * @param QCollapsePanel p
	 */
	this.addPanel = function(p) {
		me.panel.push(p);
	}

	
	/**
	 * Adiciona um painel ao controlador
	 * 
	 * @param Object args
	 */
	this.addNewPanel = function(args) {
		me.panel.push(new QCollapsePanel(args));
	}


	/**
	 * Inicializa o controlador do grupo de paineis
	 * 
	 * @param boolean startClosed - indica se os paines deverão inicializar fechados
	 */
	this.init = function(startClosed) {
		collection = collection ? collection : $('#' + name);
		for (var i = 0; i < me.panel.length; i++) {
			me.panel[i].collapse.click(me.slideAll);
			if (!startClosed) {
				if (!opened && i == 0)
					me.panel[i].slideDown();
				else if (opened == me.panel[i].getName())
					me.panel[i].slideDown();
			}
		}
	}


	/**
	 * Faz a animação para manter apenas um painel aberto
	 */
	this.slideAll = function(index) {
		for (var i = 0; i < me.panel.length; i++) {
			if (this.id == me.panel[i].getName()) {
				if (!me.panel[i].isOpened())
					me.panel[i].slideDown();
			} else {
				me.panel[i].slideUp();
			}
		}
	}
}


