/*	Набор необходимых скриптов для Octopus
	(c) Copyright Siorre.ru creative group | Авторское право Siorre.ru
	Исп. редактор EditPlus2. Значение табуляции "4", значение отступа "4"	*/

/*	JSLib : Старт навигации (Меню) */

	var sh_ims = new Array();
	var sh_ys = new Array();
	var sh_txts = new Array();
	var Set_Offsets = new Array();
	var Get_Offsets = new Array();

	var	G_id = 0;
	var	G_event_year = "";
	var G_short_event_text = "";
	var G_event_icon_img = "";
	var G_isresult = 0;
	var G_dragged_now = 0;
	var G_mem_index = 0;

	//var G_last_index = 0;

startNav = function (id)
{ 
	mem.evtsW = (appInf.scrW > 1024) ? 840 : 670
	changeContentStruct(appInf.scrW)

	var nodes = getNodesByClass ("", id, "div")
	if (!nodes) {
		alert("nav.js: items not found")
		return
	}
	for (var i=0; i<nodes.length; i++)
	{
		nodes[i].onmouseover = function()
		{
			this.className += "over"
		} 
		nodes[i].onmouseout = function()
		{
			var name = this.className;
			this.className = name.replace(/over/,"")
		}
	}
}
function changeClassName(node, className) {
	node.className = className
}
/*	Инициализация выпадения и сворачивания
	формы поиска события на щелчок мыши */
startSearchForm = function (formId, anchId) {

	var f = document.getElementById(formId)
	var a = document.getElementById(anchId)
	if (!a || !f) {
		//alert("nav.js: anch or form not found")
		return
	}

	a.values = new Array("Расширенный поиск","Свернуть")
	a.expanded = false
	mem.f = f
	mem.a = a

	mem.y = -205
	a.onclick = function()
	{
		mem.h = 16.135
		mem.N = 21
		mem.x = Math.PI/mem.N
		mem.i = 0

		if (mem.a.expanded) {
			mem.a.firstChild.nodeValue = mem.a.values[0]
			mem.intrv = setInterval(test2, 30)
		}
		else {
			mem.a.firstChild.nodeValue = mem.a.values[1]
			mem.intrv = setInterval(test, 30)
		}
		mem.a.expanded = !mem.a.expanded
	}
}
function test() {

	mem.y += Math.floor(mem.h * (Math.sin(mem.x)))
	mem.x += Math.PI/mem.N
	mem.f.style.top = mem.y+"px"
	mem.i++
	if (mem.i>=mem.N) {
//		alert(mem.y)
		clearInterval(mem.intrv)
	}
}
function test2() {

	mem.y -= Math.floor(mem.h * (Math.sin(mem.x)))
	mem.x += Math.PI/mem.N
	mem.f.style.top = mem.y+"px"
	mem.i++
	if (mem.i>=mem.N) {
	//	alert(mem.y)
		clearInterval(mem.intrv)
	}
}

/*	Старт навигации по датам событий (Шкала событий).
	Расстановка дат относительно шкалы и
	инициализация указателя события	*/
startDatesNav = function(id) {
	var p = document.getElementById(id)
	if (!p) {
		//alert("nav.js: dates navigation pointer not found")
		return
	}
	mem.pntr = {

		engaged	: false,
		ref		: p,
		x		: 0,
		left	: 30,
		w		: mem.evtsW-55,//620/*675*/,
		mouseX	: 0
	}
	if (appInf.name.match(/ie/))
	{
		mem.pntr.ref.attachEvent(
			"onselectstart",
			function(){return false})
	}
	p.style.left = mem.pntr.left+"px"
	p.onmousedown = engage
	document.onmouseup = release
//	document.onmouseout = release
	document.onmousemove = drag
	
	startDatesRow()

}

function engage(evt){
	
	evt = (evt) ? evt : (window.event) ? window.event : ""
/*
	var s = ""
	var i = 0
	for (key in evt)
		s+= "<br/>"+key+": "+evt[key]
	var d = document.getElementById("debug")//.firstChild
//	d.nodeValue = s
d.innerHTML = s
*/
	var targElem = (evt.target) ? evt.target : evt.srcElement
	if (targElem.id=="n2_pointer") {
		
		mem.pntr.mouseX = evt.screenX
		mem.pntr.engaged = true
	}
}
function drag(evt) {

	if (!mem.pntr.engaged)
		return
	
	evt = (evt) ? evt : (window.event) ? window.event : ""

	var dx = evt.screenX-mem.pntr.mouseX

	if (dx!=0)
		G_dragged_now = 1;  // Установка флага движения

	/*	Указатель двигается вправо */
	if (dx > 0)	{
		var x = (mem.pntr.x+dx < mem.pntr.w)
			? mem.pntr.x+dx : mem.pntr.w-1
	}
	/*	Указатель двигается влево */
	else {
		var x = (mem.pntr.left <= mem.pntr.x+dx)
			? mem.pntr.x+dx : 0
	}
	mem.pntr.ref.style.left = x+mem.pntr.left+"px";
	mem.pntr.x = x;
	mem.pntr.mouseX = evt.screenX;
	
	G_mem_index = calcDateInterval(mem.pntr.x, mem.pntr.w, TimeIntervals);
	
	if (!mem.datesRowCalc) {
		mem.datesRowCalc = true;
		setTimeout("update_draw(G_mem_index)", 1);
	}

	//setTimeout("update(G_mem_index)", 1);

}
function release(evt) {

	if (!mem.pntr.engaged) return

	evt = (evt) ? evt : (window.event) ? window.event : ""
	mem.pntr.mouseX = evt.screenX
	mem.pntr.engaged = false
	/*if (G_dragged_now==1) {
		//alert('Тикко закончил двигать бегунок');
		while (1) {
			if (!mem.datesRowCalc)
				break;
		}
		G_dragged_now = 0;
		mem.datesRowCalc = true;
		post_update();
	}*/
}
function startDatesRow(){
	var dates = document.getElementById("dates")
	if (!dates) {
		alert("nav.js: datesrow not found")
		return
	}
	
	var dates = dates.getElementsByTagName("div")
	var w = mem.evtsW
	var offs = Math.floor(w/7)
	var sum = offs

	/*!!!! left all of this must be inited in start some object	*/
//	dates[0].style.left = "30px"

	for (var i=0; i<dates.length; i++) {
		dates[i].firstChild.nodeValue = Years_Array[i]
		
		if (i==0) {
			dates[i].style.left = "30px"
			sum += 30
		}
		else {
			dates[i].style.left = sum+"px"
			sum += offs
		}
	}

	mem.dates = dates
	//mem.events = getNodesByClass("item", "events", "div")	
	
	mem.datesRowCalc = false
}
function calcDateInterval(x, w, c) {
	
	var m = w/c		// Width/Count

	for (var i=0; i<c; i++)
	{
		if (x <= m) {
			if (appInf.scrW > 1024)
			{
				i = (i==0) ? 1 : (i>=c-3) ? c-3 : i
				return i-1
			}
			else {
				i = (i==0) ? 1 : (i==c-1) ? i-1 : i
				return i-1
			}
		}
		m += w/c
	}

}


function update_draw(index) {

	var n = getNodesByClass("item", "shorts", "div")
	var LastIndex = n.length+index;
	var TmpLastIndex=0;
	var set_offset=0;
	var get_offset=0;
	var ids = new Array();
	var event_icon_imgs = new Array();
	var event_years = new Array();
	var short_event_texts = new Array();
	var get_offsets = new Array();

	if  ((LastIndex-1)<cache_matrix.length) {
		for (var i=0; i<n.length; i++) {
			//Set_Offsets[i]=cache_matrix[i+index][4];
			//Get_Offsets[i]=cache_matrix[i+index][5];
			if (Set_Offsets[i]==Get_Offsets[i]) {
				sh_ims[i].innerHTML='<a href="event.php?eventid='+cache_matrix[i+index][3]+'"><img src=\'content/img/'+cache_matrix[i+index][1]+'\' width="84" height="56" alt="" border="0" /></a>';
				sh_ys[i].innerHTML=cache_matrix[i+index][0];
				sh_txts[i].innerHTML=cache_matrix[i+index][2] + ' <a href="event.php?eventid='+cache_matrix[i+index][3]+'">..далее</a>';
			}
			//n[i].parentNode.replaceChild(node, n[i])
		}
	}
	mem.datesRowCalc = false;
}


function update(index) {

	if (mem.datesRowCalc)
		return;

	var TmpLastIndex=0;
	var set_offset=0;
	var get_offset=0;
	var ids = new Array();
	var event_icon_imgs = new Array();
	var event_years = new Array();
	var short_event_texts = new Array();
	var get_offsets = new Array();

	G_isresult = 0;
		// Запросить данные с сервера
		set_offset = cache_matrix.length;
		JsHttpRequest.query(
			'/history/includes/get_event.php',
			{
				offset: set_offset
			},
			function(result, debugMessages) {
				if (result) {
					ids = result["ids"];
					event_icon_imgs = result["event_icon_imgs"];
					event_years = result["event_years"];
					short_event_texts = result["short_event_texts"];
					get_offsets = result["get_offsets"];
					isresult = result["isresult"];
					mem.datesRowCalc = true;
					for (var i=0; i<ids.length; i++) {
						TmpLastIndex = cache_matrix.length;
						cache_matrix[TmpLastIndex] = new Array();
						cache_matrix[TmpLastIndex][0] = event_years[i];
						cache_matrix[TmpLastIndex][1] = event_icon_imgs[i];
						cache_matrix[TmpLastIndex][2] = short_event_texts[i];
						cache_matrix[TmpLastIndex][3] = ids[i];
						cache_matrix[TmpLastIndex][4] = set_offset+i;
						cache_matrix[TmpLastIndex][5] = get_offsets[i];
					}
				}
				if (debugMessages) alert(debugMessages);
			} // function(result, debugMessages
		);
	//mem.datesRowCalc = false;
}

function post_update() {
	
	var offsets = new Array();
	var n = getNodesByClass("item", "shorts", "div");
	var flagoffset=0;
	var ids = new Array();
	var event_icon_imgs = new Array();
	var event_years = new Array();
	var short_event_texts = new Array();

	//alert('Тикко закончил двигать бегунок');
	for (var i=0; i<n.length; i++) {
		//alert(Set_Offsets[i] + '  ' + Get_Offsets[i]);
		if (Set_Offsets[i]!=Get_Offsets[i]) {
			offsets[i]=Set_Offsets[i];
			flagoffset=1;
		}
		else
			offsets[i]=-1;
	}
	if (flagoffset==1) {
			// Запросить данные с сервера
			set_offset = cache_matrix.length;
			JsHttpRequest.query(
				'/history/includes/get_events.php',
				{
					offset_s: offsets
				},
				function(result, debugMessages) {
					if (result) {
						ids = result["ids"];
						event_icon_imgs = result["event_icon_imgs"];
						event_years = result["event_years"];
						short_event_texts = result["short_event_texts"];
						for (var i=0; i<n.length; i++) {
							if (offsets[i]!=-1) {
								document.getElementById('sh_im' + i).innerHTML='<a href="event.php?eventid='+ids[i]+'"><img src=\'content/img/'+event_icon_imgs[i]+'\' width="84" height="56" alt="" border="0" /></a>';
								document.getElementById('sh_y' + i).innerHTML=event_years[i];
								document.getElementById('sh_txt' + i).innerHTML=short_event_texts[i] + ' <a href="event.php?eventid='+ids[i]+'">..далее</a>';
								//Get_Offsets[i]=result["get_offset"];
								//alert('i=' + ii + " " + Set_Offsets[ii] + " " + Get_Offsets[ii] + " " + result["event_year"]);
							}
						}
					}
					if (debugMessages) alert(debugMessages);
				} // function(result, debugMessages
			);
	}
	mem.datesRowCalc = false
}


/*	Вызывается в ините.
	1.	Создает еще один элемент td,
	2.	Выбирает из кэшированных (events)
		шорт с индексом 3 (4й добавленный) и
		помещает в td
	3.	Обновляет ширину и оступы для td */
function changeContentStruct(screenW) {

	var Nelem=3;
	var n
	var node = document.getElementById("shorts")
	if (!node)
		return
	else
		n = node

	if (screenW > 1024)
	{
//		var n = document.getElementById("shorts")

		n = n.getElementsByTagName("td")
		var node2 = getNodesByClass("item", "events", "div")[0]
		var node1 = n[0].parentNode.appendChild( n[0].cloneNode(false) )
			node1.appendChild(node2)

		for (var i=0; i<n.length; i++)
		{
			n[i].style.width = "25%"
			if (i!=n.length-1)
				n[i].style.paddingRight = "45px"
		}
		Nelem=4;
	}

	// Формирование массивов элементов списка событий
	for (var i=0; i<Nelem; i++) {
		sh_ims[i] = document.getElementById('sh_im' + i);
		sh_ys[i] = document.getElementById('sh_y' + i);
		sh_txts[i] = document.getElementById('sh_txt' + i);
	}

	node.style.visibility = "visible"
}
/*	1. Если разрешение больше 1024х,
	то уменьшает ширину навигационногьо меню и
	ширину области контента
	
	2. Выставляет позицию для контейнера с Copyright`ом.
	Высчитаывает сколько по высоте страница занимает
	и цепляет после контейнера shorts	*/
startScreen = function ()
{
	var n0 = $("nav")
	var n1 = $("article")

	if (!n0)
	{
		alert(
			"nav.js: Не найден "+
			"элемент навигации id 'nav'")
	}
	else
	{
		n0 = $$(n0,"table")[0]
		n0.width =
			(appInf.scrW > 1024) ?
				((appInf.scrW > 1500) ? "50%" : "75%") : n0.width
	}
	if (n1)
	{
		n1 = $$(n1,"table")[0]
		n1.width =
			(appInf.scrW > 1280) ?
				((appInf.scrW > 1500) ? "80%" : "90%") : n1.width
	}


	n0 = $("shorts")
	n1 = $("copyright")
	
	if (!n0 || !n1)
		return

	var top = n0.offsetHeight+n0.offsetTop
	
	//	Чтобы текст	shorts не ушел под copyright
	top = (appInf.scrH < 1024) ? top+100 : -1
	
	if (top > 0)
		n1.style.top = top+"px"
	else
		n1.style.bottom = "0px"
}