// chemLightbox
// Luke Snowden
// 2011

(function ($) {

    $.fn.chemLightbox = function (opts, callbackFnk) {

        if (this.html() != null) {

            return this.each(function (i) {

                var _opts = $.extend({

                    jumpSpeed: 0,
                    contents: '<p>Test content</p>',
                    _class: 'yourLightboxClass',
                    appendTo: 'body',
                    closeOnOverlayClick: false,
                    showCloseButton: true

                }, opts);

                var obj = $(this);

                obj.bind('click', function () {

                    $.fn.chemLightbox.create_light_box(_opts);

                    return false;

                });

                $('.closeButton').live('click', function () {

                    $.fn.chemLightbox.destroy();

                    return false;

                });

                if (_opts.closeOnOverlayClick === true) {

                    $('#chemLightBoxOverlay').live('click', function () {

                        $.fn.chemLightbox.destroy();

                        return false;

                    });

                }

                $.fn.chemLightbox.align_light_box(_opts.jumpSpeed);

            });

        } else {

            var _opts = $.extend({

                jumpSpeed: 0,
                contents: '<p>Test content</p>',
                _class: 'yourLightboxClass',
                appendTo: 'body',
                closeOnOverlayClick: false,
                showCloseButton: true

            }, opts);


            $.fn.chemLightbox.create_light_box(_opts);

            $('.closeButton').live('click', function () {

                $.fn.chemLightbox.destroy();

                return false;

            });

            if (_opts.closeOnOverlayClick === true) {

                $('#chemLightBoxOverlay').live('click', function () {

                    $.fn.chemLightbox.destroy();

                    return false;

                });

            }

            $.fn.chemLightbox.align_light_box(_opts.jumpSpeed);

        }

    }

    $.fn.chemLightbox.destroy = function () {

        if ($('#chemLightBoxOverlay').length != 0) {

            $('#chemLightBoxOverlay, .chemLightBox').fadeOut(200, function () {

                $(this).remove();

            });
        }

    }

    $.fn.chemLightbox.align_light_box = function (speed) {

        var win = $(window);

        win.scroll(function () {

            var scrollposition = win.scrollTop();

            var windowWidth = win.width();

            var minusWidth = $('.chemLightBox').width();

            var posLeft = (windowWidth - minusWidth) / 2;

            var windowHeight = win.height();

            var minusHeight = $('.chemLightBox').height();

            var posTop = ((windowHeight - minusHeight) / 2) + scrollposition;

            $('.chemLightBox').animate({

                'top': posTop + 'px',

                'left': posLeft + 'px'

            }, speed);

        });

    }

    $.fn.chemLightbox.create_light_box = function (_opts) {

        if (typeof _opts.contents == 'object') {

            var temp = $('<p></p>');

            temp.append(_opts.contents);

            var contents = temp.html();

        } else {

            var contents = _opts.contents;

        }

        var chemLightboxOverlayWidth = ($(document).width() > $(window).width() ? $(document).width() : $(window).width());

        var chemLightboxOverlayHeight = ($(document).height() > $(window).height() ? $(document).height() : $(window).height());

        var lightBox =
			'   <div id="chemLightBoxOverlay" style="width:' + chemLightboxOverlayWidth + 'px; height:' + chemLightboxOverlayHeight + 'px;"></div>' +
			'   <div class="chemLightBox ' + _opts._class + '">' +
			'       <div class="chemLightBoxContent">' +
			'           ' + contents +
			'           ' + (_opts.showCloseButton === true ? '<a class="closeButton" href="#">close</a>' : '') +
			'       </div>' +
			'       <div class="chemLightBoxBottom">' +
			'       </div>' +
			'   </div>';

        var lightBoxInner = contents + (_opts.showCloseButton === true ? '<a class="closeButton" href="#">close</a>' : '');

        if ($('#chemLightBoxOverlay').length == 1) {

            $('.chemLightBox').attr('class', 'chemLightBox ' + _opts._class);

            $('#chemLightBoxOverlay').html(lightBoxInner);

        } else {

            $(_opts.appendTo).append(lightBox);

        }

        var scrollposition = $(window).scrollTop();

        var windowWidth = $(window).width();

        var minusWidth = $('.chemLightBox').width();

        var posLeft = (windowWidth - minusWidth) / 2;

        var windowHeight = $(window).height();

        var minusHeight = $('.chemLightBox').height();

        var posTop = ((windowHeight - minusHeight) / 2) + scrollposition;

        $('.chemLightBox').css({ 'top': posTop + 'px', 'display': 'block', 'position': 'absolute', 'left': posLeft + 'px', 'z-index': '9999' });

    }

})(jQuery);

