var FAQController = function() {
	this.init.apply(this, arguments);
};

FAQController.prototype = {

	items_ : null,
	activeItem_ : null,

	init: function(rootNode) {
		var me = this, i;
				
		me.items_ = [];
	},
	
	addItem : function(item) {
		var me = this;
		
		item.faqController_ = me;
		me.items_.push(item);
	},
	
	handleItemActivated : function(item) {
		var me = this, i;
		
		if(me.activeItem_) {
			me.activeItem_.deactivate();
		}
		me.activeItem_ = item;		
	},
	
	handleItemDeActivated : function(item) {
		var me = this;
		
		me.activeItem_ = null;	
	},
	
	showFirst : function() {
		var me = this;
		
		me.items_[0].activate();
	}

};

// -------------------------------------------------------------

var FAQItem = function() {
	this.init.apply(this, arguments);
};

FAQItem.prototype = {

	question_ : null,
	answer_ : null,
	faqController_ : null,
	isActive_ : false,
	SLIDER_SPEED : 300,
	DO_INTIALIZE : true,

	init: function(question) {
		var me = this;
		
		me.question_ = $(question); // me.rootNode.find("dt");
		me.answer_ = me.question_.next("dd"); //me.rootNode.find("dd");
		
		me.question_.click(function(evt){
			me.handleClick(evt);
		});
		me.question_.mouseover(function(evt){
			me.handleMouseOver(evt);
		});
		me.question_.mouseout(function(evt){
			me.handleMouseOut(evt);
		});
		
		me.deactivate(me.DO_INTIALIZE);
	},
	
	handleClick : function(evt) {
		var me = this;
		
		if(me.isActive_) {
			me.deactivate();
		}
		else {
			me.activate();
		}
	},
	
	handleMouseOver : function(evt) {
		var me = this;
		
		if(!me.isActive_) {
			me.question_.addClass("over");
		}
	},
	
	handleMouseOut : function(evt) {
		var me = this;
		
		if(!me.isActive_) {
			me.question_.removeClass("over");
		}
	},
	
	deactivate : function(isInitialization) {
		var me = this;
		
		me.question_.removeClass("over");		
		me.question_.removeClass("active");
		me.answer_.removeClass("active");
		me.question_.addClass("inactive");
		me.answer_.addClass("inactive");
		if(!isInitialization) {
			me.answer_.slideUp(me.SLIDER_SPEED);
		}
				
		me.isActive_ = false;
		if(me.faqController_) {
			me.faqController_.handleItemDeActivated(me);
		}
	},
	
	activate : function() {
		var me = this;
		
		me.question_.removeClass("inactive");
		me.answer_.removeClass("inactive");		
		me.question_.addClass("active");
		me.answer_.addClass("active");
		me.answer_.slideDown(me.SLIDER_SPEED);
		
		me.isActive_ = true;
		if(me.faqController_) {
			me.faqController_.handleItemActivated(me);
		}
	}

};

// -------------------------------------------------------------

$(document).ready(function(){
	
	if($.browser.msie) {
		$("ul#leftNavigation ul li:first-child").addClass("first-child");
		$("div.klp-container div.row div.container:first-child").addClass("first-child");
	}
	
			// init faqs
	$("dl.faq").each(function(){
		var faqController = new FAQController();
		
		$(this).find("dt").each(function(){
			faqController.addItem(new FAQItem(this));
		});
		
		//faqController.showFirst();
		
	});

});
	
