<?

// у объекта при наведение: Help::view(help_name)
// у формы при наведении Help:view(help_name)

// использует xml локализации. Конкретно поля заканчивающиеся на _hint

class Hint {
	
	static $dictionary = false;
	static $min_height = 34;

	// загружаем язык
	static function load_lang(Lang_dictionary $lang) {
		self::$dictionary = $lang;
	}

	static function toFront() {
		c('Fm->hint_panel')->toFront();
	}

	// эту функцию надо вызывать в объектах
	// берет имя из поля hint и засовывает в свойство объекта my_hint. Поле же очищает
	static function onMouseEnter($self) {
		GLOBAL $log, $Graphs;
		
		// чтобы случайно не сработало раньше загрузки словаря
		// заодно блокирууется onMouseEnter пока программа не загрузилась полностью
		if(!self::$dictionary) return false;


		//ВНИМАНИЕ! Тут может быть случай когда сама форма вызывает этот метод
		// Тогда конструкция Fm-> не сработает

		$name = $self->name;
		$hint = c($name)->hint;
		if($hint) {

			// // помимо имени подсказки, там может быть адрес картинки
			// $mas = explode('|', $hint);

			//$log->line('hint:' . $hint);
			c($name)->my_hint = $hint;
			$self->hint = '';
		}
		
		$hint = c($name)->my_hint;
		self::view($hint);

		// вызываем в конце потому что это нужно для обновления дисплея диска после перерисовки подсказки
		// других причин пока нет
		Ui_mouse_event::enter($self);
	}

	static function view($name) {
		GLOBAL $log;

		$name = trim($name);
		//$log->line($name);
		
		if($value = self::$dictionary->get($name, false)) {
			$text = '';
			// Добавляем заголовок, 
			// если имя заканчивается на _hint, добавляем в текст имя параметра без hint
			if(preg_match('#_hint$#', $name)) {
				$name_title = preg_replace('#_hint$#', '', $name);
				if($title = self::$dictionary->get($name_title, false))
					$text = '[ ' . $title . ' ] '; // "\r\n";
			}
			$text .= $value;
		}
		else {
			$text = "Возникли проблемы с программой? Напишите мне, я могу о них не знать. Отвечаю оперативно. \nКонтакты: vk.com/roller или cudeevent@gmail.com . Спасибо!";
		}

		$ui_panel = c('Fm->hint_panel');
		$ui_text = c('Fm->hint_text');

		$ui_text->w = $ui_panel->w - 5;
		$ui_text->text = $text;
		$text_height = $ui_text->h;

		$bg_height = $text_height < self::$min_height
						? self::$min_height
						: $text_height;

		$bg_height += 5; // отступ

		$ui_panel->h = $bg_height + 2;
		c('Fm->hint_bg')->h = $bg_height;
		c('Fm->hint_line_bottom')->y = $bg_height;


	}

}

?>