﻿var accordion = function(list, o) {
    this.init(list, o);
}
jQuery.extend(accordion.prototype, {
    accordionList: null,
    options: null,

    init: function(list, o) {
        // Default configuration properties       
        var defaults = { autoClose: false, toggle: true, openAs: "first" };
        // Cache references to key DOM elements     
        this.accordionList = list;
        this.options = jQuery.extend({}, defaults, o || {});

        switch (this.options.openAs) {
            case "allClosed":
                jQuery('.concertinaContent', this.accordionList).hide();
                break;
            case "allOpen":
                jQuery('.concertinaContent', this.accordionList).show();
                jQuery('li .concertinaHeading', this.accordionList).addClass('open');
                break;
            case "first":
            default:
                jQuery('.concertinaContent', this.accordionList).hide();
                jQuery('.concertinaContent:first', this.accordionList).show();
                jQuery('li .concertinaHeading:first', this.accordionList).addClass('open');
                break;
        }

        jQuery('li .concertinaHeading', this.accordionList).bind('click', this, this._accordionPartClick);
    },

    _accordionPartClick: function(event) {
        var _self = event.data;
        var checkElement = jQuery(this).next();
        if (checkElement.hasClass('concertinaContent')) {
            if (checkElement.is(':visible')) {
                // Content for clicked Item is already visible. 
                // If toggling is configured hide
                if (_self.options.toggle) {
                    checkElement.slideUp('fast').prev().removeClass('open')
                }
            }
            else {
                // Content for clicked item is not visible 
                if (_self.options.autoClose === true) {
                    jQuery('.concertinaContent:visible', _self.accordionList).slideUp('fast').prev().removeClass('open');
                }

                checkElement.slideDown('fast').prev().addClass('open');
                
            }
        }

        event.preventDefault();
        event.stopPropagation();
        return false;
    }
});

if (!window.Nova) { window['Nova'] = {}; };
if (!window.Nova.Controls) { window['Nova']['Controls'] = {}; };
window['Nova']['Controls']['Accordion'] = accordion;

