One Button Two Functions bug fix

alright back again, implementing multiple loops.

still having trouble with the flow. cant wrap my brain around it. still hitting relay pin p before going back to relay pin n.
tried to also build a timer for the relay pins so im not using delay but cant get that to work either.

//constants won't change. They're used here to set pin numbers:
const int SW = 2;     // the number of the pushbutton pin
const int RELAYP = 4;    //+ RELAY COIL
const int RELAYN = 7;   //- RELAY COIL
const int LED =  13;      // the number of the LED pin
const unsigned long Debounce = 20;
const unsigned long relaytime = 1000; //for testing purposes, this is a second for serial monitor results.
const unsigned long LongPress = 500;

//variables that will change
unsigned long currentTime = millis();
unsigned long currentRelay = millis();
unsigned long ButtonStateChangeTime = 0; // Debounce timer
unsigned long relaystate = 0; // relay timer
bool ButtonWasPressed = false;
bool effect;

void setup() {
  //SET PINS:
  pinMode(SW, INPUT);
  pinMode(LED, OUTPUT);
  pinMode(RELAYP, OUTPUT);
  pinMode(RELAYN, OUTPUT);
  //Set SW pin to HIGH to monitor state.
  digitalWrite(SW, HIGH);
  //RESET BACK TO EFFECT BYPASS AFTER START UP:

  Serial.begin(9600);
  Serial.println("Start");//DEBUGGING

  digitalWrite(RELAYP, LOW);
  digitalWrite(RELAYN, HIGH);
  delay(5);
  digitalWrite(RELAYN, LOW);
}//End setup.

void relayp() {

  digitalWrite(RELAYP, HIGH);
  //Serial.println("RELAYPon");
  delay(5);
  //if (currentRelay - relaystate > relaytime) {
  digitalWrite(RELAYP, LOW);
  //Serial.println("RELAYPoff");
  //}
  //currentRelay = relaystate;
}//END

void relayn() {

  digitalWrite(RELAYN, HIGH);
  //Serial.println("RELAYNon");
  delay(5);
  //if (currentRelay - relaystate > relaytime) {
  digitalWrite(RELAYN, LOW);
  //Serial.println("RELAYNoff");
  //}
  currentRelay = relaystate;
}//END

void buttonstate() {

  bool buttonIsPressed = digitalRead(SW) == LOW; // Active LOW
  // Check for button state change debounce.
  if (buttonIsPressed != ButtonWasPressed &&
      currentTime  -  ButtonStateChangeTime > Debounce) {
    // Button state has changed.
    ButtonWasPressed = buttonIsPressed;
    //Serial.println("debounce");
    if (ButtonWasPressed) {
      Serial.println("press");
      effectON();
    } else {
      if (currentTime - ButtonStateChangeTime > LongPress) {
        Serial.println("release");
        effectOFF();
      }
      if (currentTime - ButtonStateChangeTime < LongPress && effect == false) {
        effectON();
        effect = true;
      } else {
        if (effect == true);
        effectOFF();
      }
    }
    ButtonStateChangeTime = currentTime;
  }
}//end debounce

void effectON() {
  digitalWrite(LED, HIGH);
  relayp();
  Serial.println("on");
}//end

void effectOFF() {
  digitalWrite(LED, LOW);
  relayn();
  Serial.println("off");
}//end

void loop() {

  currentTime = millis();

  buttonstate();

}//end