(function($) {
    $.lightbox = {
        config: {
            lightboxHtml : '<div id="lightbox"><div id="project"><div class="box"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div class="white_bg"><div class="detail-content"></div></div></div></div></div></div></div></div></div>',
            overlayHtml  : '<div id="lightbox_overlay"></div>'
        },
        
        loading: function(file)
        {
            $('form *').attr("disabled", "disabled");
            //lightbox.css('opacity', 0);
            $('#wrapper').fadeTo('fast', 0.15);
            $(".detail-content", lightbox).html('<div id="loading"><img src="/lib/img/spinner.gif" alt="spinner" width="48" height="48"/></div>');
            
            lightbox.fadeTo('fast', 1, function()
            {
                
                $(".detail-content", lightbox).css('opacity',0);
                $(".detail-content", lightbox).html(
                    _loadFile(file)
                );
                if(isIE7 || isIE6){
                	$(".detail-content", lightbox).css('opacity',1);
                } else {
	                $(".detail-content", lightbox).fadeTo(800,1);
                }                
                $(document).trigger('lightbox.postAttach', [lightbox]);
                
                $('a.projectbox', lightbox).click(function(eventObject)
                {
                    $(document).trigger('lightbox.linkClicked');
                    return false;
                });
            });
        },
    
        display: function()
        {
            lightbox.show();
            overlay.show();
        },
    
        close: function()
        {
            $(document).trigger('lightbox.close');
            return false;
        }
    }

    $.fn.lightbox = function(file, action)
    {
        if (typeof $("#lightbox").attr('id') == "undefined"){
        _init();
        }
        
        function _eventHandler()
        {
            $.lightbox.display();
            $.lightbox.loading(file);
            return false;
        }
        
        if (action == 'focus')
        {
            return this.focus(_eventHandler);
        }
        
        return this.click(_eventHandler);
    }
    
    
    /*/
     * Event bindings
    /*/
    
    $(document).bind('lightbox.close', function()
    {
        overlay.hide();
        $('form *').removeAttr("disabled");
        $('#wrapper').fadeTo('fast', 1);
        
        lightbox.fadeTo('fast', 0, function()
        {
            $(".detail-content", lightbox).html('');
            lightbox.hide();
        });
    });
    
    
    /*/
     * Private members
    /*/
    
    var lightbox;
    var overlay;
    
    
    /*/
     * Private methods
    /*/
    
    function _init()
    {
        _addLightbox();
        _addOverlay();
    }
    
    function _addLightbox()
    {
        $('body').append($.lightbox.config.lightboxHtml);
        lightbox = $('#lightbox');
    }
    
    function _addOverlay()
    {
        $('body').append($.lightbox.config.overlayHtml);
        overlay = $('#lightbox_overlay');
        overlay.click(function()
        {
            $(document).trigger('lightbox.close');
        });
    }
    
    function _loadFile(file)
    {
        var temp;
        $.ajax({
            url: file,
            async: false,
            timeout: 2000,
            success: function(html)
            {
                temp = html;
            },
            error: function()
            {
                alert('failed to load file');
            }
        });
        return temp;
        
    }
    
})(jQuery);