(function($){
    $.fn.makeFAQ = function(options) {
        var defaults = {
            indexTitle: "FAQ Index (click to expand or collapse) &gt;",
			collapseIndex:false,
            faqHeader: ":header",
            displayIndex: false,
			faqIndexIDs: 'faqindex'
        };
        var options = $.extend(defaults, options);

        return this.each(function() {
            var $obj = $(this);
            
			$obj.wrap("<div id='faqRoot'></div>");
            if(options.displayIndex) {
                $obj.before('<div id="faqindex"><h4 class="'+options.faqIndexIDs+'">'+options.indexTitle+'</h4><ul class="'+options.faqIndexIDs+'"></ul></div>');
            };
			
			if(options.collapseIndex) {
				var indexUL = $('ul.'+options.faqIndexIDs);
				indexUL.hide();
				$('h4.'+options.faqIndexIDs).css({'cursor':'pointer'}).toggle(
				function(){
					indexUL.slideDown('medium');
				}, function (){
					indexUL.slideUp('medium');
				});
			}
            
			var $faqEntries = $obj.children(options.faqHeader);
            var i = 0;
            $faqEntries.each(function () {
                var $entry = $(this);
                var entryName = $entry.text();
                var entryNameSafe = entryName.replace(/\W/g,"") + i;
                i++;
                var itemHTML = "<li><a id='" + entryNameSafe.toString() + "Index' href='#" + entryNameSafe.toString() + "' >" + entryName + "</a></li>";
                $('#faqindex ul').append(itemHTML);
                if(options.displayIndex) {
                    $('#' + entryNameSafe.toString() + 'Index').click( function(){ 
                        $('#' + entryNameSafe.toString()).next('div').slideDown('fast');
                        $('#' + entryNameSafe.toString()).addClass('faqopened');
                     });
                };
                $entry.next("div").addClass('faqcontent');
                $entry.attr({
                    title: "Click to expand/collapse",
                    name: entryNameSafe,
                    id: entryNameSafe                    
                    })
                    .addClass("faqclosed")
                    
                    .click( function() {
                        $entry.next('div').slideToggle('fast');
                        $entry.toggleClass('faqopened');
                        })
                        .next('div').css({ 
                            display: "none"
                        });
            });

        });
    };
})(jQuery);
