(function($) {
    $.fn.tabs = function(options) {
        var defaults = {
            SelectedClass: "selected",
            NavigationLinkSelector: "ul a",
            ContainerSelector: "div.tabContainer > div"
        };

        var settings = $.extend({}, defaults, options);

        var $TabPanel = $(this);
        var $NavigationLinks = $(settings.NavigationLinkSelector, $TabPanel);
        var $Containers = $(settings.ContainerSelector, $TabPanel);

        $Containers.hide().first().show();
        $NavigationLinks.first().addClass(settings.SelectedClass);

        $NavigationLinks.each(function(index, value) {
            $(this).bind("click", function(e) {
                e.preventDefault();

                var $this = $(this);

                $NavigationLinks.removeClass(settings.SelectedClass);
                $Containers.hide();
                $($this.attr("href")).show();

                $this.addClass(settings.SelectedClass);
            });
        });

        return this;
    }
})(jQuery);

(function($) {
    $.fn.accordion = function(options) {
        var defaults = {
            HeaderSelector: "h2,h3",
            TeaserSelector: "div.info",
            BodySelector: "div.more",
            SpriteOpenText: "more &raquo;",
            SprintCloseText: "close &raquo;",
            ToggleSpeed: 500
        };

        var settings = $.extend({}, defaults, options);

        var $Accordion = $(this);
        var $Header = $(settings.HeaderSelector, $Accordion);
        var $Teaser = $(settings.TeaserSelector, $Accordion);
        var $Body = $(settings.BodySelector, $Accordion);

        $Body.addClass("section").hide();
        //        $Body.each(function() {
        //            $Container = $(this);

        //            var tHeight = 0;

        //            $Container.children().each(function(index, value) {
        //                tHeight += $(this).height();
        //            });

        //            $Container.height(tHeight).hide();
        //        });

        $Teaser.css("cursor", "pointer");
        $Header.css("cursor", "pointer");
        $("<span class='toggleSprite'>" + settings.SprintCloseText + "</span>").appendTo($Teaser);

        $Header.each(function() {
            $(this).bind("click", function() {
                ProcessClick($(this).siblings(settings.TeaserSelector));
            });
        });

        $Teaser.each(function() {
            $(this).bind("click", function() {
                ProcessClick($(this));
            });
        });

        function ProcessClick($this) {
            $this.siblings(settings.BodySelector).slideToggle(settings.ToggleSpeed);
            $this.toggleClass("close");

            if (settings.SpriteOpenText != settings.SprintCloseText) {
                $this.find("span.toggleSprite").html($this.hasClass("close") ? settings.SpriteOpenText : settings.SprintCloseText);
            }
        }

        return this;
    }
})(jQuery);

//// remap jQuery to $
//(function($){

// 





// 



//})(this.jQuery);



//// usage: log('inside coolFunc',this,arguments);
//// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
//window.log = function(){
//  log.history = log.history || [];   // store logs to an array for reference
//  log.history.push(arguments);
//  if(this.console){
//    console.log( Array.prototype.slice.call(arguments) );
//  }
//};



//// catch all document.write() calls
//(function(doc){
//  var write = doc.write;
//  doc.write = function(q){ 
//    log('document.write(): ',arguments); 
//    if (/docwriteregexwhitelist/.test(q)) write.apply(doc,arguments);  
//  };
//})(document);



