window.onload = init;
function init () {
	//document.forms.dbf.dbt.value = "";//DEBUG
	if ( document.layers ) init_lay();
	//else if ( document.all ) init_dht();
	else if ( document.getElementById ) init_dom();
}
function init_dom () {
	m_sShow = m_sShow_dom, m_sHide = m_sHide_dom;
	var m, mi, mis, misj, misjs, nis, nisjs;
	m_refs = { m: null }; m_curr = { m: null }; m_timeout = 0;
	for ( var i = 1; m = document.getElementById( 'm' + i ); i++ ) {
//		var notLast = document.getElementById( 'm' + (i+1) );
		mi = m.getElementsByTagName( 'a' )[0];
		if ( mis = document.getElementById( nis = 'm' + i + 's' ) ) {
			mis.style.left = ( m.offsetLeft + m_shiftX1 ) + "px", mis.style.top = ( m.offsetTop + m_shiftY1 ) + "px", mis.style.visibility = "hidden";
			for ( var j = 1, j0 = 0; misj = mis.getElementsByTagName( 'a' )[j0]; j++, j0++ ) {
				if ( misjs = document.getElementById( nisjs = 'm' + i + 's' + j + 's' ) ) {
//					if ( notLast )
						misjs.style.left = ( mis.offsetLeft + mis.offsetWidth + m_shiftX2 ) + "px", misjs.style.top = ( mis.offsetTop + m_shiftY2 + j0 * m_shiftH2 ) + "px", misjs.style.visibility = "hidden";
//					else
//						misjs.style.left = ( mis.offsetLeft - misjs.offsetWidth + m_shiftX2 ) + "px", misjs.style.top = ( mis.offsetTop + m_shiftY2 + j0 * m_shiftH2 ) + "px", misjs.style.visibility = "hidden";
					misjs.routeEvent = nop;
					m_refs[nisjs] = misjs, m_curr[nisjs] = null, misjs.onmouseover = m_sOver; misjs.onmouseout = m_sOut;
				}
				misj.subject = nisjs, misj.parent = nis, misj.onmouseover = m_iOver;
			}
			m.routeEvent = nop;
			m.onmouseover = m_sOver, m.onmouseout = m_sOut;
			mis.routeEvent = nop;
			m_refs[nis] = mis, m_curr[nis] = null, mis.onmouseover = m_sOver, mis.onmouseout = m_sOut;
		}
		mi.subject = nis, mi.parent = 'm', mi.onmouseover = m_iOver;
	}
	window.onresize = init_dom;
}
//function init_dht () {}
function init_lay () {
	m_sShow = m_sShow_lay, m_sHide = m_sHide_lay;
	var m, mi, mis, misj, misjs, nis, nisjs, ls = document.layers;
	m_refs = { m: null }; m_curr = { m: null }; m_timeout = 0;
	for ( var i = 1; m = ls[ 'm' + i ]; i++ ) {
//		var notLast = ls['m'+(i+1)];
		mi = m.document.links[0];
		if ( mis = ls[ nis = 'm' + i + 's' ] ) {
			mis.pageX = m.pageX + m_shiftX1, mis.pageY = m.pageY + m_shiftY1, mis.visibility = "hide";
			for ( var j = 1, j0 = 0; misj = mis.document.links[j0]; j++, j0++ ) {
				if ( misjs = ls[ nisjs = 'm' + i + 's' + j + 's' ] ) {
//					if ( notLast )
						misjs.pageX = mis.pageX + mis.clip.width + m_shiftX2, misjs.pageY = mis.pageY + m_shiftY2 + j0 * m_shiftH2, misjs.visibility = "hide";
//					else
//						misjs.pageX = mis.pageX - misjs.clip.width + m_shiftX2, misjs.pageY = mis.pageY + m_shiftY2 + j0 * m_shiftH2, misjs.visibility = "hide";
					misjs.captureEvents( Event.MOUSEOVER | Event.MOUSEOUT );
					m_refs[nisjs] = misjs; m_curr[nisjs] = null, misjs.onMouseOver = m_sOver, misjs.onMouseOut = m_sOut;
				}
				misj.subject = nisjs, misj.parent = nis, misj.onMouseOver = m_iOver;
			}
			m.captureEvents( Event.MOUSEOVER | Event.MOUSEOUT );
			m.onMouseOver = m_sOver, m.onMouseOut = m_sOut;
			mis.captureEvents( Event.MOUSEOVER | Event.MOUSEOUT );
			m_refs[nis] = mis; m_curr[nis] = null, mis.onMouseOver = m_sOver, mis.onMouseOut = m_sOut;
		}
		mi.subject = nis, mi.parent = 'm', mi.onMouseOver = m_iOver;
	}
	window.onResize = init_lay;
}
function m_sOver ( event ) {
	this.routeEvent( event );
	if ( m_timeout ) { window.clearTimeout( m_timeout ); m_timeout=0 }
}
function m_sOut ( event ) {
	this.routeEvent( event );
	if ( ! m_timeout ) m_timeout = window.setTimeout( "m_allHide()", 400 );
}
function m_iOver ( event ) {
	var c = m_curr[this.parent], n = m_refs[this.subject];
	if ( c != n ) {
		if ( c ) m_sHide( c );
		m_curr[this.parent] = n;
		if ( n ) m_sShow( n );
	}
}
function m_allHide () {
	if ( m_curr.m ) { m_sHide( m_curr.m ); m_curr.m = null }
}
function nop () {}
/* browser-specific */
function m_sShow_dom ( cont ) {
	cont.style.visibility = "visible";
}
function m_sHide_dom ( cont ) {
	if ( m_curr[cont.id] ) { m_sHide( m_curr[cont.id] ); m_curr[cont.id] = null }
	cont.style.visibility = "hidden";
}
function m_sShow_lay ( cont ) {
	cont.visibility = "show";
}
function m_sHide_lay ( cont ) {
	if ( m_curr[cont.name] ) { m_sHide( m_curr[cont.name] ); m_curr[cont.name] = null }
	cont.visibility = "hide";
}
//function db ( v ) { document.forms.dbf.dbt.value += v + "\n"; return v }//DEBUG
//function dump ( r ) { for ( var n in r ) db( 'obj.' + n + ': ' + r[n] ); }//DEBUG
