﻿jQuery.fn.rpslightbox = function (options) {

    var defaults = {
        preload: function () { },
        loaded: function () { },
        canceled: function () { }
    };
    var opts = $.extend(defaults, options);

    var id = $(this).attr('href');
    setupLightbox(id, opts);
    $(this).click(function () {
        showLightbox(id, opts);
    });




    /**********Private Functions***************/

    function setupLightbox(id, options) {
        if (!$(id).hasClass('t-a-setup')) {
            try {
                var structure = '<div class="lightbox-master"><div class="lightboxwrapper"><div class="lightbox-container"><div class="lightbox-info"></div><div></div></div></div></div>';
                $(id).wrap(structure);
                $(id).parents('.lightbox-master').prepend('<div class="lightbox"></div>');
                $(id).parents('.lightboxwrapper').prepend('<a href="javascript:;" title="Close" class="close">' + R.Common.Close + '</a>');
                $('.lightboxwrapper').find('.close').click(function () { closeLB(); });
            }
            catch (e) { }

            $(id).addClass('t-a-setup');
        }
    }
};

function showLightbox(id, options) {

    if (options.preload) {
        if (options.preload() == true) {
            if (options.canceled) options.canceled();
            return;
        }
    }

    $(id).parents('.lightbox-master').find('.lightbox').show().fadeTo(300, 0.6,
        function () {
            $(id).parents('.lightboxwrapper').fadeTo(300, 1.0);
            $(id).parents('.lightboxwrapper').show();
            $(id).show();

            if (options.loaded)
                options.loaded();
        }
    );
}

function closeLB(callback) {
    closeMessage();
    $('.lightboxwrapper').fadeOut(300);
    $('.lightbox-master').find('.lightbox').fadeTo(300, 0.0,
        function () {
            $('.lightbox-master').find('.lightbox').hide();
            if (callback)
                callback();
        }
    );
}
