Creting an OnScreen Joystick

I need to get the position of finger/mouse over a sprite, which represents the joystick.

Only problem is that I can’t find anything in the docs that would help me do this.

I could use Input.GetTouch(0).position in OnClick(), but that would only give me the touch event on mouse down.
How do I detect whether the button is being pressed or not? Or whether the finger is on a sprite or not?

Edit (8 Nov, 2015; moved from my post from below):
In case anyone is interested I ended up using Input.GetTouch(i).position (or for testing: Input.mousePosition) and the Bounds of the UI element (image) to determine if the finger/cursor is hovering the joystick image.

Download the unity tutorials— they have a joystick example on there if I am not mistaken, what you would want to do is put a joystick spite the on the UI from unity and get code to snap it back into place, I will dig around because I have a project using the joystick, just got find it and finish it.
[Here is what I got from unity]
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

// A simple class for bounding how far the GUITexture will move

public class Joystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
public enum AxisOption
{
// Options for which axes to use
Both, // Use both
OnlyHorizontal, // Only horizontal
OnlyVertical // Only vertical
}

public int MovementRange = 100;
public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use
public string horizontalAxisName = “Horizontal”; // The name given to the horizontal axis for the cross platform input
public string verticalAxisName = “Vertical”; // The name given to the vertical axis for the cross platform input

Vector3 m_StartPos;
bool m_UseX; // Toggle for using the x axis
bool m_UseY; // Toggle for using the Y axis
UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis; // Reference to the joystick in the cross platform input
UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis; // Reference to the joystick in the cross platform input

void OnEnable()
{
CreateVirtualAxes();
}

void Start()
{
m_StartPos = transform.position;
}

void UpdateVirtualAxes(Vector3 value)
{
var delta = m_StartPos - value;
delta.y = -delta.y;
delta /= MovementRange;
if (m_UseX)
{
m_HorizontalVirtualAxis.Update(-delta.x);
}

if (m_UseY)
{
m_VerticalVirtualAxis.Update(delta.y);
}
}

void CreateVirtualAxes()
{
// set axes to use
m_UseX = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyHorizontal);
m_UseY = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyVertical);

// create new axes based on axes to use
if (m_UseX)
{
m_HorizontalVirtualAxis = new UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis(horizontalAxisName);
UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.RegisterVirtualAxis(m_HorizontalVirtualAxis);
}
if (m_UseY)
{
m_VerticalVirtualAxis = new UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.VirtualAxis(verticalAxisName);
UnityStandardAssets.CrossPlatformInput.CrossPlatformInputManager.RegisterVirtualAxis(m_VerticalVirtualAxis);
}
}

public void OnDrag(PointerEventData data)
{
Vector3 newPos = Vector3.zero;

if (m_UseX)
{
int delta = (int)(data.position.x - m_StartPos.x);
delta = Mathf.Clamp(delta, -MovementRange, MovementRange);
newPos.x = delta;
}

if (m_UseY)
{
int delta = (int)(data.position.y - m_StartPos.y);
delta = Mathf.Clamp(delta, -MovementRange, MovementRange);
newPos.y = delta;
}
transform.position = new Vector3(m_StartPos.x + newPos.x, m_StartPos.y + newPos.y, m_StartPos.z + newPos.z);
UpdateVirtualAxes(transform.position);
}

public void OnPointerUp(PointerEventData data)
{
transform.position = m_StartPos;
UpdateVirtualAxes(m_StartPos);
}

public void OnPointerDown(PointerEventData data) { }

void OnDisable()
{
// remove the joysticks from the cross platform input
if (m_UseX)
{
m_HorizontalVirtualAxis.Remove();
}
if (m_UseY)
{
m_VerticalVirtualAxis.Remove();
}
}
}