// $Id$

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf('?'))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

var popupcontroller = {
	VERTOFFSET: 3,
	HORIZOFFSET: 3,
	ids: {
		_ids: [],
		length: 0,

		get: function(index)
		{
			return this._ids[index];
		},

		add: function(id)
		{
			this._ids.push(id);
			this.length = this._ids.length;
		},

		remove: function(id)
		{
            for (i=0; i < this._ids.length; i++)
           	{
                if (this._ids[i] == id)
                {
                    this._ids.splice(i,1);
                    this.length = this._ids.length;
                }
            }
		},

		getbelow: function(id)
		{
			var found = false;
			var result = [];
			for (i=0; i < this._ids.length; i++)
			{
				if (found)
					result.push(this._ids[i])
				if (this._ids[i] == id)
					found = true 
			}
			return result;
		},
		
		clear: function()
		{
			this._ids = [];
			this.length = 0;
		}
	},
	timeoutid: null,

	onmouseover: function(event, refelement, id, position, parentmenu)
	{
		if (event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
		if (this.timeoutid)
			this.cleartimeout();
		if (parentmenu)
		{
			child = this.ids.getbelow(parentmenu);
			if (child.length > 0)
			{
				var childelem = document.getElementById(child[0]); 
				if (childelem)
					childelem.style.visibility = 'hidden';
				this.ids.remove(child[0]);
			}
		} else {
			this.ontimeout();
		}
		var curleft = curtop = 0;
		var obj = refelement;
		if (obj.offsetParent)
		{
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent)
			{
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			}
		}
		var popup = document.getElementById(id);
		if (popup)
		{
			if (position == 'below')
			{
				popup.style.left = curleft + 'px';
				popup.style.top = curtop + refelement.offsetHeight + this.VERTOFFSET + 'px';
			} else if (position == 'right') {
				popup.style.left = curleft + refelement.offsetWidth + this.HORIZOFFSET + 'px';
				popup.style.top = curtop + 'px';
			}
			popup.style.visibility = 'visible';
			this.ids.add(id);
		}
	},
	
	onmouseout: function(event, delay)
	{
		if (event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
		this.timeoutid = window.setTimeout("popupcontroller.ontimeout()", delay);
	},
	
	ontimeout: function()
	{
		for (i=0; i < this.ids.length; i++)
		{
			var elem = document.getElementById(this.ids.get(i));
			if (elem) 
				elem.style.visibility = 'hidden';
		}
		this.ids.clear();
	},
	
	cleartimeout: function()
	{
		clearTimeout(this.timeoutid);
	}
}
