// JavaScript Document
// code by Azer Manafov (azerman[at]hotmail[dot]com)

function clsBaseNavigate(divId, visihlp, ident )
{
	var m_divId    = (divId   == undefined)?null:divId;
	var m_visihlp  = (visihlp == undefined)?new clsViewHelper():visihlp;
	var m_ident    = ident;
	var m_arEvt    = new Array( );
    var m_arItems  = new Array( );
	var m_activeid = 0;
	
	
	this.eventhandle  = eventhandle;
	this.divid        = function(){ return m_divId;   }
	this.helper       = function(){ return m_visihlp; }
	this.isNavigation = isNavigation;
	this.getnavid     = getnavid;
	this.addItem      = addItem;
	this.itemCount    = function ( ){ return m_arItems.length; }
	this.getid        = function ( index ){	return ((index<10)?('0'+index):index);	}
	this.getitem      = function ( index ){ return ( index < m_arItems.length )?m_arItems[index]:null; }
	this.getactiveid  = function(){ return m_activeid; }
	this.setactiveid  = function ( activeId )
	{   if ( activeId ) m_activeid = activeId;
		if ( (typeof  m_activeid ) == 'string')
		{   for ( var i = 0; i < m_arItems.length; i++ )
			{   if ( m_visihlp.trim(m_arItems[i].title) == m_visihlp.trim( m_activeid ))
				{    m_activeid = i+1;
					 break;
				}
			}
		}

		if ( m_activeid > m_arItems.length || m_activeid < 1 )
		     m_activeid = 1;
	}
	
	this.addEvent     = function( ev_name, ev_flag )
	{   for ( var i = 0; i < m_arEvt.length; i++ )
			if ( m_arEvt[i].name == ev_name ) return;
		var ev = new Object( );
		ev.name = ev_name;
		ev.flag = ev_flag;
		m_arEvt.push( ev );
	}
	
	function addItem ( sLink, sText )
	{   var obj = new Object( );
	    obj.id    = m_arItems.length+1;
		obj.link  = sLink;
		obj.title = sText;
	    m_arItems.push( obj );
	}
	
	function isNavigation( objchk )
	{   var objret = null;
		var objtmp = objchk;
		while( objtmp )
		{   if ( objtmp.id && objtmp.id.indexOf( m_ident ) != -1)
			{   objret = objtmp;
				break;
			}
			objtmp = objtmp.parentNode;
		}
		return objret;
	}
	function eventhandle( e )
	{   e = e || window.event;
		if ( !e ) return null;

		var flag = new Object( );
		for ( var i = 0; i < m_arEvt.length; i++ )
		{
			if ( e.type == m_arEvt[i].name )
			{    flag.flag = m_arEvt[i].flag;
				 flag.obj  = isNavigation( m_visihlp.getEventTarget( e ));
			     return flag;
			}
		}
	    return null;
	}
	function getnavid  ( navobj, navname )
	{   var ipos   = navobj.id.indexOf( navname ) + navname.length;
		var currid = parseInt(navobj.id.substr( ipos,2),10);
		return currid;
	}
}