/*************************************************************
	Файл Cookie.js содержит две функции для записи и чтения
	cookies с целью их использования в качестве глобальных
	переменных
		setCookie(cookieName, cookieContent, cookieExpireTime)
		getCookie(cookieName)

	cookieName - имя cookie (переменной)
	cookieContent - значение переменной
	cookieExpireTime - сколько времени будут жить cookie в часах. 
	                   Если 0 - то куки умирают с закрытием браузера.
	
	Модифицированная функция ListedPagesM, вызываемая 
	со страниц _1.htm и _2.htm работает с использованием cookie  
	для динамического переключения страниц. В новой версии не 
	используется
	Функция DeliverPage формируют текущее значение cookie
	для вызванного номера страницы текущего раздела, вызывается
	только внутри этого файла. В новой версии заменена на 
	DeliverPageM
	
	Следует помнить, что браузер может работать не более, 
	чем с 20-ю куками

**************************************************************/

/******************** ListedPagesS ***************
	Выводит HTML-текст, формирующий перечень страниц после слова 
   "Листать". Текущая страница (iPage) делается без гиперссылки,
   остальные страницы в пределах общего числа PagesInChapter
   получают ссылки через вызов функции DelivePageM(N).
   Используется в новой версии вывода секций. 
   Описание алгоритма находится в файле "Организация структуры
   'Листать'.doc.  
**************************************************/
function ListedPagesS(){

var UnactivePage="<b> <font color='#C0C0C0'>";  // серый
var ActivePageHead="<b> <font color='#401818'> <a href='javascript:DeliverPageM(";  // коричневый
var ActiveTail="</a></font></b>";
var UnactiveTail="</font></b>";
var ActiveEnd=")'>";
var N;
// PagesInChapter определяется в основном файле Раздел.js
// iPage берется из cookie 

for (N=1; N<=PagesInChapter; N++) {
	if (N==iPage) // Unactive number
			document.write(UnactivePage+iPage+UnactiveTail);
	else  // Active Number
			document.write(ActivePageHead+N+ActiveEnd+N+ActiveTail); 
} // end-for

} //ListedPagesS


/******************** ListedPagesM ******************************
	Выводит HTML-текст, формирующий перечень страниц после слова 
   "Листать". Текущая страница (iPage) делается без гиперссылки,
   остальные страницы в пределах общего числа PagesInChapter
   получают ссылки на файлы раздела с базовым именем 
   BasePageFile. Например, для файлов раздела albom файлы страниц
   будут иметь имена: albom_1.htm (первая группа книг) и 
   albom_2.htm (вторая и последующие группы книг).
   Использовалось в старой версии.
   Описание алгоритма находится в файле "Организация структуры
   'Листать'.doc.  
*****************************************************************/
function ListedPagesM(){

var UnactivePage="<b> <font color='#C0C0C0'>";  // серый
var ActivePage="<b> <font color='#401818'> <a href='";  // коричневый
var UnactiveTail="</font></b>";
var ActiveTail="</a></font></b>";
var ActiveIn1="_2.htm' onClick='DeliverPage(";
var Active1In2="_1.htm'>"
var ActiveNot1In2="javascript:DeliverPage(";
var ActiveEnd=")'>";
var N;
// PagesInChapter определяется в файле Раздел.js
// BasePageFile определяется в начале файлов _1, _2
// iPage определяется =1 в начале _1 и берется из cookie в _2
var pHead=ActivePage+BasePageFile;

for (N=1; N<=PagesInChapter; N++) {
	if (N==iPage) // Unactive number
	document.write(UnactivePage+iPage+UnactiveTail);
	else { // Active Number, N!=iPage
		/* Переход на N=1 в _2 */
		if (N==1) {
			document.write(pHead+Active1In2+"1"+ActiveTail); 
		}	
		else { //  Переход на N>1
		  if (iPage==1) { // Active on _1
		  	document.write(pHead+ActiveIn1+N+ActiveEnd+N+ActiveTail);
		  }	
		  else {	// Active on _2
	  		document.write(ActivePage+ActiveNot1In2+N+ActiveEnd+N+ActiveTail);
	  	  }
	    }
    }
} // end-for

} //ListedPagesM

/****************** DeliverPageM (P) ***************
	Запись в cookie значения страницы перехода (P)
	с меткой "iPage" Метка имеет вид "iPage"=P.
	Процедура написана для нового подхода с выборкой 
****************************************************/
function DeliverPageM(P) {
var s, i;

	// обновление cookie при переходе на страницу больше 1-й
	// при переходе на 1-ю страницу cookie не изменяется
	// и последующая перезагрузка не выполняется
	setCookie("iPage", P, 0);
	setCookie("SearchStr",SearchStr,0); // чтобы работал переход по страницам 
										// при возврате с zakazano
	s=location.search;
	if (s!="") {
		i=location.href.indexOf(s);
		if (i==-1) {alert("DeliverPageM:проблема с передаваемым параметром");return;}
		s=location.href.substring(0,i);
//		alert(s);
		location.href=s;
	}
	else location.reload(true);
	
		
} // DeliverPageM


/****************** DeliverPage (Р) ***************
	Запись в cookie значения страницы перехода (P)
	с меткой имени раздела BasePageFile при работе
	на страницах _1 и _2. Метка имеет вид
	BasePageFile=P. 
	Используется только в ListedPagesM для старого
	вырианта
**************************************************/
function DeliverPage(P) {

// BasePageFile определяется в начале файлов _1, _2
// iPage определяется =1 в начале _1 
// и берется из cookie в _2 (где всегда >1)
	
	// обновление cookie при переходе на страницу больше 1-й
	// при переходе на 1-ю страницу cookie не изменяется
	// и последующая перезагрузка не выполняется
	if (P>1) setCookie(BasePageFile, P, 0);
	else return;
	
	// Произошел переход не на первую страницу.
	// Если текущее значение iPage != 1, значит вызов функции
	// идет из _2, и выполняется перезагрузка страницы с последующим
	// извлечением iPage из cookie.
	if (iPage >1) location.reload(true); 
		
} // DeliverPage

/****************** setCookie ***********************
	Cookies - это пара cookieName (символьное имя 
	параметра - строка символов) и cookieContent 
	(значение параметра - строка символов или числовое 
	значение), которые упаковываются в общую cookie-запись 
	в формате: 
		"cookieName=cookieContent;" 
	с преобразованием всех пробелов внутри cookieContent 
	в %20. Не допускается использовать ";" внутри 
	cookieContent. Число cookie-параметров не должно 
	быть более 20!
	Функция setCookie записывает в общую cookie-запись
	одну пару (имя_параметра)(значение_параметра).
	Для записи нескольких параметров нужно вызвать функцию 
	соответствующее число раз.
	cookieExpireTime - время жизни в часах; при нулевом 
	значении cookie умирает с закрытием браузера
*****************************************************/
function setCookie(cookieName, cookieContent, cookieExpireTime){
    if(cookieExpireTime>0){
        var expDate=new Date()
        expDate.setTime(expDate.getTime()+cookieExpireTime*1000*60*60)
        var expires=expDate.toGMTString()
        document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape
('/')+"; expires="+expires
    }else{
        document.cookie=cookieName+"="+escape(cookieContent)+"; path="+escape
('/')+"";
    }
}// setCookie

/****************** getCookie ******************
	Функция возвращает значение параметра с
	символьным именем cookieName (строка символов). 
	При возврате восстанавливаются имевшиеся 
	внутри пробелы.
	Возвращается значение только одного 
	запрошенного параметра. Для получения каждого
	параметра функция вызывается индивидуально.
	При отсутствии параметра возвращается 
	пустая строка.
************************************************/
function getCookie(cookieName){
    var ourCookie=document.cookie
    if(!ourCookie || ourCookie=="")return ""
    ourCookie=ourCookie.split(";")
    var i=0
    var Cookie
    while(i<ourCookie.length){
        Cookie=ourCookie[i].split("=")[0]
        if(Cookie.charAt(0)==" ")
                Cookie=Cookie.substring(1)
        if(Cookie==cookieName){
            return unescape(ourCookie[i].split("=")[1])
        }
        i++
    }
    return ""
} // getCookie

// Конец файла cookie.js 