function Tmenu(){
	this.items = new Array();
	this.captions = new Array();
	this.captions2 = new Array();
	this.submenus = new Array();
	this.additem = additem;}
	
function additem(item, caption, caption2, submenu){
	this.items[this.items.length]=item;
	this.captions[this.captions.length]=caption;
	this.captions2[this.captions2.length]=caption2;
	this.submenus[this.submenus.length]=submenu;}

var mintro = new Tmenu();
with(mintro) {
additem('general','Основные понятия',
	'Основные понятия стандарта maCom',null);
additem('metspec','Спецификация методов',
	'Спецификация методов в стандарте maCom',null);
additem('philo','Философия maCom',
	'Философия maCom',null);
additem('start','Начало работы',
	'Начало работы в стандарте maCom',null);
additem('directories','Файлы и директории',
	'Структура файлов и директорий',null);
}

var mifaces = new Tmenu();
with(mifaces) {
additem('dtypes','Простые типы',
	'maString, maIndex, maType и maStreamOptions: Простые типы данных',null);
additem('consts','Константы',
	'Константные значения maCom',null);
additem('imacomponent','ImaComponent',
        'ImaComponent: Базовый интерфейс maCom',null);
additem('imacell','ImaCell',
	'ImaCell: Ячейка данных любого типа',null);
additem('imareadlist','ImaReadList',
	'ImaReadList: Список ячеек',null);
additem('imalist','ImaList',
        'ImaList: Изменяемый список ячеек',null);
additem('imamatrixfactory','ImaMatrixFactory',
        'ImaMatrixFactory: Фабрика матриц',null);
additem('imamatrix','ImaMatrix',
	'ImaMatrix: Многомерная матрица',null);
additem('imasubmatrix','ImaSubmatrix',
	'ImaSubmatrix: Подматрица',null);
additem('imacompositematrix','ImaCompositeMatrix',
        'ImaCompositeMatrix: Составная матрица',null);
additem('imasparsematrix','ImaSparseMatrix',
	'ImaSparseMatrix: Разреженная двумерная матрица',null);
additem('imastream','ImaStream',
	'ImaStream: Поток ввода-вывода',null);
additem('imamethoddef','ImaMethodDef',
	'ImaMethodDef: Определитель метода',null);
additem('imamethod','ImaMethod',
	'ImaMethod: Метод алгоритма',null);
additem('imaalgorithm','ImaAlgorithm',
	'ImaAlgorithm: Алгоритм',null);
additem('imakernel','ImaKernel',
	'ImaKernel: Управляющее ядро',null);
additem('imalibrary','ImaLibrary',
	'ImaLibrary: Библиотека методов',null);
additem('imaprogresshandler','ImaProgressHandler',
	'ImaProgressHandler: Индикатор хода выполнения',null);
}

var mcppwrap = new Tmenu();
with(mcppwrap) {
additem('cmaindex','Класс CmaIndex',
	'CmaIndex: Индекс ячейки матрицы или списка',null);
additem('cmamatrix','Класс CmaMatrix',
	'CmaMatrix: Многомерная матрица',null);
additem('cmasubmatrix','Класс CmaSubmatrix',
	'СmaSubmatrix: Подматрица',null);
additem('cmacompositematrix','Класс CmaCompositeMatrix',
        'CmaCompositeMatrix: Составная матрица',null);
additem('cmamatrixiterator','Класс CmaMatrixIterator',
	'CmaMatrixIterator: Итератор разреженной матрицы',null);
additem('cmasparsematrix','Класс CmaSparseMatrix',
	'CmaSparseMatrix: Разреженная двумерная матрица',null);
additem('cmacell','Класс CmaCell',
	'CmaCell: Ячейка данных',null);
additem('cmareadlist','Класс CmaReadList',
	'CmaReadList: Немодифицируемый список ячеек',null);
additem('cmalist','Класс CmaList',
	'CmaList: Список ячеек',null);
additem('cmamethod','Класс CmaMethod',
	'CmaMethod: Метод алгоритма',null);
additem('cmaalgorithm','Класс CmaAlgorithm',
	'CmaAlgorithm: Алгоритм',null);
additem('cmastream','Класс CmaStream',
	'CmaStream: Поток ввода-вывода',null);
additem('cmakernel','Класс CmaKernel',
	'CmaKernel: Ядро maCom',null);
additem('cmastdmethoddef','Класс CmaStdMethodDef',
	'CmaStdMethodDef: Класс для наследования методов',null);

}
var mpaswrap = new Tmenu();
with(mpaswrap) {
additem('tmacomponent','Класс TmaComponent',
        'TmaComponent: Базовый класс-оболочка',null);
additem('tmacell','Класс TmaCell',
        'TmaCell: Ячейка данных',null);
additem('tmareadlist','Класс TmaReadList',
        'TmaReadList: Немодифицируемый список ячеек',null);
additem('tmalist','Класс TmaList',
        'TmaList: Список ячеек',null);
additem('tmamatrix','Класс TmaMatrix',
	'TmaMatrix: Многомерная матрица',null);
additem('tmasubmatrix','Класс TmaSubmatrix',
	'TmaSubmatrix: Подматрица',null);
additem('tmacompositematrix','Класс TmaCompositeMatrix',
        'TmaCompositeMatrix: Составная матрица',null);
additem('tmamatrixiterator','Класс TmaMatrixIterator',
	'TmaMatrixIterator: Итератор разреженной матрицы',null);
additem('tmasparsematrix','Класс TmaSparseMatrix',
	'TmaSparseMatrix: Разреженная двумерная матрица',null);
additem('tmastream','Класс TmaStream',
        'TmaStream: Поток ввода-вывода',null);
additem('tmamethod','Класс TmaMethod',
	'TmaMethod: Метод алгоритма',null);
additem('tmaalgorithm','Класс TmaAlgorithm',
	'TmaAlgorithm: Алгоритм',null);
additem('tmakernel','Класс TmaKernel',
	'TmaKernel: Ядро maCom',null);
additem('tmastdmethoddef','Класс TmaStdMethodDef',
	'TmaStdMethodDef: Класс для наследования методов',null);
}

var mexamp = new Tmenu();
with(mexamp) {
additem('metcpp',   'Алгоритм на C++',
	'Реализация отдельного алгоритма на C++',null);
additem('libcpp',   'Библиотека на C++',
	'Реализация библиотеки алгоритмов на C++',null);
additem('usecpp',   'Вызов из C++',
	'Вызов алгоритма из программы на C++',null);
additem('metdelphi','Алгоритм на Delphi',
	'Реализация отдельного алгоритма на Delphi',null);
additem('libdelphi','Библиотека на Delphi',
	'Реализация библиотеки алгоритмов на Delphi',null);
additem('usedelphi','Вызов из Delphi',
	'Вызов алгоритма из программы на Delphi',null);
}

var mainmenu = new Tmenu();
with(mainmenu) {
additem('content','Содержание',
	'Содержание',null);
additem('intro','Введение',
	'Введение в стандарт maCom',mintro);
additem('ifaces','Интерфейсы',
	'COM-интерфейсы объектов maCom',mifaces);
additem('cppwrap','Классы-оболочки C++',
	'Классы-оболочки C++',mcppwrap);
additem('paswrap','Классы-оболочки Delphi',
	'Классы-оболочки Delphi',mpaswrap);
additem('examp','Примеры',
	'Примеры реализации и использования алгоритмов',mexamp);
}
var d = document;
var loc = new String(" "+window.location);
var curlang = ((loc.indexOf('english')>=0)?'english':((loc.indexOf('russian')>=0)?'russian':'undefined')).toLowerCase();
var i1=loc.lastIndexOf('/')+1;
var i2=loc.lastIndexOf('.html')-i1;
var subtopic=(loc.substr(i1,i2)).toLowerCase();
function gettopic(st){
	for (i=0; i<mainmenu.items.length; i++)
		if (st==mainmenu.items[i]) return(mainmenu.items[i]);
		else if (mainmenu.submenus[i]!=null) for(j=0; j<mainmenu.submenus[i].items.length; j++)
												if (st==mainmenu.submenus[i].items[j]) return(mainmenu.items[i]);
	return('about');}

function getcaption2(st){
	for(i=0; i<mainmenu.items.length; i++)
		if (st==mainmenu.items[i]) {if (mainmenu.captions2[i]=='') return(mainmenu.captions[i]); else return(mainmenu.captions2[i]);}
		else if (mainmenu.submenus[i]!=null) for(j=0; j<mainmenu.submenus[i].items.length; j++)
												if (st==mainmenu.submenus[i].items[j]) {if (mainmenu.submenus[i].captions2[j]=='') return(mainmenu.submenus[i].captions[j]);
																						else return(mainmenu.submenus[i].captions2[j]);}
	return('');}
	
var topic=gettopic(subtopic);

function changelanguage(){
	if (curlang=="russian") return("<a class='clang' href='../english/"+subtopic+".html'>english version</a>");
	else if (curlang=="english") return("<a class='clang' href='../russian/"+subtopic+".html'>russian version</a>");
	else return('');}
	
function writemenu(){
//	d.write('<a class="menu" href="intro.html"><img src="images/logo.gif" width="180" height="143" border="0px" alt=""/></a>');
	for(i=0; i<mainmenu.items.length; i++) {
		if (mainmenu.items[i]==topic) {
			d.write("<div class='smenu'><a href='"+mainmenu.items[i]+".html'>"+mainmenu.captions[i]+"</a></div>");
			if (mainmenu.submenus[i]!=null)
				for(j=0; j<mainmenu.submenus[i].items.length; j++){
					if (mainmenu.submenus[i].items[j]==subtopic)
						d.write("<div class='ssubmenu'><a href='"+mainmenu.submenus[i].items[j]+".html'>"+mainmenu.submenus[i].captions[j]+"</a></div>");
					else
						d.write("<div class='submenu'><a href='"+mainmenu.submenus[i].items[j]+".html'>"+mainmenu.submenus[i].captions[j]+"</a></div>");
				}
		}
		else d.write("<div class='menu'><a href='"+mainmenu.items[i]+".html'>"+mainmenu.captions[i]+"</a></div>");
	}
    d.write('<div class="menu"><a href="../maLibs/index.html">Библиотеки алгоритмов</a></div>');
	//Hotlog
	hotlog_js="1.3";hotlog_d=document; hotlog_n=navigator;hotlog_rn=Math.random();
	hotlog_n_n=(hotlog_n.appName.substring(0,3)=="Mic")?0:1;
	hotlog_r=""+hotlog_rn+"&s=8379&r="+escape(hotlog_d.referrer)+"&pg="+escape(window.location.href);
	hotlog_d.cookie="hotlog=1"; hotlog_r+="&c="+(hotlog_d.cookie?"Y":"N");
	hotlog_d.cookie="hotlog=1; expires=Thu, 01-Jan-70 00:00:01 GMT";
	hotlog_r+="&js="+hotlog_js;
	hotlog_d.write("<img src=\"http://hit.hotlog.ru/cgi-bin/hotlog/count?"+hotlog_r+"&\" border=0 width=1 height=1>")
}

function writebegin(){
	d.write('<table  width=0 height="100%" border="0" cellspacing="0" cellpadding="0">');
	d.write('<tr><td width=0 height="12" colspan="2" class="dectop"><b>Стандарт maCom: Компоненты матричных алгоритмов</b></td></tr>');
	d.write('<tr><td width=0 valign="top" id="menucontainer">');
	writemenu();
	d.write('</td><td valign="top" id="contentcontainer" background="images/'+topic+'.jpg">');
	d.write('<div class="btitle">'+getcaption2(subtopic)+'</div>');
}

function writeend(){
	d.write('</td></tr>');
	d.write('<tr><td align="left" class="bottom" colspan="2" height="12"><a class="copyright" href="mailto:frc@ccas.ru">frc@ccas.ru</a></td></tr></table>');
}

function writesitemap() {
	d.write('<ul>');
	for(i=0; i<mainmenu.items.length; i++) {
		d.write('<li><a class="smlink" href="'
			+ mainmenu.items[i]
			+ '.html">'
			+ mainmenu.captions2[i]
			+ '</a>');
		if (mainmenu.submenus[i]!=null) {
			d.write('<ul>');
			for(j=0; j<mainmenu.submenus[i].items.length; j++)
				d.write('<li><a class="smlink2" href="'
					+ mainmenu.submenus[i].items[j]
					+ '.html">'
					+ mainmenu.submenus[i].captions2[j]
					+ '</a></li>');
			d.write('</ul>');
		}
//		else d.write('<br/>');
		d.write('</li>');
	}
	d.write('</ul>');
	d.write('<br/>');
}
