public TimerEvent(int type, long millisec) {
		this.type = type;

		if (type != TYPE_PERIODIC_REL && type != TYPE_PERIODIC_OVERLAP_REL &&
				type != TYPE_APPOINTED_REL &&
				type != TYPE_APPOINTED_ABS) {
			throw new IllegalArgumentException("Invalid Type Value : " + type);
		}

		isRelative = (type == TYPE_PERIODIC_REL || type == TYPE_APPOINTED_REL
			|| type == TYPE_PERIODIC_OVERLAP_REL);
		isPeriodic = (type == TYPE_PERIODIC_REL || type == TYPE_PERIODIC_OVERLAP_REL);
		isOverlappable = (type != TYPE_PERIODIC_REL);

		if (isRelative)
			this.targetTime = System.currentTimeMillis() + millisec;
		else
			this.targetTime = millisec;

		if (isPeriodic)
			this.period = millisec; 
	}