var numSections=14   // количество рубрик, НЕвключая подразделы
var numSubSections=26
var numSmallPhotos=6+2  // количество маленьких фотографий, отображаемых на экране за 1 раз
var numPhotos=0        // фактическое количество маленьких фотографий в каждой рубрике
var numSmallPhotosTmp   // необходима если количество маленьких фотографий меньше, чем должно быть в коллекции по умолчанию, чтобы не отображались пустые квадраты с крестами вместо отсутствующих фотографий


var buttonUp="photo_gallery/buttons/arrowUp.jpg"
var buttonDown="photo_gallery/buttons/arrowDown.jpg"
var buttonUpGray="photo_gallery/buttons/arrowUpGray1.jpg"
var buttonDownGray="photo_gallery/buttons/arrowDownGray1.jpg"




var txtButton=false
var wasOrdered;     // 
var hBigPhoto=160, wBigPhoto;   // высота и ширина увеличенного экземпляра фотографии
var n=1;                        // номер выбранной рубрики
var menu=1;
var subMenu=1
var wSmallPhoto1024=80;         // ширина маленькой фотографии при разрешении 1024х768
var hSmallPhoto1024=60;         // высота маленькой фотографии при разрешении 1024х768
var wSmallPhoto800=40;          // ширина маленькой фоторгафии при разрешении 800х600
var hSmallPhoto800=40;          // высота маленькой фотографии при разрешении 800х600
var wBigPhoto1024=425;          // ширина увеличенной фотографии при разрешении 1024х768
var wBigPhoto800=300;           // ширина увеличенной фотографии при разрешении 800х600
var wSmallPhoto, hSmallPhoto;   // ширина и высота маленьких фотографий
var wPhotoCell
var photoPath;
var hButton=20                  // высота кнопок UP и DOWN
var wButton
var wButton1024=wSmallPhoto1024+5
var wButton800=60
var cursorTypeHand="hand"       // тип курсора - рука
var cursorTypeDefault="default" // тип курсора - стрелка
var firstPhoto;
var lastPhoto;      // индекс первой и последней маленькой фотографии в коллекции
var srcImg                      // условное имя рубрики
var tmp=" height="
var curCanvasBorder=1           // нарисовать рамку вокруг маленького фото с номером curCanvasBorder
var prevCanvasBorder=1          // нарисовать рамку вокруг маленького фото с номером prevCanvasBorder
var var1=-1
var var2=-1
var var3=0


var aData=new Array("Рубрика:","Комментарий:")/*,"Имя файла:"),"Автор:","Дата:","Имя файла:")*/
var aDataEng=new Array("Section:","Comment:")/*,"Имя файла:"),"Автор:","Дата:","Имя файла:")*/
var aDataBy=new Array("Рубрыка:","Каментарый:")/*,"Имя файла:"),"Автор:","Дата:","Имя файла:")*/
   
function fPhotoInfo()
{
this.fileName;
this.author;
this.date;
this.comment;
this.category;
}






var aPhotos=[]
for (var menu=1;menu<=numSections;menu++)
      aPhotos[menu]=[];

for (var menu1=1;menu1<=numSections;menu1++)
   for (var subMenu1=0;subMenu1<=200;subMenu1++)
      aPhotos[menu1][subMenu1]=[];
	  
	  
for (var menu1=1;menu1<=numSections;menu1++)
   for (var subMenu1=0;subMenu1<=numSubSections;subMenu1++)
      for (var i=0;i<=200;i++)
         aPhotos[menu1][subMenu1][i]=new fPhotoInfo();

for (var menu1=1;menu1<=numSections;menu1++)
   for (var subMenu1=0;subMenu1<=numSubSections;subMenu1++)
      for (var i=0;i<=200;i++)
         aPhotos[menu1][subMenu1][i].fileName="";

	  
	  
	  
	  
	  
	  
	  
	  
	function fReplaceStr(findStr,replaceStr)
// находит в строке str подстроку find_str и замещает ее на подстроку replace_str
{
var tmpStr=this
var leftStr
var rightStr
var startLocation
var replaceLocation=tmpStr.indexOf(findStr)

while (replaceLocation!=-1)
     {
	 leftStr=tmpStr.fLeft(replaceLocation)
	 rightStr=tmpStr.substring(replaceLocation+findStr.length)
	 tmpStr=leftStr+replaceStr+rightStr
	 startLocation=replaceLocation+replaceStr.length
	 replaceLocation=tmpStr.indexOf(findStr,startLocation)
     }
return tmpStr
}



function fExtractLeft(totalChars)
     {
	 return this.substring(0, totalChars)
	 }

String.prototype.fLeft=fExtractLeft
String.prototype.fReplace=fReplaceStr


  
	
	  
	  
	  
	  
	  
	  
	  
	  

function fChangeSize()
// изменяет размеры маленьких и больших фотографий в зависимости от разрешения экрана пользователя
{
if (screen.width>960)
   {
   wSmallPhoto=wSmallPhoto1024;
   hSmallPhoto=hSmallPhoto1024;
   wBigPhoto=wBigPhoto1024;
   wButton=wButton1024
   }
else 
   {
   wSmallPhoto=wSmallPhoto800;
   hSmallPhoto=hSmallPhoto800;
   wBigPhoto=wBigPhoto800;
   //numSmallPhotos--;    // уменьшаем количество фотографий, чтобы приличнее смотрелось при разрешении 800х600
   wButton=wButton800
   }
}
   

   
function fChangeCollection(direction)   
// вызывается по нажатию стрелки вниз или вверх, прокручивает коллекцию маленьких фото в области CollectionArea
{
with (document)
{
if (direction==1)
   {
   if (firstPhoto>1)
      {
	  getElementById("id_buttonDown").src=buttonDown
      fInsertPhotos(firstPhoto-3)
      lastPhoto=firstPhoto+numSmallPhotos-2  
      firstPhoto--
	  var1=++curCanvasBorder
	  var2=++prevCanvasBorder
	  if (var2<=numSmallPhotos)
	     if (var2>0)
   	        {
            getElementById("id_img_"+var2).border.border=0
            getElementById("id_img_"+var1).border=2
		    }
	  if (firstPhoto<2) getElementById("id_buttonUp").src=buttonUpGray
      }
   }
else
   {
   if (aPhotos[Math.abs(menu)][Math.abs(subMenu)][lastPhoto].fileName!="")
      { var3++ 
	  getElementById("id_buttonUp").src=buttonUp
      fInsertPhotos(lastPhoto-numSmallPhotos)
      lastPhoto++
      firstPhoto=lastPhoto-numSmallPhotos+1
      var1=--curCanvasBorder
      var2=--prevCanvasBorder
      if (var2>0)
	     if (var2<=numSmallPhotos)
	        {
            getElementById("id_img_"+var2).border=0
    		getElementById("id_img_"+var1).border=2
            } 
      
	  if (aPhotos[Math.abs(menu)][Math.abs(subMenu)][lastPhoto].fileName=="")getElementById("id_buttonDown").src=buttonDownGray
      } 
   }     
}
}
   
   
 
function  fInsertPhotos(a)
// вставляет коллекцию маленьких фотографий в количестве numSmallPhotos штук
{
with (document)
{
for (var i=1;i<=numSmallPhotosTmp;i++)
   {
   photoPath="photo_gallery/menu"+menu+"/"+subMenu+"/photos/preview/"+aPhotos[Math.abs(menu)][Math.abs(subMenu)][i+a].fileName+".jpg"
   getElementById("id_"+i).innerHTML="<a><img id='id_img_"+i+"' src="+photoPath+tmp+hSmallPhoto+" onmouseover='this.style.cursor=cursorTypeHand' onClick='curCanvasBorder="+(i)+"; fShowBigPhoto(this,"+(i+a)+");prevCanvasBorder="+(i)+"'></a>"
   }
}
}
   
   
   
function fCreateCollectionArea()
// создает область CollectionArea и вставляет в нее первые numSmallPhotos маленьких фотографий
{
with (document)
{
numPhotos=0
for (i=0;i<100;i++)
   if (aPhotos[Math.abs(menu)][Math.abs(subMenu)][i].fileName!="")
      numPhotos++
if (numPhotos<numSmallPhotos) numSmallPhotosTmp=numPhotos
else numSmallPhotosTmp=numSmallPhotos








/*
if (wBigPhoto>hBigPhoto) wPhotoCell=wBigPhoto
else 
wPhotoCell=hBigPhoto
alert(wPhotoCell)
*/
var tableCollection="<table width='100%'><tr><td align='center' height="+hButton+"><a onmouseover='this.style.cursor=cursorTypeHand' onClick='fChangeCollection(1)'><img id='id_buttonUp' width="+wButton+" src="+buttonUp+"></a></td></tr>"
for (var i=1;i<=numSmallPhotosTmp;i++)
   tableCollection+="<tr><td id='id_"+i+"' height="+(hSmallPhoto+3)+" align='center'></td></tr>"
tableCollection+="<tr><td align='center' height="+hButton+"><a onmouseover='this.style.cursor=cursorTypeHand' onClick='fChangeCollection(0)'><img id='id_buttonDown' width="+wButton+" src="+buttonDown+"></a></td></tr></table>"
getElementById("id_td").innerHTML="<table width='100%'><tr><td valign='top' width=100><table width='100%' height='100%'><tr><td id='id_photo_area' height="+hBigPhoto+" valign='top'></td></tr><tr><td id='id_data_area' height='100%' valign='top'></td></tr><tr><td id='id_button'></td></tr></table></td><td>&nbsp;</td><td id='id_collection_area' width="+wSmallPhoto+" valign='top'>"+tableCollection+"</td></tr></table>";
fInsertPhotos(-1)

}   
}

   
   
   
   
   
function fOpenPhotoGallery(idLink,categ,lang)
// открывает фотогалерею по нажатию на ссылку в навигаторе
{var3=0
if (lang=='eng') aData=aDataEng
else if (lang=='by') aData=aDataBy
with (document)
{
if (categ!="0")
{
prevCanvasBorder=1
var firstUnderline=idLink.indexOf("_")
var lastUnderline=idLink.lastIndexOf("_")
menu=idLink.substring(firstUnderline+5,lastUnderline)
subMenu=idLink.substring(lastUnderline+1,idLink.length)
fChangeSize();
fCreateCollectionArea()
//////////////////////// сразу открываем первую фотографию коллекции данной рубрики////////////////////////////////
var srcImg1="photo_gallery/menu"+menu+"/"+subMenu+"/photos/"+aPhotos[Math.abs(menu)][Math.abs(subMenu)][0].fileName+".jpg"
getElementById("id_photo_area").innerHTML="<br><img id='id_img_photo_area' src="+srcImg1+">"//+" width="+wBigPhoto+">"
fShowPhotoData(0) 
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
lastPhoto=numSmallPhotosTmp
getElementById("id_img_1").border=2
getElementById("id_buttonUp").src=buttonUpGray

if ((numSmallPhotosTmp<=numSmallPhotos)&&(aPhotos[Math.abs(menu)][Math.abs(subMenu)][numSmallPhotos+1].fileName=="")) 
   getElementById("id_buttonDown").src=buttonDownGray
curCanvasBorder=1
prevCanvasBorder=1
}
}
}




function fShowBigPhoto(aLink,num)
// по нажатию на маленькую фотографию открывает увеличенную копию
{
with (document)
{
var srcImg1=fReplaceStrPart(aLink.src,"preview/","");
getElementById("id_photo_area").innerHTML="<br><img id='id_img_photo_area' src="+srcImg1+">"//+" width="+wBigPhoto+">"
      if (prevCanvasBorder>0)
	     if (prevCanvasBorder<=numSmallPhotos)

getElementById("id_img_"+prevCanvasBorder).border=0
getElementById("id_img_"+curCanvasBorder).border=2
}
fShowPhotoData(num)
}




function fShowPhotoData(num)
// по нажатию на маленькую фотографию открывает данные о ней
{
with (document)
{
var dataTable="<table class=textj>"
for (var i=0;i<aData.length;i++)
dataTable+="<tr valign='top'><td align='right'><b>"+aData[i]+"</b></td><td id='id_data_"+i+"'></td></tr>"
dataTable+="</table>"
getElementById("id_data_area").innerHTML=dataTable
var menuText=getElementById("id_menu"+menu+"_"+subMenu).innerHTML
menuText=menuText.fReplace("<BR>","")
menuText=menuText.fReplace("&nbsp;","")
menuText=menuText.fReplace("<BR/>","")
menuText=menuText.fReplace("– ","")
//menuText=menuText.fReplace("&nbsp","")
//alert(menuText)
getElementById("id_data_0").innerHTML=menuText
getElementById("id_data_1").innerHTML=aPhotos[Math.abs(menu)][Math.abs(subMenu)][num].comment
/*getElementById("id_data_2").innerHTML=aPhotos[Math.abs(menu)][Math.abs(subMenu)][num].author
getElementById("id_data_3").innerHTML=aPhotos[Math.abs(menu)][Math.abs(subMenu)][num].date

getElementById("id_data_2").innerHTML=aPhotos[Math.abs(menu)][Math.abs(subMenu)][num].fileName
*/
}
}


function fReplaceStrPart(str,find_str,replace_str)
// находит в строке str подстроку find_str и замещает ее на подстроку replace_str
{
var right_str
var left_str
var replace_location=str.indexOf(find_str)
left_str=str.substring(0,replace_location)
right_str=str.substring(replace_location+find_str.length,str.length)
result_str=left_str+replace_str+right_str
return result_str
}


