/*Данный файл писан Фоссой <fossa-artem@mail.ru> в 2009 году и распространяется под GPLv3*/

/*Данный скрипт обеспечивает эффекты для текста, который должен привлекать внимание*/

//Инициализируем переменные
var warning_text_script_loaded = "loaded"; //Маркер того, что скрипт загружен, этот маркер ищит инит-скрипт. После запуска этого (не инита) скрипта, переменная
//принимает значение started

//Массив элементов классов warning_text<N>
//warning_text_elements[0] содержит массив элементов класса warning_text0
//warning_text_elements[1] - массив элементов класса warnin_text1 и так далее, то warning_text31
var warning_text_elements = new Array();

//Цвет текста выделенных элементов
//Номер текущего выделенного класса
var warning_text_current_class_number = 2;
//Номер элемента - яркого хвоста
var warning_text_bright_tail_class_number = 1;
//Номер элемента - бледного хвоста
var warning_text_pale_tail_class_number = 0;
//Номер обычного элемента
var warning_text_ordinary_class_number = 0;

//Изменение номера класса за одну итерацию
var warning_text_current_class_delta = 1; //+1 при движении вправо, -1 - при движении влево

//Функция входа в скрипт
function warning_text_script_init()
{
 //Ищем элементы классов warning_text<N>
 for (var class_counter = 0; class_counter < 32; class_counter++)
 {
  warning_text_elements[class_counter] = get_elements_by_class("warning_text"+class_counter.toString(), "span");
 }

 //Смотрим, есть ли такие элементы (определяем по warning_text0
 if (warning_text_elements[0].length > 0)
 {
  //Такие элементы есть, делаем их цвет фона и шрифта обычным
  for (class_counter = 0; class_counter < 32; class_counter++)
  {
   for (var elem_counter = 0; elem_counter < warning_text_elements[class_counter].length; elem_counter++)
   {
    warning_text_elements[class_counter][elem_counter].style.background = "#ECDDB4";
    warning_text_elements[class_counter][elem_counter].style.color = "#800000";
   }
  }

  //Вызываем функцию эффектов для них
  warning_text_effects();
 }
}

//Функция эффектов
function warning_text_effects()
{
 //Определяем новый текущий класс
 if (warning_text_current_class_number == 0)
 {
  warning_text_current_class_delta = 1;
 }
 else if (warning_text_current_class_number == 31)
 {
  warning_text_current_class_delta = -1;
 }

 //Получаем новые номера элементов
 warning_text_ordinary_class_number = warning_text_pale_tail_class_number; //Бывший бледный хвост становится обынчым элементов
 warning_text_pale_tail_class_number = warning_text_bright_tail_class_number; //Бывший яркий хвост становится бледным
 warning_text_bright_tail_class_number = warning_text_current_class_number; //Бывший текущий элемент становится ярким хвостом
 warning_text_current_class_number += warning_text_current_class_delta; //Получаем новый текущий элемент

 //Подсвечиваем текущий класс, хвосты и снимаем выделение с обычного класса
 warning_text_set_class_type(warning_text_ordinary_class_number, 0);
 warning_text_set_class_type(warning_text_pale_tail_class_number, 1);
 warning_text_set_class_type(warning_text_bright_tail_class_number, 2);
 warning_text_set_class_type(warning_text_current_class_number, 3);

 //Запускаем таймер
 setTimeout("warning_text_effects()", 25);
}

//Функция устанавливает параметры элементов класса с заданным номером
//element_type = 0 - невыделенный элемент, 1 - бледный хвост, 2 - яркий (ясный) хвост, 3 - выделенный элемент
//В случае некорректного номера класса или типа элемента - ничего не делает
function warning_text_set_class_type(class_number, element_type)
{
 //Проверяем корректность номера класса и типа элемента
 if ((class_number >=0) && (class_number <= 31) && (element_type >= 0) && (element_type <= 3))
 {
  //Данные конректны, формируем строку с параметрами элемента
  var bg_string;
  var fg_string;
  switch(element_type)
  {
   case 0:
    //Обычный элемент
    fg_string = "#800000";
    bg_string = "#ECDDB4";
   break;
   case 1:
    //Бледный хвост
    fg_string = "#800000";
    bg_string = "#DB9964";
   break;
   case 2:
    //Ясный хвост
    fg_string = "#E5E1C6";
    bg_string = "#B55035";
   break;
   case 3:
    //Выделенный элемент
    fg_string = "#E5E1C6";
    bg_string = "#800000";
   break;
  }

  for (var elem_counter = 0; elem_counter < warning_text_elements[class_number].length; elem_counter++)
  {
   warning_text_elements[class_number][elem_counter].style.color = fg_string;
   warning_text_elements[class_number][elem_counter].style.background = bg_string;
  }
 }
}
