public function setTime($hour, $minute = 0, $second = 0, $mcs = 0)
	{
		switch ( gettype($hour) ) {
			case 'object':
			$hour = (array) $hour;

			case 'array':
			//	change all keys to lower case
			$arrIn = array_change_key_case($hour);

			//	get current values as input can be incomplete
			$hour = $this->format('G');
			$minute = $this->format('i');
			$second = $this->format('s');
			$mcs = $this->format('u');

			foreach ($arrIn as $k => $v) {
				switch ( substr($k, 0, 3) ) {
					case 'hou':
					$hour = $v;
					break;

					case 'min':
					$minute = $v;
					break;

					case 'sec':
					$second = $v;
					break;

					case 'mcs':
					$mcs = $v;
					break;

					case 'fra': //	"fraction" which is a float
					$mcs = $v * 1000000;
					break;
				}
			}
		}

		parent::setTime((int) $hour, (int) $minute, (int) $second, (int) $mcs);

		return $this;
	}