/***************************************/
// jQuery Tabber
// By Jordan Boesch
// www.boedesign.com
// Dec 25, 2007 (Merry Christmas!)
/***************************************/

(function($){
    $.jtabber = function(params){
	var $defaults = {
	    callback_after: function() {}
	};
        params  = $.extend($defaults, params);

        // parameters
        var navDiv = params.mainLinkTag;
        var $navDiv = $(navDiv);
        var selectedClass = params.activeLinkClass;
        var hiddenContentDiv = params.hiddenContentClass;
        var showDefaultTab = params.showDefaultTab;
        var showErrors = params.showErrors;
        var effect = params.effect;
        var effectSpeed = params.effectSpeed;
        var callback_after = params.callback_after;

        // If error checking is enabled
        if(showErrors){
            if(!$(navDiv).attr('title')){
                alert("ERROR: The elements in your mainLinkTag paramater need a 'title' attribute.\n ("+navDiv+")");
                return false;
            }
            else if(!$("."+hiddenContentDiv).attr('id')){
                alert("ERROR: The elements in your hiddenContentClass paramater need to have an id.\n (."+hiddenContentDiv+")");
                 return false;
            }
        }

        // each anchor
        $navDiv.each(function(){
            $(this).click(function(){
                // once clicked, remove all classes
                $navDiv.removeClass(selectedClass);
                // hide all content
                $("."+hiddenContentDiv).css('display','none');

                // now lets show the desired information
                $(this).addClass(selectedClass);
                var contentDivId = $(this).attr('title');
                if(effect != null){
                    switch(effect){
                        case 'slide':
                            $("#"+contentDivId).slideDown(effectSpeed);
                            break;
                        case 'fade':
                            $("#"+contentDivId).fadeIn(effectSpeed);
                            break;
                    }
                }else{
                    $("#"+contentDivId).css('display','block');
                }
                callback_after(this, $("#" + contentDivId)[0]);
                return true;
            });
                     });
        // If we want to show the first block of content when the page loads
        if(!isNaN(showDefaultTab)){
            showDefaultTab--;
            $(navDiv+":eq("+showDefaultTab+")").click();
        }


    };
})(jQuery);
