/**
	 * @param array $javascriptOptions
	 */
	static function set_default_javascript_options($options) {
		if (is_array($options)) {
			self::$default_javascript_options = $options;
		}
	}
	/**
	 * Validates this form field server-side
	 *
	 * @param FMFieldValidator $validator
	 * @return
	 */
	function validatePHP(FMFieldValidator $validator) {
		$rules = $this->getValidationRules();
		$valid = true;
		$message = false;
		$validates = true;
		$variant = false;
		foreach ($rules as $ruleName => $ruleValue) {




			if ($method = $this->getValidationMethod($ruleName)) {

				$result = $method->validate();
				$validates = $method->isValid();

/*
				if (is_array($validationResult)) {
					$validates = $validationResult['valid'];
					if (isset($validationResult['message'])) {
						$message = $validationResult['message'];
					} else if (isset($validationResult['variant'])) {
						$variant = $validationResult['variant'];
					}

				} else if (is_string($validationResult)) {
					$message = $validationResult;
					$validates = false;
				} else {
					$validates = $validationResult;
				}
*/

				if ($customMessage = $method->getMessage()) {
					$message = $customMessage;
				} else if (isset($this->validationMessages[$ruleName])) {
					$message = $this->validationMessages[$ruleName];
					if (is_array($message)) {
						if ($variant && isset($messages[$variant])) {
							$message = $messages[$variant];
						}
					}
				} else if ($projectMessage = FMFieldValidator::get_default_message($ruleName)) {
					$message = $projectMessage;
				} else  {
					$message = $method->getDefaultMessage();
				}



				$valid = ($validates && $valid);
				if (!$validates) {
					$validator->validationError(
						$this->owner->getName(),
						$message,
						$method->getMessageType()
					);
				}

			} else {
				trigger_error('Field '.$this->owner->getName().' is trying to validate with a non-existent rule ('.$ruleName.')');
			}
		}
		return $valid;
	}