var cms_util = 
{
	addEventListener: function(el,event,handler)
	{
		if (el.addEventListener)
		{
			el.addEventListener(event,handler,false);
		}
		else if (el.attachEvent)
		{
			el.attachEvent('on' + event,handler);
		}
		else
			el['on' + event] = handler;
	},
	
	epos: function(el)
	{
		var pos = {x: 0, y: 0};
		while(el)
		{
//			alert(el.nodeName + ' ' + el.offsetTop);
			pos.x += el.offsetLeft;
			pos.y += el.offsetTop;
			
			el = el.offsetParent;
		}
		return pos;
	},
	
	
	yTop: function()
	{
		if (self.pageYOffset) 
		{
			return self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop || document.documentElement.scrollLeft )
		{      // Explorer 6 Strict
			return document.documentElement.scrollTop;
		} else if (document.body) 
		{	// all other Explorers
		    return document.body.scrollTop;
		}
	},
	
	
	yLeft: function()
	{
		if (self.pageXOffset) 
		{
			return self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop || document.documentElement.scrollLeft )
		{      // Explorer 6 Strict
			return document.documentElement.scrollLeft;
		} else if (document.body) 
		{	// all other Explorers
		    return document.body.scrollLeft;
		}
	},
	
	yHeight: function()
	{
		return (window.innerHeight || document.documentElement.clientHeight);
	}
	
}


var activeEditor;

function activateEditors()
{
	var images = document.getElementsByTagName('IMG');
	for (var i = 0;i < images.length;i++)
	{
		if (/cmsdot/.test(images[i].className))
		{
			if (images[i].name)
				images[i].onmouseover=iover;
		}
	}
}

function iover(e)
{
	e = e || window.event;
	var pimg = e.target || e.srcElement;
	var ipos = cms_util.epos(pimg);
	var iname = pimg.name
	var eform = document.getElementById('f' + iname);
	if (eform)
	{
		eform.style.display = 'block';

		eform.pos = {left: ipos.x - 8, top: ipos.y - 8};
		var yLeft = cms_util.yLeft();
		var yTop = cms_util.yTop();
		if (eform.pos.left < yLeft + 4)
			eform.pos.left = yLeft + 4;
		if (eform.pos.top < yTop + 4)
			eform.pos.top = yTop + 4;
			
		eform.pos.right = eform.pos.left + eform.clientWidth;			
		eform.pos.bottom = eform.pos.top + eform.clientHeight;		
		
		var b = yTop + cms_util.yHeight();
		
		if (eform.pos.bottom > b)
		{
			eform.pos.top -= eform.pos.bottom - b;
			eform.pos.bottom -= eform.pos.bottom - b;
		}
			
		eform.style.left = eform.pos.left + 'px';
		eform.style.top = eform.pos.top + 'px';
		
		pimg.cmsform = eform;
		if (activeEditor)
			activeEditor.style.display = 'none';
		activeEditor = eform;
		document.body.onmousemove = imm;
	}
}


function imm(e)
{
	e = e || window.event;

	if (activeEditor)
	{
		var X = e.clientX + cms_util.yLeft();
		var Y = e.clientY + cms_util.yTop();
		if (X < activeEditor.pos.left || Y < activeEditor.pos.top ||
			X > activeEditor.pos.right || Y > activeEditor.pos.bottom)
		{
			activeEditor.style.display = 'none';
			activeEditor = null;
			document.body.onmousemove = null;
		}
	}
}


cms_util.addEventListener(window,'load',activateEditors);

