// JavaScript Document
// code by Azer Manafov (azerman[at]hotmail[dot]com)


var DEF_NAV_NAME     = 'lmenuitem';

function clsLeftNavigation( divId, visihlp,styleSheet )
{   
    var m_visihlp      = (visihlp == 'undefined')?new clsViewHelper():visihlp;
    var m_base         = new clsBaseNavigate( divId, visihlp, null );
	var m_styleSheet   = (styleSheet)?styleSheet:null;
	var m_type         = 'list';
	var m_this         = this;
	var m_tmmonitor    = new timerAction( null, tmMonitor, tmMonitor );

	// m_prop.bkgimage
    var m_prop         =
	{
		imgactive   : 'images/blank.gif',
		imgnormal   : 'images/blank.gif',
		imgover     : 'images/blank.gif',
		imgwidth    : 20,
		imgheight   : 20,
		imgcolwidth : 0,
		colheight   : 0,
		bkgimgovr   : 'images/blank.gif',
		bkgimgout   : 'images/blank.gif',
		bkgimage    : 'images/blank.gif',
		textcolorovr: '#c0c0c0',
		textcolorout: '#000000'
	};
	var m_imgset = 
	{   lt: 'images/buttons/pan1_lt.png', 
		top:'images/buttons/pan1_top.png', 
		rt: 'images/buttons/pan1_rt.png',
		lef:'images/buttons/pan1_lf.png',
		ct: 'images/buttons/pan1_ct.png',
		rig:'images/buttons/pan1_rg.png',
		lb: 'images/buttons/pan1_lb.png', 
		bot:'images/buttons/pan1_bot.png', 
		rb: 'images/buttons/pan1_rb.png'
	};
	var m_imgset_of = 
	{   lt: '', 
		top:'', 
		rt: '',
		lef:'',
		ct: '',
		rig:'',
		lb: '', 
		bot:'', 
		rb: ''
	};
    var m_pane_objs    = new Array( );
	var m_fontstyle    =  new Object( );
	this.setPannelImgs = function( imgset, bOnImages )
	{   if ( bOnImages == undefined ) bOnImages = true;
	    if ( bOnImages == true )
		{   for ( var i in imgset )
		      if ( imgset[i] != undefined ) 
			       m_imgset[i] = imgset[i];
		}
	    if ( bOnImages == false )
		{   for ( var i in imgset )
		    {   if ( imgset[i] != undefined ) 
			       m_imgset_of[i] = imgset[i];
			}
		}
	}
    this.gettype       = function( ) { return m_type; }
	this.getdivid      = function( ) { return m_base.getdivid();}
	this.setdivid      = function( divId ) { m_base.setdivid( divId );}

	this.addItem       = addItem;
	this.pannel        = pannel;
	this.create        = create;
	this.fontStyle     = fontStyle;

	fontStyle( 'color','#000000','font-family','Arial','font-size','12px','font-weight','bold');
	
	m_base.addEvent( 'mouseover', true );
	m_base.addEvent( 'mouseout',  false);
	
	m_visihlp.registerHelper( mnuMouseEvent );

	this.remAll        = function(){ m_base.remAll( ); }
	this.findItem      = function( sText, equalence ) { return m_base.findItem( sText, equalence ); }
    this.addObj        = function( item ) { m_base.addObj( item ); }
	
	function tmMonitor( timerState, param )
	{   switch( timerState )
		{	case TM_STATE_START: break;
			case TM_STATE_RUN:
				var ok = true;
		        for ( var i = 0; i < m_base.itemsCount(); i++ )
		        {   var id  = m_base.getident() + ( i+1 );
				    if ( !$(id))
					{   ok = false;
						break;
					}
				}
				if ( ok == true ) m_tmmonitor.stoptm( );
				break;
			case TM_STATE_STOP:
				if ( m_this.gettype( ) == 'pannel') pannelbox( m_imgset );
			    break;
		}
	}
	
	
	
    this.resetFont  = function( ) { 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 addItem ( sLink, sText )
    {   m_base.addItem ( sLink, sText );
    }
    this.setProperties = function ( prop )
	{   for ( var i in prop )
		      m_prop[i] = prop[i];
	}
	function outStyle( )
	{   m_prop.imgcolwidth = m_prop.imgwidth  + 2;
		m_prop.colheight   = m_prop.imgheight + 2;
		
		var s = '';
		m_styleSheet = 'leftmenu';
        s += '<style type=\"text/css\">';
        s += 'table.leftmenu { width: 100%; }' ;
        s += 'table.leftmenu td, table.leftmenu td.icn ';
		s += '{ text-align: center; height:'+m_prop.colheight+'px;  background-position:center center; vertical-align: middle; }';
        s += 'table.leftmenu td';
		s += '{  background-image: url('+m_prop.bkgimgout+'); background-repeate:repeate;}';
        s += 'table.leftmenu td.icn'
		s += '{ background-image: url('+m_prop.bkgimage+');  padding-left: 0px; width:'+ m_prop.imgcolwidth +'px; }';
		
		
        s += 'table.leftmenu img    { border:0px; text-align:center; vertical-align:middle; padding-left:0px; width:'+m_prop.imgwidth+'px; height:'+m_prop.imgheight+'px;}';
			var sSpan  = 'table.leftmenu td span, table.leftmenu td a, table.leftmenu td a:link, table.leftmenu td a:visited, table.leftmenu td a:hover, table.leftmenu td a:active{ ';
			if ( m_fontstyle['color'] == undefined )
			     m_fontstyle['color'] = '#000000';
			for ( var key in m_fontstyle)
			{
				sSpan += key + ':' + m_fontstyle[key] + '; ';
			}

		sSpan +=  '} \n';
        s +=  sSpan;//'table.leftmenu span      { color:#000000; }');
        s += 'table.leftmenu td a, table.leftmenu td a:link, table.leftmenu td a:visited, table.leftmenu td a:hover, table.leftmenu td a:active { text-decoration: none; }';
        s += 'table.leftmenu td a { color:' + m_fontstyle['color'] + ';}';
		s += '</style>';
		return s;
	}
	function build   ( activeId )
	{   var s='';
		s += '<TABLE id="'+m_base.getident()+'" width="100%" class="' + m_styleSheet + '" cellpadding="0" cellspacing="2" border="0">\n';
		s += '<TBODY>';
		for ( var i = 0; i < m_base.itemsCount(); i++ )
		{
			var id  = m_base.getident() + ( i+1 );
			var itm = m_base.getitem(i); 
			if ( itm.id != activeId )
			     s += '<TR><TD id="'+id+'_01" class="icn"><A href="' + itm.link +'"><IMG src="'+m_prop.imgnormal + '"></A></TD>\n';
			else s += '<TR><TD id="'+id+'_01" class="icn"><A href="' + itm.link +'"><IMG src="'+m_prop.imgactive + '"></A></TD>\n';
			s += '    <TD id=\"'+id+'_02\">\n'
			s += '    <SPAN><A href="' + itm.link +'">'+itm.title+'</A></SPAN></TD></TR>\n';
		}
		s += '</TBODY></TABLE>\n';
		return s; 
	}
	function correctid( idpref )
	{   var c = "_";
	    var p = idpref.lastIndexOf( '_');
	    if ( p == (idpref.length-1))
		     idpref = idpref.substr(0,idpref.length-1);
	    var o = m_visihlp.getElement( idpref+c);
		var n = 1;
		while( o )
		{   idpref = idpref + (n++);
			o = m_visihlp.getElement( idpref + c );
		}
		return idpref;
	}
	function pannel  ( activeId,iHtmRet )
	{   var iHtmRet = (iHtmRet != 'undefined')?iHtmRet:HTM_WRT;
	    m_base.setident   ( correctid( DEF_NAV_NAME ));
	    m_base.setactiveid( activeId );		
	    var div        = m_visihlp.getElement( m_base.getdivid() );
	    if ( !div ) return;
		
		var p_style = '';
        for ( var key in m_fontstyle)
        {
            p_style += key + ':' + m_fontstyle[key] + '; ';
        }

		var s   = '';
		for ( var i = 0; i < m_base.itemsCount(); i++ )
		{   var id  = m_base.getident() + ( i+1 );
		    var itm = m_base.getitem(i);
			s += '<a href="' + itm.link + '" onclick=\'visi.goToUrl( "' + itm.link + '"); return false;\'"> ';
		    s += '<div id="' + id + '" style="display:block; margin:3px 0px 3px 0px;">';
			s += '<p style="' + p_style + 'text-align:center;">&nbsp;' + itm.title + '&nbsp;</p></div></a>';
		}

		switch( iHtmRet )
		{   case HTM_RET: return s;
			case HTM_INS: div.innerHTML = s; break;
			case HTM_WRT:
			default:    document.write( s );  break;
		}
		m_type  = 'pannel';
//        m_tmmonitor.setBreakTime( 10000 );
	    m_tmmonitor.starttm     ( );		

	}
	function mouseaction( id,  op )
	{   var blk = m_pane_objs[id-1];
		switch(op)
		{
			case 0: blk.replaceimgs(m_imgset);    break;
			case 1: blk.replaceimgs(m_imgset_of); break;
		}
	}
	function pannelbox( imgset,width )
	{   if ( width == undefined )
		{   var rc  = m_visihlp.getObjectRect( m_base.getdivid() );
		    width   = rc.width-10;
		}
	
	    for ( var i = 0; i < m_base.itemsCount(); i++ )
		{   var id  = m_base.getident() + ( i+1 );
		    var o   = $(id);
			var s   = o.innerHTML;
			var blk = new clsMsgBox( id, "btn_"+id+"Id", visi );
			blk.setimgs   ( imgset );
			blk.setcontent( s );
			blk.setprop   ( {minwidth:width, imgsize:{width:m_prop.imgwidth,height:m_prop.imgheight}});
			blk.create    ( );
			m_pane_objs.push( blk );
		}
	}
	function create  ( activeId, iHtmRet )
	{	
		var iHtmRet = (iHtmRet != 'undefined')?iHtmRet:HTM_WRT;
		
	    m_base.setident   ( correctid( DEF_NAV_NAME ));
	    m_base.setactiveid( activeId );
	    
	    var styleSheet = ( m_styleSheet )?null:outStyle( );
	    var div        = m_visihlp.getElement( m_base.getdivid() );
	    if ( !div ) return;
		switch( iHtmRet )
		{
			case HTM_RET: 
			    m_visihlp.appendStyle( styleSheet ); 
			    return build(  m_base.getactiveid() );
			case HTM_INS: 
			    m_visihlp.appendStyle( styleSheet ); 
			    div.innerHTML = build(  m_base.getactiveid() ); 
			    break;
			case HTM_WRT:
			default:
			    document.write( "<STYLE type=\"text/css\">\n" +  styleSheet + "</STYLE>\n");
			    document.write( build(  m_base.getactiveid() ));  
			    break;
		}
	}
	
	function mnuMouseEvent(e)
	{
	    var evt    = m_base.eventhandle( e );
		if ( !evt ) return;
		if ( !evt.obj ) return;
		if  ( evt.obj.tagName != "TD") return;	
        var currid = m_base.getnavid( evt.obj );

        var s      = m_base.getident( ) + ( currid );
		
        if ( m_this.gettype() == 'pannel' )
		{
			if ( m_imgset_of.lt )// if alternative set defined
			{   if ( evt.eventid == true )//mouseover
					 mouseaction( currid,1);
				else mouseaction( currid,0);
			}
			return;
		}
		
		
		var ob1    = m_visihlp.getElement( s +'_01').childNodes[0].childNodes[0];// go image tag
		var ob2    = m_visihlp.getElement( s +'_02');
		var ob3    = ob2.getElementsByTagName( 'A')[0];

		if ( document.all||document.getElementById )
		{   

		    if ( evt.eventid == true )//mouseover
		    {   
			
			    ob1.src = m_prop.imgover;
			    m_visihlp.setStyleA( ob3,'color',m_prop.textcolorovr );
                m_visihlp.setStyleA( ob2,'background-image','url(' + m_prop.bkgimgovr + ')'); 			
			}
			else
			{   if ( currid ==  m_base.getactiveid())
			         ob1.src = m_prop.imgactive;
			    else ob1.src = m_prop.imgnormal;
			    m_visihlp.setStyleA( ob3,'color',m_prop.textcolorout);
                m_visihlp.setStyleA( ob2,'background-image','url(' + m_prop.bkgimgout + ')'); 			
			}
		}
//		m_base.setactiveid(currid);
	}
};