// Scripts.js
//   by Konstantin Shamray. v 1.0
//   Copyright (C) 2004 CATKoneft. All Rights Reserved.
//<meta http-equiv="Author" content="Programmer: Konstantin Shamray, Designer: Valentin Pasternak">

// Global vars

var divs = new Object;
var isNS = false;
var isIE = false;
var isMenu = false;
var ML = 12;
var pageWidth = 1024 - 40;
var isLoaded = false;


// Navigator

if (parseInt(navigator.appVersion) >= 4)
{
	if (navigator.appName == "Netscape") isNS = true;
	else if(navigator.appName == "Microsoft Internet Explorer") isIE = true;
}

doc=document;
if(isNS) doc=document;
if(isIE) doc=document.all;
if(isNS||isIE) isMenu=true;

// Prepare some images

var imgs = new Object;
var imgs_n = 0
function pimg(imgSrc) { imgs[++imgs_n] = new Image; imgs[imgs_n].src = imgSrc; }
function pbtn(imgName)
{
	pimg("/images/bu_"+imgName+".gif");
	pimg("/images/bo_"+imgName+".gif");
	pimg("/images/bd_"+imgName+".gif");
}

pbtn('vote');
pbtn('m');
pbtn('s');


function btnOver(btnName,divName) {	btnChange(btnName,"bo_",divName); }
function btnOut(btnName,divName)  {	btnChange(btnName,"bu_",divName); }
function btnDown(btnName,divName) {	btnChange(btnName,"bd_",divName); }
function btnUp(btnName,divName)   {	btnChange(btnName,"bu_",divName); }

function subm(formName,divName)
{
	if(!divName) divName='Main';
	var frm = null;
	if(isIE)
		frm = document.all[formName];
	if(isNS)
		frm = document[divName].document.forms[formName];
	if(frm)
		frm.submit();
}

function selectGoto(u)
{
  document.location = u.value ? u.value : u.options[u.selectedIndex].value;
}

//-- Margins

function screenWidth()
{
	return isIE ? document.body.offsetWidth : isNS ? innerWidth : 1024;
}

function getML()
{
	var nml=0;
	nml=(screenWidth()-pageWidth-16)/2;
	if(nml<0) nml=0;
	return nml;
}

//-- Layers

function lrShow(l)
{
	if(isIE) l.style.visibility = 'inherit';
	if(isNS) l.visibility = 'inherit';
}
function lrHide(l)
{
	if(isIE) l.style.visibility = 'hidden';
	if(isNS) l.visibility = 'hide';
}
function lrX(l)
{
	return isIE ? l.style.pixelLeft :
		isNS ? l.x               : 0;
}
function lrY(l)
{
	return isIE ? l.style.pixelTop :
		isNS ? l.y              : 0;
}
function lrW(l)
{
	return isIE ? l.offsetWidth :
		isNS ? l.clip.width  : 0;
}
function lrSetW(l,w)
{
	if( isIE )
		l.style.pixelWidth = w;
	else if( isNS )
		l.clip.width = w;;
}
function lrH(l)
{
	return isIE ? l.offsetHeight :
		isNS ? l.clip.height  : 0;
}
function lrSetX(l,x)
{
	if(isIE) l.style.pixelLeft=x;
		if(isNS) l.left=x;
}
function lrSetY(l,y)
{
	if(isIE) l.style.pixelTop=y;
		if(isNS) l.top=y;
}

// Menus

window.onload = onLoaded;
window.onresize = onResized;
var transparentSrc = "/prozrach.gif";

var fullMenuStr = '';
var menus = new Object;
var currentMenu = null;
var timeOut = null;
var animateNo = 0;

function onLoaded()
{
	var name,lr,ilr;
	if(isNS)
	{
		for(name in menus)
		{
			menu = menus[name];
			lr = doc[menu.name];
			lr.onmouseover = menuOver;
			lr.onmouseout  = menuOut;
			for(j=0;j<lr.layers.length;j+=3)
			{
				ilr = lr.layers[j];
				ilr.bgColor = menu.itemBack;
				ilr = lr.layers[j+1];
				ilr.bgColor = menu.itemBackOver;
				ilr = lr.layers[j+2];
				ilr.onmouseover = itemOver;
				ilr.onmouseout	= itemOut;
			}
			
		}
	}
	isLoaded = true;
}

function onResized()
{
	if(!isLoaded) return;
		
	var OML=ML; ML=getML(); if(ML<12) ML=12;

	for(name in divs)
	{
		var d=divs[name];
		lrSetX(d,lrX(d)+ML-OML);
	}

	for(name in menus)
	{
		var menu=doc[name];
		lrSetX(menu,lrX(menu)+ML-OML); 
	}
}

function hideCurrentMenu(menuName)
{
	var lr;
	while(currentMenu)
	{
		lr = currentMenu.current;
        currentMenu.current = null;
        if(lr)
        {
        	if(isIE) lrShow(lr.previousSibling);
        	if(isNS) lrShow(lr.below);
        	lrHide(lr);
        }
        if(currentMenu.name==menuName)
        	break;
        if(currentMenu.parent)
			lrHide(doc[currentMenu.name]);
		currentMenu = currentMenu.parent;
	}
}

function animateMenu(dir)
{
	if(animateNo>=0 && animateNo<=currentMenu.steps)
	{
		animateNo+=dir;
		var x = ML+currentMenu.x0+(currentMenu.x-currentMenu.x0)*animateNo/currentMenu.steps;
		var y = currentMenu.y0+(currentMenu.y-currentMenu.y0)*animateNo/currentMenu.steps;
		var lr = doc[currentMenu.name];
		lrSetX(lr,x);
		lrSetY(lr,y);
	}
	if(animateNo==0)
		hideCurrentMenu(null);
	else if(animateNo!=currentMenu.steps)
		timeOut = setTimeout("animateMenu("+dir+")",30);
}

function menuOver(e)
{
//	clearTimeout(timeOut);
}

function menuOut(e,m)
{
	if(currentMenu)
	{
		clearTimeout(timeOut);
  		animateNo=currentMenu.steps;
		if(currentMenu.steps>1)
       		timeOut = setTimeout("animateMenu(-1)",250);
       	else
			timeOut = setTimeout('hideCurrentMenu(null)',500);
	}
}

function itemOver(e,m)
{
	if(currentMenu && currentMenu.steps>0)
	{
		animateNo = currentMenu.steps-1;
		animateMenu(1);
	}
	var lr=null;
	if(isIE)
		lr = e.srcElement.parentElement.parentElement.previousSibling;
	else if(isNS)
	{
		lr = e.target.below;
		m = menus[lr.parentLayer.name];
	}
	if(lr)
	{
		clearTimeout(timeOut);
		offset = m.type ? lrY(lr) : lrX(lr); 
		n = m.itemNo[offset];
		if(m[n])
        {
			if(!currentMenu || m[n].name!=currentMenu.name)
			{
				hideCurrentMenu(m.name);
                currentMenu = m[n];
		       	plr = doc[currentMenu.name];
        		lrSetX(plr,ML+currentMenu.x0);
        		lrSetY(plr,currentMenu.y0);
				lrShow(plr);
    	   		animateNo=0;
       			timeOut = setTimeout("animateMenu(1)",30);
       		}
       		else
		       	currentMenu = m[n];
		}
		else
		{
			hideCurrentMenu(m.name);
	       	currentMenu = m;
	    }
        m.current = lr;
        lrShow(lr);
       	if(isIE) lrHide(lr.previousSibling);
       	if(isNS) lrHide(lr.below);
	}
}

function itemOut(e,m)
{
	if(currentMenu)
		hideCurrentMenu(currentMenu.name);
}

function writeDiv(divStr)
{
	document.write('<DIV id=_BUG style="POSITION:absolute;TOP:0px;LEFT:0px;WIDTH:10px;BORDER:#003366 0px solid;BACKGROUND-COLOR:#FFFFFF;layer-background-color:#FFFFFF;VISIBILITY:hidden"></DIV>\n' + divStr);
}

// type=0 - bar menu, type=1 popup menu

function CreateMenu(name,parent,index,type,zIndex,bgColor,borderWidth,borderColor,
	itemClass,itemBack,itemClassOver,itemBackOver,itemSpacing,
	x,y,size,leftWidth,rightWidth,steps,x0,y0)
{
	var itemX,itemY,itemWidth,itemHeight;
	var hrefX,hrefY,hrefWidth,hrefHeight;
	var span,spanOver,left,right,leftOver,rightOver;
	var leftOverText,rightOverText;
	var menu = menus[name]  = new Object;
	var visibility,itemOffset;
	var a=arguments;
	var menuStr;
    menu.name = name;
    menu.type = type;
    menu.parent = parent? menus[parent] : null;
    if(parent) menus[parent][index] = menu;
    menu.x = x; menu.y = y;
    menu.x0 = x0; menu.y0 = y0;
	menu.steps = steps;
	menu.itemBack = itemBack;
	menu.itemBackOver = itemBackOver;
	visibility = steps ? 'hidden' : 'show';
    menuStr  = '<form><div id='+name+' style="position: absolute; top: '+y0+'px; left: '+(ML+x0)+'px; visibility: '+visibility+'; z-index: '+zIndex+';"';
	menuStr += ' onmouseover="menuOver(event)" onmouseout="menuOut(event,menus[\''+name+'\'])">\n';
	itemOffset = 0;
    menu.itemOffset = new Object;
    menu.itemNo = new Object;
	for(var i=21, n = 0; i<a.length; i+=8, n++)
	{
		alt = a[i+7] ? ' alt="'+a[i+7]+'"' : '';
		curSpacing = 0;
		if(itemOffset>0) curSpacing = itemSpacing;
		hrefX = type ? 0 : itemOffset+borderWidth;
		hrefY = type ? itemOffset+borderWidth : 0;
		hrefWidth  = type ? size+borderWidth*2 : a[i]+curSpacing;
		hrefHeight = type ? a[i]+curSpacing : size+borderWidth*2;
		itemOffset += curSpacing;
		itemX = type ? borderWidth : borderWidth+itemOffset;
		itemY = type ? borderWidth+itemOffset : borderWidth;
		itemWidth  = type ? size: a[i];
		itemHeight = type ? a[i] : size;
		span=1, spanOver=1;
		left='',right='',colspan='';
		leftOver='',rightOver='',colspanOver='';
		leftOverText = a[i+5] ? a[i+5] : a[i+1];
		rightOverText = a[i+6] ? a[i+6] : a[i+3];
		if(a[i+1])	{ span++; left = '<td align=left width='+leftWidth+'>'+a[i+1]+'</td>'; }
		if(a[i+3])	{ span++; right = '<td align=right width='+rightWidth+'>'+a[i+3]+'</td>'; }
		if(leftOverText)	{ spanOver++; leftOver = '<td align=left width='+leftWidth+'>'+leftOverText+'</td>'; }
		if(rightOverText)	{ spanOver++, rightOver = '<td align=right width='+rightWidth+'>'+rightOverText+'</td>'; }
		if(span>1)		colspan='colspan='+span;
		if(spanOver>1)	colspanOver='colspan='+spanOver;
		menu.itemOffset[n] = borderWidth+itemOffset;
		menu.itemNo[borderWidth+itemOffset] = n;
		var textWidth = itemWidth - leftWidth - rightWidth;
		menuStr += '<div style="background: '+itemBack+'; position: absolute; left: '+itemX+'px; top: '+itemY+'px; visibility: inherit; ">';
		menuStr += '<table width='+itemWidth+' cellspacing=0 cellpadding=0 border=0><tr>'+left+'<td '+colspan+' height='+itemHeight+' width='+textWidth+' align=left class='+itemClass+'>'+a[i+2]+'</td>'+right+'</tr></table></div>\n';
		menuStr += '<div style="background: '+itemBackOver+'; position: absolute; left: '+itemX+'px; top: '+itemY+'px; visibility: hidden; ">';
		menuStr += '<table width='+itemWidth+' cellspacing=0 cellpadding=0 border=0><tr>'+leftOver+'<td '+colspanOver+' height='+itemHeight+' width='+textWidth+' align=left class='+itemClassOver+'>'+a[i+2]+'</td>'+rightOver+'</tr></table></div>\n';
		if(a[i+4])
		{
			menuStr += '<div style="position: absolute; left: '+hrefX+'px; top: '+hrefY+'px; visibility: inherit; "';
			menuStr += ' onmouseover=\'itemOver(event,menus["'+name+'"])\' onmouseout=\'itemOut(event,menus["'+name+'"])\'>\n';
			menuStr += '<a href="'+href(a[i+4])+'"><img border=0 hspace=0 vspace=0 src='+transparentSrc+' width='+(hrefWidth-1)+' height='+(hrefHeight-1)+' '+alt+'></a></div>\n';
		}
		else
		{
			menuStr += '<div style="position: absolute; left: '+hrefX+'px; top: '+hrefY+'px; visibility: hidden; ">';
			menuStr += '&nbsp;</div>\n';
		}
		itemOffset += a[i];
	}
	var menuWidth  = type ? size : itemOffset;
	var menuHeight = type ? itemOffset: size;
	menuStr += '<table cellspacing=0 cellpadding='+borderWidth+' border=0><tr><td bgColor='+borderColor+' width='+menuWidth+' height='+menuHeight+'>'+
		'<table cellspacing=0 cellpadding=0 border=0 bgColor='+borderColor+'><tr><td bgColor='+bgColor+'><img border=0 src='+transparentSrc+' width='+menuWidth+' height='+menuHeight+'></td></tr></table></td></tr></table>\n';
    menuStr += '</div></form>';
    fullMenuStr += menuStr;
    return menu;
}

function WriteMenus()
{
	writeDiv(fullMenuStr);
    fullMenuStr='';
}
