').addClass('title').html(_l('label.sockets')),
                                    $('
').addClass('value').html(sockets)
                                )
                            );
                            $li.appendTo($socketInfo);
                        });                        
                    }
                }
            });
        };
        var resourceChart = function(args) {
            getData();
            return $dashboard
                .click(function(event) {
                    var $target = $(event.target);
                    if ($target.closest('[view-all-target]').size()) {
                        var targetID = $target.closest('[view-all-target]').attr('view-all-target');
                        args.$browser.cloudBrowser('addPanel', {
                            title: $target.closest('[view-all-title]').attr('view-all-title'),
                            data: '',
                            noSelectPanel: true,
                            maximizeIfSelected: true,
                            complete: function($newPanel) {
                                listView(targetID).appendTo($newPanel);
                            }
                        });
                    }
                });
        };
        $(window).bind('cloudStack.fullRefresh cloudStack.updateResources', function() {
            if ($dashboard.is(':visible')) {
                getData();
            }
        });
        return function(args) {
            $dashboard.find('#update_ssl_button').click(function() {
                cloudStack.dialog.createForm({
                    form: {
                        title: 'label.update.ssl',
                        desc: 'message.update.ssl',
                        fields: {
                            certificate: {
                                label: 'label.certificate',
                                isTextarea: true
                            },
                            privatekey: {
                                label: 'label.privatekey',
                                isTextarea: true
                            },
                            domainsuffix: {
                                label: 'label.domain.suffix'
                            }
                        }
                    },
                    after: function(args) {
                        var $loading = $('
').addClass('loading-overlay');
                        $('.system-dashboard-view:visible').prepend($loading);
                        $.ajax({
                            type: "POST",
                            url: createURL('uploadCustomCertificate'),
                            data: {
                                certificate: args.data.certificate,
                                privatekey: args.data.privatekey,
                                domainsuffix: args.data.domainsuffix
                            },
                            dataType: 'json',
                            success: function(json) {
                                var jid = json.uploadcustomcertificateresponse.jobid;
                                var uploadCustomCertificateIntervalID = setInterval(function() {
                                    $.ajax({
                                        url: createURL("queryAsyncJobResult&jobId=" + jid),
                                        dataType: "json",
                                        success: function(json) {
                                            var result = json.queryasyncjobresultresponse;
                                            if (result.jobstatus == 0) {
                                                return; //Job has not completed
                                            } else {
                                                clearInterval(uploadCustomCertificateIntervalID);
                                                if (result.jobstatus == 1) {
                                                    cloudStack.dialog.notice({
                                                        message: 'Update SSL Certificate succeeded'
                                                    });
                                                } else if (result.jobstatus == 2) {
                                                    cloudStack.dialog.notice({
                                                        message: 'Failed to update SSL Certificate. ' + _s(result.jobresult.errortext)
                                                    });
                                                }
                                                $loading.remove();
                                            }
                                        },
                                        error: function(XMLHttpResponse) {
                                            cloudStack.dialog.notice({
                                                message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse)
                                            });
                                            $loading.remove();
                                        }
                                    });
                                }, g_queryAsyncJobResultInterval);
                            },
                            error: function(XMLHttpResponse) {
                                cloudStack.dialog.notice({
                                    message: 'Failed to update SSL Certificate. ' + parseXMLHttpResponse(XMLHttpResponse)
                                });
                                $loading.remove();
                            }
                        });
                    },
                    context: {}
                });
                return false;
            });
            $dashboard.find('#refresh_button').click(function() {
                getData();
                return false;
            });
            return resourceChart(args);
        };
    };
}(cloudStack, jQuery));