/**
 * @author: Clearstyle.nl
 * @version: 20090215-1
 * Adds some jQuery/Flogs functionality to the site by means of a jQuery-plugin.
 */

/**
 * @author: Clearstyle.nl
 * @version: 20090215-1
 * ACCORDION FUNCTION
 * An 'accordion' element consists of multiple 'containers' (the children), each of which can contain (one or more) 'header' elements and 'content' elements.
 * When a visitor clicks on a 'header' element', all 'content' elements within _that_ container are shown and the other containers (within the 'accordion' element) are hidden.
 */ 
$.fn.csAccordion = function(options)
{
	// Default options
	var defaults = {
		openFirst:      0, // Open this 'content' on inialization (zero-based index)
		header:         '.content-accordion-header', // jQuery selector for determining the header part within a container
		content:        '.content-accordion-content', // jQuery selector for determining the content part within a container
		hoverClass:     'content-accordion-hover', // Assign this class to header elements when hovered over
		activeClass:    'content-accordion-active', // Assign this class to container elements when expanded
		closedClass:    'content-accordion-closed' // Assign this class to container elements when closed
	};
	
    // Extend our default options with those provided.
    var opts = $.extend({}, defaults, options);
    var containers = $(this).children();
    containers.each(
        function()
        {
            // Match all header elements within this container
            $(opts.header, this).click(
                function()
                {
                    var activeContainer = $($(this).parents(), containers).get(0);
                    var otherContainers = containers.not(activeContainer);
                    //var parent = $(activeContainer).parent();
                    //parent.css("height", parent.height() + "px");
                    //alert(parent.css("height"));
                    $(opts.content, otherContainers).hide();
                    $(opts.header, otherContainers).addClass(opts.closedClass).removeClass(opts.activeClass);
                    $(opts.content, activeContainer).show();//slideDown("slow");
                    $(this).addClass(opts.activeClass).removeClass(opts.closedClass);
                    //parent.css("height", "");
                }
            ).hover(
                function()
                {
                    var el = $(this);
                    if (!el.hasClass(opts.activeClass)) {
                        $(this).addClass(opts.hoverClass);
                    }
                },
                function()
                {
                    $(this).removeClass(opts.hoverClass);
                }
            );
        }
    );
    if (containers.length > 0) {
        var active = containers.get(opts.openFirst);
        $(opts.header, active).click();
    }
};
