/************************************************
  Файл с массивом данных для осуществления выборки
  книг по заданной строке поиска для четырех
  предметных областей поиска:
  0 - выборка по году издания
  1 - выборка по автору
  2 - выборка по названию книги
  3 - выборка по секции отображения -
      разделы сайта, где выставлена книга
      (Культура, История, Петербург и т.д.)
      
  В основе лежит структура описания книги 
  bookRecord_en(file, year, author, title, section), где
	file - имя файла, относящегося к книге
	year - год издания
	author - автор(ы)
	title - ключевые слова названия
	section - разделы сайта, где выставляется книга
	
	Эти структуры образуют массив booksArray_en,
	заполняемый как исходный блок данных и 
	пополняемый по мере выхода книг. Массив
	изначально формируется упорядоченный 
	по году издания (элемент [0] всегда содержит
	последнюю занесенную книгу).
	
	Другой структурой является sectionRecord_en, из которой 
	формируется массив secArray с параметрами настройки
	секций:
	section - условное имя секции
	book1 и book2 - книги-новинки в секции
	hfoto - панорамное фото вверху
	ftitle - название панорамного фото во всплывающей подсказке
	secname - название секции после слов ИЗДАННЫЕ КНИГИ
	ref1 ... ref4 - пункты меню перехода на подразделы
	   секции с условным обозначением секции перехода
	
	В файле определена функция
	
	function SelectItems_en(itemType, substrng), 
	========================================
	где itemType=(0...3) задает предметную
	область поиска, а substrng определяет 
	строку поиска, на основании которой из 
	массива booksArray_en формируется массив 
	booksSelArray, удовлетворяющий заданному
	критерию. Новый массив состоит из 
	тех же структур booksArray_en. 
	Кроме того, формируется одномерный массив 
	Fnames_en[] из имен файлов выборки.
	Функция возвращает размер массива.
	
	function zakazItems_en()	--- брать из основного 
	=====================
	Для формирования нового массива booksSelArray
	на основе имеющегося в cookie параметра zakaz.
	На его основе выводится список заказанных книг.
	
	function whichSection_en(param)	--- брать из основного 
	============================
	Для определения номера элемента массива secArray
	по условному наименованию секции (param)
	
	function displaySecRef_en(idx) 
	===========================
	Вывод левой (idx=0) или правой (idx=1) группы
	ссылок на подсекции
	
	function ShowPageWithBooks_en()
	============================ 
	Реакция на кнопку "Показать выборку" в левой колонке
	
	function showNewBook_en(book,idx) 
	==============================
	На страницах "Изданные книги" и "Готовятся к изданию"
	показывает указанную книгу book с учетом уровня вложенности
	папки idx: 0 для Изданных книг (нулевой уровень вложенности) 
	idx=1 для Готовящихся к изданию (первый уровень вложенности) 
	и т.д. 
	
*************************************************/
var booksArray_en=new Array(); // создание массива ссылок
var booksSelArray_en=new Array(); 	// массив отобранных книг
var secArray_en=new Array(); // массив параметров секции
var Fnames_en=new Array();	// массив имен отобранных книг: booksSelArray_en[i].file
var refArray_en=new Array(8); // массив пар: название секции-перехода и ссылка на нее

var FnamesSize_en; // число книг в разделе, устанавливается в SelectedItems
var PagesInChapter=Math.floor((FnamesSize_en-1)/6)+1; // число страниц в разделе

// Книги-новинки на страницах "Готовятся к печати" и "Изданные книги"
// показываются функцией showNewBook(book) в этом блоке
var newBook1inGotov_en="moskva_fotoN_en",
    newBook2inGotov_en="imp_flot",
    newBook1inIzdan_en="kamnerez_fig",
    newBook2inIzdan_en="moskva_fotoN_en";

// конструктор структуры данных о книге
function bookRecord_en(file, year, author, title, section) {
	this.file=file; 	// имя файла, относящегося к книге
	this.year=year;		// год издания
	this.author=author;	// автор(ы)
	this.title=title;	// ключевые слова названия
	this.section=section;	// разделы сайта, где выставляется книга
}

// конструктор структуры сменных элементов секции
function sectionRecord_en(section, book1, book2, hfoto, ftitle, secname, ref1, ref2, ref3, ref4) 
{
	this.section=section; 	// название секции
	this.book1=book1; 	// первая книга-новинка
	this.book2=book2; 	// вторая книга-новинка
	this.hfoto=hfoto;   // фото в шапке
	this.ftitle=ftitle; // название фотографии
	this.secname=secname; 	// заголовок секции
	this.ref1=ref1; 	// ссылка-переход
	this.ref2=ref2; 	// ссылка-переход
	this.ref3=ref3; 	// ссылка-переход
	this.ref4=ref4; 	// ссылка-переход
}

secArray_en[secArray_en.length]=new sectionRecord_en (
"all","stigliz_en","MF_en","SpbPanorama.jpg",
"Saint Petersburg: Panorama of the Spit of the Basil Island",
"Albums, Russian History, Orthodoxy",
"Photo Albums-album","Russian History-hist","Orthodoxy-orth","Others-drug");
secArray_en[secArray_en.length]=new sectionRecord_en (
"album","MF_en","moskva_fotoN_en","Kazansky.jpg",
"Saint Petersburg: Kazan Cathedral", "Albums & Photo",
"All Books-all","Russian History-hist","Orthodoxy-orth","Others-drug");
secArray_en[secArray_en.length]=new sectionRecord_en (
"hist","voina_object_en","MF_en","LetSad.jpg",
"Saint Petersburg: Summer Garden","Russian History",
"All Books-all","Photo Albums-album","Orthodoxy-orth","Others-drug");
secArray_en[secArray_en.length]=new sectionRecord_en (
"orth","zaonegie_en","antikvar_en","AlNevskLavra.jpg",
"Saint Petersburg: Alexander Nevsky Lavra","Orthodoxy",
"All Books-all","Russian History-hist","Photo Albums-album","Others-drug");
secArray_en[secArray_en.length]=new sectionRecord_en (
"drug","faber_en","kamnerez_fig_en","DvortsMost.gif",
"Saint Petersburg: White Nights - Palace Bridge open","not Classified Books",
"All Books-all","Russian History-hist","Orthodoxy-orth","Photo Albums-album");
/* страница с отобранными для заказа книгами */
secArray_en[secArray_en.length]=new sectionRecord_en (
"zakazano","stigliz_en","ierusalim_en","SenPlNoch.jpg",
"Saint Petersburg: Senate Square in the night","Selected books",
"All Books-all","Russian History-hist","Orthodoxy-orth","Photo Albums-album");
/* страница вызывается при показе выборки книг по кнопке 'Показать'
   при задании критерия поиска по названию, автору или году
*/
secArray_en[secArray_en.length]=new sectionRecord_en (
"select","stigliz_en","plaksin_en","KronvProliv.jpg",
"Saint Petersburg: Kronverk Channel near Peter & Paul Cathedral","Request extraction by",
"All Books-all","Russian History-hist","Orthodoxy-orth","Photo Albums-album");

// инициализация очередного элемента массива с данными книг
booksArray_en[booksArray_en.length]=
	new bookRecord_en("voina_object_en","2009", "koloskova", "war through  camera lens", "all hist album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("moskva_fotoN_en","2009", "shelaeva", "moscow old photo", "all hist album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("kamnerez_fig_en","2009", "faberge iluhin skurlov", "Carl Faberge  His Successors Hardstone Figures Russian Types", "all hist album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("antikvar_en","2008", "tolmatsky skurlov ivanov", "antiques market Petersburg", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("MF_en","2006 2008", "korneva cheboksarova", "empress Miria Fedorovna residences Russia Denmark", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("voen_stolitsa_en","2008", "lapin", "military capital russian empire photo", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("stigliz_en","2007", "???", "drawings Stieglitz  academy art design", "all hist drug");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("plaksin_en","2007", "plaksin", "antimyths paintings graphic art", "all drug");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("zaonegie_en","2007", "miltchik", "Zaonegie history culture photo album", "all album hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("ierusalim_en","2007", "dluzshnevskaja", "Jerusalem photo album", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("ross_imp_en","2006", "koloskova bokhanov upit", "Russian Empire photo", "all hist album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("mus_mir_en","2006", "dluzshnevskaja", "Moslem world Russian Empire", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("duma3rd_en","2006", "lukojanov sakharov", "state duma russia", "all hist drug");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("faber_en","2005", "perevyshko skurlov faberge", "peterburg karl faberge", "all album hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("rus_hramy_en","2005", "antonov kobak", "russian temples cloisters europe", "all orth");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("sestr_mil_en","2005", "beljakov", "nurses russia", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("mirom_sozdan_en","2004", "korneva cheboksarova", "petersburg world created beauty preserved", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("moskva_foto_en","2004", "shelaeva", "moscow photo", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("moskva_pr_en","2004", "shelaeva", "orthodox moscow environs photo", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("nemtsy_en","2004", "smagina", "germans russia", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("petrosobor_en","2004", "Gendrikov Sen'ko", "cathedral peter paul", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("romanov_en","2003", "shelaev shelaeva semenov protsaj", "nicholas romanov life death", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("svatini_en","2003","antonov kobak", "sacred places petersburg christian encyclopedia", "all orth hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("parlament_en","2003", "lukojanov", "background russian parliament", "all hist");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("sport_en","2002", "andreeva guseva", "sport grandfathers photo", "all album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("prav_mir_en","2001", "shelaeva", "orthodox russia photo", "all album orth");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("miloserdie_en","2000", "zanozina adamenko", "charity philantropy petersburg", "all hist album");
booksArray_en[booksArray_en.length]=
	new bookRecord_en("pavlovsk_en","1997", "сюзанна масси", "pavlovsk life russian palace", "all hist");

//обращение к  фрагментам структуры
//var mYear=booksArray_en[0].year;
//var mTitle=booksArray_en[0].title;

/**************** SelectItems_en ********************
	Функция формирует новый массив booksSelArray_en
	из исходного массива booksArray_en на основе 
	заданного типа структуры itemType и подстроки 
	поиска substrng, на основе которой определяется
	участие элемента массива в выборке. Для типов
	year и section требуется точное совпадение с 
	подстрокой, для типов author и title - 
	совпадение подстроки с началом любого слова.
	Подстрока запроса для всех типов структуры, кроме
	section может включать несколько слов (чисел),
	разделяемых пробелами. Подстрока section должна
	состоять из одного слова.
	itemType определяет, какую часть структуры 
	элемента массива анализировать для выборки:
	0 - year, 1 - author, 2 - title, 3 - section
	
	Возвращается размер массива booksSelArray,
	заполняется массив Fnames и параметр FnamesSize_en
*************************************************/
function SelectItems_en(itemType, substrng) {

	var i, found, s, s1, j, k;
	var sSplit=new Array(); // для разбиваемых на слова элементов booksArray_en[]
	var sSplitFind=new Array(); // для разбиваемых на слова элементов подстроки поиска
	
	booksSelArray_en.length=0; // обнуление массива выборки
	Fnames_en.length=0;		// обнуление массива имен книг
	s=substrng.toLowerCase();
	sSplit=s.split(" "); // разделение на слова подстроки поиска
	// Удаление пустых слов, возникших из-за лишних пробелов
	for (i=0;i<sSplit.length;++i)
		if (sSplit[i]!="") sSplitFind[sSplitFind.length]=sSplit[i];
	// Удаление возможных звездочек по краям слов подстроки поиска
	for (i=0;i<sSplitFind.length;++i) {
		s1=sSplitFind[i];
		j=s1.length;
		if (s1.charAt(j-1)=="*") sSplitFind[i]=s1.slice(0,j-1); // удаление звездочки справа
		s1=sSplitFind[i];
		if (s1.charAt(0)=="*") sSplitFind[i]=s1.slice(1); // удаление звездочки слева
	}
	if (sSplitFind.length=="") return 0; // возврат при нулевой подстроке поиска
	
	/*** sSplitFind теперь содержит слова подстроки поиска ***/
	
	if ((itemType>3) || (itemType<0)) {
		alert("SelectItems_en: недопустимый itemType="+itemType);
		return 0;
	}
	
	/***** Цикл поиска хотя бы одного совпадения слов из подстроки
	       поиска со словами из строки сравнения (элемента массива
	       booksArray_en). Из элементов массива booksArray_en, содержащих
	       совпадения формируется массив booksSelArray_en[]
	*/
	for (i=0; i<booksArray_en.length;++i) {
	// выделение в s1 строки сравнения и разделение ее на слова	
		if (itemType==0) s1=booksArray_en[i].year;
		if (itemType==1) {s1=booksArray_en[i].author; if (s1=="") continue; }
		if (itemType==2) s1=booksArray_en[i].title;
		if (itemType==3) s1=booksArray_en[i].section;

		s1=s1.toLowerCase(); // перевели строку сравнения в нижний регистр
		sSplit.length=0;
		sSplit=s1.split(" "); // разделили строку сравнения на слова

	/* Поиск совпадений слов массива sSplitFind со словами массива sSplit
	   при этом для itemType=0 (год) и =3 (секция) требуется полное
	   совпадения, для остальных - совпадение слова из sSplitFind 
	   с началом слова из sSplit
	*/	
		for (j=0;j<sSplit.length;++j) { 
			found=0;
			for (k=0;k<sSplitFind.length;++k){
				if ((itemType==3) || (itemType==0)) {// нужно точное совпадение (секция, год)
					s=sSplit[j]; s1=sSplitFind[k];
					if (s1==s) {
						booksSelArray_en[booksSelArray_en.length]=booksArray_en[i];
						found=1; break; 
					} 
				}
				else { // нужно совпадение начала для автора и названия
					s1=sSplit[j]; s=sSplitFind[k];
					if ((s1.indexOf(s))==0) { // есть совпадение с начала
						booksSelArray_en[booksSelArray_en.length]=booksArray_en[i];
						found=1; break; 
					} 
				}
			} // end-for(k)
			if (found==1) break; // найдено первое совпадение	
		} // end-for(j)
	} // end-for i-cycle
	var len=booksSelArray_en.length;
		for (j=0;j<len;++j) Fnames_en[j]=PathKrat+booksSelArray_en[j].file+".js";
		
	FnamesSize_en=len;
	return len;		  
} // end-of SelectItems_en

/***************** zakazItems_en ***********************
	Функция формирует новый массив booksSelArray
	на основе имеющегося в cookie параметра zakaz.
	На его основе выводится список заказанных книг.
	
	Возвращается размер массива booksSelArray,
	заполняется массив Fnames и параметр FnamesSize_en
*******************************************************/
function zakazItems_en(){
	var i, j, sAr, scookie, s;
	
	scookie=getCookie("zakaz")
	if (scookie=="") return 0;
	
	sAr=scookie.split(" ");	// выделение массива заказанных книг
	booksSelArray_en.length=0; // обнуление массива выборки
	Fnames_en.length=0;		// обнуление массива имен книг

	/***** Цикл поиска хотя бы одного совпадения слов из 
	       массива sAr с элементами массива booksArray_en[i].section. 
	       Из элементов массива booksArray_en, содержащих
	       совпадения формируется массив booksSelArray_en[]
	*/
	
	for (i=0; i<booksArray_en.length;++i) {
		s=booksArray_en[i].file;
		for (j=0; j<sAr.length;++j) {
			if (s==sAr[j]) {
				booksSelArray_en[booksSelArray_en.length]=booksArray_en[i];
				break; 
			} 
		} // end for(j)
	}// end for(i)

		
	var len=booksSelArray_en.length;
		for (j=0;j<len;++j) Fnames_en[j]=PathKrat+booksSelArray_en[j].file+".js";
		
	FnamesSize_en=len;
	return len;		  
}// zakazItems_en

/***************** whichSection_en ***********************
	Функция анализирует параметр param и проверяет
	его на соответствие названию секции. При совпадении
	возвращается номер элемента массива secArray, 
	соответствующий секции. При несовпадении - номер 
	последнего элемента массива, соответствующий выводу
	запрошенной выборки.
	Кроме того, функция формирует массив пар ссылок  
	refArray на основании элементов secArray_en[].ref1 ...
	secArray_en[].ref4: четные - имя подсекции перехода,
	нечетные - ссылка перехода. 

*******************************************************/
function whichSection_en(param) {

	var i, s, s1, found=0;
	for (i=0;i<secArray_en.length;++i){
		s=secArray_en[i].section;
		if (s==param) {found=1; break;}
	}
	if (!found) i=secArray_en.length-1;
	
	s=secArray_en[i].ref1;
	s1=s.split("-");
	refArray_en[0]=s1[0]; refArray_en[1]=s1[1];

	s=secArray_en[i].ref2;
	s1=s.split("-");
	refArray_en[2]=s1[0]; refArray_en[3]=s1[1];

	s=secArray_en[i].ref3;
	s1=s.split("-");
	refArray_en[4]=s1[0]; refArray_en[5]=s1[1];

	s=secArray_en[i].ref4;
	s1=s.split("-");
	refArray_en[6]=s1[0]; refArray_en[7]=s1[1];
	
	return i;
} // whichSection

/********************* displaySecRef_en(idx) ***********************
	Вывод левой (idx=0) или правой (idx=1) группы ссылок для
	подсекций над блоком книг. 
	Реализован вывод HTML-кода:
	<a href='displayBooks.htm?section=histF'>
 <img border=0 src='../Liki_img/bullets_ball63.gif' width=19 height=10>
    Россия в фотографиях </a><br> 
    и возможно второй такой же блок
*****************************************************************/
function displaySecRef_en(idx) {

var sN,sR;
var t1="<a href='displayBooks_en.htm?section=";
var t2="'><img border=0 src='../Liki_img/bullets_ball63.gif' width=19 height=10>";
var t3="</a>", tbr="<br>";

	sN=refArray_en[2*idx]; sR=refArray_en[2*idx+1];
	if (sN!="") document.write(t1+sR+t2+sN+t3);
	
	sN=refArray_en[2*idx+4]; sR=refArray_en[2*idx+5];
	if (sN!="") {
		document.write(tbr);
		document.write(t1+sR+t2+sN+t3);
	}

} // displaySecRef_en

/********************* ShowPageWithBooks_en() ***********************
	Реакция на кнопку "Показать выборку" в левой колонке
	Переход на страницу "Выбранные книги". Поскольку исходный
	индекс типа был: год(0), автор(1), название(2), а на странице
	изменен порядок на "название(0)-автор(1)-год(2)", то производится
	перекодировка DataIdx
*****************************************************************/
function ShowPageWithBooks_en(){
	var iS=document.f_extract.s_extract.selectedIndex;
	var sRequest=document.f_extract.i_item.value;
	switch (iS) { 
		case 0: setCookie("DataIdx",2,0); break; // название
		case 1: setCookie("DataIdx",1,0); break; // автор
		case 2: setCookie("DataIdx",0,0); break; // год
	}
	setCookie("SearchStr",sRequest,0);
	setCookie("iPage",1,0);
//	alert(document.cookie);
	location.href="displayBooks_en.htm";
}//ShowPageWithBooks

/******************* showNewBook_en(book,idx) **********************
	На страницах "Изданные книги" и "Готовятся к изданию"
	показывает указанную книгу book. idx=0 для Изданных 
	(нулевой уровень вложенности) или idx=1 для Готовящихся
	(первый уровень вложенности) и т.д. Реализован код:
	<a title='Последние новинки' href='../Izdan/izdan_det/MF.htm'
  		onclick='setCookie("prevPage",document.location.href,0);'> 
    <img border=0 width=70 height=93 src='../Izdan/Izdimg/MF70.gif'> 
    </a>
*****************************************************************/
function showNewBook_en(book, idx) {

var l1="<a title='The latest publishing' href='",
	l2="Izdan_en/izdan_det_en/"+book+".htm' ",
    l3="onclick='setCookie(\"prevPage\",document.location.href,0);'",
    l4=">",
    l5="<img border=0 width=70 height=93 src='",
    l6="",
    l7="Izdan_en/Izdimg_en/"+book+"70.gif'> ",
    l8="</a>";

	switch (idx) {
	case 1: l6="..\/"; break;
	case 2: l6="..\/..\/"; break;
	}
	document.write(l1+l6+l2+l3+l4+l5+l6+l7+l8);
	
} // showNewBook_en

