var pageX, pageY;
xAddEventListener(document, 'mousemove', setMousePosition, false);
function setMousePosition(ev)
{
	var e = new xEvent(ev);
	pageX = e.pageX;
	pageY = e.pageY;
}

/*window.onload = function()
{
}*/
var onMouseoverMenu1A_reg = new Array(0);
function onMouseoverMenu1A(trig, menu)
{
	if ( !(trig in onMouseoverMenu1A_reg) ) {
		onMouseoverMenu1A_reg[trig] = new xMenu1A( trig, menu, -5, 500);
	}
	if ( onMouseoverMenu1A_reg[trig].onOpen() ) {
		xAddEventListener(document, 'mousemove', onMousemove, false);
	}
	
	function onMousemove(ev)
	{
		if ( onMouseoverMenu1A_reg[trig].onClose() ) {
			xRemoveEventListener(document, 'mousemove', onMousemove, false);
		}
	}
}

function xMenu1A(triggerId, menuId, mouseMargin, slideTime)
{
	this.mouseMargin = mouseMargin;
	this.slideTime = slideTime;
	this.menuId = menuId;
	this.isOpen = false;
	this.trg = xGetElementById(triggerId);
	this.mnu = xGetElementById(menuId);
	this.emptybox = xCreateElement('div');
	xWidth(this.emptybox, xWidth(this.mnu));
	xHeight(this.emptybox, xHeight(this.mnu));
	xHide(this.emptybox);

	if (this.trg && this.mnu) {
		xHide(this.mnu);
	}
	xMenu1A.prototype.onOpen =	function ()
	{
		if (!this.isOpen) {
			xParent(this.trg,true).insertBefore(this.emptybox, this.mnu);
			xShow(this.mnu);
			xWidth(this.mnu,xWidth(this.trg));
			xMoveTo(this.mnu, xOffsetLeft(this.trg), xOffsetTop(this.trg)+xHeight(this.trg)*3);
			xSlideTo(this.mnu, xOffsetLeft(this.trg), xOffsetTop(this.trg)+xHeight(this.trg), this.slideTime);
			this.isOpen = true;
			return true;
		}
		return false;
	}
	xMenu1A.prototype.onClose =	function ()
	{
		if ( this.isOpen && !xHasPoint(this.trg, pageX, pageY, this.mouseMargin) && !xHasPoint(this.mnu, pageX, pageY, this.mouseMargin) && !(xGetElementById('popdescriptionid')&&xHasPoint('popdescriptionid',pageX,pageY,this.mouseMargin)) ) {
			xSlideTo(this.mnu, xOffsetLeft(this.trg), xOffsetTop(this.trg)+xHeight(this.trg)*4, this.slideTime);
			setTimeout("xHide('" + this.menuId + "')", this.slideTime);
			xParent(this.trg,true).removeChild(this.emptybox);
			this.isOpen = false;
			return true;
		}
		return false;
	}
} // end xMenu1A

var ModifyOpacity_objs = new Array(0);
var SmoothGallery_objs = new Array(0);
function onMouseoverArticle(id)
{
	if ( !(id in ModifyOpacity_objs) ) {
		ModifyOpacity_objs[id] = new ModifyOpacity(id);
	}
	
	if ( ModifyOpacity_objs[id].onOpen() ) {
		xAddEventListener(document, 'mousemove', onMousemove, false);
	}
	if ( !(id in SmoothGallery_objs) ) {
		xGetElementsByTagName();//bug workaround..
		var mgd = xGetElementsByClassName('myGalleryData', xGetElementById(id));
		if ( mgd.length > 0 ) {
			var reg_endmark = new RegExp(/Flickr\'s Slide Show/i);
			if ( reg_endmark.test(xInnerHtml(id)) ) {
				xInnerHtml( mgd[0], xInnerHtml(mgd[0]).replace(/<!-- | -->/g, '') );
				SmoothGallery_objs[id] = new gallery($(mgd[0].id), {timed:false,thumbSpacing:10,fadeDuration:500,delay:3000});
			}
		}
	}
	function onMousemove(ev)
	{
		if ( ModifyOpacity_objs[id].onClose(ev) ) {
			xRemoveEventListener(document, 'mousemove', onMousemove, false);
			if ( SmoothGallery_objs[id] ) {
			}
		}
	}
}

function ModifyOpacity(id)
{
	this.id = id;
	this.o = 0.2;
	this.interval = 25;//ms
	this.tt = 1000;
	this.toid = new Array(0);
	this.obj = xGetElementById(id);
	this.display = false;
	if ( !xHasPoint(this.obj,pageX,pageY) ) {
		xOpacity( this.obj, this.o );
	}
	ModifyOpacity.prototype.onOpen = function ()
	{
		while ( this.toid.length ) {
			clearTimeout(this.toid.pop());
		}
		if ( this.display == false ) {
			xOpacity( this.obj, 1 );
			this.display = true;
			return true;
		}
		return false;
	}
	ModifyOpacity.prototype.onClose = function (ev)
	{
		var e = new xEvent(ev);
		if ( !xHasPoint( this.obj, e.pageX, e.pageY ) ) {
			this.display = false;
			for (i=1;i*this.interval<this.tt;i++) {
				this.toid.push(setTimeout('ModifyOpacity_loop("'+this.id+'",'+this.o+','+this.interval+','+this.tt+')', i*this.interval));
			}
			return true;
		}
		return false;
	}
}
function ModifyOpacity_loop(id,o,interval,tt)
{
	xOpacity( xGetElementById(id), xOpacity(xGetElementById(id))-(1-o)/(tt/interval) );
}
