var isDOM = (document.getElementById ? true : false);

function startDrebezg(menuNum, itemNum)
{
	with (menu[menuNum][itemNum])
	{
		if (drebezgSW)
		{
			ref.left = parseInt(ref.left) + course;
			course   = -course;
			derebezg    = setTimeout( 'startDrebezg(' + menuNum + ',' + itemNum + ')', derebezgV );
			derebezgOFF = setTimeout( 'stopDrebezg('  + menuNum + ',' + itemNum + ')', derebezgT );
		}
	}
}

function stopDrebezg(menuNum, itemNum)
{
	with (menu[menuNum][itemNum])
	{
		clearTimeout(menu[menuNum][itemNum].drebezgOFF);
		clearTimeout(menu[menuNum][itemNum].derebezg);
		menu[menuNum][itemNum].ref.left = x;
		menu[menuNum][itemNum].ref.top  = y;
		menu[menuNum][itemNum].course   = courseGlobal;
	}
}


function getRef(id)
{
	return document.getElementById(id);
}


function getSty(id)
{
	return getRef(id).style;
}


var popTimer   = 0;
var drebezg    = 0;
var drebezgOFF = 0;
var litNow     = new Array();


function popOver(menuNum, itemNum)
{
	clearTimeout(popTimer);
	hideAllBut(menuNum);
	litNow    = getTree(menuNum, itemNum);
	targetNum = menu[menuNum][itemNum].target;

	if (targetNum > 0)
	{
		thisX = parseInt(menu[menuNum][0].ref.left) + parseInt(menu[menuNum][itemNum].ref.left) ;
		thisY = parseInt(menu[menuNum][0].ref.top)  + parseInt(menu[menuNum][itemNum].ref.top)  ;

		if (menu[targetNum][0].position == 'left')
		{
			newX =  thisX;
		}
		if (menu[targetNum][0].position == 'center')
		{
			newX = thisX - ((menu[targetNum].length - 2) * defLengthSmall)/2;
		}
		if (menu[targetNum][0].position == 'right')
		{
			newX = thisX - ((menu[targetNum].length - 2) * defLengthSmall) + spaceSmall;
		}

		with (menu[targetNum][0].ref)
		{
			left = newX;
			top  = parseInt(menu[menuNum][0].ref.top) + menu[menuNum][itemNum].h + spaceVert ;
			visibility = 'visible';
		}
	}

	startDrebezg(menuNum, itemNum);
}


function popOut(menuNum, itemNum)
{
	stopDrebezg(menuNum, itemNum);
	if ((menuNum == 0) && !menu[menuNum][itemNum].target)
		hideAllBut(0)
	else
		popTimer = setTimeout('hideAllBut(0)', 500);
}


function getTree(menuNum, itemNum)
{
	itemArray = new Array(menu.length);

	while(1)
	{
		itemArray[menuNum] = itemNum;
		if (menuNum == 0) return itemArray;
		itemNum = menu[menuNum][0].parentItem;
		menuNum = menu[menuNum][0].parentMenu;
	}
}


function hideAllBut(menuNum)
{
	var keepMenus = getTree(menuNum, 1);
	for (count = 0; count < menu.length; count++)
		if (!keepMenus[count]) menu[count][0].ref.visibility = 'hidden';
}


function Menu(position)
{
	this.position   = position;
	this.parentMenu = null;
	this.parentItem = null;
	this.ref        = null;
}


function Item(text, href, width, high, drebezgSW, target)
{
	this.drebezgSW   = drebezgSW;
	this.course      = courseGlobal;
	this.derebezg    = 0;
	this.derebezgOFF = 0;
	this.x           = null;
	this.y           = null;
	this.w           = width;
	this.h           = high;
	this.text        = text;
	this.href        = href;
	this.target      = target;
	this.ref         = null;
}


function writeMenus()
{
	if (!isDOM) 
	{
		document.write("К сожалению в Вашем броузере сайт работает с ошибками. Пожалуйта, напишите об этой ошибке по адресу info@gefectolog.ru");
		return;
	}

	for (currMenu = 0; currMenu < menu.length; currMenu++) with (menu[currMenu][0])
	{
		var str = '', itemX = 0, itemY = 0;

		for (currItem = 1; currItem < menu[currMenu].length; currItem++) with (menu[currMenu][currItem])
		{
			var itemID = 'menu' + currMenu + 'item' + currItem;

			str += '<div id="' + itemID + '" style="position: absolute; left: ' + itemX + '; top: ' + itemY + '; width: ' + w + '; height: ' + h + '; visibility: inherit;" ';
			str += 'onMouseOver="popOver(' + currMenu + ',' + currItem + ')" onMouseOut="popOut(' + currMenu + ',' + currItem + ')">';
			if (href)
				str += '<table border="0" cellspacing="0" cellpadding="0"><tr><td align="center">' + '<a href="/' + href  + '" charset="koi8-r">' + '<img src="/gif/' + text + '" border="0" alt="" align="middle">' + '</a></td>';
			else
				str += '<table border="0" cellspacing="0" cellpadding="0"><tr><td align="center">' + '<img src="/gif/' + text + '" border="0" alt="" align="middle">' + '</td>';

			x = itemX;
			y = itemY;

			if (target > 0)
			{
				menu[target][0].parentMenu = currMenu;
				menu[target][0].parentItem = currItem;
			}

			str += '</tr></table></div>';

			if (currMenu == 0) itemX += w + spaceBig;
			else itemX +=  w + spaceSmall;
		}

		var newDiv = document.createElement('div');
		document.getElementsByTagName('body').item(0).appendChild(newDiv);
		newDiv.innerHTML = str;
		ref              = newDiv.style;
		ref.position     = 'absolute';
		ref.visibility   = 'hidden';

		for (currItem = 1; currItem < menu[currMenu].length; currItem++)
		{
			itemName = 'menu' + currMenu + 'item' + currItem;
			menu[currMenu][currItem].ref = getSty(itemName);
		}
	}
	with(menu[0][0])
	{
		ref.left = startX;
		ref.top  = startY;
		ref.visibility = 'visible';
	}
}


var menu = new Array();


var defLengthBig   = 150;
var defHighBig     = 50;
var defLengthSmall = 80;
var defHighSmall   = 40;

var spaceBig   = 50 ;
var spaceSmall = 20 ;
var spaceVert  = 3  ;

var startX = 0;
var startY = 0;

var courseGlobal = 1;
var derebezgV    = 50;
var derebezgT    = 200;

//menu[0][2] = new Item(
	//картинка.gif'
	//ссылка
	//ширина
	//высота
	//дергаться [ true | false ]
	//номер следующего меню
//);   

menu[0] = new Array();

menu[0][0] = new Menu('left'); 
menu[0][1] = new Item('sun1.gif',    '?', 100, 100, false, 0);
menu[0][2] = new Item('oblako1.gif', '', defLengthBig, defHighBig, false, 1);
menu[0][3] = new Item('oblako3.gif', '', defLengthBig, defHighBig, false, 3);
menu[0][4] = new Item('oblako2.gif', '', defLengthBig, defHighBig, false, 2);


menu[1] = new Array();

menu[1][0] = new Menu('left');
menu[1][1] = new Item('oblako11.gif', 'articles/9/'   , defLengthSmall, defHighSmall, true, 0);
menu[1][2] = new Item('oblako14.gif', 'articles/27/'  , defLengthSmall, defHighSmall, true, 0);
menu[1][3] = new Item('oblako13.gif', 'articles/17/'  , defLengthSmall, defHighSmall, true, 0);
menu[1][4] = new Item('oblako15.gif', 'articles/18/'  , defLengthSmall, defHighSmall, true, 0);
menu[1][5] = new Item('oblako12.gif', 'articles/19/'  , defLengthSmall, defHighSmall, true, 0);
menu[1][6] = new Item('oblako16.gif', 'documents/'    , defLengthSmall, defHighSmall, true, 0);

menu[2] = new Array();

menu[2][0] = new Menu('right');
menu[2][1] = new Item('oblako22.gif', 'board/', defLengthSmall, defHighSmall, true, 0);
menu[2][2] = new Item('oblako24.gif', 'forum/'                        , defLengthSmall, defHighSmall, true, 0);
menu[2][3] = new Item('oblako21.gif', 'contacts/36/'                  , defLengthSmall, defHighSmall, true, 0);
menu[2][4] = new Item('oblako23.gif', 'contacts/38/'                  , defLengthSmall, defHighSmall, true, 0);


menu[3] = new Array();

menu[3][0] = new Menu('center');
menu[3][1] = new Item('oblako31.gif', 'articles/20/22/?theme=40', defLengthSmall, defHighSmall, true, 0);
menu[3][2] = new Item('oblako32.gif', 'articles/20/22/?theme=39', defLengthSmall, defHighSmall, true, 0);
menu[3][3] = new Item('oblako33.gif', 'articles/20/22/?theme=53', defLengthSmall, defHighSmall, true, 0);
menu[3][4] = new Item('oblako34.gif', 'articles/20/22/?theme=54', defLengthSmall, defHighSmall, true, 0);
menu[3][5] = new Item('oblako35.gif', 'articles/20/25/'         , defLengthSmall, defHighSmall, true, 0);

