$1 recognizer gesture creator

code to compile gesture code for $1 recognizer

HTML

name your gesture: <input id="gname" type="text" /><br/>
draw single line gesture in grey box<br/>
<canvas id="canvas" width="300" height="300"></canvas>

<br/>
<button id="printcode">Generate Code</button>
<button id="clear">Clear All</button>
<button id="copycode">Copy Code to Clipboard</button>

<p>
<div id="gen_code"></div>
</p>

CSS

#canvas {
  background-color:#DDD;
}

#gen_code {
  background-color:#FFF;
  border:1px solid black;
  width:300px;
  height:300px;
  overflow-y: scroll;
  word-wrap: break-word;
}

JavaScript

context = document.getElementById('canvas').getContext("2d");

$('#canvas').mousedown(function(e){
  var mouseX = e.pageX - this.offsetLeft;
  var mouseY = e.pageY - this.offsetTop;
		
  paint = true;
  addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop);
  redraw();
});

$('#canvas').mousemove(function(e){
  if(paint){
    addClick(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, true);
    redraw();
  }
});

$('#canvas').mouseup(function(e){
  paint = false;
});

$('#canvas').mouseleave(function(e){
  paint = false;
});

var clickX = new Array();
var clickY = new Array();
var clickDrag = new Array();
var paint;

function addClick(x, y, dragging)
{
  clickX.push(x);
  clickY.push(y);
  clickDrag.push(dragging);
}

function redraw(){
  context.clearRect(0, 0, context.canvas.width, context.canvas.height); // Clears the canvas
			
  for(var i=0; i < clickX.length; i++) {	
    context.beginPath();
  	context.arc(clickX[i]-1, clickY[i-1], 1, 0, Math.PI*2, true); 
  	context.closePath();
  	context.fill();
  }
}

function printCode() {
	var gname = ($('#gname').val() != "") ? "\"" + $('#gname').val() + "\"" : "gkey";
	var code_string = "{\"image\" : " + gname +" ,\"name\" : "  + gname + ", \"points\" : [";
    
  for(var i=0; i < clickX.length; i++) {
  	var x = clickX[i]-1;
    var y = clickY[i]-1;
  	code_string += "[" + x + "," + y + "],"
  }
  code_string = code_string.slice(0,-1);
  code_string += "]}";
	$('#gen_code').html(code_string);
}

function clearAll() {
  context.clearRect(0, 0, context.canvas.width, context.canvas.height); // Clears the canvas
  clickX = new Array();
  clickY = new Array();
  clickDrag = new Array();
  $('#gen_code').html("");
  $('#gname').val("");
}

$('#printcode').click(printCode);
$('#clear').click(clearAll);
$('#copycode').click(function () { copyToClipboard('#gen_code'); });

function copyToClipboard(element) {
  var $temp = $("<input>");
  $("body").append($temp);
  $temp.val($(element).text()).select();
 ...