// jQuery function wrapper to avoid library conflicts
(function($) {

    function setupDialogs() {
        //	Initialise all dialogues
        $('div.dialog').dialog(dialogDefaults);
        $('div.legalDialog').dialog(dialogDefaults);

        //	Bind open event to info links
        $('a.showInfo').click(function(event) {

            var oldDialogOpen = $.ui.dialog.prototype.open;
            $.ui.dialog.prototype.open = function() {
                var originalScrollTop = $(window).scrollTop(),
				result = oldDialogOpen.apply(this, arguments);
                $(window).scrollTop(originalScrollTop);
            };

            //	Determine the dialogue ID to open, based on the link clicked
            var linkId = $(this).attr('id');
            var idArray = linkId.split('link');
            var infoId = 'info' + idArray[1];

            //	Open dialogue by ID
            $('div#' + infoId).dialog('open');

            //	Adjust opened dialogue position, relative to info link clicked
            var thisPos = $(this).position();
            var thisLeft = parseInt(thisPos.left);
            var thisTop = parseInt(thisPos.top) - parseInt($(this).outerHeight());
            var thisCenter = parseInt($(this).outerWidth() / 2);

            var dialogCenter = parseInt($('div#' + infoId).outerWidth() / 2);
            var dialogHeight = parseInt($('div#' + infoId).outerHeight());

            var dialogLeft = (thisLeft - dialogCenter) + thisCenter;
            var dialogTop = (thisTop - dialogHeight) - $(document).scrollTop();

            var dialogPos = [dialogLeft, dialogTop];

            $('div#' + infoId).dialog('option', 'position', dialogPos);



            //	Prevent default link action
            return false;

        });

        //	Bind open event to info links
        $('a.legalShowInfo').click(function(event) {

            var oldDialogOpen = $.ui.dialog.prototype.open;
            $.ui.dialog.prototype.open = function() {
                var originalScrollTop = $(window).scrollTop(),
				result = oldDialogOpen.apply(this, arguments);
                $(window).scrollTop(originalScrollTop);
            };

            //	Determine the dialogue ID to open, based on the link clicked
            var linkId = $(this).attr('id');
            var idArray = linkId.split('link');
            var infoId = 'info' + idArray[1];

            //	Open dialogue by ID
            $('div#' + infoId).dialog('open');

            //	Adjust opened dialogue position, relative to info link clicked
            var thisPos = $(this).position();
            var thisLeft = parseInt(thisPos.left);
            var thisTop = parseInt(thisPos.top) - parseInt($(this).outerHeight());
            var thisCenter = parseInt($(this).outerWidth() / 2);

            var dialogCenter = parseInt($('div#' + infoId).outerWidth() / 2);
            var dialogHeight = parseInt($('div#' + infoId).outerHeight());

            var dialogLeft = (thisLeft - dialogCenter) + thisCenter;
            var dialogTop = (thisTop - dialogHeight) - $(document).scrollTop();

            var dialogPos = [dialogLeft, dialogTop];

            $('div#' + infoId).dialog('option', 'position', dialogPos);

            //	Prevent default link action
            return false;

        });
    }

    function setupDialog(dialoglink, dialogbox) {
        dialogbox.dialog(dialogDefaults);

        dialoglink.click(function(event) {
            //	Determine the dialogue ID to open, based on the link clicked
            var linkId = $(this).attr('id');
            var idArray = linkId.split('link');
            var infoId = 'info' + idArray[1];

            //	Open dialogue by ID
            $('div#' + infoId).dialog('open');

            //	Adjust opened dialogue position, relative to info link clicked
            var thisPos = $(this).position();
            var thisLeft = parseInt(thisPos.left);
            var thisTop = parseInt(thisPos.top) - parseInt($(this).outerHeight());
            var thisCenter = parseInt($(this).outerWidth() / 2);

            var dialogCenter = parseInt($('div#' + infoId).outerWidth() / 2);
            var dialogHeight = parseInt($('div#' + infoId).outerHeight());

            var dialogLeft = (thisLeft - dialogCenter) + thisCenter;
            var dialogTop = (thisTop - dialogHeight) - $(document).scrollTop();

            var dialogPos = [dialogLeft, dialogTop];

            $('div#' + infoId).dialog('option', 'position', dialogPos);

            //	Prevent default link action
            return false;

        });
    }

    //	Default options for all dialogues
    var dialogDefaults = {
        'autoOpen': false,
        'dialogClass': 'infoDialog',
        'draggable': false,
        'width': 278,
        'maxWidth': 278,
        'resizable': false
    };

    $(document).ready(function() {
        setupDialogs();
    });

})(jQuery);
