NODE_TEXT_OFFSET_X = 4;
NODE_TEXT_OFFSET_Y = 4;

function netplot(paper, NETPLOT_OFFSET_X, NETPLOT_OFFSET_Y, SIZE_X, SIZE_Y) {

	dat = getNetData();
	var dataX = dat[0];
	var dataY = dat[1];
	var neighs = dat[2];
	
	var minx = getMin(dataX);
	var miny = getMin(dataY);
	var maxx = getMax(dataX);
	var maxy = getMax(dataY);
	
	// Override the x and y values here for the border...	
	minx = minx - POINT_RADIUS;
	maxx = maxx + POINT_RADIUS;
	miny = miny - POINT_RADIUS;
	maxy = maxy + POINT_RADIUS;
				
	var i = 0;
	var points = []
	var pX = []
	var pY = []
	
	nodenames = getNetNames();
	this.nodelabels = nodenames;
	
	nodesizes = getNodeSizes();
	this.nodesizes = nodesizes;
	
	// Get coordinates...
	for (i = 0; i < dataX.length; i++) {
		var p = convertToPoint(dataX[i], dataY[i], minx, maxx, miny, maxy, NETPLOT_OFFSET_X, NETPLOT_OFFSET_Y, SIZE_X, SIZE_Y);
		pX[i] = p[0];
		pY[i] = p[1];
	}
	
	var edges = [];
	
	// Draw lines...
	for (i = 0; i < neighs.length; i++) {
		var j = 0;
		for (j = 0; j < neighs[i].length; j++) {
			edges[edges.length] = paper.path("M" + pX[i] + " " + pY[i] + "L" + pX[neighs[i][j]] + " " + pY[neighs[i][j]]);
			//edges[edges.length-1].attr({"stroke-dasharray": "- "});
			edges[edges.length-1].attr({"colour":"gray"});
		}
	}
	
	// Draw nodes...
	for (i = 0; i < dataX.length; i++) {
		points[i] = paper.circle(pX[i], pY[i], nodesizes[i]);
		points[i].attr("fill", "white");
		points[i].mouseover(function (event) {this.attr({fill: "red"});});
		points[i].mouseout(function (event) {this.attr({fill: "white"});});
	}

	this.edges = edges;
	this.points = points;
	
	for (i = 0; i < nodenames.length; i++) {
		var textTemp = paper.text(pX[i] + Math.round(nodesizes[i]) + NODE_TEXT_OFFSET_X, pY[i] + Math.round(nodesizes[i]) + NODE_TEXT_OFFSET_Y, nodenames[i]);
		textTemp.attr("fill", "#444");
		textTemp.attr("font-size", "12");
		textTemp.attr("font-weight", "bold");
	}
	

		
}

function netplotEvented(paper, NETPLOT_OFFSET_X, NETPLOT_OFFSET_Y, SIZE_X, SIZE_Y, lineplot1, lineplot2) {

	dat = getNetData();
	var dataX = dat[0];
	var dataY = dat[1];
	var neighs = dat[2];
	
	nodenames = getNetNames();
	this.nodelabels = nodenames;
	
	var minx = getMin(dataX);
	var miny = getMin(dataY);
	var maxx = getMax(dataX);
	var maxy = getMax(dataY);
	
	// Override the x and y values here for the border...	
	minx = -3;
	maxx = 3;
	miny = -3;
	maxy = 3;
				
	var i = 0;
	var points = []
	var pX = []
	var pY = []
	
	// Get coordinates...
	for (i = 0; i < dataX.length; i++) {
		var p = convertToPoint(dataX[i], dataY[i], minx, maxx, miny, maxy, NETPLOT_OFFSET_X, NETPLOT_OFFSET_Y, SIZE_X, SIZE_Y);
		pX[i] = p[0];
		pY[i] = p[1];
	}
	
	var edges = [];
	
	// Draw lines...
	for (i = 0; i < neighs.length; i++) {
		var j = 0;
		for (j = 0; j < neighs[i].length; j++) {
			edges[edges.length] = paper.path("M" + pX[i] + " " + pY[i] + "L" + pX[neighs[i][j]] + " " + pY[neighs[i][j]]);
			//edges[edges.length-1].attr({"stroke-dasharray": "- "});
		}
	}
	
	// Draw nodes...
	for (i = 0; i < dataX.length; i++) {
		points[i] = paper.circle(pX[i], pY[i], POINT_RADIUS);
		points[i].attr("fill", "white");
		points[i].label = nodenames[i];
		points[i].mouseover(function (event) {
			this.attr({fill: "red"});
			shiftLinePlot(lineplot1, "dataset1_" + this.label, paper);	
			shiftLinePlot(lineplot2, "dataset2_" + this.label, paper);			
			});
		points[i].mouseout(function (event) {
			this.attr({fill: "white"});
			});
	}

	this.edges = edges;
	this.points = points;
}
