(function($){

	$.fn.unwrap = function(elem){
		var elements;
		
		if (elem == null){
			elements = jQuery(this);
		}
		else if (typeof elem == "string"){
			elements = jQuery(this).find(elem);
		}
		else if (typeof elem == "object"){
			elements = elem;
		}
		else alert("unknow elem");
		
		elements.each(function(){
			jQuery(this).parent().replaceWith(jQuery(this));
		});
	}

})(jQuery);  

(function($) {        
    $.fn.extend({
        EFOverlay: function( options ) {        
         var opt = {            
            dbg: true,
            ins	: 'unknown',
            target: $(this),   
            targetAlt: $(this),   
            source: $(this),
            top: 20,
            left: 0,
            text: ''
         };
         return this.each(function() {
         var obj = $(this);           
         
         obj.opt = opt;
         obj.timestamp = '';
         $.extend( obj.opt, options);    
                                            
         obj.initialize = function () {
        	 obj.click(function(){
     			$("body").append("<div class='efo-"+opt.ins+"-overlay efo-overlay'>&nbsp;</div>");
     			$('.efo-'+opt.ins+'-overlay').unbind().click(function() {
     				$(this).remove();     				
     				$('.efo-'+opt.ins+'-container').css("display","none");   
     				obj.opt.close();
     			});
     			var pos = $(obj.opt.target).position();
     			pos.top += obj.opt.top;
     			pos.left += obj.opt.left;     	     			
     			if ($('.efo-'+opt.ins+'-container').size() == 0) {
     				$(obj.opt.source).wrap("<div class='efo-"+opt.ins+"-container efo-container'></div>");
     				$(obj.opt.source).wrap("<div class='efo-"+opt.ins+"-inner efo-inner'></div>");
     				$('.efo-'+opt.ins+'-inner').before('<div class="efo-head">'+$(obj.opt.source).attr("alt")+'</div>');
     				$(obj.opt.source).css("display","block");
     				obj.opt.start();
     			}     			
     			$('.efo-'+opt.ins+'-container').css("display","block");     			    				   	
     			$('.efo-'+opt.ins+'-container').css({top:pos.top+'px',left:pos.left+'px'});
     		});       	 
         };
         
         obj.initialize();
         }); 
    	}
    });
})(jQuery); 
