(function($){
    $.fn.createGallery = function(options) {
        var defaults = {
            galleryContainer:"gal",
            cycleOptions:{
                pause:1,
                before:onAfter
            },
            galPaused:0
        };
        
        var cycle = $.extend(options.cycleOptions, defaults.cycleOptions);
        var options = $.extend(defaults, options);
        
        
        return this.each(function() {
            var $obj = $(this);
            
            var $gal = $(document.createElement("div"))
                        .attr("id",options.galleryContainer)
                        .css({"position":"absolute","z-index":$obj.children().length+5});
                        
            
            $obj.append($gal);
            
            if(cycle.pager != null){
                var $pager = $(document.createElement("div"))
                            .attr("id",cycle.pager.slice(1,cycle.pager.length))
                            .css({"display":"none"})
                            .addClass(cycle.pager.slice(1,cycle.pager.length));

                $gal.append($pager);
            }
            
            if(cycle.next != null && cycle.prev != null){
                var $buttons = $(document.createElement("div"))
                                .attr("id","gal_buttons")
                                .addClass("gal-buttons");
                                
                $gal.append($buttons);
                
                var $next = $(document.createElement("div"))
                                .attr("id",cycle.next.slice(1,cycle.next.length))
                                .addClass(cycle.next.slice(1,cycle.next.length))
                                .css({"display":"none"})
                                .html("next");
                                
                var $prev = $(document.createElement("div"))
                                .attr("id",cycle.prev.slice(1,cycle.prev.length))
                                .addClass(cycle.prev.slice(1,cycle.prev.length))
                                .css({"display":"none"})
                                .html("prev");
                                
                $buttons.append($prev).append($next);
            }
            
            var $cap = $(document.createElement("div"))
                        .attr("id","caption_container")
                        .addClass("caption-container");
                        //.css({"display":"none"})
            
            $gal.append($cap);
            
            
            var $captext = $(document.createElement("div"))
                        .attr("id","caption-text")
                        .html("<div class='caption' id='caption'></div>");
            
            $cap.append($captext);
                    
            //cycle it up
            try{
                $obj.cycle(cycle);
            }catch(ex){
                $.log("Error initializing Cycle Plugin: " + ex);
            }
            /*
            $gal.hover(function(){
                $obj.trigger("hover");
                options.galPaused = 1;
                if(cycle.pager != null){
                    $pager.slideDown();
                }
                if(cycle.next != null && cycle.prev != null){
                    $buttons.children().fadeIn("slow");
                }
                
                if($captext.html().length > 0){
                    $captext.parent().slideDown();
                }
            },function(){
                options.galPaused = 0;
                if(cycle.next != null && cycle.prev != null){
                    $buttons.children().fadeOut("fast");
                }
                if(cycle.pager != null){
                    $pager.slideUp();
                }
                
                $captext.parent().slideUp();
                
            });
            */
            
        });
        
        function onAfter(){
            var $cap = $("#caption");
            var cap = $(this).attr("cap");
            if(cap != undefined){
                $cap.html(cap).fadeIn();
            
                //$cap.parent().slideDown();
                
            }else{
                $cap.html("").fadeOut();
                
                //$cap.parent().slideUp();
                
            }
            
        }
    };
})(jQuery);

jQuery.log = function(message) {
 if(window.console) {
    console.debug(message);
 }else{
    alert(message);
 }
};


/*
<div id="gal_cont">
    <div id="pager"></div>
    <div id="gal_buttons">
        <div id="prev">prev</div>
        <div id="next">next</div>
    </div>
    <div id="caption"></div>
</div>
*/
