Multitasking like effect using millis()

I want to do something like this:

  // here is where you'd put code that needs to be running all the time.

  // check to see if it's time to blink the LED; that is, is the difference
  // between the current time and last time we blinked the LED bigger than
  // the interval at which we want to blink the LED.
  if (millis() - previousMillis > interval) {
    previousMillis = millis();   // remember the last time we blinked the LED

    // if the LED is off turn it on and vice-versa.
    if (value == LOW)
      value = HIGH;
    else
      value = LOW;

    digitalWrite(ledPin, value);
  }

unfortunetly this code is on/off equaly, how can you make it not (eg 100ms on 900ms off)?

Create intervalOn and intervalOff variables, instead of just an interval variable. When the light is on, turn it off using intervalOn, and when it is off, turn it on using the intervalOff variable.

Thanks for the quick reply, but I' not quite sure what you mean...

Something like this?:

  if(millis() - previousMillis > del && digitalRead(pin) == LOW){
    digitalWrite(pin, HIGH);
    previousMillis = millis();
  }else{
    digitalWrite(pin, LOW);
  }
}

Probably something more like:

if (value == LOW) {
    value = HIGH;
    interval = ON_INTERVAL;
  }  else {
    value = LOW;
    interval = OFF_INTERVAL;
  }