avoid delay() please help me

i have this code

int proximity= 8;
int relay = 13;   
int val = 0;

void setup()
{   
  Serial.begin(9600);
  pinMode(proximity, INPUT);   
  pinMode(relay, OUTPUT);     
}                       
void loop()
{                     
  val = digitalRead(proximity);   
  if (val == LOW)             
  {                 
    digitalWrite(relay,HIGH);
    //???????? ? ????????????
  }   
  if (val == HIGH)
  {
    nonblocking_delay(5000);
    digitalWrite (relay,LOW);
  }               
}
int nonblocking_delay(int delayms)
{
  int start = millis();
  while(millis()-start<delayms)
  {
    val = digitalRead(proximity);
    if (val == LOW)
      return 1;
  }
  return 0;
}

but i woulk like this code for three sensor and three relays.

ex. one proximity on--> open relay-->proximity off->delay(5000) with open relay--> after 5sec relay off
second proximity2 on--> open relay2-->proximity2 off->delay(5000) with open relay2--> after 5sec relay2 off
third proximity3 on--> open relay3-->proximity3 off->delay(5000) with open relay3--> after 5sec relay3 off

i create a car wash (project for my school ) and i have pump water1 pump water2 blower