/*

  Tini-JS library: JavaScript-based rollovers (cI + cC).
  v.1.0.
  End Of December 2004.

  ---------

  http://www.pixel-apes.com/tiny-js/rollovers

  Copyright (c) 2004, Pixel-Apes <mailto:mendokusee@pixel-apes.com>
  All rights reserved.

  For LICENSE see:
  http://www.pixel-apes.com/tiny-js/license

  ---------

  Ролловеры (подмена изображений как реакция на поведение мыши):

  * cI( name1, pic1, [name2, pic2, ...] ) -- поменять src у <img name="<name1>" ...>
                                             или            <img id="<name1>" ...>
                                             на <pic1> из загруженных в "библиотеку"
        - name1, name2, name3, ... -- name/id-атрибуты у картинок
        - pic1, pic2, pic3, ...    -- имена файлов (без расширения), загруженных в "библиотеку"
        * можно использовать любое количество пар name/pic, от 1 до {много}.
        * NB: также хорошо работает и на <input type="image" />

  * cC( name1, class1, [name2, class2, ...] ) -- поменять class у <img name="<name1>" ...>
                                                 или              <img id="<name1>" ...>
                                                 или любого другого элемента с соотв. id
        - name1, name2, name3, ...    -- name/id-атрибуты элементов
        - class1, class2, class3, ... -- целевые классы
        * можно использовать любое количество пар name/class, от 1 до {много}.

  Загрузка библиотеки:

  * cI_preloadPics( imageRoot, pic1, [pic2, pic3, ...] ) -- загрузка в библиотеку картинок из каталога
        - imageRoot -- каталог, из которого грузить (можно со "/" на конце, а можно и без)
        - pic1, pic2, pic3, ... -- имена файлов-GIF в этом каталоге (без расширения), типа "butt", "butt_"
        * загрузчик предполагает, что все файлы имеют расширение GIF. Это упрощает скрипт.
        * обычно для каждого проекта создаётся preloadImages( imageRoot ), включающий все вызовы загрузчика
          и устанавливающий cI_preloadFlag

  * cI_preloadFlag -- нужно установить в true после всех вызовов cI_preloadPics.
                      Пока не установлено в true, cI не работает.


  Вспомогательные процедуры:

  * cI_findObj(n,d) -- мистическая процедура поиска объекта DOM c name/id, удовлетворяющим условию.
                       используется cI() и сI()

                                                            
===============================================================
*/

// Вспомогательные переменные.
var cI_picArray    = new Array();
var cI_preloadFlag = false;

// change image ( img_name/id, pic_file_name_wo_ext1, ... )
function cI() 
{
  if (document.images && (cI_preloadFlag == true)) 
  {
    for (var i=0; i<cI.arguments.length; i+=2) 
    {
      if (cI.arguments[i] && cI.arguments[i+1])
        if ( cI_findObj(cI.arguments[i]) && cI_picArray[ cI.arguments[i+1] ] )
          cI_findObj(cI.arguments[i]).src = cI_picArray[ cI.arguments[i+1] ].src;
    }
  }
  return; // note that one returns "undefined" value. That IS correct.
}
// change class ( img_name/id, new_class_name1, ... )
function cC() 
{
    for (var i=0; i<cC.arguments.length; i+=2) 
    {     
      if (cC.arguments[i] && cC.arguments[i+1])
        if (cI_findObj(cC.arguments[i]))
          cI_findObj(cC.arguments[i]).className = cC.arguments[i+1];
    }
  return; // note that one returns "undefined" value. That IS correct again.
}

// supplementary stuf.
function cI_findObj(n, d) 
{
  var p,i,x;
  if (!d) d=document;
  if ((p=n.indexOf("?"))>0&&parent.frames.length) 
  {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if (!(x=d[n])&&d.all) x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for (i=0;!x&&d.layers&&i<d.layers.length;i++) x=cI_findObj(n,d.layers[i].document);
  if (!x && d.getElementById) x=d.getElementById(n);
  return x;
}

// picture gallery builder ( relative_dir, pic_filename_wo_ext1, pic_filename_wo_ext2, ... )
function cI_preloadPics() 
{
  if (cI_preloadPics.arguments[0].lastIndexOf("/") == cI_preloadPics.arguments[0].length-1)
   cI_preloadPics.arguments[0] = cI_preloadPics.arguments[0].substr(0, cI_preloadPics.arguments[0].length-1);
  var dir = ""+cI_preloadPics.arguments[0]+"/";

  for (var i=1; i<cI_preloadPics.arguments.length; i++)
  {
    cI_picArray[cI_preloadPics.arguments[i]] = new Image();
    cI_picArray[cI_preloadPics.arguments[i]].src = dir + cI_preloadPics.arguments[i] + ".gif";
  }
}

