motor timing problem

I have built the hardware for a mobile platform, it runs on continuous rotation servos,the problem I'm having is with timing, I'm trying to implement a timer based movement cycle so as not to use delay(). with the code i currently have the servos are only moving in the forward movement

// robot movement 1.0


//servo
#include <Servo.h>
Servo right_servo;
Servo left_servo;

//speaker
const int speaker = 5;

//movement timer
int inUse = 0;
const int forwardUse = 1;
const int reverseUse = 2;
unsigned long currentMillis = millis();
long previousMillis = 0;


void setup() 
{
  right_servo.attach(11);
  left_servo.attach(10);
  pinMode(speaker, OUTPUT);
  Serial.begin(9600);
}

void loop() 
{
  forward(1000);
  reverse(1000);
}

void halt()
{
  right_servo.write(90);
  left_servo.write(90);
}

void forward(long time)
{  
  if(inUse == 0 || inUse == forwardUse) // check if it is in use by other movement
  {
    right_servo.write(0);
    left_servo.write(180);
    inUse = forwardUse;
      if(currentMillis - previousMillis > time) // if timer has run out stop movement reset inUse and return to loop
        {
          halt();
          inUse = 0;
          return;
        }
  }
}

void reverse(long time)
{
  if(inUse == 0 || inUse == reverseUse)  // check if it is in use by other movement
  {
    right_servo.write(180);
    left_servo.write(0);
    inUse = reverseUse;
      if(currentMillis - previousMillis > time) // if timer has run out stop movement reset inUse and return to loop
        {
          halt();
          inUse = 0;
          return;
        }
  }
}

any help on this would be great, im trying to find an answer on my own but i must be missing something.

You need to reset previousMillis = currentMillis if timer has run out.

  if(inUse == 0 || inUse == forwardUse) // check if it is in use by other movement

Check if what is in use?

void forward(long time)
{  
  if(inUse == 0 || inUse == forwardUse) // check if it is in use by other movement
  {
    right_servo.write(0);
    left_servo.write(180);
    inUse = forwardUse;
      if(currentMillis - previousMillis > time)

ALL variables involved in measuring time should be unsigned long, unless you live in a universe where time runs backwards.

time is a lousy name. runTime, maybe.

And, yeah, what Henry said.