// JavaScript Document
// code by Azer Manafov (azerman[at]hotmail[dot]com)

//getCSSValueOf( 'table.roottbl td:hover','backgroundColor');
var NAV_WAIT            = 0;


function clsFloatNavigation( divId, visihlp )
{
    var m_timerId = 0;
    var m_divId   = (divId   == 'undefined')?MENU_AD_VERT:divId;
	var m_visi    = (visihlp == 'undefined')?new clsViewHelper():visihlp;

	//m_prop.rowheight
	var m_prop      =
	{
		imgcurrent  : 'images/blank.gif',
		imgactive   : '',
		imgnormal   : 'images/blank.gif',
		cellwidth   : 20,
		rowheight   : 20,
		colorover   : "#d6d6d6",
		colorout    : "#ebebeb",
		coloractive : "#ffffff",
		allowflow   : false,
		tableid     : 'leftnavigationtbl',
		tablewidth  : 140,
		dividprefix : MAINDIV_PREFIX,
		cssclass    : "roottbl"
	};
	var m_fontstyle = new Object( );
	
	if ( typeof clsFloatNavigation.idPref == 'undefined')
	     clsFloatNavigation.idPref = 'nav_';

    var m_base         = new clsBaseNavigate( divId, visihlp, clsFloatNavigation.idPref );

	this.compact       = compact;
	this.divid         = function ( ) { return m_base.getdivid(); }
	this.itemsCount    = m_base.itemsCount;
	this.allowdblitm   = m_base.allowdblitm;
	this.compactempty  = m_base.compactempty;
	this.is_compact    = m_base.is_compact;
	
	this.setProperties = function( prop )
	{   for ( var i in prop )
		{   if ( prop[i] != undefined )
			     m_prop[i] = prop[i];
		}
	}

	this.activateScene = activateScene;
	this.getTblId      = function() { return m_prop.tableid; }
	this.getactiveid   = m_base.getactiveid;
	this.addItem       = addItem;

	this.showlayer     = showlayer;
	this.create        = create;
	this.fontStyle     = fontStyle;

	fontStyle( 'color','#000000','font-family','Arial','font-size','12px','font-weight','bold');	
	
	function compact    ( )
	{
		if ( !this.is_compact( )) return;
		
		if ( this.divid( ))
		{   var id  = m_prop.dividprefix + "1";
		    var obj = m_visi.getElement   (  this.divid( ));
			var mso = m_visi.getElement   ( id );

			var rmo = m_visi.getObjectRect( mso );

			var rmn = m_visi.getObjectRect( obj );
			mso.style.width = ( rmo.left + rmo.width - rmn.left - 24 ) + 'px';

			var brc = m_visi.getObjectRect( obj );
			if ( obj )
			{   obj.style.border = "0px";
				obj.style.width  = '0px';
			}
			if ( m_visi.getStyle(mso,"position",1) == 'absolute')
				 mso.style.left = rmn.left + "px";
		}
	}
	
	function addItem ( sLink, sText )
	{   
		m_base.addItem ( sLink,sText);
	}
	function resFont  ( ) { m_fontstyle = new Object( ); }
	function fontStyle( )
	{	for ( var i=0; i < arguments.length; i=i+2)
		{	var key = arguments[i+0].toLowerCase();// 
		    var val = arguments[i+1].toLowerCase();
			m_fontstyle[key] = val;
	  	}
	}
	
	function build   ( activeId )
	{   if ( m_base.is_compact())
		    return "";//'&nbsp;'
		if ( m_prop.imgactive == '' )  m_prop.imgactive = m_prop.imgcurrent;
		m_base.compactempty( false );	
	
	    var s='';
		var tbstyle= '';
		for ( var i in m_fontstyle)
		      tbstyle += (i + ':' + m_fontstyle[i] + '; ');
		s += '<TABLE align="center" id="' + m_prop.tableid + '" class="roottbl" width="' + m_prop.tablewidth + '" style="margin: 0;' + tbstyle + '">';
		s += '<TBODY>';


		for ( var i = 0; i < m_base.itemsCount(); i++ )
		{
			var itm = m_base.getitem(i); 
			var sid = m_base.getident() + (i+1);
			var img = (itm.id != activeId )?m_prop.imgnormal:m_prop.imgactive;
			s += '<TR>\n';
			s += '<TD id="' + sid + '_01" align="center" valign="middle" width="'+ m_prop.cellwidth + '" height="'+ m_prop.rowheight +'"';
			s += ' style="background-image: url(' + img + '); background-repeat:no-repeat; background-position: center center; cursor: pointer;">';
			s += '</TD>\n';
			s += '<TD id="'   + sid + '_02" align="center" valign="middle" style="' + tbstyle + ' background-color:' + m_prop.colorout + '; cursor: pointer;">\n';
//			s += '<a href="'  + itm.link + '">';
			s += itm.title;
			s += '</TD></TR>\n';
		}
		s += '</TBODY></TABLE>\n';
		return s; 
	}
	function showMessage    ( num, enable )
	{
		var id = m_prop.dividprefix + num;
		var ob = m_visi.getElement(id);
		m_visi.setVisible( ob,enable );
	}
	function hideAllMessages( )
	{   var i  = 0;
		var id = m_prop.dividprefix + (++i);
		var ob = m_visi.getElement(id);
		while( ob )
		{   m_visi.setVisible( ob,false );
			id = m_prop.dividprefix + (++i);
			ob = m_visi.getElement( id );
		}
	}
	function createNamesFromTag( tagName )
	{   var i  = 0;
		var id = m_prop.dividprefix + (++i);
		var ob = m_visi.getElement(id);
		while( ob )
		{   var h1 = ob.getElementsByTagName( tagName );
			if ( h1 && h1.length && m_visi.getInnerText(h1[0]))
			{   
			
			    var lnk = ob.getElementsByTagName( 'a' );

			    if ( lnk && lnk.length )
				     addItem( lnk[0].href, m_visi.getInnerText(h1[0]));
				else addItem( '#', m_visi.getInnerText(h1[0]));
			}
			id = m_prop.dividprefix + (++i);
			ob = m_visi.getElement( id );
		}
	}
	function createDivLayer( parent, idName )
	{
		if ( !document.createElement ) return null;
		var ttipNode = document.createElement("div");
		parent.appendChild( ttipNode );
		ttipNode.setAttribute("id", idName );
		ttipNode.style.border     = "2px solid #8e2800";
		ttipNode.style.width      = "150px";
		ttipNode.style.height     = "514px";
		return ttipNode;
	}
	function create  ( activeId, iHtmRet, parentid )
	{	
        if ( !m_base.itemsCount() )
		      createNamesFromTag( 'h1' );
		m_base.setactiveid( activeId );
		
		var iHtmRet = (iHtmRet != 'undefined')?iHtmRet:HTM_INS;
        var div     = m_visi.getElement( m_divId );

		if ( !div ) // if placeholder not found
		{    if ( !parentid ) return;
             if ( !m_base.is_compact()) // if no compacting needed
			 {   var parent =  m_visi.getElement( parentid );
				 div     = createDivLayer( parent, m_divId ); // create placeholder
				 iHtmRet = HTM_INS;
			 }
		}
		if ( !div ) return;
		var w   = (div)?div.style.width:null;
	
		if ( w && w.indexOf('px') != -1 )
			 w = w.substring(0,w.indexOf('px'));

		if ( w ) m_prop.tablewidth = w-10;

		switch( iHtmRet )
		{
			case HTM_RET: return build( m_base.getactiveid());
			case HTM_WRT: document.write(build( m_base.getactiveid()));  break;
			case HTM_INS: div.innerHTML = build( m_base.getactiveid());  break;
			default:      document.write(build( m_base.getactiveid()));  break;
		}

        hideAllMessages( );
		showMessage    ( activeId, true );
		
		if ( !m_base.is_compact())
		{   for ( var i = 0; i < m_base.itemsCount( ); i++)
		          showlayer( (m_prop.dividprefix + ( i+1 )),false);
		    activateScene(m_base.getactiveid( ));
		}
		m_timerId = setTimerCallback( initialTimer );
		setTimer( m_timerId );
	}
    function initialTimer( timerState )
	{   switch( timerState )
		{	case TM_STATE_START: NAV_WAIT = 0; break;
			case TM_STATE_RUN:
		 	 var tbl = m_visi.getElement( m_prop.tableid );
			 if ( tbl )
			 {   var td = tbl.getElementsByTagName('TD');
			     for ( var i = 0; i < td.length; i++)
				 {   td[i].onclick     = mousehandle;
			         td[i].onmouseover = mousehandle;
			         td[i].onmouseout  = mousehandle;
				 }
			 }
			if ( ++NAV_WAIT > 10 ) stopTimer( m_timerId );
				break;
			case TM_STATE_STOP: NAV_WAIT = 0; m_timerId = -1; break;
		}
	}
    function showlayer      ( id, enable )
	{   var o   = m_visi.getElement( id );
	    if ( o == null ) return;
	    var arr = o.getElementsByTagName( '*');
		for ( var i = 0; i < arr.length; i ++ )
			  if ( arr[i].id ) showlayer( arr[i].id, enable );
		m_visi.setVisible( id, enable );	
	}
	function mousehandle  ( event )
    {   var e       = event || window.event;
		var o       = (e.target)?e.target:e.srcElement;
        var currid  = m_base.getnavid   ( o );//extract first number from id
		var previd  = m_base.getactiveid( );
		
		if ( o && o.nodeType == 3)
			 o = o.parentNode;
        if ( currid != previd)
		{   
		    var o1_cur  = m_visi.getElement( getidstr(currid, '_01')); 
		    var o2_cur  = m_visi.getElement( getidstr(currid, '_02')); 
			switch( e.type )
			{
				case 'mouseover':
                     m_visi.setStyleA(o1_cur,"background-image", 'url('+m_prop.imgcurrent+')');
					 o1_cur.style.backgroundColor = m_prop.colorover;
					 o2_cur.style.backgroundColor = m_prop.colorover;
				break;
				case 'mouseout':  
					 m_visi.setStyleA(o1_cur,"background-image", 'url('+m_prop.imgnormal+')');
					 o1_cur.style.backgroundColor = m_prop.colorout;
					 o2_cur.style.backgroundColor = m_prop.colorout;
				break;
				case 'click':
				activateScene( currid );
				break;
			}
		}
        return ( m_prop.allowflow == true )?true:false; 
    }
	function getidstr       ( idnum,postfixid )	{   return m_base.getident() + idnum + postfixid; }

    function activateScene( scene )
	{   if ( scene > m_base.itemsCount( )) return;
        if ( m_base.is_compact())
		     return "";
        var currid  = scene;//m_base.getnavid   ( o );//extract first number from id
		var previd  = m_base.getactiveid( );

		var o1_cur = m_visi.getElement( getidstr(currid, '_01')); 
		var o2_cur = m_visi.getElement( getidstr(currid, '_02')); 
		var o1_pre = m_visi.getElement( getidstr(previd, '_01') );
		var o2_pre = m_visi.getElement( getidstr(previd, '_02') );

		m_visi.setStyleA(o1_pre,"background-image", 'url('+m_prop.imgnormal+')');
		o1_pre.style.backgroundColor = m_prop.colorout;
		o2_pre.style.backgroundColor = m_prop.colorout;
		
		m_visi.setStyleA(o1_cur,"background-image", 'url('+m_prop.imgactive+')');
		o1_cur.style.backgroundColor = m_prop.coloractive;
		o2_cur.style.backgroundColor = m_prop.coloractive;
		
		showlayer( m_prop.dividprefix + previd, false);
		showlayer( m_prop.dividprefix + currid,  true );
		m_base.setactiveid( currid );
	}
};
