jit.widget = jit.widget || {};

jit.widget.HelpPanel = function(cfg) {
    var defaults = {
        modal: false,
        draggable: true,
        underlay: 'shadow',
        width: '360px',
        zIndex: 3,
        close: true
    };
    
    for (var i in defaults) {
        if (!cfg.hasOwnProperty(i)) {
            cfg[i] = defaults[i];
        }
    }
    
    var helpLink = $('#help');

    if (helpLink.length) {
        var xy = YAHOO.util.Dom.getXY(helpLink.get(0));

        cfg.x = cfg.x || xy[0] - 260;
        cfg.y = 60; //cfg.y || xy[1] + helpLink.height();
    } else {
        cfg.x = cfg.x || 20;
        cfg.y = cfg.y || 20;
    }

    if (cfg.url) {
        var url = cfg.url;
        delete(cfg.url);
    
        $.ajax({
            type: 'GET',
            url: url,
            responseType: 'html',
            data: { layout: false },
    
            success: function(html) {
                cfg.html = html;
                new jit.widget.HelpPanel(cfg);
            },
    
            error: function(xhr, textStatus, errorThrown) {
                jit.openBugReportDialog();
            }
        });
    } else if (cfg.html) {
        var html = cfg.html;
        delete(cfg.html);
        
        if (jit.widget.HelpPanel.panel) {
            jit.widget.HelpPanel.panel.destroy();
        }
        
        jit.widget.HelpPanel.superclass.constructor.call(this, 'help-panel', cfg);
        
        this.setFooter('');
        this.setBody(html);
        
        this.render(document.body);

        $('<a href="/feedback?error=true">Report a problem</a>')
            .click(function() { jit.openBugReportDialog(); return false; })
            .appendTo(this.footer);
        $('<span> - </span><a href="/help/faq">FAQs</a>').appendTo(this.footer);

        jit.widget.HelpPanel.panel = this;
    }
}

YAHOO.extend(jit.widget.HelpPanel, YAHOO.widget.Panel);

