nippleJS is a javascript library to create virtual joystick for touch capable interfaces.
Website Demo