A.Sliders = {
    initListeners: function() {
        Y.all('.sliding-content').each(function(v) {
            v.setData('origHeight', v.get('scrollHeight') + 'px');
        });

        Y.all('.sliding-title').on('click', function(e) {
            var slidingContainer = e.target.ancestor('.sliding-up');
            if (!slidingContainer) {
                var slidingContainer = e.target.ancestor('.sliding-down');
            } 
            A.Sliders.slideToggle(slidingContainer);

        });
    },
    slideOpen: function(container, after) {
        if (container.hasClass('element-closed')) {
            A.Sliders.slideToggle(container, after);
        } else {
            if (Y.Lang.isFunction(after)) {
                after();
            }
        }
    },
    slideClose: function(container, after) {
        if (!container.hasClass('element-closed')) {
            A.Sliders.slideToggle(container, after);
        } else {
            if (Y.Lang.isFunction(after)) {
                after();
            }
        }
    },
    slideToggle: function(container, after) {
        var content = container.one('.sliding-content');
        after = Y.Lang.isFunction(after) ? after : function() {};

        var anim = new Y.Anim({
            node: content,
            easing: Y.Easing.easeNone,
            duration: '0.2'
        });

        if (container.hasClass('element-closed')) {
            anim.set('to', { height: content.getData('origHeight') });
            anim.on('end', function() {
                container.toggleClass('element-closed');
                content.setStyle('height', 'auto');
                after();
            });
        } else {
            anim.set('to', { height: '0' });
            anim.on('start', function() {
                container.addClass('element-closed');
            });
        }
        anim.run();
    }
}

