function getClientWidth()
{
return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}


/* объявляем глобальные переменные для формирования данных о фоторграфиях в документе */
var PhotoLinks = new Array;
var PhotoCaptions = new Array;
var photo = document.getElementById('big_photo');
var TmpPhoto = new Image;
var GlobalImageNumber = 0;




/* Ищем фотографии в документе, подписи к ним и запролняем соотвествующие массивы, попутно изменяя ссылки на вызовы ShowImage */

var Links = document.links
var PhotoCount = 0;
/* Перебор всех ссылок в текущем документе */
 for (var i = 0;i < Links.length;i++) 
  {

  if ((Links[i].href.indexOf(".jpg") != -1 || Links[i].href.indexOf(".JPG") != -1 ) && Links[i].href.indexOf("showimage")== -1)

  { /* Если найдена ссылка на картинку, то действуем дальше */
  PhotoLinks[PhotoCount] = Links[i].href; /*Запоминаем значение ссылки в глобальную переменную */
  Links[i].href = "javascript: ShowImage("+PhotoCount+")"; /* Изменяем оригинальную ссылку на вызов соотв. функции */
  PhotoCount++;
  }
  }
  
 /* Теперь  - самое сложное - найти соотвествующие подписи к фоткам и занести их в глобальный массив */                  
 
 var AllTables = document.getElementsByTagName('table')
var CaptionsCount = 0;
 for (var i=0; i<AllTables.length;i++) /* перебор всех таблиц */
  { 
  if (AllTables[i].className.indexOf('image-holder')!=-1) /* найдена таблица с фоткой */
   {
   var TableCells = AllTables[i].getElementsByTagName('td');
   var CellsNumber = 0;
   for (var j=0; j<TableCells.length;j++)
    {
    CellsNumber = CellsNumber + TableCells[j].colSpan /* CellsNumber - общее число ячеек в тек. таблице, как бы без объединения */
    }
   var ColumnNumber = CellsNumber / AllTables[i].rows.length; /* Количество столбцов а таблице */
   for (var j=0; j<TableCells.length;j++)
    {
    if ((TableCells[j].innerHTML.indexOf('javascript: ShowImage') !=-1) && (TableCells.length>1)) /* åñëè íàéäåíà ññûëêà íà êàğòèíêó 
                                                               è òàáëèöà ïğè ıòîì ñîñòîèò èç áîëåå ÷åì îäíîé ÿ÷åéêè
                                                               (âòîğîå óñëîâèå íåîáõîäèìî äëÿ ïğåäîòâğàùåíèÿ âûõîäà 
                                                               çà ãğàíèöû ìàññèâà TableCells*/
     {
     var CaptionCellOffset = 0;
     for (var jj = j; jj < j+ColumnNumber; jj++)
      {
      if ((TableCells[jj]) && (TableCells[jj].colSpan ==1) ) CaptionCellOffset++ /* Âû÷èñëÿåì ñìåùåíèå ïîäïèñè îòíîñèòåëüíî êàğòèíêè â ğÅÀËÜÍÛÕ ÿ÷åéêàõ
                                                                                   îíî âñåãäà <= êîëè÷åñòâó ñòîëáöîâ */
      }
     for (var jj = 0; jj < Links.length; jj++) /* ïåğåáèğàåì âñå ññûëêè äîê-òà è åñëè êàêàÿ-òî íàõîäèòñÿ âíóòğè íàøåé ÿ÷åéêè, òî 
                                                ïğèáàâëÿåì ê íåé ïîäïèñü  */
      {
     if (Links[jj].parentNode == TableCells[j])
     {
     PhotoCaptions[CaptionsCount] = TableCells[j+CaptionCellOffset].innerHTML.toString();
     CaptionsCount++;
     }
     }
    }
   }
  } 
 }

var resultedPhotoWidth=0;
var resultedPhotoheight=0;


function SetPhotoSize() /* вызывает по unload объекта photo */
{
var AvailWidth = getClientWidth()*0.9-50;
var AvailHeight = getClientHeight()*0.9-75;
var WResizeRatio = 1;
var HResizeRatio = 1;
TmpPhoto.style.width="";
if (AvailWidth<TmpPhoto.width) WResizeRatio = TmpPhoto.width / AvailWidth;
if (AvailHeight<TmpPhoto.height) HResizeRatio = TmpPhoto.height / AvailHeight;
var ComputedWidth = Math.round(TmpPhoto.width/Math.max(WResizeRatio, HResizeRatio));

document.getElementById('captionholder').innerHTML = PhotoCaptions[GlobalImageNumber];

if (GlobalImageNumber==0) document.getElementById('prevbutton').disabled = true; else document.getElementById('prevbutton').disabled = false;
if (GlobalImageNumber==PhotoLinks.length-1) document.getElementById('nextbutton').disabled = true; else document.getElementById('nextbutton').disabled = false;
resultedPhotoWidth = ComputedWidth;
resultedPhotoHeight = Math.round(TmpPhoto.height/Math.max(WResizeRatio, HResizeRatio));
photo.style.width = resultedPhotoWidth+'px';

photo.src =TmpPhoto.src;
photo.style.display = 'block';
document.getElementById('load').style.display = 'none';
document.getElementById('captionholder').style.visibility = 'visible';
}


function ClosePhotos()
{
document.getElementById('semitransparent').style.display = 'none';
}


function ShowImage(ImageNumber)
{
document.getElementById('semitransparent').style.display='block';
photo.style.display = 'none';
/*
document.getElementById('semitransparent').style.top=getBodyScrollTop()+'px';
document.getElementById('semitransparent').style.width=getClientWidth()+'px';
document.getElementById('semitransparent').style.height=getClientHeight()+'px';
*/

document.getElementById('captionholder').style.visibility='hidden';
document.getElementById('load').style.display = 'block';
if (resultedPhotoWidth!=0)
{
document.getElementById('load').style.paddingLeft = Math.round(resultedPhotoWidth/2)-3+'px';
document.getElementById('load').style.paddingRight = Math.round(resultedPhotoWidth/2)-3+'px';
document.getElementById('load').style.paddingTop = Math.round(resultedPhotoHeight/2)-3+'px';
document.getElementById('load').style.paddingBottom = Math.round(resultedPhotoHeight/2)-3+'px';
}

/* Считывание фотки во временный объект и завершение.
 А далее по onload выполняется функция SetPhotoSize, которая делает все остальное _после_ завершения загрузки. */
GlobalImageNumber = ImageNumber;
TmpPhoto.onload = SetPhotoSize;
TmpPhoto.src = PhotoLinks[ImageNumber];

}


function ShowPrevNext(direction)
{

if (direction==0)
{ 
  if (GlobalImageNumber>0)
   {
    GlobalImageNumber--;
    ShowImage(GlobalImageNumber)
    } 
}

if (direction==1)
{ 
  if (GlobalImageNumber<PhotoLinks.length-1)
   {
    GlobalImageNumber++;
    ShowImage(GlobalImageNumber)
       } 
    }
}

