YAHOO.namespace('YAHOO.nestle.app');

YAHOO.nestle.app.Faq = function(conf) {
	this.init(conf);
}

YAHOO.nestle.app.Faq.prototype = {
	
	id: null,
	
	element: null,
	
	items: [],
	
	bgcolor: '#FFF',
	
	animDuration: 0.4,
	
	onClickHandler: function (e, args) {
		if (this.getItemAnswerHeight(args[0]) == 0) {
			this.expandBlock(args[0]);
		} else {
			this.collapseBlock(args[0]);
		}
	},
	
	expandBlock: function (idx) {
		new YAHOO.util.Anim(this.getItemAnswer(idx), 
							{height: {to: this.getItemContainerHeight(idx)}, opacity: {from: 0, to: 1}}, 
							this.animDuration, YAHOO.util.Easing.easeOut).animate();
		new YAHOO.util.ColorAnim(this.items[idx], 
								{backgroundColor: {to: this.bgcolor}}, this.animDuration).animate();
		this.setItemActive(idx);
	},
	
	collapseBlock: function (idx) {
		new YAHOO.util.Anim(this.getItemAnswer(idx), 
							{height: {to: 0}, opacity: {to: 0}}, 
							this.animDuration, YAHOO.util.Easing.easeIn).animate();
		new YAHOO.util.ColorAnim(this.items[idx], 
							{backgroundColor: {to: '#FFFFFF'}}, this.animDuration).animate();
		this.setItemInactive(idx);
	},
	
	getItemLink: function (idx) {
		return YAHOO.util.Dom.getElementsByClassName('link', 'a', this.items[idx])[0];
	},
	
	getItemAnswer: function (idx) {
		return YAHOO.util.Dom.getElementsByClassName('answer', 'div', this.items[idx])[0];
	},
	
	getItemAnswerHeight: function (idx) {
		return parseInt(this.getItemAnswer(idx).offsetHeight);
	},
	
	getItemContainer: function (idx) {
		return YAHOO.util.Dom.getElementsByClassName('cont', 'div', this.items[idx])[0];
	},
	
	getItemContainerHeight: function (idx) {
		return parseInt(this.getItemContainer(idx).offsetHeight);
	},
	
	setItemActive: function (idx) {
		YAHOO.util.Dom.addClass(this.items[idx], 'active');
	},
	
	setItemInactive: function (idx) {
		YAHOO.util.Dom.removeClass(this.items[idx], 'active');
	},
	
	init: function(config) {
		if (config.id != undefined) this.id = config.id;
		if (config.bgcolor != undefined) this.bgcolor = config.bgcolor;
		if (config.animDuration != undefined) this.animDuration = config.animDuration;
		this.element = YAHOO.util.Dom.get(this.id);
		this.items = YAHOO.util.Dom.getElementsByClassName('item', 'div', this.element);
		
		for (var i = 0, l = this.items.length; i < l; i++) {
			YAHOO.util.Event.on(this.getItemLink(i), 'click', this.onClickHandler, [i], this);
		}
	}
	
}

