').appendTo($tabMain)
                      .attr({ id: tabID })
                      .append(chartView(this));
                // Tooltip hover event
                var $tooltip = $tabContent.find('.tooltip-info:visible').hide();
                $tabContent.find('li.main').mouseenter(function(event) {
                  $tooltip.css({ opacity: 0 });
                  $tooltip.show().animate({ opacity: 1 }, { queue: false });
                  var $item = $(this);
                  $item.siblings().each(function() {
                    $tooltip.removeClass($(this).attr('rel'));
                  });
                  $tooltip.addClass('tooltip-info ' + $item.attr('rel'));
                });
                $tabContent.find('li.main').mouseleave(function(event) {
                  $tooltip.animate({ opacity: 0 }, { queue: false });
                });
                // Main items pre-filter
                if (naas.mainNetworksPreFilter) {
                  var disabledNetworks = naas.mainNetworksPreFilter({
                    context: context
                  });
                  $(disabledNetworks).each(function() {
                    var $item = $tabContent.find('li.main[rel=' + this + ']');
                    $item.addClass('disabled');
                  });
                }
                // Main items configure event
                $tabContent.find('li.main .view-all.configure').click(function() {
                  var itemID = $(this).closest('li').attr('rel');
                  $browser.cloudBrowser('addPanel', {
                    title: itemID + ' details',
                    maximizeIfSelected: true,
                    complete: function($newPanel) {
                      $newPanel.detailView(
                        $.extend(true, {}, naas.mainNetworks[itemID].detailView, {
                          $browser: listViewArgs.$browser,
                          context: { zones: context.physicalResources }
                        })
                      );
                    }
                  });
                  return false;
                });
                // Provider configure event
                $tabContent.find('li.provider .view-all.configure').click(function() {
                  var $li = $(this).closest('li');
                  var itemID = $li.attr('rel');
                  var status = $li.attr('network-status');
                  var networkProviderArgs = naas.networkProviders.types[itemID];
                  var action = networkProviderArgs.actions ? networkProviderArgs.actions.add : null;
                  var createForm = action ? networkProviderArgs.actions.add.createForm : null;
                  var itemName = networkProviderArgs.label;
                  /**
                   * Generate provider-wide actions
                   */
                  var loadProviderActions = function($listView) {
                    $listView.find('.toolbar .main-actions').remove();
                    var $providerActions = providerActions(
                      networkProviderArgs.providerActions ?
                        networkProviderArgs.providerActions : {},
                      {
                        success: function(args) {
                          var action = args.action;
                          $loading.appendTo($listView);
                          $('div.notifications').notifications('add', {
                            desc: action.messages.notification({}),
                            interval: 2000,
                            poll: action.notification.poll,
                            _custom: args ? args._custom : null,
                            complete: function(args) {
                              $loading.remove();
                              loadProviderActions($listView);
                            }
                          });
                        },
                        actionFilter: networkProviderArgs.providerActionFilter
                      }
                    );
                    $providerActions.appendTo($listView.find('.toolbar'));
                  };
                  var loadProviderDetails = function($container) {
                    var provider = naas.networkProviders.types[itemID];
                    if (provider.type == 'detailView') {
                      var $detailView = $container.detailView($.extend(true, {}, provider, {
                        $browser: $browser
                      }));
                    } else {
                      var $listView = $container.listView({
                        listView: provider
                      });
                      loadProviderActions($listView);
                    }
                  };
                  $browser.cloudBrowser('addPanel', {
                    title: itemName + ' details',
                    maximizeIfSelected: true,
                    complete: function($newPanel) {
                      if (status == 'not-configured') {
                        // Create form
                        var formData = cloudStack.dialog.createForm({
                          form: createForm,
                          context: { zones: listViewArgs.context.physicalResources },
                          after: function(args) {
                            action.action($.extend(args, {
                              response: {
                                success: function(args) {
                                  $newPanel.find('form').prepend($('
').addClass('loading-overlay'));
                                  $('div.notifications').notifications('add', {
                                    desc: action.messages.notification({}),
                                    interval: 1000,
                                    poll: action.notification.poll,
                                    _custom: args ? args._custom : null,
                                    complete: function(args) {
                                      refreshChart();
                                      $newPanel.html('');
                                      $loading.remove();
                                      loadProviderDetails($newPanel);
                                    }
                                  });
                                }
                              }
                            }));
                          },
                          noDialog: true
                        });
                        var $formContainer = formData.$formContainer.addClass('add-first-network-resource');
                        var $form = $formContainer.find('form');
                        var completeAction = formData.completeAction;
                        $newPanel.append(
                          $formContainer
                            .prepend(
                              $('
').addClass('title').html('Add new ' + itemName + ' device')
                            )
                            .append(
                              $('
')
                                .addClass('button submit')
                                .append($('').html('Add'))
                                .click(function() {
                                  if ($form.valid()) {
                                    completeAction($formContainer);
                                  }
                                })
                            )
                        );
                      } else {
                        loadProviderDetails($newPanel);
                      }
                    }
                  });
                });
              });
              $tabMain.tabs();
              $tabMain.find('li:first').addClass('first');
              $tabMain.find('li:last').addClass('last');
              var $info = $charts.find('.side-info, .tooltip-icon').filter(function() {
                return $(this).hasClass(
                  context.physicalResources[0].networktype == 'Basic' ?
                    'basic' : 'advanced'
                );
              }).show();
            }
          }
        });
        var refreshChart = function() {
          $charts.children().remove();
          loadNetworkData();
        };
        $refresh.click(function() {
          refreshChart();
          return false;
        });
        var fullRefreshEvent = function(event) {
          if ($charts.is(':visible')) {
            refreshChart();
          } else {
            $(window).unbind('cloudStack.fullRefresh', fullRefreshEvent);
          }
        };
        $(window).bind('cloudStack.fullRefresh', fullRefreshEvent);
      };
      loadNetworkData();
      return $charts;
    };
  };
})(jQuery, cloudStack);