jQuery.fn.extend({
    captify:function(a){
        var a=$.extend({
            speedOver:"fast",
            speedOut:"normal",
            hideDelay:500,
            animation:"fade",
            prefix:"",
            className:"caption",
            itemWrapClass: 'portfolio-item'
        },a);
        
        $(this).each(function(){
            var b=this;
            $(this).load(function(){
                $this=b;
                if(this.hasInit){return false}
                this.hasInit=true;
                var d=false;
                var k=false;
                var g=$("#"+$(this).attr("rel"));
                var z=!g.length?$(this).attr("title"):g.html();
                var f=!z.length?$(this).attr("alt"):z;g.remove();
                var h=this.parent&&this.parent.tagName=="a"?this.parent:$(this);
                var c=h.wrap("<div></div>").parent();
                c.css({overflow:"hidden",padding:0,fontSize:0.1});
                c.addClass(a.itemWrapClass);
                c.width($(this).width());
                c.height($(this).height());
                
                $.map(["top","right","bottom","left"],function(m){
                    $.map(["style","width","color"],function(n){
                        var o="border-"+m+"-"+n;
                        c.css(o,$(b).css(o))
                    })
                });
                
                $(b).css({border:"0 none"});
                
                $.map(["top","right","bottom","left"],function(n){
                    var m="margin-"+n;
                    c.css(m,$(b).css(m))
                });
                
                var l=$("div:last",c.append("<div></div>")).addClass(a.className);
                var j=$("div:last",c.append("<div></div>")).addClass(a.className).append(a.prefix).append(f);
                $("*",c).css({margin:0}).show();
                var i=jQuery.browser.msie?"static":"relative";
                l.css({zIndex:1,position:i});
                j.css({position:i,zIndex:2,background:"none",border:"0 none",opacity:1});
                l.width(j.outerWidth());
                l.height(j.outerHeight());
                j.css({marginTop:-l.outerHeight()});
                var e=function(){
                    if(!d&&!k){
                        l.animate({marginTop:0},a.speedOut)
                    }
                };
    
                $(this).hover(function(){
                    k=true;
                    if(!d){l.animate({marginTop:-l.height()},a.speedOver)
                    }
                },function(){
                    k=false;
                    window.setTimeout(e,a.hideDelay)
                });
    
                $("div",c).hover(function(){
                    d=true
                },function(){
                    d=false;
                    window.setTimeout(e,a.hideDelay)
                })
            });

            if(this.complete||this.naturalWidth>0){
                $(b).trigger("load")
            }
        })
    }
});

