Android double jump not working correctly

Hey guys, I have a double jump I made for my game.
It does work, but the problem I’m having is, when I press screen to jump it’s ignoring my bool and just double jumping instead of jumping then pressing screen again to jump.

Pretty much what I’m trying to do is -

Press screen to jump > press screen again to jump higher.

What it’s doing is just doing both at once giving off one big jump.

Here is my code, hope y’all can diagnose what I am doing wrong.

using UnityEngine;
using System.Collections;

public class Controls : MonoBehaviour {

	// Variables dealing with Speed and boost.

	public float speed;
	public float sideSpeed = 1.0f;
	public float jumpSpeed = 50.0f;
	public bool canJump = false;
	public bool doubleJump = false;
	void Start(){

	}

	// Update is called once per frame
	void Update () {
				//Use this for constant forward movement
				transform.Translate (Vector3.forward * speed * Time.deltaTime);
				if (doubleJump) {
						if (Input.GetMouseButtonDown (0)) {
								rigidbody.velocity += jumpSpeed * Vector3.up;
								doubleJump = false;
						}
				}
		}

	void FixedUpdate(){
				Vector3 force = new Vector3 (Input.acceleration.x, 0, 0) * sideSpeed;
				rigidbody.AddForce (force);
				if (Input.GetMouseButtonDown (0) && canJump == true) {
						rigidbody.velocity += jumpSpeed * Vector3.up;
						canJump = false;
						if (!canJump) {
				doubleJump = true;
				
								}
						}
				}

	void OnCollisionEnter(Collision col){
		if (col.gameObject.tag == "Map") {
			canJump = true;
		doubleJump = false;
				}

	}

}

try to pick out what i have changed,
untested code but you may get an idea.
i added a time to make sure you dont double jump if too much time has passed
also changed the input function because it was instantly jumping again.
sorry the code is not formatted the page is not letting me.
the code could be written better but i dont have time to rewrite it all at the moment for you.

 using UnityEngine;
using System.Collections;
public class Controls : MonoBehaviour {
// Variables dealing with Speed and boost.
public float speed;
public float sideSpeed = 1.0f;
public float jumpSpeed = 50.0f;
public bool canJump = false;
public bool doubleJump = false;
public float maxjumptime = 0f;
void Start(){
}
// Update is called once per frame
void Update () {

if( doublejump && maxjumptime > 0)
{
    maxjumptime -= time.deltatime;
}
if( maxjumptime < 0 )

{
maxjumptime = 0;
}

//Use this for constant forward movement
transform.Translate (Vector3.forward * speed * Time.deltaTime);
if (doubleJump && maxjumptime > 0 ) {
if (Input.GetMouseButtonDown (0)) {
rigidbody.velocity += jumpSpeed * Vector3.up;
doubleJump = false;
}
}
}
void FixedUpdate(){
Vector3 force = new Vector3 (Input.acceleration.x, 0, 0) * sideSpeed;
rigidbody.AddForce (force);
if (Input.GetMouseButtonDown (0) && canJump == true) {
rigidbody.velocity += jumpSpeed * Vector3.up;
if( maxjumptime > 0 )

{
canJump = false;
doublejump = true;
}
maxjumptime = 1.5f;

if (Input.GetMouseButtonDown (0) && maxjumptime > 0 ) {
doubleJump = true;
}
}
}
void OnCollisionEnter(Collision col){
if (col.gameObject.tag == "Map") {
canJump = true;
doubleJump = false;
}
}
}