+} /* }}} inst_get_defs */
+
+function ident_matches (selector, ident) /* {{{ */
+{
+ var part_matches = function (s,p)
+ {
+ if (s == null)
+ return (false);
+
+ if ((s == "/any/") || (s == "/all/"))
+ return (true);
+
+ if (p == null)
+ return (false);
+
+ if (s == p)
+ return (true);
+
+ return (false);
+ };
+
+ if (!part_matches (selector.host, ident.host))
+ return (false);
+
+ if (!part_matches (selector.plugin, ident.plugin))
+ return (false);
+
+ if (!part_matches (selector.plugin_instance, ident.plugin_instance))
+ return (false);
+
+ if (!part_matches (selector.type, ident.type))
+ return (false);
+
+ if (!part_matches (selector.type_instance, ident.type_instance))
+ return (false);
+
+ return (true);
+} /* }}} function ident_matches */
+
+function ident_describe (ident, selector) /* {{{ */
+{
+ var ret = "";
+ var check_field = function (field)
+ {
+ if (ident[field].toLowerCase () != selector[field].toLowerCase ())
+ {
+ if (ret != "")
+ ret += "/";
+ ret += ident[field];
+ }
+ };
+
+ check_field ("host");
+ check_field ("plugin");
+ check_field ("plugin_instance");
+ check_field ("type");
+ check_field ("type_instance");
+
+ if (ret == "")
+ return (null);
+ return (ret);
+} /* }}} function ident_describe */
+
+function def_draw_one (def, data, chart_opts) /* {{{ */
+{
+ var chart_series = new Object ();
+
+ chart_series.type = 'line';
+ chart_series.name = def.legend || def.data_source;
+ chart_series.pointInterval = data.interval * 1000;
+ chart_series.pointStart = data.first_value_time * 1000;
+ chart_series.data = data.data;
+ chart_series.lineWidth = 1;
+ chart_series.shadow = false;
+ chart_series.marker = { enabled: false };
+
+ if (def.area)
+ chart_series.type = 'area';
+
+ if (def.stack)
+ chart_series.stacking = 'normal';
+
+ if ((def.color) && (def.color != 'random'))
+ chart_series.color = def.color;
+
+ chart_opts.series.push (chart_series);
+} /* }}} function def_draw_one */
+
+function def_draw (def, data_list, chart_opts) /* {{{ */
+{
+ var i;
+
+ for (i = 0; i < data_list.length; i++)
+ {
+ if ((def.ds_name) && (def.ds_name != data_list[i].data_source))
+ continue;
+ if (!ident_matches (def.select, data_list[i].file))
+ continue;
+
+ def_draw_one (def, data_list[i], chart_opts);
+ }
+} /* }}} function def_draw */
+
+function instance_draw (inst, def, data_list) /* {{{ */
+{
+ var x_data = [];
+ var y_data = [];
+ var i;