/*
 * Slider - jQuery plugin 1.0
 *
 * Copyright (c) 2010 Paul Schramenko
 */

;(function($) {
    $.fn.extend({
        slider: function(options) {
            var defaults = {
                'head' : '.psSliderHead',
                'content' : '.psSliderContent',
                'sliderTime' : 1000,
                'alwaysReload' : false,
                'ajax' : false
            };
            var settings = $.extend({}, defaults, options, {'calledItem' : '#' + $(this).attr('id')});
            new $.PsSlider(this, settings);
        }
    });

    $.PsSlider = function(item, settings) {
        sliderInit();
        $(settings.calledItem + ' > ' + settings.head).bind('click', function(){
            if ($(this).next().is(':hidden')) {
                slideUpAndDown($(this).next());
            }
        });

        function sliderInit() {
            $(settings.content).each(function(){
                $(this).css('display', 'none');
            });
            slideUpAndDown($(settings.content + ':eq(0)'));
        }

        function slideUpAndDown(item) {
            if (settings.ajax) {
                if (item.html() == '' || !settings.alwaysReload) {
                    loadAjaxContent(item);
                } else {
                    slideIt(item);
                }
            } else {
                slideIt(item);
            }
        }

        function loadAjaxContent(item) {
            jQuery.ajax({
                type : "GET",
                url : item.prev().find('a').attr('href'),
                success : function(data) {
                    item.html(data);
                    slideIt(item);
                }
            });
        }

        function slideIt(item) {
            $(settings.calledItem + ' > ' + settings.content).not(':hidden').slideUp(settings.sliderTime);
            item.slideDown(settings.sliderTime);
        }
    };
})(jQuery);
