Melee range AI

Every thing in the script runs fine until after the first attack. After the first attack the “Enemy” is suppose to attack again after some seconds but does not.
when the timer is more than zero I want it to do the “timer -= Time.deltaTime”, but it stays at one.

Here is the script:

var player : Transform; 
var speed = 3.0; 
var range = 20.0;
var hitRange = 3.0;
var enemyDamage = 100.0;
var Timer : float;
var Cooler : float = 1;
var rotationSpeed : int = 1;
var AttackTime : float = 1;
var TimerTwo : float;


function Awake ()
{ 
	//find the player
     player = GameObject.FindWithTag("Player").transform;
     //Don't fall!
     rigidbody.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ;
} 

 
function Update()
{
        //move towards player
    var distance = Vector3.Distance( player.transform.position, transform.position);
    if (distance > range)
    {
        return;
    }
    
    
    else if(distance < hitRange)
    {
    	if(Timer == 0)
    	{
    		if(TimerTwo == 0)
    		{
    			Attack();
    		}
    	}
    }

    else
    {   
   		Move();
    }
    //Look at the player
    transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(player.position - transform.position), rotationSpeed * Time.deltaTime);
    
    
    //if timer < 0 than withdraw one every sec.
	if(Timer < 0)
    {
    	Timer -= Time.deltaTime;
    }
    
  	//Make sure Timer does not go below zero 
    if(Timer < 0)
    {
    	Timer = 0;
    }
    
    //Same as above, this time with TimerTwo
   	if(Timer < 0)
    {
    	TimerTwo -= Time.deltaTime;
    }
    if(TimerTwo < 0)
    {
    	TimerTwo = 0;
    }

}

function Attack ()
{	
	//insert attack anim here!	
    Move();
    TimerTwo = Cooler;
    yield WaitForSeconds (AttackTime);
   	print("ARRR");
     Timer = Cooler;
}

function Move ()
{
		var delta = player.transform.position - transform.position;
    	delta.Normalize();
    	var moveSpeed = speed * Time.deltaTime;
    	transform.position = transform.position + (delta * moveSpeed);
}

if(Timer < 0)
{
TimerTwo -= Time.deltaTime;
}

Should have been:

if(Timer > 0)
    {
        TimerTwo -= Time.deltaTime;
    }

Thanks, cscotttaakan.