MooTools.NB.Custom.Faq = function() {
    
    // Initializing
    initialize();
    
	var expandedItem = null;
	var maxZIndex = 100;
	function collapse(aObj, noExpand) 
	{
		var imageDiv = aObj.getParent().getParent().getFirst();
        var hasImage = (imageDiv.className == "expand_image");
        if(hasImage)
        {
            if(noExpand)
			{
				imageDiv.tween("height", 0);
			}
			else
			{
				setTimeout(function() {
					imageDiv.setStyle("visibility", "hidden");
				}, 1000);
			}			
        }
		
		var answerDiv = aObj.getParent().getNext();
        
		var tween = new Fx.Tween(answerDiv, {
			onComplete : function() {
				answerDiv.setStyle("display", "none");
			}
		});
		tween.start("height", 0);
		
		answerDiv.getParent().removeClass("expanded");
		
		expandedItem = null;
	}
	
	function expand(aObj)
	{
		expandedItem = aObj;
		
		var imageDiv = aObj.getParent().getParent().getFirst();
		var hasImage = (imageDiv.className == "expand_image");
		if(hasImage)
		{
			var height = imageDiv.getFirst().getSize().y + 2;
			imageDiv.setStyle("z-index", maxZIndex++);
			imageDiv.setStyle("height", 0);
			imageDiv.setStyle("visibility", "visible");
			imageDiv.tween("height", height);
		}
		
		var answerDiv = aObj.getParent().getNext();
		answerDiv.setStyle("height", 0);
		answerDiv.setStyle("display", "block");
		var size = answerDiv.getFirst().getSize();
		answerDiv.tween("height", size.y);
		
		answerDiv.getParent().addClass("expanded");
	}
	
	
    function initialize()
    {
        $$(".faq_question a").each(function(el) {
            el.addEvent("click", onFaqItemClick.create({event: true, arguments : el}));
        });
    }
    
    function onFaqItemClick(event, aObj)
    {
        event.stop();
        
		var isEqual = (aObj == expandedItem);
		
		if(expandedItem)
		{
			collapse(expandedItem, isEqual);
		}
		
		if(!isEqual)
		{
		  expand(aObj);
		}		
    }
    
    return {
        
    };
    
}();

