/**
 * Sub Pages
 */
Class({
    module: 'Graphite.SubPage',
    statics: {
        xhr:    null
    },
    members: {
        options: {
            uri:    '#'
        },

        block: function()
        {
            $('#sub-page-dialog').block({ message: null, overlayCSS: {
                backgroundColor: '#313131',
                backgroundImage: 'url(/images/loader_313131.gif)',
                backgroundPosition: 'center center',
                backgroundRepeat: 'no-repeat',
                opacity: '0.5'
            }});
        },

        unblock: function()
        {
            $('#sub-page-dialog').unblock();
        },

        load: function(uri)
        {
            uri = uri || this.options.uri;
            var self = this;

            self.block();

            $('#sub-page-dialog .dialog-content')
                .scrollTop(0)
                .load(uri, {}, function(responseText, textStatus, xhr)
                {
                    self.unblock();

                    /**
                     * Hookup any inline links
                     */
                    $('a.inline').click(function(e)
                    {
                        e.preventDefault();
                        self.load($(this).attr('href'));
                    });
                });
        },

        _init: function()
        {
            if ($('#sub-page-dialog').find('.dialog-content-wrapper').length < 1)
            {
                $('#sub-page-dialog').find('.dialog-content').wrap('<div class="dialog-content-wrapper" />');
            }

            if ($('#sub-page-dialog').find('.close-dialog').length < 1)
            {
                $('#sub-page-dialog').find('.dialog-content-wrapper').prepend(
                    '<div class="close-dialog"><a href="#" class="cancel-dialog"><img src="/site/images/icon_close_subpage.gif" width="20" height="19" border="0" /></a></div>'
                );
            }

            var self = this,
            dialog = new Graphite.Dialog({
                dialog:     $('#sub-page-dialog'),
                onclose:    function()
                {
                    if (self.clazz.xhr !== null)
                    {
                        self.clazz.xhr.abort();
                    }

                    $('#sub-page-dialog').find('.close-dialog').remove();
                }
            });

            dialog.open();

            if (self.clazz.xhr !== null)
            {
                self.clazz.xhr.abort();
            }

            self.load();
        }
    }
}, /* Constructor */ function(options)
{
    $.extend(this.options, options || {});
    this._init();
});
