// JavaScript Document
// code by Azer Manafov (azerman[at]hotmail[dot]com)

var HTM_RET = (HTM_RET == undefined)?0:HTM_RET;
var HTM_WRT = (HTM_WRT == undefined)?1:HTM_WRT;
var HTM_INS = (HTM_INS == undefined)?2:HTM_INS;

function clsBaseNavigate(divId, visihlp, ident )
{
	var m_visihlp   = (visihlp == 'undefined')?new clsViewHelper():visihlp;
	var m_divId     = (divId   == 'undefined')?null:divId;
	var m_ident     = ident;
	
	var m_arEvt     = new Array( );
    var m_arItems   = new Array( );
	var m_activeid  = 0;
	
	var m_bAllowDblItm    = true;
	var m_bCompactOnEmpty = false;
	
	this.allowdblitm  = function ( bForce   ) { m_bAllowDblItm    = bForce; }
	this.compactempty = function ( bCompact )
	{   m_bCompactOnEmpty = ( m_arItems.length > 1 )?false:bCompact; 
	}
	this.is_compact   = function ( )
	{   if ( m_arItems.length > 1 ) m_bCompactOnEmpty = false;
		return m_bCompactOnEmpty; 
	}
	
	this.eventhandle  = eventhandle;
	this.setident     = function ( ident ) 
	{   var p = ident.lastIndexOf( '_');
	    if ( p < 0 || p != (ident.length-1))
		     ident += "_";
	    m_ident = ident; 
	}
	this.getident     = function ( ) { return m_ident; }
	this.setdivid     = function ( divId ) { m_divId = divId; }
	this.getdivid     = function ( ) { return m_divId; }
	this.helper       = function ( ) { return m_visihlp; }
	this.isNavigation = isNavigation;
	this.getnavid     = getnavid;
	this.addObj       = addObj;
	this.addItem      = addItem;
	this.itemsCount   = function ( ){ return m_arItems.length; }
	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.remAll     = function( ) { m_arItems = new Array( ); }
    this.remItem    = remItem;
    this.findItem   = findItem;
	
	this.addEvent     = function( ev_name, eventid )
	{   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.eventid = eventid;
		m_arEvt.push( ev );
	}
    function findItem( sText, equalence )
    {   var s2 = m_visihlp.trim( sText.replace(/"/g," " ));//rem whitespaces and quots
        for ( var i = 0; i < m_arItems.length; i++ )
        {   var s1 = m_visihlp.trim( m_arItems[i].title.replace(/"/g," " ) );//rem whitespaces and quots
            if ( equalence == false )
            {   if ( s2.indexOf( s1) >= 0  )
		             return m_arItems[i];
            }
            else
            {   if ( s1 == s2 )
		             return m_arItems[i];
		    }
        }
        return null;
    }
    function remItem ( sText )
    {   for ( var i = 0; i < m_arItems.length; i++ )
        {   if ( m_arItems[i].title == sText )
            {   var obj = m_arItems.splice( i,1);
		        return obj;
		    }
        }
        return null;
    }
	function addObj  ( item )
	{   if ( m_bAllowDblItm == false )
	    {   for ( var i = 0; i < m_arItems.length; i++ )
			{   if ( m_arItems[i].title == item.title )
					 return;
			}
		}
		m_arItems.push( item );
	}
	function addItem ( sLink, sText, sId, sImage, sImgAlt )
	{   var sImage  = ( sImage  = 'undefined' )?"":sImage;
	    var sImgAlt = ( sImgAlt = 'undefined' )?"":sImgAlt;
	    
	    if ( m_bAllowDblItm == false )
	    {   for ( var i = 0; i < m_arItems.length; i++ )
			{   if ( m_arItems[i].title == sText )
					 return;
			}
		}
	    var sId    = ( sId == 'undefined' )?(m_arItems.length+1):sId;
        var obj    = new Object( );
	    obj.id     = m_arItems.length+1;
		obj.link   = sLink;
		obj.title  = sText;
		obj.numid  = sId;
		obj.image  = sImage;
		obj.alttxt = sImgAlt;
	    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( event )
	{   var e = event || window.event;
		if ( !e ) return null;

		var evtobj = new Object( );
		for ( var i = 0; i < m_arEvt.length; i++ )
		{   if ( e.type == m_arEvt[i].name )
			{   evtobj.eventid   = m_arEvt[i].eventid;
				evtobj.target = m_visihlp.getEventTarget( e );
				evtobj.obj    = (evtobj.target)?isNavigation( evtobj.target ):null;
				evtobj.e      = e;
			    return evtobj;
			}
		}
	    return null;
	}
	function getnavid  ( navobj, navname )
	{   if ( navname == undefined ) navname = m_ident;
	    var ipos1   = navobj.id.indexOf( navname ) + navname.length;
		var ipos2   = navobj.id.indexOf( '_',ipos1 );
		if ( ipos2 == -1 ) ipos2 = navobj.id.length; 
		var currid = parseInt(navobj.id.substr( ipos1,ipos2),10);
		return currid;
	}
}
