//---------------------------------------------------------------------------
//
//    Проект "www.prime-tass.ru"
//
//    Клиентский код для блока графиков (блок с переключением между закладками,
//    периодами и тикерами)
//
//    (с) ПРАЙМ-ТАСС, 2008
//
//
//    17.10.08 - 17.10.08, Б.Гарбузов
//
//---------------------------------------------------------------------------


// Создает экземпляр класса ChartBlockClass в переменной с именем id, Б.Г.
function ChartBlock (id)
{
  document.write('<SCRIPT language="JavaScript">var '+id+' = new ChartBlockClass("'+id+'")</SCRIPT>');
} // ChartBlock


// Класс блока графиков - реализует интерактивный механизм данного блока.
// При создании экземпляра класса параметром id передается идентификатор конкретного
// экземпляра этого класса. Б.Г.
function ChartBlockClass (id)
{
  // Идентификатор конкретного экземпляра данного класса, Б.Г.
  this.BlockID = id;

  // Порядковый номер текущей отображаемой закладки (при начальной загрузке отображается первая закладка), Б.Г.
  this.ActiveTabIndex = 1;

  // Порядковый номер текущего выбранного периода графика на закладке, порядковый номер которой соответствует индексу элемента массива, Б.Г.
  this.ActivePeriodIndex = new Array();


  // Переключает блок на отображение закладки с индексом tabIndex, Б.Г.
  this.SetTab = function (tabIndex)
  {
    // Список элементов <DIV> данного блока. Некоторая извращенность кода позволяет ему корректно выполняться как в IE, так и в FF. (Б.Г.)
    var divs = document.getElementById(this.BlockID).getElementsByTagName("DIV");

    // Выключаем текущий активный переключатель и связанную с ним текущую активную закладку, Б.Г.
    divs.namedItem("S"+this.ActiveTabIndex).className = "inf_off";
    divs.namedItem("T"+this.ActiveTabIndex).style.display = "none";
    
    // Включаем новый активный переключатель и связанную с ним новую активную закладку, Б.Г.
    divs.namedItem("S"+tabIndex).className = "inf_on";
    divs.namedItem("T"+tabIndex).style.display = "block";

    // Запоминаем новый активный переключатель и связанную с ним новую активную закладку в качестве текущих, Б.Г.
    this.ActiveTabIndex = tabIndex;

  } // SetTab


  // Переключает график на текущей отображаемой закладке на отображение, начиная с даты first, Б.Г.
  this.SetPeriod = function (periodIndex, first)
  {
    // Инициализируем текущий выбранный период, исходя из того, что при первоначальной загрузке отображается первый из имеющихся периодов, Б.Г.
    if (this.ActivePeriodIndex[this.ActiveTabIndex] == undefined) this.ActivePeriodIndex[this.ActiveTabIndex] = 1;

    // Текущая отображаемая закладка. Некоторая извращенность кода позволяет ему корректно выполняться как в IE, так и в FF. (Б.Г.)
    var currentTab = document.getElementById(this.BlockID).getElementsByTagName("DIV").namedItem("T"+this.ActiveTabIndex);

    // Список элементов <A> текущей отображаемой закладки, Б.Г.
    var anchors = currentTab.getElementsByTagName("A");

    // Выключаем ссылку текущего активного периода, Б.Г.
    anchors.namedItem("P"+this.ActivePeriodIndex[this.ActiveTabIndex]).className = "inf_off";

    // Включаем ссылку нового активного периода, Б.Г.
    anchors.namedItem("P"+periodIndex).className = "inf_on";
 
    // Запоминаем порядковый номер нового активного периода в качестве текущего для текущей закладки, Б.Г.
    this.ActivePeriodIndex[this.ActiveTabIndex] = periodIndex;

    // График текущей отображаемой страницы данного блока, Б.Г.
    var chart = currentTab.getElementsByTagName("IMG").namedItem("Chart");
    
    // Заменяем начальную дату графика на новую, соответствующую выбранному периоду, Б.Г.
    chart.src = chart.src.replace(/(\?|\&)first=([^\&]+)/, "$1first="+first);

  } // SetPeriod


  // Переключает график на текущей отображаемой закладке для отображения тикера с кодом code, Б.Г.
  this.SetCode = function (code)
  {
    // График текущей отображаемой страницы данного блока. Некоторая извращенность кода позволяет ему корректно выполняться как в IE, так и в FF. (Б.Г.)
    var chart = document.getElementById(this.BlockID).getElementsByTagName("DIV").namedItem("T"+this.ActiveTabIndex).getElementsByTagName("IMG").namedItem("Chart");

    // Заменяем тикер текущего отображаемого графика на новый код тикера для отображения графика этого нового тикера, Б.Г.
    chart.src = chart.src.replace(/\/([^\/\?]+)\?/, "\/"+code+"?");

  } // SetCode

} // ChartBlock

