How to I vary animations based on proximity?

I’ve written a script to animate a toon based on his location to me, with an ‘idle’ animation when he is out of attack range, a ‘run’ animation when he is within chase range, and an ‘attack’ animation when he is within attack range. But as soon as I enter chase range, the ‘run’ animation plays and the ‘attack’ animation never begins. (The idling animation works fine.) I think it’s perhaps because my code would have both run and attack animations happen at once. Not what I want. Is there a way of saying the ‘run’ animation should play when less than one distance, but also stop when less than a second distance?

My script is attached for reference.

var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var Damping = 6.0;
var chaseRange = 15.0;
var attackRange = 1.5;

function Update ()
{
	Distance = Vector3.Distance(Target.position, transform.position);
	
	if (Distance > chaseRange)
	{
		idle ();
	}
	
	if (Distance < attackRange)
	{
		attack ();
	}
	if (Distance < chaseRange)
	{
		run ();	
	}
}

function idle ()
{
	animation.CrossFade ("idle");
}

function attack ()
{
	animation.CrossFade ("attack");
}

function run ()
{
	animation.CrossFade ("run");
}

Thanks a lot.

if (Distance < attackRange)
{
attack ();
}
else if (Distance < chaseRange)
{
run ();
}

should do it

try -

    var attacking : boolean;


    if (Distance < attackRange)
    {
       attacking = true;
       attack ();
    }else attacking = false;
    if (Distance < chaseRange && !attacking)
    {
       run ();   
    }