﻿(function($) {
    $.fn.blausen = function(opts) {
        $.fn.blausen.defaults = {
            onRequest: true,
            baseURL: '/blausen/',
            playerContainerID: 'atlas',
            topicID: null,
            maskClass: 'gallery-mask',
            maskTarget: true,
            maskOpacity: '0.8',
            maskZ: 49999,
            playerZ: 50000,
            target: 'body',
            playerWidth: 600,
            playerHeight: 361
        };
        var opts = $.extend({}, $.fn.blausen.defaults, opts);

        var loaded = false;

        $.getScript(opts.baseURL + 'atlas/global/www/js/atlasLoader.js', function(data, textStatus) { loaded = true });

        function Atlas(topicID) {
            var videoWidth = 450;
            var videoRatio = 'widescreen';
            var vars = [
                ["baseURL", opts.baseURL],
                ["playerContainerID", opts.playerContainerID],
                ["loadPath", opts.baseURL + 'atlas/']
			];
            if (topicID) {
                vars.push(["selected_topic", topicID])
            }
            var mask = $('<div />').addClass(opts.maskClass);
            var maskContainer = opts.maskTarget ? $(opts.target) : $("body");
            var windowHeight = $(window).height();
            var windowWidth = $(window).width();
            var docHeight = $(document).height();
            var docWidth = $(document).width();
            var scrollTop = $(document).scrollTop();
            mask.css({
                position: "absolute",
                top: maskContainer.css("padding-top"),
                left: maskContainer.css("padding-left"),
                opacity: "0",
                width: docWidth,
                height: docHeight,
                zIndex: opts.maskZ
            }).click(function() { $("#" + opts.playerContainerID).remove(); $(this).fadeOut("fast", function() { $(this).remove(); }); });
            maskContainer.append(mask);
            mask.fadeTo("fast", opts.maskOpacity);
            var player = $('<div><div id="' + opts.playerContainerID + '" /></div>').css({ zIndex: opts.playerZ, position: 'absolute', top: (windowHeight / 2 - opts.playerHeight / 2) + scrollTop, left: (windowWidth / 2 - opts.playerWidth / 2) });
            $(opts.target).append(player);
            loadAtlas(videoWidth, videoRatio, vars);
        }

        return this.each(function(idx) {
            $(this).click(function() {
                if (!loaded) {
                    alert("Human Atlas not loaded.  Please try again in a moment.");
                    return false;
                }
                var data = $(this).metadata();
                Atlas(data.topicID);
                return false;
            });

        });
    };
})(jQuery);