	function drawGraph(panel_id) {

		var panelHeight = 200;
		var panelWidth  = 350;
		var panel = new orthoPanel(panel_id, 0, 0, panelWidth, panelHeight);
 
		var xdata = [];
		var ydata0 = [];
		var ydata1 = [];
		var x_minval = 0;
		var x_maxval = 8;
		var y_minval = 0;
		var y_maxval = 70;

		// Simple test functions to display interesting curves...
		var x = 0.5;	
		for(var i=0; i<16; i++) {
			xdata.push(x);
			var y = Math.pow(x, 2);
			ydata0.push(y);
			y = y_maxval - Math.pow((x_maxval - x), 2);
			ydata1.push(y);
			x+= 0.5;
		}

		var x_graph_offset = 40;
		var y_graph_offset = 40;

		var graph_width = panelWidth - 2 * x_graph_offset;
		var graph_height = panelHeight - 2 * y_graph_offset;

		var x_scale    = Math.round(graph_width / (x_maxval-x_minval));
		graph_width    = Math.round(x_maxval * x_scale);
		x_graph_offset = Math.round((panelWidth - graph_width) / 2);

		var y_scale    = Math.round(graph_height / (y_maxval-y_minval));
		graph_height   = Math.round(y_maxval * y_scale);
		y_graph_offset = Math.round((panelHeight - graph_height) / 2);

		var ruler_tick_height = 6; 
		var ruler_tick_interval = Math.round(x_scale);
		
        var hruler = new orthoRuler(panel, x_graph_offset-1, panelHeight - y_graph_offset, 
					'horizontal',
					graph_width,
					{ major_tick_placement: 'below',
					  major_tick_interval: ruler_tick_interval,
					  major_tick_height: ruler_tick_height,
					  major_label_low: 0,
					  major_label_interval: 1,
					  minor_tick_placement: 'below',
					  minor_tick_interval: ruler_tick_interval / 5,
					  minor_tick_height: ruler_tick_height / 2
					});


		var y_gridline_interval = 10;
		var y_graph_interval = y_gridline_interval * y_scale;
		ruler_tick_interval  = y_graph_interval;

        var vruler = new orthoRuler(panel, x_graph_offset-1, panelHeight - graph_height - y_graph_offset,
	 				'vertical',
					graph_height,
					{ major_tick_placement: 'left',
					  major_tick_interval: ruler_tick_interval,
					  major_tick_height: ruler_tick_height,
					  major_label_low: y_maxval,
					  major_label_interval: -y_gridline_interval
					});

		var n_gridlines = Math.round(graph_height / (y_scale *  y_gridline_interval));
		var gridline_interval = Math.round(y_gridline_interval * y_scale);
		var y = panelHeight - y_graph_offset;
		for(var j=0; j<n_gridlines; j++) {
			y -= gridline_interval;
			var gridline = new orthoLine(panel, x_graph_offset, y, 
					graph_width, 0, {cssClass: 'horizontal-line-gray'});
		}

		var dotSize = 4;
		var dotOffset = Math.round(dotSize/2);
		
		for(var i=0; i<xdata.length; i++) {	
			x =  x_graph_offset + (xdata[i] * x_scale);
			y = panelHeight - y_graph_offset - (ydata0[i] * y_scale);
	    	rect = new orthoRectangle(panel, x-dotOffset, y-dotOffset, dotSize, dotSize, {cssClass: 'red-dot'});
			y = panelHeight - y_graph_offset - (ydata1[i] * y_scale);
	    	rect = new orthoRectangle(panel, x-dotOffset, y-dotOffset, dotSize, dotSize, {cssClass: 'blue-dot'});
		}
		
		var title = new orthoLabel(panel, panelWidth/2, 0, 'A Simple Graph', 'bottom');
		var ylabel = new orthoLabel(panel, x_graph_offset, y_graph_offset - 5, 'Y Axis', 'top');
		var xlabel = new orthoLabel(panel, panelWidth - x_graph_offset, panelHeight - y_graph_offset + 15, 'X Axis', 'bottom-left');
		
	}

