window.menus={}; buggy = navigator.userAgent.indexOf("MSIE") > 0;
months = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
var delay; var delaymenu;
head = document.getElementsByTagName("head")[0]
links = document.getElementsByTagName("link");
script = document.createElement("script"); script.setAttribute("charset","koi8-r");
script.setAttribute("type","text/javascript"); newsc = script.cloneNode(0);
bar = [["www.1917.com",,"w1917"]]; window.menus.article=[["Автор","#AUTHOR"]]; 
for (var i = 0; i < links.length; i++) {
	if(links[i].rel == "Home") base = links[i].href;
	if(links[i].rel == "Prev") { 
		window.menus.article.push(["Prev",,"prev"]);
		window.menus.prev = [[links[i].title,links[i].rel.href]];
	}
	if(links[i].rel == "Next") {
		window.menus.article.push(["Next",,"next"]);
		window.menus.next = [[links[i].title,links[i].rel.href]];
	}
	if(links[i].rel != "Up" && links[i].rel != "Index") continue
	el = [links[i].title,links[i].href,links[i].href.replace(/^.*\/([^\/]+)\/[^\/]*$/,"$1").replace(/-/g,"_").replace(/^(\d)/,"_"+"$1")];
	/* Третий член содержит ошибку */
	var scr = script.cloneNode(0);
	scr.setAttribute("src",links[i].href.replace(/html?$/,"js"));
	head.appendChild(scr);
	if(links[i].rel == "Up") bar.push(el); else bar.splice(1,0,el); 
}; //dots=String(window.location).replace(new RegExp(base),"").replace(/[^/]+$/,"").replace(/[^/]+/g,"..");
bar[0][1] = base+"/map.html";
script.setAttribute("src",base + "/DHTML/w1917.js"); head.appendChild(script);
newsc.setAttribute("src",base + "/DHTML/news.js"); head.appendChild(newsc);
//var data = document.getElementById("data");
banner = document.createElement("div");banner.id = "banner";//Баннер наверху страницы
//window.menus.news = [["Наша позиция",,"arts"]];
window.menus.news = [["Наша позиция",,"news_wd"]];
if(!buggy) menubar();
var s = new Date();
for( var j=0; j<7; j++){//Последняя неделя
	window.menus.news.push([s.getDate()+" "+months[s.getMonth()].replace(/т$/,"та").replace(/[ьй]$/,"я"),,"news_news"+s.getDate()]);
	s = new Date(s-86400000) }

function menubar(){//Верхнее меню
	mbar = document.createElement("table");mbar.className = "menubar";
	var mb = mbar.appendChild(document.createElement("tbody"));
	var one = document.createElement("tr");row = mb.appendChild(one);
	wbar = Math.floor((buggy?(document.documentElement.clientWidth==0?document.body.clientWidth:document.documentElement.clientWidth):window.innerWidth)/150);
	hei = buggy?document.documentElement.clientHeight:window.innerHeight;
	wid	= buggy?document.documentElement.clientWidth:window.innerWidth;
	if(wbar > bar.length) bar.splice(1,0,["Новости",base + "/ShortNews.html","news"]) 
	if(wbar > bar.length) bar.push(["Статья",base + "/AgitProp/index.html","article"]) 
	for (var i = 0; i < bar.length; i++) {
		var cell = document.createElement("td"); cell.className = "mcell";
		cell.appendChild(document.createTextNode(bar[i][0])); 
		cell.clickaction = bar[i][1]; cell.sibling = bar[i][2]; 
		cell.id = "mbar_" + bar[i][2]; 
		row.appendChild(cell); cell.onmouseover = on; cell.onclick = click;
		cell.onmouseout = out; }
	}	
function out(event){
	var parent = !buggy?event.currentTarget:window.event.srcElement;
	var to = !buggy?event.relatedTarget:window.event.toElement;
	if(!buggy) event.cancelBubble = true
	else{window.event.cancelBubble = true;
		parent.className = (parent.className == "cellhover"?"cell":"mcell")
		}
	if((to == null || to.offsetParent == null || to.offsetParent.id != parent.sibling)&& parent.sibling != "" && parent.sibling != undefined && document.getElementById(parent.sibling) != null && !document.getElementById(parent.sibling).stick) 
		document.getElementById(parent.sibling).style.visibility = "hidden";
	if(to == null || to.offsetParent == null || parent.offsetParent.id != to.offsetParent.id && to.offsetParent.id != parent.sibling)
		if(buggy)
			if(to.className != "menu") uphidden_delay(parent.offsetParent); else {}
		else uphidden_delay(parent.offsetParent)
	}
function uphidden_delay(menu){
	delay = window.setTimeout(getRef(menu),200);
	delaymenu = menu;
	}
function getRef(menu) { 
	return function() { 
		//dbg("deleed clearning: "+ menu)
			if(menu != null && menu.className == "menu" && !menu.stick ){
				menu.style.visibility = "hidden"; uphidden(menu.parent)	
			}
	}
	}
function uphidden(menu){
	if(menu != null && menu.className == "menu" && !menu.stick ){
		menu.style.visibility = "hidden";
		uphidden(menu.parent)	
	}
	}
function destable(event){
	var menu = !buggy?event.currentTarget:window.event.srcElement;
	var to = !buggy?event.relatedTarget:window.event.toElement;
	if(to.className != "cell" || to.className != "menu")
		uphidden_delay(menu)	
	}
function stable(event){
	var parent = !buggy?event.currentTarget:window.event.srcElement;
	parent.style.visibility = "visible"
	}
function on(event) {
	var parent = !buggy?event.currentTarget:window.event.srcElement;
	var from  = !buggy?event.relatedTarget:window.event.fromElement;
	if (delay != undefined)  {clearTimeout(delay);
		if(delaymenu.parent.id){ delay = undefined; delaymenu.style.visibility = "hidden"; } }
	if(!buggy) event.cancelBubble = true 
	else{
		window.event.cancelBubble = true;
		parent.className = (parent.className == "cell"?"cellhover":"mcellhover")
		}
	initMenu(parent.sibling,parent);
	}
function click(event) { 
	var action = !buggy?event.currentTarget.clickaction:window.event.srcElement.clickaction; 
	if(action != undefined) window.location = action
	}
function dbg(text){
	if ((debug = document.getElementById("DEBUG") )){
		var li = document.createElement("li");
		li.appendChild(document.createTextNode(text));
		debug.appendChild(li);
	}
	}
function search(button,url){
	var form = document.createElement("form");
	form.setAttribute("action",url);form.setAttribute("accept-charset","utf8");
	var input = document.createElement("input"); input.setAttribute("type","text"); input.setAttribute("name","text"); form.appendChild(input);
	input = document.createElement("input"); input.setAttribute("type","hidden");input.setAttribute("value","1917.com");input.setAttribute("name","site");form.appendChild(input);
	input=input.cloneNode(0);input.setAttribute("value","1");input.setAttribute("name","ras");form.appendChild(input);
	button.appendChild(form)
	}
function initMenu(sibling,parent){
	if(window.menus[sibling] != undefined){
	var sbl = document.getElementById(sibling);
	if(sbl == undefined){ //	Создаем меню
		var menu = document.createElement("table"); menu.id = sibling; menu.stick = false;
		var mb = menu.appendChild(document.createElement("tbody"));
		menu.className = "menu"; //  Находим parent
		menu.parent = parent.offsetParent; sbl = menu; var offset=0;
		menu.onmouseover = stable; menu.onmouseout = destable;  //  Геометрия
		if(parent.className == "mcell" || parent.className == "mcellhover"){
			offset = parent.offsetLeft + parent.offsetParent;
			menu.style.left = parent.offsetLeft; menu.style.width = parent.offsetWidth;
			menu.style.top = parent.offsetTop + parent.offsetHeight + document.getElementById("banner").offsetHeight;
		}else{	offset = parent.offsetLeft + parent.offsetParent.offsetLeft;
			menu.style.left =  offset + parent.offsetWidth * (offset < wid/2?1:-1);
			menu.style.top = parent.offsetTop + parent.offsetParent.offsetTop;
			if(/^news\w|^art|^h3$/.test(sibling)){ //	Переделать!!!
			}else{ menu.style.width = parent.offsetWidth; }
		}
		var cell = new Array(window.menus[sibling].length);
		for (var i = 0; i < window.menus[sibling].length; i++){
			cell[i] = (mb.appendChild(document.createElement("tr"))).appendChild(document.createElement("td"));
			var text = document.createTextNode(window.menus[sibling][i][0])
			if(window.menus[sibling][i][1] != undefined){
				href = window.menus[sibling][i][1];
				if(window.menus[sibling][i][2] == "FORM"){
					search(cell[i],window.menus[sibling][i][1]);
				}else{
					cell[i].clickaction = href;
					if(!buggy){ var ah = document.createElement("a");
						ah.setAttribute("href",href); ah.className = "cell";
						ah.appendChild(text); cell[i].appendChild(ah)
					}else cell[i].appendChild(text);
				}
			}else cell[i].appendChild(text);
			cell[i].className = "cell"; cell[i].onclick = click;
			cell[i].sibling = window.menus[sibling][i][2];
			cell[i].onmouseover = on; cell[i].onmouseout = out;
			document.body.appendChild(menu);
		}
		var h = parent.offsetTop + parent.offsetParent.offsetTop + menu.offsetHeight;
		var w = offset + parent.offsetWidth * (offset < wid/2?1:-1) + menu.offsetWidth;
		if(w > wid) menu.style.width = menu.offsetWidth + wid - w - (buggy?16:32);
		if(offset > wid/2) menu.style.left = menu.offsetLeft + parent.offsetWidth - menu.offsetWidth;
		if(h > hei) menu.style.top = hei - menu.offsetHeight;
	return menu;
	}else{ sbl.style.visibility="visible"; sbl.parent.style.visibility = "visible"; }
	}
	parent.offsetParent.style.visibility = "visible";
	if(parent.offsetParent.parent != undefined){
		parent.offsetParent.parent.style.visibility = "visible";
		if(parent.offsetParent.parent.parent != undefined) parent.offsetParent.parent.parent.style.visibility = "visible"
	}
}

function HTTPClient() {}; 
HTTPClient.prototype = { url: null, xmlhttp: null, callinprogress: false, userhandler: null, id: null, caller: null,
    init: function(url,id,caller) { this.url = url; this.xmlhttp = false; this.id = id; this.caller = caller; 
		if (window.XMLHttpRequest) { this.xmlhttp = new XMLHttpRequest();
			if (this.xmlhttp.overrideMimeType)  this.xmlhttp.overrideMimeType('text/xml') 
		} else if (window.ActiveXObject) { try { this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP") } 
		catch (e) { try { this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP") } catch (e) {} }
		}
    }, 
    asyncGET: function (handler) { if (this.callinprogress) { throw "Call in progress"; };
		var self = this; this.userhandler = handler;
        this.xmlhttp.open('GET',this.url,true);
        this.xmlhttp.onreadystatechange = function() { self.stateChangeCallback(self) } 
        this.xmlhttp.send(null);
    },
    stateChangeCallback: function(client) {
        switch (client.xmlhttp.readyState) { 
            case 1: try { client.userhandler.onInit()} catch (e) {}; break;
            case 2: try { if ( client.xmlhttp.status != 200 ) { 
                        client.userhandler.onError( client.xmlhttp.status, client.xmlhttp.statusText); client.xmlhttp.abort(); client.callinprogress = false;
                   	} } catch (e) {} break;
            case 3: try {try{ var contentLength = client.xmlhttp.getResponseHeader("Content-Length");
                    		} catch (e) { var contentLength = NaN; } 
                    client.userhandler.onProgress( client.xmlhttp.responseText, contentLength);
                	} catch (e) { } break; 
            case 4: try { client.userhandler.onLoad(client) } catch (e) { } 
			finally { client.callinprogress = false } break;
        }
    }
	}
window.init = function() {
	document.body.appendChild(banner);
	if(buggy) menubar();
	document.body.appendChild(mbar);
	if(hei==0) hei = document.body.clientHeight;
	if(wid==0) wid = document.body.clientWidth;
	if(wbar==0) wbar = Math.floor(document.body.clientWidth/150);
	
	h3 = document.getElementsByTagName("h3");
	if(h3.length > 0) {
		window.menus.h3 = [];
		window.menus.article.push(["Разделы",,"h3"]);
	}
	for (var i = 0; i < h3.length; i++) 
		window.menus.h3.push([h3[i].childNodes[0].data,"#"+h3[i].id])
	
	var imgs = document.getElementsByTagName("img");
	for (var i = 0; i < imgs.length; i++){
		var magick = String(imgs[i].getAttribute("class")).toLowerCase();
		switch(magick){
		case "sl":
			imgs[i].onclick = function(event){
				var parent = !buggy?event.currentTarget:window.event.srcElement;
				parent.setAttribute("WIDTH",""); parent.setAttribute("HEIGHT","");
				parent.setAttribute("SRC",parent.getAttribute("SRC").replace(/L?\./,"L."));
			};
		break;
		case "svg": case "ps": case "pdf": case "djvu":
			imgs[i].onclick = function(event){
				var parent = !buggy?event.currentTarget:window.event.srcElement;
				var obj = document.createElement("object");
				obj.setAttribute("DATA",parent.getAttribute("SRC").replace(/.png/,"."+parent.className.toLowerCase()));
				var myArray = /\(\w+:(\d+)x(\d+)\)/i.exec(parent.getAttribute("ALT"))
				obj.setAttribute("WIDTH",myArray[1]);
				obj.setAttribute("HEIGHT",myArray[2]);
				obj.setAttribute("TYPE",magick);
				parent.parentNode.insertBefore(obj, parent);
				parent.parentNode.removeChild(parent);
			}
		break;
		}
	}
}

window.onload = init;
	
