/* (c) Наталья Николаевна Бурнос
 *     2009-2010 Караганда, Казахстан
 *     http://www.diary.ru/~mouse-k/
 *     mouse-karaganda@mail.ru
 *     ВНИМАНИЕ! Данный программный код НЕ предназначен для распространения по сети и может быть использован только с письменного согласия автора!
 */

//Запомнить последний раздел
var currentTitle = '-1';
var currentSubmenu = '-1';

/* Выдать элемент по его идентификатору
 * Параметр config - либо строка-идентификатор
                   - либо объект со свойствами window и id
 */
function getEl(config) {
	var thisWin = config.window || self;
	return thisWin.document.getElementById(typeof(config) == 'string' ? config : config.id);
}

//Скрипты для "живых" картинок

var arrowOn = new Image (23, 23);
arrowOn.src = "images/menu-arrow.gif"; //включить стрелку
var arrowOff = new Image(23, 23);
arrowOff.src = "images/spacer.gif";  //выключить стрелку - пустой рисунок

/* Класс для включения/выключения стрелок меню
 */
function menuPics (indexPath) {

	//Базовый путь, от которого будут отсчитываться относительные пути к файлам картинок
	this.indexPath = indexPath;

	//База данных картинок
	this.EmptyPic = new Image ();
	this.EmptyPic.name = 'EmptyPic';
	this.EmptyPic.src = this.indexPath + "images/spacer.gif";
	this.EmptyPic.alt = '···';
	this.BrightSuriken = new Image ();
	this.BrightSuriken.name = 'BrightSuriken';
	this.BrightSuriken.src = this.indexPath + "images/suriken-bright.gif";
	this.BrightSuriken.alt = '··>';
	this.DarkSuriken = new Image ();
	this.DarkSuriken.name = 'DarkSuriken';
	this.DarkSuriken.src = this.indexPath + "images/suriken-dark.gif";
	this.DarkSuriken.alt = '••>';

	/* присвоить свойства первого изображения второму
	  imgSource - объект-источник, imgTargetName - имя (атрибут name) изменяемого изображения
	 */  
	this.replaceImage = function (imgSource, imgTargetName) {
		if (document.images)  {
			with (document.images[imgTargetName]) {
				src = imgSource.src;
				alt = imgSource.alt;
				//alt = eval ('this.' + imgSource.name + '_alt');
			}
		}
	}

	//функция включения изображения в меню
	this.menuPicOn = function (pic)  {
		this.replaceImage (this.BrightSuriken, 'pic' + pic);
	}

	//функция выключения изображения в меню
	this.menuPicOff = function (pic)  {
		var title = new TitleString (pic);
		if (title.isSubmenu()) {
			//Если номер выбранного подменю не совпадает с текущим - очистим его
			if (pic != currentSubmenu)
				this.replaceImage (this.EmptyPic, 'pic' + pic);
			//иначе - выделим его
			else
				this.replaceImage (this.DarkSuriken, 'pic' + pic);
			//назначим очистку для родительского пункта данного подменю
			pic = title.getParent ();
		}
		//Если номер выбранного родительского пункта не совпадает с текущим - очистим его
		if (pic != currentTitle)
			this.replaceImage (this.EmptyPic, 'pic' + pic);
		//иначе - выделим его
		else
			this.replaceImage (this.DarkSuriken, 'pic' + pic);
	}
}


//Выделим соответствующий пункт меню "точкой"-сюрикеном
function changePagePoint (pic) {
	//сбросим картинки прежних разделов
	if (currentTitle != '-1') {
		top.m.replaceImage (top.m.EmptyPic, 'pic' + currentTitle);
		currentTitle = '-1';
	}
	if (currentSubmenu != '-1') {
		top.m.replaceImage (top.m.EmptyPic, 'pic' + currentSubmenu);
		currentSubmenu = '-1';
	}
	var title =  new TitleString (pic);
	if (title.isSubmenu()) {
		//Если выбран пункт подменю - выделим его
		top.m.replaceImage (top.m.DarkSuriken, 'pic' + pic);
		//Запомним номер текущего подменю
		currentSubmenu = pic;
		//назначим выделение для родительского пункта данного подменю
		pic = title.getParent ();
	}
	//Выделим родительский пункт меню
	top.m.replaceImage (top.m.DarkSuriken, 'pic' + pic);
	//Запомним номер текущего родительского пункта
	currentTitle = pic;
}

/* Класс для включения/выключения произвольного изображения
 */
function imgToggle (indexPath) {

	//Базовый путь, от которого будут отсчитываться относительные пути к файлам картинок
	this.indexPath = indexPath;

	//Массив - база данных картинок
	this.imgArray = new Array ();

	//Открытая и закрытая книги для странички даркфиков
	this.imgArray ['bookOn'] = new Image ();
	this.imgArray ['bookOn'].src = this.indexPath + 'images/icons/i-book-open.gif';
	this.imgArray ['bookOff'] = new Image ();
	this.imgArray ['bookOff'].src = this.indexPath + 'images/icons/i-book-close.gif';

	//Заполненный и пустой листы для странички голосования на сообществе
	this.imgArray ['pageOn'] = new Image ();
	this.imgArray ['pageOn'].src = this.indexPath + 'images/icons/i-page-full.gif';
	this.imgArray ['pageOff'] = new Image ();
	this.imgArray ['pageOff'].src = this.indexPath + 'images/icons/i-page-empty.gif';

	//Функция включения произвольного изображения, имеющего номер. Входной параметр - его имя.
	this.imgOn = function (imgName, imgNum) {
		if (document.images) {
			document.images[imgName + imgNum].src = this.imgArray [imgName + 'On'].src;
		}
	}

	//Функция выключения произвольного изображения, имеющего номер. Входной параметр - его имя.
	this.imgOff = function (imgName, imgNum) {
		if (document.images) {
			document.images[imgName + imgNum].src = this.imgArray [imgName + 'Off'].src;
		}
	}
}

/* Класс - набор скриншотов для странички озвучки
*/
function screenShotsSet (shotPath) {

	//Базовый путь, от которого будут отсчитываться относительные пути к файлам картинок
	this.indexPath = shotPath;

	//Массив - база данных картинок
	this.ozvuchkaArray = new Array ();

	this.ozvuchkaArray ['clear'] = new Image ();
	this.ozvuchkaArray ['clear'].src = this.indexPath + 'images/spacer.gif';
	this.ozvuchkaArray ['OneP'] = new Image ();
	this.ozvuchkaArray ['OneP'].src = this.indexPath + 'vide_o/small-1P.jpg';
	this.ozvuchkaArray ['CG'] = new Image ();
	this.ozvuchkaArray ['CG'].src = this.indexPath + 'vide_o/small-CG.jpg';
	this.ozvuchkaArray ['Death_Note'] = new Image ();
	this.ozvuchkaArray ['Death_Note'].src = this.indexPath + 'vide_o/small-Death_Note.jpg';
	this.ozvuchkaArray ['FAKE'] = new Image ();
	this.ozvuchkaArray ['FAKE'].src = this.indexPath + 'vide_o/small-FAKE.jpg';
	this.ozvuchkaArray ['Slayers'] = new Image ();
	this.ozvuchkaArray ['Slayers'].src = this.indexPath + 'vide_o/small-Slayers.jpg';
	this.ozvuchkaArray ['ouran_high_school_host_club'] = new Image ();
	this.ozvuchkaArray ['ouran_high_school_host_club'].src = this.indexPath + 'vide_o/small-ouran_high_school_host_club.jpg';

	//включить скриншот на странице озвучки
	this.viewScreenshot = function (movieName) {
		if (document.images)
				document.images['ScreenShot'].src = this.ozvuchkaArray [movieName].src;
	}

	//выключить скриншот на странице озвучки
	this.clearScreenshot = function  () {
		if (document.images)
			document.images['ScreenShot'].src = this.ozvuchkaArray ['clear'].src;
	}

	return this;
}

//имитация нажатия кнопки при помощи изменения рамки рисунка
function pseudoButtonDown (imgName) {
	if (document.images)
		document.images[imgName].style.border = '2px inset white';
}

//имитация отпускания кнопки при помощи изменения рамки рисунка
function pseudoButtonUp (imgName) {
	if (document.images)
		document.images[imgName].style.border = '2px outset white';
}

//Скрипт для переключения видимости слоя
function toggleDivVis (divID) {
	//сначала найдем видимость слоя
	var divStyle = getEl(divID);
	var divVis = divStyle.style.display;
	//alert ('До: ' + divID + ' = [' + divVis + ']\n(divVis == "") = ' + (divVis == ""));

	if (divStyle.offsetHeight == 0) {
		//сделаем слой видимым
		divStyle.style.display = 'block';
		divStyle.style.visibility = 'visible';
	} else {
		//спрячем слой
		divStyle.style.display = 'none';
		divStyle.style.visibility = 'hidden';
	}
	//alert ('После: ' + divID + ' = ' + divStyle.display);
	//alert ('top = [' + top.name + ']\nself = [' + self.name + ']');
}

//window.external.AddFavorite(location.href,'Rusonyx.ru')

//объект для работы с заголовком картинки
function TitleString (num) {
	this.content = num;

	//Определить, является ли num именем пункта или подпункта меню
	this.isSubmenu = function () {
		//если имя составное (содержит символ подчеркивания) - то это подменю
		var delimiterPos = this.content.indexOf ('_');
		return (delimiterPos >= 0);
	}

	//Из имени подпункта извлечем номер родительского пункта
	this.getParent = function () {
		//если заголовок - уже имя родительского пункта, то просто выйдем
		if (!this.isSubmenu())
			return this.content;
		var delimiterPos = this.content.indexOf ('_');
		if (delimiterPos >= 0)
			//Выделим имя родительского пункта - оно в начале строки до символа подчеркивания
			return this.content.substring (0, delimiterPos);
	}

	//Из имени подпункта извлечем номер подпункта
	this.getSubmenu = function () {
		//если заголовок - имя родительского пункта, то просто выйдем
		if (!this.isSubmenu())
			return '-1';
		var delimiterPos = this.content.indexOf ('_');
		if (delimiterPos >= 0)
			//Выделим имя подпункта - оно от символа подчеркивания до конца строки
			return this.content.substring (delimiterPos + 1);
	}

	this.toString = function () {
		return this.content;
	}

	return this;
}

//Определим, какая страница открыта
function alertPage () {
	alert ('Раздел = [' + top.currentTitle + '], Страница = [' + top.currentSubmenu + ']');
}

/* Изменить текст либо всплывающий заголовок ссылки aLink при переключении видимости слоя aDiv */
function toggleLink (aDiv, aType, aLink) {
	//изменим видимость элемента
	toggleDivVis (aDiv);
	//массив, хранящий в себе значения, которые следует изменить у указанной ссылки.
	var pagesLinks = new Array ();
	pagesLinks ['partners_text_none'] = 'Показать код';
	pagesLinks ['partners_text_block'] = 'Скрыть код';
	pagesLinks ['guestbook_text_none'] = 'Добавить сообщение';
	pagesLinks ['guestbook_text_block'] = 'Скрыть';
	pagesLinks ['festProgram_attr_none'] = 'Щелкните, чтобы увидеть список участников отделения';
	pagesLinks ['festProgram_attr_block'] = 'Щелкните, чтобы скрыть список участников отделения';
	pagesLinks ['victors_attr_none'] = 'Щелкните, чтобы увидеть список победителей номинации';
	pagesLinks ['victors_attr_block'] = 'Щелкните, чтобы скрыть список победителей номинации';
	pagesLinks ['festVideo_attr_none'] = 'Щелкните, чтобы увидеть список файлов';
	pagesLinks ['festVideo_attr_block'] = 'Щелкните, чтобы скрыть список файлов';
	pagesLinks ['trailer_text_none'] = 'Показать трейлер';
	pagesLinks ['trailer_text_block'] = 'Скрыть трейлер';
	pagesLinks ['rolik_text_none'] = 'Показать ролик';
	pagesLinks ['rolik_text_block'] = 'Скрыть ролик';
	pagesLinks ['addressEdit_attr_none'] = 'Получить адрес странички';
	pagesLinks ['addressEdit_attr_block'] = 'Скрыть адрес странички';
	pagesLinks ['musWords_text_none'] = 'Слова';
	pagesLinks ['musWords_text_block'] = 'Скрыть слова';
	pagesLinks ['musWords_attrText_none'] = 'Показать слова';
	pagesLinks ['musWords_attrText_block'] = 'Скрыть слова';

	//Определим, какая страница открыта
	var pageInfo = aType.split ('_');
	//Изменим параметры ссылки в зависимости от видимости элемента
	if (document.getElementById (aDiv).style.display != 'none') {
	//Если элемент стал виден - ссылка будет указывать на его скрытие
		switch (pageInfo [1]) {
			case 'attrText':
				aLink.setAttribute ('title', pagesLinks [aType + '_block']);
			case 'text':
				aLink.innerHTML = pagesLinks [aType + '_block'];
				break;
			case 'attr':
				aLink.setAttribute ('title', pagesLinks [aType + '_block']);
				break;
		}
	} else {
	//Если элемент стал невидим - ссылка будет указывать на его открытие
		switch (pageInfo [1]) {
			case 'attrText':
				aLink.setAttribute ('title', pagesLinks [aType + '_none']);
			case 'text':
				aLink.innerHTML = pagesLinks [aType + '_none'];
				break;
			case 'attr':
				aLink.setAttribute ('title', pagesLinks [aType + '_none']);
				break;
		}
	}
	return false;
}

//Если в форме Гостевой книги выведено сообщение об ошибке - сделаем её видимой
function checkErrorForm () {
	var gForm = document.getElementById ('guestbookForm');
	if (gForm.innerHTML.indexOf ('class="error_form"') >= 0) {
		//сделаем форму видимой
		gForm.style.display = 'block';
		//изменим надпись на ссылке
		document.getElementById ('guestbookLink').innerHTML = 'Скрыть';
	}
}

//Форматировать вещественное число с определённым количеством после запятой
function formatFloat (number, afterComma) {
	var stringFormat = '' + number;
	var commaPos = stringFormat.indexOf ('.');
	var commaLength;
	if (commaPos >= 0) {
		//получим количество знаков после запятой в исходной строке
		commaLength = stringFormat.length - commaPos - 1;
		if (commaLength < afterComma) {
			//если в строке меньше знаков после запятой, чем нужно, допишем нули
			for (var k = commaLength; k < afterComma; k++)
				stringFormat += '0';
		} else {
			//иначе откинем лишние знаки после запятой
			stringFormat = stringFormat.substring (0, commaPos + afterComma + 1);
		}
	}
	return stringFormat;
}

//округлить число до определенного количества знаков после запятой
function roundAfterComma (number, afterComma) {
	var degree = Math.pow (10, afterComma);
	var newNumber = Math.round (number * degree) / degree;
	return newNumber;
}

//Создать таблицу для отображения слов
function createTableForWords (target) {
	//При выводе в окно кнопка закрытия изменится
	var closeButton = '<p align="right"><a class="a-button" href="javascript:toggleDivVis(\'plenka1\');toggleDivVis(\'plenka2\');">Закрыть<\/a><\/p>';
	if (target == "win")
		closeButton = '<p align="right"><a class="a-button" href="javascript:window.close();">Закрыть<\/a><\/p>';
	//Изменим путь к рисунку, если вывод в окно
	var imgPath = (target == "win") ? '../../' : '';

	return '<table align="center" id="tableForWords" border="0">' +
		'<tr>' +
			'<td>' + closeButton +
				'<p align="center"><!-- Вензель над фотографией --><img src="' + imgPath + 'images\/backgrounds\/album_photo_top.jpg" width="291" height="89"><\/p>' +
			'<\/td>' +
		'<\/tr>' +
		'<tr>' +
			'<td><div id="placeForWords"><\/div><\/td>' +
		'<\/tr>' +
		'<tr>' +
			'<td>' + closeButton + '<\/td>' +
		'<\/tr>' +
		'<\/table>';
}

//Печать слов на полупрозраный слой-пленку
function printWordsFromLayer (wordsLayerName) {
	//вывод слов - всегда на container.html, слой plenka1
	var d = top.document;
	top.toggleDivVis('plenka1');
	top.toggleDivVis('plenka2');
	var wordsInfo = document.getElementById (wordsLayerName).innerHTML;
	d.getElementById ('plenka2').innerHTML = createTableForWords ('layer');
	d.getElementById ('placeForWords').innerHTML = wordsInfo;
	//~~~ Пусть нижний прозрачный слой с фоном имеет ту же высоту ~~~//
	// определим часть страницы, которая ушла вверх при прокрутке
	var bodyScroll = (top.pageYOffset) ? (top.pageYOffset) : ((d.documentElement && d.documentElement.scrollTop) ? (d.documentElement.scrollTop) : (d.body.scrollTop));
	d.getElementById ('plenka2').style.top = bodyScroll + "px";
	/* //высота тела документа container.html
	var bodyHeight = d.body.scrollHeight + 40; 
	//высота слоя со словами
	var plenkaHeight = bodyScroll + d.getElementById ('plenka2').offsetHeight + 80;
	d.getElementById ('plenka1').style.height = (bodyHeight > plenkaHeight ? bodyHeight : plenkaHeight) + "px";
	*/
}

var wordsWin = null;

//Печать слов в окно
function printWordsToWin (wordsLayerName) {
	//вывод слов - всегда на container,html, слой plenka1
	var d = document;
	if (wordsWin && !wordsWin.closed)
		wordsWin.close();
	wordsWin = window.open ('', 'WinForWords', 'width=500,height=500,scrollbars=yes,resizable=yes');
	var wordsInfo = d.getElementById (wordsLayerName).innerHTML;
	with (wordsWin.document) {
		open ();
		writeln ('<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">');
		writeln ('<html><head>');
		writeln ('<link href="../../styles/common.css" rel="stylesheet" type="text/css">');
		//writeln ('<link href="../../styles/for_shi-tennou.css" rel="stylesheet" type="text/css">');
		writeln ('</head>');
		writeln ('<body class="fic">' + createTableForWords ('win'));
		writeln ('</body></html>');
		close ();
	}
	wordsWin.document.getElementById ('placeForWords').innerHTML = wordsInfo;
}

//Открыть/скрыть трейлер на странице новостей
function trailerClass () {
	//Определяет, был ли хотя бы один раз открыт трейлер
	this.trailerIsOpened = new Array ();
	this.trailerIsOpened ['00'] = false;
	//HTML-код тега для трейлера
	this.trailerTage = new Array ();
	this.trailerTage ['00'] = '<object width="282" height="219"><param name="movie" value="http://www.youtube.com/v/-th9vhqYu9k&hl=ru_RU&fs=1&rel=0&color2=0x6b1f19&color1=0x6b1f19"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-th9vhqYu9k&hl=ru_RU&fs=1&rel=0&color2=0x6b1f19&color1=0x6b1f19" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="282" height="219"></embed></object>';
	//Ссылка на страницу просмотра
	this.trailerLink = new Array ();
	this.trailerLink ['00'] = '<p><a target="_blank" href="http://www.youtube.com/watch?v=-th9vhqYu9k">Смотреть на YouTube</a></p>';
	//переключим видимость слоя с роликом
	this.toggleTrailerDiv = function (trailerNum, aLink) {
		var d = document;
		var tDiv = d.getElementById("trailerDiv_" + trailerNum);
		//если трейлер не был ни разу открыт ранее - загрузим его код (чтобы не подгружался вместе со страничкой и не утяжелял ее)
		if (!this.trailerIsOpened [trailerNum]) {
			tDiv.innerHTML = '<center>' + this.trailerTage [trailerNum] + this.trailerLink [trailerNum] + '</center>';
			this.trailerIsOpened [trailerNum] = true;
		}
		toggleLink ("trailerDiv_" + trailerNum, 'trailer_text', aLink);
		return false;
	}
	return this;
}

//Убрать стиль, переданный из скрипта Google, и установить собственный
function removeGoogleStyle (aInputName) {
	var d = document;
	var thisInput = d.getElementById (aInputName);
	thisInput.style.border = '';
	thisInput.style.padding = '';
}

//событие - отправка данных по нажатию Enter
function inputKeyPress () {
	var evt = null;
	var target = null;
	//Для Netscape объект события передается как аргумент
	if (arguments.length > 0) {
		evt = arguments [0];
		target = evt.target;
	} else {
		//для IE существует глобальный объект события
		evt = event || window.event;
		target = evt.srcElement;
	}
	//если нажат Enter - отправим текущую форму на выполнение
	if (evt) {
		if (evt.keyCode == 13)
			if (target)
				target.form.submit ();
	}
}

/* Установить куки для служебной панели
 * toolPanel - id слоя панели, toolIcon - id слоя значка, открывающего / закрывающего панель
 */
function setToolCookies (toolName, toolMode) {
	switch (toolMode) {
		//оставить панель видимой
		case 'open': {
			toggleDivVis( toolName + 'Panel' );
			toggleDivVis( toolName + 'Icon' );
			document.cookie = toolName + 'Panel=true; max-age=' + (60 * 60 * 24 * 365);
			break;
		}
		//скрыть панель
		case 'close': {
			toggleDivVis( toolName + 'Panel' );
			toggleDivVis( toolName + 'Icon' );
			document.cookie = toolName + 'Panel=false; max-age=' + (60 * 60 * 24 * 365);
			break;
		}
		//по состоянию куков изменить видимость панели
		case 'check': {
			if (document.cookie.indexOf( toolName + 'Panel=false' ) >= 0) {
				document.getElementById( toolName + 'Panel' ).style.display = 'none';
				document.getElementById( toolName + 'Icon' ).style.display = '';
			}
			break;
		}
	}
	return false;
}
