Problem with GUITexture upon another

So i have a large touchpad GUITexture on half of screen, in the right side, with Z=0, and i have a button(Turn on and off a flashlight) in the same side with Z=1. When i touch the button, the touchpad GUITexture react too, but was supposed to not. The touchpad has a jump trigger when i tap 2 times fast, so when i tap 2 times the button, the touchpad behind makes me jump, how i can combat this?

Here is the FPSControl(TouchPad) code:
using UnityEngine;
using System.Collections;

[RequireComponent (typeof (CharacterController))]

public class FPSController : MonoBehaviour {
// This script must be attached to a GameObject that has a CharacterController

	public Joystick moveTouchPad;
	public Joystick rotateTouchPad;	// If unassigned, tilt is used

	public Transform cameraPivot; // The transform used for camera rotation

	public float forwardSpeed = 4f;
	public float backwardSpeed = 1f;
	public float sidestepSpeed = 1f;
	public float jumpSpeed = 8f;
	public float inAirMultiplier = 0.25f;					// Limiter for ground speed while jumping
	public Vector2 rotationSpeed = new Vector2( 50, 25 );	// Camera rotation speed for each axis
	public float tiltPositiveYAxis = 0.6f;
	public float tiltNegativeYAxis = 0.4f;
	public float tiltXAxisMinimum = 0.1f;

	private Transform thisTransform;
	private CharacterController character;
	private Vector3 cameraVelocity;
	private Vector3 velocity;						// Used for continuing momentum while in air
	private bool canJump = true;

	// Use this for initialization
	void Start () 
	{

		thisTransform = GetComponent<Transform>();
		character = GetComponent<CharacterController>();


		// Move the character to the correct start position in the level, if one exists
		var spawn = GameObject.Find( "PlayerSpawn" );
		if (spawn)
			thisTransform.position = spawn.transform.position;
	}

	void OnEndGame()
	{
		// Disable joystick when the game ends	
		moveTouchPad.Disable();
		
		if (rotateTouchPad)
			rotateTouchPad.Disable();	
		
		// Don't allow any more control changes when the game ends
		this.enabled = false;
	}

	// Update is called once per frame
	void Update () 
	{		
		Vector3 movement = thisTransform.TransformDirection( new Vector3( moveTouchPad.position.x, 0, moveTouchPad.position.y ) );
		
		// We only want horizontal movement
		movement.y = 0;
		movement.Normalize();
		
		// Apply movement from move joystick
		Vector2 absJoyPos = new Vector2( Mathf.Abs( moveTouchPad.position.x ), Mathf.Abs( moveTouchPad.position.y ) );	
		if ( absJoyPos.y > absJoyPos.x )
		{
			if ( moveTouchPad.position.y > 0 )
				movement *= forwardSpeed * absJoyPos.y;
			else
				movement *= backwardSpeed * absJoyPos.y;
		}
		else
			movement *= sidestepSpeed * absJoyPos.x;		
		
		// Check for jump
		if ( character.isGrounded )
		{		
			bool jump = false;
			Joystick touchPad;
			if ( rotateTouchPad )
				touchPad = rotateTouchPad;
			else
				touchPad = moveTouchPad;
			
			if (!touchPad.isFingerDown)
				canJump = true;
			
			if (canJump && touchPad.tapCount >= 2 )
			{
				jump = true;
				canJump = false;
			}	
			
			if ( jump )
			{
				// Apply the current movement to launch velocity		
				velocity = character.velocity;
				velocity.y = jumpSpeed;	
			}
		}
		else
		{			
			// Apply gravity to our velocity to diminish it over time
			velocity.y += Physics.gravity.y * Time.deltaTime;
			
			// Adjust additional movement while in-air
			movement.x *= inAirMultiplier;
			movement.z *= inAirMultiplier;
		}
		
		movement += velocity;	
		movement += Physics.gravity;
		movement *= Time.deltaTime;
		
		// Actually move the character	
		character.Move( movement );
		
		if ( character.isGrounded )
			// Remove any persistent velocity after landing	
			velocity = Vector3.zero;
		
		// Apply rotation from rotation joystick
		if ( character.isGrounded )
		{
			var camRotation = Vector2.zero;
			
			if ( rotateTouchPad )
				camRotation = rotateTouchPad.position;
			else
			{
				// Use tilt instead
				//			print( iPhoneInput.acceleration );
				var acceleration = Input.acceleration;
				var absTiltX = Mathf.Abs( acceleration.x );
				if ( acceleration.z < 0 && acceleration.x < 0 )
				{
					if ( absTiltX >= tiltPositiveYAxis )
						camRotation.y = (absTiltX - tiltPositiveYAxis) / (1 - tiltPositiveYAxis);
					else if ( absTiltX <= tiltNegativeYAxis )
						camRotation.y = -( tiltNegativeYAxis - absTiltX) / tiltNegativeYAxis;
				}
				
				if ( Mathf.Abs( acceleration.y ) >= tiltXAxisMinimum )
					camRotation.x = -(acceleration.y - tiltXAxisMinimum) / (1 - tiltXAxisMinimum);
			}
			
			camRotation.x *= rotationSpeed.x;
			camRotation.y *= rotationSpeed.y;
			camRotation *= Time.deltaTime;
			
			// Rotate the character around world-y using x-axis of joystick
			thisTransform.Rotate( 0, camRotation.x, 0, Space.World );
			
			// Rotate only the camera with y-axis input
			cameraPivot.Rotate( -camRotation.y, 0, 0 );

		}
	}
}

The flashlight on off button use hittest in the GUITexture.

Did you try a hit test? Explained here