// Functions from Netscape's JavaScript Guide
// http://developer.netscape.com/docs/manuals/js/client/jsguide/

function setCookie(name, value, expire, path) {
	document.cookie = name + '=' + escape(value)
		+ ((expire == null)? '' : ('; expires=' + expire.toGMTString()))
		+ ((path == null)? '' : ('; path=' + path));
}

function getCookie(Name) {
	var search = Name + '='
	if (document.cookie.length > 0) { // if there are any cookies
		offset = document.cookie.indexOf(search) 
		if (offset != -1) { // if cookie exists 
			offset += search.length 
			// set index of beginning of value
			end = document.cookie.indexOf(';', offset) 
			// set index of end of cookie value
			if (end == -1) 
				end = document.cookie.length
			return unescape(document.cookie.substring(offset, end))
		}
	}
	return '';
}


//
// Copyright (c) Art. Lebedev Studio | http://www.artlebedev.ru/
// Author - Leechy | leechy@design.ru
//

// miniSite functions:

function miniSiteItem(name, uri) {
	this.name = name;
	this.uri = uri;
	return this;
}

function getMSItems() {
	var MSNamesCookie = getCookie('msnames');
	var MSNames = MSNamesCookie.split('|');
	var MSURICookie = getCookie('msuri');
	var MSURIs = MSURICookie.split('|');

	var MSItems = new Array();
	for (var i = 0; i < MSNames.length; i++)
		if (MSURIs[i]) MSItems[MSItems.length] = new miniSiteItem(MSNames[i], MSURIs[i]);
	
	return MSItems;
}

function storeMSItems(MSArray) {
	var MSNamesCookie = '';
	var MSURICookie = '';
	for (var i = 0; i < MSArray.length; i++) {
		MSNamesCookie += MSArray[i].name;
		MSURICookie += MSArray[i].uri;
		if (i != MSArray.length - 1) {
			MSNamesCookie += '|';
			MSURICookie += '|';
		}
	}

   var today = new Date()
   var expires = new Date();
   expires.setTime(today.getTime() + 1000*60*60*24*365);

	setCookie('msnames', MSNamesCookie, expires, '/');
	setCookie('msuri', MSURICookie, expires, '/');
}

function checkMSItemExistance(pageURI) {
	for (var i = 0; i < currMSItems.length; i++) {
		if (currMSItems[i].uri == pageURI) return false;
	}
	return true;
}

function addMSItem(pageName, pageURI) {
	if (checkMSItemExistance(pageURI)) {
		currMSItems[currMSItems.length] = new miniSiteItem(pageName, pageURI);
		storeMSItems(currMSItems);
		if (document.getElementById) {
			var addBtnRow = document.getElementById('addBtn');
			var itemNumber = currMSItems.length - 1;

			// removing button
			if (document.images['addMSItemImg']) {
				document.images['addMSItemImg'].src = '/i/d-t.gif';
				isAdd2MSBtn = false;
			}
			if (document.images['addMSItemImg']) document.images['msTitleImg'].src = msTitleActiveImage.src;

			// removing description if exist
			var noMSItemsBlock = document.getElementById('noMSItemsRow');
			if (noMSItemsBlock) noMSItemsBlock.parentNode.removeChild(noMSItemsBlock);

			// creating elements
			var newMSItemRow = document.createElement('tr');
			var newMSItemCell = document.createElement('td');
			newMSItemRow.id = 'msitem' + itemNumber;
			newMSItemRow.appendChild(newMSItemCell);
			addBtnRow.parentNode.insertBefore(newMSItemRow, addBtnRow);
			newMSItemCell.innerHTML = generateMSCellsTable(itemNumber, pageName, pageURI);

			return false;
		} else return true;
	} else return false;
}

function removeMSItem(pageURI, rowId) {
	var MSItems = new Array();
	for (var i = 0; i < currMSItems.length; i++) {
		if (currMSItems[i].uri != pageURI) {
			MSItems[MSItems.length] = currMSItems[i];
		}
	}
	currMSItems = MSItems;
	storeMSItems(currMSItems);
	
	// updating page for DOM-supporting browsers
	if (document.getElementById) {
		var currMSItemElem = document.getElementById(rowId);
		if (currMSItems.length == 0) {
			var newRow = document.createElement('tr');
			var newCell = document.createElement('td');
			newRow.appendChild(newCell);
			currMSItemElem.parentNode.insertBefore(newRow, currMSItemElem);
			newRow.id = 'noMSItemsRow';
			newCell.innerHTML = noMSItemsText;
			if (document.images['msTitleImg']) document.images['msTitleImg'].src = msTitleImage.src;
		}
		if (pageURI == currPageUri) {
			// adding button
			if (document.images['addMSItemImg']) document.images['addMSItemImg'].src = msAddImage.src;
			isAdd2MSBtn = true;
		}
		currMSItemElem.parentNode.removeChild(currMSItemElem);
		// document.getElementById('noMSItemsRow').innerHTML = 'asd';
		return false;
	} else return true;
}

function upMSItem(pageURI, rowId) {
	var MSItems = new Array();
	if (currMSItems[0].uri == pageURI) {
		for (var i = 1; i < currMSItems.length; i++) MSItems[MSItems.length] = currMSItems[i];
		MSItems[MSItems.length] = currMSItems[0];
	} else {
		for (var i = 0; i < currMSItems.length; i++) {
			if (i < currMSItems.length - 1 && currMSItems[i + 1].uri == pageURI) {
				MSItems[MSItems.length] = currMSItems[i + 1];
			} else if (currMSItems[i].uri == pageURI) {
				MSItems[MSItems.length] = currMSItems[i - 1];
			} else {
				MSItems[MSItems.length] = currMSItems[i];
			}
		}
	}
	currMSItems = MSItems;
	storeMSItems(currMSItems);

	// updating page for DOM-supporting browsers
	if (document.getElementById) {
		var currMSItemElem = document.getElementById(rowId);
		if (currMSItemElem.previousSibling && currMSItemElem.previousSibling.id) {
			var prevMSElem = currMSItemElem.previousSibling;
			currMSItemElem.parentNode.insertBefore(currMSItemElem, prevMSElem);
		} else {
			var lastMSElem = currMSItemElem.nextSibling;
			while (lastMSElem.nextSibling.id) lastMSElem = lastMSElem.nextSibling;
			if (lastMSElem.nextSibling) currMSItemElem.parentNode.insertBefore(currMSItemElem, lastMSElem.nextSibling);
				else currMSItemElem.parentNode.appendChild(currMSItemElem);
		}
		return false;
	} else return true;
}

function downMSItem(pageURI, rowId) {
	var MSItems = new Array();
	if (currMSItems[currMSItems.length - 1].uri == pageURI) {
		MSItems[0] = currMSItems[currMSItems.length - 1];
		for (var i = 0; i < currMSItems.length - 1; i++) MSItems[MSItems.length] = currMSItems[i];
	} else {
		for (var i = 0; i < currMSItems.length; i++) {
			if (i > 0 && currMSItems[i - 1].uri == pageURI) MSItems[MSItems.length] = currMSItems[i - 1];
				else if (currMSItems[i].uri == pageURI) MSItems[MSItems.length] = currMSItems[i + 1];
					else MSItems[MSItems.length] = currMSItems[i];
		}
	}
	currMSItems = MSItems;
	storeMSItems(currMSItems);
	
	// updating page for DOM-supporting browsers
	if (document.getElementById) {
		var currMSItemElem = document.getElementById(rowId);
		if (currMSItemElem.nextSibling && currMSItemElem.nextSibling.id) {
			var nextMSElem = currMSItemElem.nextSibling;
			if (nextMSElem.nextSibling) currMSItemElem.parentNode.insertBefore(currMSItemElem, nextMSElem.nextSibling);
				else currMSItemElem.parentNode.appendChild(currMSItemElem);
		} else {
			var firstMSElem = currMSItemElem.previousSibling;
			while (firstMSElem.previousSibling.id) firstMSElem = firstMSElem.previousSibling;
			currMSItemElem.parentNode.insertBefore(currMSItemElem, firstMSElem);
		}
		return false;
	} else return true;
}

function generateMSCellsTable(number, MSName, MSUri) {
	var MSCellsString = '<table cellpadding="0" cellspacing="0" border="0"><tr valign="top"><td nowrap="nowrap">';
	MSCellsString += '<font face="Geneva CY, Tahoma, sans-serif">';
	MSCellsString += '<a href="./" onClick="return upMSItem(\'' + currMSItems[number].uri + '\', \'msitem' + number + '\')">';
	MSCellsString += '<img src="/i/ms-up.gif" width="9" height="9" border="0" alt="x" title="Передвинуть наверх" /><\/a>';
	MSCellsString += '<a href="./" onClick="return downMSItem(\'' + currMSItems[number].uri + '\', \'msitem' + number + '\')">';
	MSCellsString += '<img src="/i/ms-down.gif" width="9" height="9" border="0" alt="x" title="Передвинуть вниз" /><\/a>';
	MSCellsString += '&nbsp;<\/font><\/td><td><font face="Geneva CY, Tahoma, sans-serif">';
// check for search page (if we are in not in sitemap, buy in really search page (with parameters)
		var re = new RegExp('http:\/\/([^/:]+)?\/([a-z]+)\/([?,a-z]*)([^\=]*)');
		var re1 = document.location.href;
		var re2 = re1.match(re);
		if (currentURI == MSUri) {
			if (re2[2]+re2[3] != 'search?text') {
				MSCellsString += '<b>' + MSName + '<\/b>';
			} else {
				MSCellsString += '<a href="' + MSUri + '">' + MSName + '<\/a>';
			}
		} else {
			MSCellsString += '<a href="' + MSUri + '">' + MSName + '<\/a>';
		}
//	if (currentURI == MSUri) MSCellsString += '<b>' + MSName + '<\/b>';
//		else MSCellsString += '<a href="' + MSUri + '">' + MSName + '<\/a>';
	MSCellsString += '<a href="./" onClick="return removeMSItem(\'' + currMSItems[number].uri + '\', \'msitem' + number + '\')">';
	MSCellsString += '<img src="/i/ms-x.gif" width="9" height="9" border="0" alt="x" title="Удалить закладку" hspace="3" /><\/a>';
	MSCellsString += '<\/font><\/td><\/tr></table>';
	return MSCellsString;
}

function displayMSItems() {
	if (getCookie('enabled') == 'yes') {
		if (currMSItems.length) {
			for (var i = 0; i < currMSItems.length; i++) {
				document.write('<tr id="msitem' + i + '"><td>' + generateMSCellsTable(i, currMSItems[i].name, currMSItems[i].uri) + '<\/td><\/tr>');
			}
		} else {
			document.write('<tr id="noMSItemsRow"><td>' + noMSItemsText + '<\/td><\/tr>');
		}
	} else {
		document.write('<tr><td>' + noCookiesText + '<\/td><\/tr>');
	}
}

function displayMSAddLink(pageName, pageUri) {
	currPageUri = pageUri;
	if (checkMSItemExistance(pageUri)) {
		document.write('<tr id="addBtn"><td><a href="./" onClick="return addMSItem(\'' + pageName + '\', \'' + pageUri + '\')"><img src="/i/p-add2ms.gif" width="115" height="30" border="0" name="addMSItemImg" vspace="12" onMouseOver="if (isAdd2MSBtn) this.src = msAddSelectedImage.src" onMouseOut="if (isAdd2MSBtn) this.src = msAddImage.src" /></a></td></tr>');
		isAdd2MSBtn = true;
	} else {
		document.write('<tr id="addBtn"><td><a href="./" onClick="return addMSItem(\'' + pageName + '\', \'' + pageUri + '\')"><img src="/i/d-t.gif" width="115" height="30" border="0" name="addMSItemImg" vspace="12" onMouseOver="if (isAdd2MSBtn) this.src = msAddSelectedImage.src" onMouseOut="if (isAdd2MSBtn) this.src = msAddImage.src" /></a></td></tr>');
		isAdd2MSBtn = false;
	}
}

// defining array with miniSite links
var currMSItems = getMSItems();

// checking are cookies enabled - setting a cookie and then checking it ;-)
setCookie('enabled','yes');

// defining strings
var noCookiesText = '<font face="Geneva CY, Tahoma, sans-serif">В&nbsp;вашем браузере отключена функци\я сохранени\я Cookies. Чтобы воспользоватьс\я сервисом "Мини-сайт", включите возможность сохранени\я Cookies.<\/font>';
var noMSItemsText = '<font face="Geneva CY, Tahoma, sans-serif">Мини-сайт&nbsp;&#151 это специальный сервис, который позвол\яет сохран\ять ссылки на&nbsp;разделы сайта, чтобы в&nbsp;дальнейшем иметь возможность легко и&nbsp;быстро обращатьс\я к&nbsp;нужной информации. Нажмите на&nbsp;ссылку &laquo;Добавить эту страницу <nobr>в мини-сайт&raquo;</nobr>, чтобы сохранить интересующий вас раздел в&nbsp;персональном мини-сайте.<\/font>';

// preloading images
var msAddImage = new Image(115, 30);
msAddImage.src = '/i/p-add2ms.gif';
var msAddSelectedImage = new Image(115, 30);
msAddSelectedImage.src = '/i/p-add2ms-s.gif';

var msTitleImage = new Image(95, 14);
msTitleImage.src = '/i/ms-title.gif';
var msTitleActiveImage = new Image(95, 14);
msTitleActiveImage.src = '/i/ms-title-on.gif';


var isAdd2MSBtn = false;
var currPageUri = '';

window.onload = function() {
	if (currMSItems.length && document.images['addMSItemImg']) document.images['msTitleImg'].src = msTitleActiveImage.src;
}
