function MoveElem(id)
{
	var ob = document.getElementById(id);
	if (!ob) return;
	
	var isPressed = false;
	var xstart = -1000;
	var ystart = -1000;
	var xstep = -1000;
	var ystep = -1000;

	ob.onmousedown = function(evt)
	{
		isPressed = true;
	  if (!evt)  {evt = window.event; }
	  xstart = evt.clientX;
	  ystart = evt.clientY;		
	}

	ob.onmouseup = function(evt)
	{
		isPressed = false;	
	}

	ob.onmouseout = function(evt)
	{
		//isPressed = false;	
	}

	ob.onmousemove = function(evt)
	{			
		if (!isPressed) return;
		
		var x = 0, y =0;
	  if (!evt)  {evt = window.event; }

	  xstep = evt.clientX-xstart;
	  ystep = evt.clientY-ystart;		
	  xstart = evt.clientX;
	  ystart = evt.clientY;		
		
		root = document['body'];
		var scx = root.scrollLeft || window.scrollX || 0;
		var scy = root.scrollTop || window.scrollY || 0;		

		var offx = evt.clientX-ob.offsetLeft;
		var offy = evt.clientY-ob.offsetTop;
		
		//x += evt.clientX-offx;
		//y += evt.clientY-offy+scy;
		x += ob.offsetLeft+xstep;
		y += ob.offsetTop+ystep;
		
 		ob.style.left = x+"px";
		ob.style.top = y+"px";
	}
	
}

/// ------------------------------------------------------------------


function Menu(idParent, idChild)
{	
	var ob = document.getElementById(idParent);
	if (!ob) return;
	
	var id1 = idParent;
	var id2  = idChild;

	ob.onmouseover = function(ev)
	{			
		ob = document.getElementById(id2);			
		ob.style.visibility = "visible";
		ob = document.getElementById(id1);			
		ob.style.color = "red";
		ob.style.backgroundColor = "gainsboro";
	}
	
	ob.onmouseout  = function(ev)
	{
		ob = document.getElementById(id2);			
		ob.style.visibility = "hidden";
		ob = document.getElementById(id1);			
		ob.style.backgroundColor = "";
	}

}


/// ------------------------------------------------------------------

function HighLight(id)
{
	this.ob = document.getElementById(id);
	if (!this.ob) return;
	
	this.ob.onmouseover = function(ev)
	{
		var id;
		if (agent == Agent.Explorer)
			id = window.event.srcElement.id;
		else
			id = ev.target.id;
			
		ob = document.getElementById(id);			
		ob.style.backgroundColor = "yellow";
		ob.style.cursor = "crosshair";
		ob.style.borderLeft = "dimgray 1px solid";
		ob.style.bordeTop =  "dimgray 1px solid";
		ob.style.borderRight = "gainsboro 1px solid";
		ob.style.borderBottom =  "gainsboro 1px solid";

		//var h = ob.style.height;
		ob.style.paddingTop= "8px";
		ob.style.paddingBottom = "8px";
	}
	
	this.ob.onmouseout  = function(ev)
	{
		var id;
		if (agent == Agent.Explorer)
			id = window.event.srcElement.id;
		else
			id = ev.target.id;
			
		ob = document.getElementById(id);			
		ob.style.backgroundColor = "";
		ob.style.cursor = "auto";
		ob.style.borderLeft = "gainsboro 1px solid";
		ob.style.bordeTop =  "gainsboro 1px solid";
		ob.style.borderRight = "dimgray 1px solid";
		ob.style.borderBottom =  "dimgray 1px solid";
		//int h = ob.style.height;
		ob.style.paddingTop = "2px";
		ob.style.paddingBottom = "1px";
	}
	
}


/// ------------------------------------------------------------------

Element = {};

Element.getOpacity = function(element)
{
  var opacity;
  if (opacity = element.style['opacity'])
    return parseFloat(opacity);  
  if (opacity = (element.style['filter'] || '').match(/alpha\(opacity=(.*)\)/))  
    if(opacity[1]) return parseFloat(opacity[1]) / 100;  
  return 1.0;  
}

Element.setOpacity = function(element, value)
{  
	if (agent == Agent.Explorer)
	{
		val = value * 100;
		var st = "progid:DXImageTransform.Microsoft.Alpha(opacity="+val+")";
		element.style['filter'] = st;
	}
	else
	{
		element.style['MozOpacity'] = value;
	}
}  

/// ------------------------------------------------------------------


function Fade(id, min)
{
	this.id = id;
	this.min = min;
	this.elm = document.getElementById(id);
	if (!this.elm) return;
	
	this.delay = 50;
	this.inc = 0.02;
	this.opacity = 1;
	this.gRef ="nx"
	eval(this.gRef+"=this");
	Element.setOpacity(this.elm, this.opacity);	
	
	var self = this;
	this.elm.onmouseover = function()
	{
		if (self.timerID) return;
		
		self.timerID = setInterval(self.gRef + ".FadeOut()", self.delay);
	}
	
	this.timerID = setInterval(this.gRef + ".FadeOut()", this.delay);
}


Fade.prototype.FadeIn = function()
{
	Element.setOpacity(this.elm, this.opacity);	
	this.opacity += this.inc;
	this.elm.style.visibility = "visible";

	if (this.opacity >= 1)
	{
		clearInterval(this.timerID);
		this.opacity = 1;
		this.timerID = null;
	}	
}

Fade.prototype.FadeOut = function()
{
	Element.setOpacity(this.elm, this.opacity);	
	this.opacity -= this.inc;
	this.elm.style.visibility = "visible";

	if (this.opacity <= this.min)
	{
		clearInterval(this.timerID);
		this.opacity = this.min;
		this.timerID = null;
		this.timerID = setInterval(this.gRef + ".FadeIn()", this.delay);
	}	
}

/// ------------------------------------------------------------------

function Note(idParent, msg, fSize, w, h)
{
	var self = this;
	this.idParent = idParent;
	this.msg = msg;
	this.isRunning = false;
	this.opacity = 0;
	this.delay = 40;
	this.inc = 0.02;
	this.gRef ="nx"
	eval(this.gRef+"=this");
	//alert(this.gRef);

	var ob = document.getElementById(idParent);
	if (!ob) return;
	
	var newDiv = document.createElement('div');
	this.note = newDiv;
	
	newDiv.className = "note";
	newDiv.style.backgroundColor = "yellow";
	newDiv.style.border = "1px solid blue";
  newDiv.style.visibility = 'hidden';
  newDiv.style.position = 'absolute';
  //newDiv.style.height = h+'px';
  newDiv.style.width = w+'px';
  newDiv.style.overflow = 'hidden';
  newDiv.style.padding = "1px";
  newDiv.style.fontSize = fSize+"%";
  newDiv.style.left = "0px";//ob.offsetLeft+"px";
  newDiv.style.top = "0px";//ob.offsetTop+"px";
  
	var txt = document.createElement('p');
	txt.innerHTML = msg;
  newDiv.appendChild(txt);
  
  document.body.appendChild(newDiv);
  ob.onmouseover = function(evt) {self.MouseOver(evt, self)};
  ob.onmouseout = function(evt) {self.MouseOut(evt, self)};
  
	
}

//var NP = Note.prototype;

Note.prototype.MouseOver = function (evt, self)
{
	if (self.isRunning) return;
	
	self.isRunning = true;
	
  if (!evt)  {evt = window.event; }

	if (self.timerID != null)
	{
		clearInterval(self.timerID);
		self.timerID = null;	
	}
   
	var el = (!evt.target) ? evt.srcElement : evt.target;
		
	if (self.timerID == null)
	{
		var ob = document.getElementById(self.idParent);
		var x = 0, y =0, elm = ob;
		while (elm)
		{
			//x += elm.offsetLeft;
			//y += elm.offsetTop;
			elm = elm.offsetParent;
		}
		root = document['body'];
		scx = root.scrollLeft || window.scrollX || 0;
		scy = root.scrollTop || window.scrollY || 0;		
		//x -= self.note.offsetWidth;
		x += evt.clientX;
		y += evt.clientY+scy;
 		self.note.style.left = x+"px";
		self.note.style.top = y+"px";
		self.timerID = setInterval(this.gRef + ".FadeIn()", self.delay);
	}
}

Note.prototype.MouseOut = function (evt, self)
{
	if (self.timerID)
	{
		clearInterval(self.timerID);
		self.timerID = null;
	}
	
	self.isRunning = false;
  
  //if (!evt)  {evt = window.event; }
   
	//var el = (!evt.target) ? evt.srcElement : evt.target;
	self.timerID = setInterval(this.gRef + ".FadeOut()", self.delay);
		
	//Element.setOpacity(self.note, 0);	
	//self.note.style.visibility = "hidden";
}


Note.prototype.FadeIn = function()
{
	Element.setOpacity(this.note, this.opacity);	
	this.opacity += this.inc;
	this.note.style.visibility = "visible";

	if (this.opacity >= 1)
	{
		clearInterval(this.timerID);
		this.opacity = 1;
		this.timerID = null;
	}	
}

Note.prototype.FadeOut = function()
{
	Element.setOpacity(this.note, this.opacity);	
	this.opacity -= this.inc;
	this.note.style.visibility = "visible";

	if (this.opacity <= 0)
	{
		clearInterval(this.timerID);
		this.opacity = 0;
		this.timerID = null;
		this.note.style.visibility = "hidden";
	}	
}


