var bEContrStyles = new Array();
bEContrStyles[0] = loadStyle( "barMenu.css", ".control0" );
bEContrStyles[1] = loadStyle( "barMenu.css", ".control1" );

var SinglebEContrStyles = new Array();
SinglebEContrStyles[0] = loadStyle( "barMenu.css", ".smcontrol0" );
SinglebEContrStyles[1] = loadStyle( "barMenu.css", ".smcontrol1" );

var BarElement =
function( x, parent )
{
  this.parent = parent;

  this.pop = null;
  this.parameter = null;
  this.navmenu = parent.navmenu[x][0]
  this.ready = false;

  this.glnk = null;  // <a> will be created later
  this.nlnk = null;  // <div>
  this.posi = null;  // position (shadow image)
  
  if( parent.isSingle )
    this.controlStyle = SinglebEContrStyles;
  else
    this.controlStyle = bEContrStyles;
}

BarElement.prototype = 
{
  request: function()
  {
    this.parent.activate( this );
  },
  
  openfly: function()
  {
	  this.clrtopic( 1 );

    this.pop.parameter = this.parameter;
    if( this.parent.isSingle )
      this.moveit( this.pop.flym, 1, 1, -3 ); // set in place popmenu (hidden now)     
	  this.pop.popfly();
  },
  
  closefly: function()
  {
	  this.clrtopic( 0 );
	  this.pop.closefly();
  },
   
  clrtopic: function( i ) // 1 - fire; 0 - unset
  {
 	  this.nlnk.style.borderColor = this.controlStyle[i].borderColor;
    this.nlnk.style.backgroundColor = this.controlStyle[i].backgroundColor;
	  this.nlnk.style.color = this.controlStyle[i].color;
	  this.glnk.style.textDecoration = this.controlStyle[i].textDecoration;
  },
  
  moveit: function( object, topBottom, xoff, yoff)  
  {
	  var plft, ptop;
	  var goalObj = this.posi; //this.parent.posi[origin];
//	  if( goalObj.offsetLeft >= 0 )
//	  {
//		  plft = goalObj.offsetLeft;
//		  ptop = goalObj.offsetTop;
//		  var parr = goalObj.offsetParent;
//		  while( parr != null && parr.style.position != 'relative' )
//		  {
//        alert( "offset Parent " + parr.id + " offsetLeft=" + parr.offsetLeft + " offsetTop=" + parr.offsetTop + " position: " + parr.style.position );
//		    plft = plft + parr.offsetLeft;
//			  ptop = ptop + parr.offsetTop;
//			  parr = parr.offsetParent;
//		  }
//	  }
//	  alert( plft + ' ' + ptop + ' || ' + Position.cumulativeOffset(goalObj)[0] + ' ' + Position.cumulativeOffset(goalObj)[1] )
    var position = Position.cumulativeOffset(goalObj);
	plft = position[0] + xoff;
	ptop = position[1] + yoff + ((topBottom==0)?0:goalObj.offsetHeight);
    
	object.style.left = plft + 'px';
	object.style.top = ptop + 'px';
    return new Array(plft,ptop);
  },
  
  create: function() //( bar_id, pop_id, parameter )
  {
    var parDoc = document; // TO DO: get real parent's document (it can be iframe for example)

    var be = this.nlnk = new Element('div', {'class':'barmenuitem'});
    
    Event.observe( be, 'mouseover', this.request.bindAsEventListener(this) );
    Event.observe( be, 'click', new Function( 'event', this.navmenu[3] ) );

    var a = this.glnk = new Element('a', {href:'javascript:void(0)'});
    a.title = this.navmenu[1];
    a.innerHTML = this.navmenu[0];
    
    be.appendChild( a );
    parDoc.body.appendChild( be );
  },
  
  shadow: function()
  {
    var parDoc = document; // TO DO: get real parent's document (it can be iframe for example)

    var be = this.posi = parDoc.createElement('div');
    be.className = 'barmenuitemZ';
    be.innerHTML = this.navmenu[0];
    return be;
  },
  
  prepmenus: function()
  {
    var t =	this.moveit( this.nlnk, 0, -1 , 1 ); // set in place barMenuelement itself
	this.nlnk.style.visibility = "visible";

    if( ! this.parent.isSingle )														 // for bar menu item :
	{
    	this.moveit( this.pop.flym, 1, 1, -3 ); // set in place popmenu (hidden now)     
	}

	this.clrtopic(0);
	this.ready = true;
//    if( ! this.parent.isSingle )														 // for bar menu item :
	{
		this.pop.setWidth( this.nlnk.offsetWidth );
    }
  }
}

function loadStyle( nameCSS, selector )
{
  var isIE5=(document.all && document.getElementById);
  var css, csss = document.styleSheets, rules, stylerule;
  
  for( var i=0; i < csss.length; i++)
  {
    var str = new String( csss[i].href );
    if( str.indexOf( nameCSS ) >= 0 )
    { 
      css = csss[i];
      break
    }
  }
  
  if(isIE5)
  {
    rules = css.rules;
  }
  else
  {
    rules = css.cssRules;    
  }
  
  for( i=0; i < rules.length; i++)
  {
//    alert( 'i=' + i + ' selector=' + rules[i].selectorText );
    var rule = rules[i];
    if( rule.selectorText )
      if( rule.selectorText==selector )
      { 
        stylerule = rule.style;
        break
      }
  }
  return stylerule;
}
		