// JavaScript Document
// Author:      Ljubomir Šokic v1.1
// Modify date: 14.12.2009.
var hms_menuTimerID;

hms_menuitem.Registry=[];
hms_menuitem.IDGen=0;
function hms_menuitem(caption, href, class_name){
	// Caption
	// HRef
	// class_name
	this.id=hms_menuitem.IDGen++;
	hms_menuitem.Registry[this.id]=this;
	this.caption = caption;
	this.href = href;
	this.submenu = null;
	this.belongsTo = null;
	this.htmlEl=document.createElement('DIV');
	this.htmlEl.id=this.id;
	this.class_name = class_name;
	this.class_name_hover = class_name + '_hover';
	if (this.class_name == undefined || this.class_name == '')
	  this.htmlEl.className='hms_menuitem';
	else
	  this.htmlEl.className=this.class_name;

	this.htmlEl.innerHTML=caption+'&nbsp;&nbsp;&nbsp;';
	this.htmlEl.onclick=this.onMouseClick;	
	this.htmlEl.onmouseover=this.onMouseOver;
	this.htmlEl.onmouseout=this.onMouseOut;
	//document.body.appendChild(this.htmlEl);
}

// Funkcija za dodeljivanje podmenija za ovu stavku menija
// x i y koordinate menija se postavljaju tako da se podmeni
// prikaze desno od stavke
hms_menuitem.prototype.assignSubmenu=function(menu){
	this.submenu = menu;
	try{
	  menu.parentMenu = this;
	}catch(e){
		this.submenu = null;
	}
	var el=this.belongsTo.htmlEl;
    var x=0,y=0;
	x=el.offsetLeft+el.offsetWidth;
	y=el.offsetTop+this.htmlEl.offsetTop;
	
    this.htmlEl.className='hms_menuitemS';
	this.submenu.htmlEl.style.top=y+'px';
	this.submenu.htmlEl.style.left=x+'px';
	this.submenu.x=x+"px";
}

hms_menuitem.prototype.removeSubmenu=function(menu){
	try{
	  menu.parentMenu = null;
	}catch(e){
	}
	this.submenu = null;
}

hms_menuitem.prototype.onMouseClick=function(){
	if (hms_menuitem.Registry[this.id].href)
	  location.href=hms_menuitem.Registry[this.id].href;
}

hms_menuitem.prototype.onMouseOver=function(){
	var me = hms_menuitem.Registry[this.id];
	for(var i=0; i<hms_menuitem.Registry.length;i++)
	  if (hms_menuitem.Registry[i].belongsTo == me.belongsTo)
	    hms_menuitem.Registry[i].hideSubmenu();
	if (me.submenu!=null)
	  me.submenu.show();
	if (me.submenu==null){
		if (me.class_name == undefined || me.class_name == '')
	  		me.htmlEl.className='hms_menuitem_hover';
		else
			me.htmlEl.className = me.class_name_hover;
	}
    else
	  me.htmlEl.className='hms_menuitem_hoverS';	
}

hms_menuitem.prototype.onMouseOut=function(){
	var me = hms_menuitem.Registry[this.id];
	if (me.submenu==null)
	{
		if (me.class_name == undefined || me.class_name == '')
	  		me.htmlEl.className='hms_menuitem';
		else
			me.htmlEl.className = me.class_name;	
	}
	else
	  me.htmlEl.className='hms_menuitemS';
}

hms_menuitem.prototype.hideSubmenu=function(){
	if (this.submenu!=null)
	  this.submenu.hide();
}

hms_menu.Registry=[];
hms_menu.IDGen=0;
function hms_menu(){
	this.id=hms_menu.IDGen++;
	hms_menu.Registry[this.id]=this;
	this.attached=null;
	this.x=0+'px';
	this.y=0+'px';
	this.menuItems=[];
	this.parentMenu=null;
	this.htmlEl=document.createElement('DIV');
	this.htmlEl.id=this.id;
	this.htmlEl.style.position='absolute';
	this.htmlEl.style.top='50px';
	this.htmlEl.style.left='50px';
	this.htmlEl.style.zIndex=1000;
	this.htmlEl.style.cursor='pointer';
	this.htmlEl.style.visibility='hidden';
	this.htmlEl.style.border='1px gray solid';
	//this.htmlEl.style.backgroundColor='#316ac5';
	this.htmlEl.className='hms_menu';
 	this.htmlEl.onmouseout=this.OnMouseOut;
	this.htmlEl.onmouseover=this.OnMouseOver;
	document.body.appendChild(this.htmlEl);
}

hms_menu.prototype.addItem=function(menuItem){
	this.menuItems[this.menuItems.length] = menuItem;
	menuItem.belongsTo=this;
	this.htmlEl.appendChild(menuItem.htmlEl);
}

hms_menu.prototype.show=function(x,y){
	//alert('So far so good');
	//this.htmlEl.style.top=y+'px';
	//this.htmlEl.style.left=x+'px';
	this.htmlEl.style.visibility='visible';
}

hms_menu.prototype.hide=function(){
	this.htmlEl.style.visibility='hidden';
}

hms_menu.prototype.OnClick=function(){
	for(var i=0; i<hms_menu.Registry.length;i++){
	  if (hms_menu.Registry[i].attached==this.id){
		  hms_menu.Registry[i].show();
	  }else
	    hms_menu.Registry[i].hide();
	}
	window.clearTimeout(hms_menuTimerID);
}

hms_menu.prototype.OnMouseOut=function(){
	hms_menuTimerID=window.setTimeout('hms_menu_hideAll();',500);
}

hms_menu.prototype.OnMouseOver=function(){
	window.clearTimeout(hms_menuTimerID);
}

hms_menu.prototype.attachMenu=function(id){
    var el=(document.all ? document.all(id) : document.getElementById ? document.getElementById(id) : document.layer(id));
	el.style.cursor = 'pointer';
	this.attached=id;
	 var x=0,y=0;
	 for(var cruiser=el;cruiser;cruiser=cruiser.offsetParent){
		y+=cruiser.offsetTop;
		x+=cruiser.offsetLeft;
	}
	y+=el.offsetHeight;
	this.htmlEl.style.top=y+'px';
	this.htmlEl.style.left=x+'px';
	this.x=x+"px";
	this.y=y+"px";
	//el.onclick=this.OnClick;
	el.onmouseover=this.OnClick;
	el.onmouseout=this.OnMouseOut;
}

function hms_menu_hideAll(){
	for(var i=0; i<hms_menu.Registry.length; i++){
		hms_menu.Registry[i].hide();
	}
}

hms_menu.prototype.listItems=function(){
	var lista='';
	for (var i=0;i<this.menuItems.length;i++){
	  lista=lista+' '+this.menuItems[i].caption;
	  if (this.menuItems[i].submenu!=null)
	    lista=lista+' ['+this.menuItems[i].submenu.listItems()+']';
	}
	 return lista;
}
