
function selectRow(id){
	a = xGetElementsByClassName('rowSelected');
	for (i = 0; i < a.length; i++)
		a[i].className = '';
	
	e = xGetElementById(id);
	if (e != null) e.className = 'rowSelected';
}


function selectTile(id){

	a = xGetElementsByClassName('innerTileSelected');
	for (i = 0; i < a.length; i++)
		a[i].className = 'innerTile';
	
	e = xGetElementById(id);
	if (e != null) e.className = 'innerTileSelected';
}

/*

Massselect written by aggelos katharopoulos

it has three callbacks
before , after and notmass

before: gets called before the add is done
after: gets called after the add is done
notmass: is called when we are selecting one and not many

currently there is no add operation and i know ehich are selected by their css class

CAUTION: i have occupied the onclick , onmousemove , onkeydown and onkeyup events of the document object
					if they are needed for any other script they can be found here and must keep backwards compatibility

*/

/*

MassSelect class declaration

*/
function MassSelect(afterhandler,beforehandler)
{
	this.afterAddHandler = afterhandler;
	this.beforeAddHandler = beforehandler;
	this.NotMassHandler = null;
}

//MassSelect.prototype.cnt = 0;
MassSelect.prototype.key = 17;
MassSelect.prototype.log = false;
//MassSelect.prototype.ar = new Array();
MassSelect.prototype.afterAddHandler;
MassSelect.prototype.beforeAddHandler;
MassSelect.prototype.NotMassHandler;
MassSelect.prototype.add = function(el,str) {

		if (xStr(el))
		{
			el = xGetElementById(el);
		}

		if (this.log)
		{
			if (this.beforeAddHandler) this.beforeAddHandler(el);
			/*if (this.ar[el.id]==true)
			{
				this.ar[el.id] = false;
				this.cnt--;
			}
			else
			{
				this.ar[el.id] = true;
				this.cnt++;
			}*/
			if (this.afterAddHandler) this.afterAddHandler(el);
		}
		else
		{
			if (this.NotMassHandler) this.NotMassHandler(el.id,str);
		}
	
	}

/* End of class declaration */

/* this is the onkeydownhandler */
function keydownHandler(e) {

		var t=window.event? event : e ;
		if (t.keyCode==masselect.key) masselect.log = true;

	}

/* this is the onkeyup handler */
function keyupHandler(e) {

		var t=window.event? event : e ;
		if (t.keyCode==masselect.key) masselect.log = false;

	}

/* this is the onclick handler

	it provides the event for the context menu script

 */
 
function onclickHandler(e) {

		var t=window.event? event : e ;

		HideContextMenu();
		
		var button = (window.event) ? t.button : t.which;

		if (xUA.indexOf('msie')!=-1 && button == 1) button--;
		if (xUA.indexOf('firefox')!=-1) button--;

		if (button==0)
		{

			if (masselect.log) return;
			a = xGetElementsByClassName('innerTileSelected');
			if (a.length>1)
			{
				for (i = 0; i < a.length; i++)
					a[i].className = 'innerTile';
				reloadInfoFrame();
			}
			//masselect.ar = new Array();
			//masselect.cnt = 0;
		}
		else if (button==2)
		{
			var hrf = document.location.toString();
			if (hrf.toUpperCase().indexOf('MAIN')!=-1)
			{
				ShowContextMenuAt(this_page_id,MouseX,MouseY);
			}
		}
	}
	
// those vars hold the position of the mouse
var MouseX=0;
var MouseY=0;

/* onmousemove event handler */

function getMouseXY(e)
{
	/*if (window.event)
	{
	tempX = xScrollLeft();
	tempY = xScrollTop();
	
	//	tempX = event.clientX + document.body.scrollLeft
	//	tempY = event.clientY + document.body.scrollTop
  }
  else
	{
		tempX = e.pageX
		tempY = e.pageY
	}*/
	var evt = new xEvent(e);
	MouseX = evt.pageX;
	MouseY = evt.pageY;
	//alert(MouseX);
}

/* the global masselect object the handlers are set here */
var masselect = new MassSelect(UpdateForMassAction,tileChangeStatus);
masselect.NotMassHandler = tileSelectOne;

/*
	here we set the events we try to be crossbrowser
*/

document.onkeydown = keydownHandler;
document.onkeyup = keyupHandler;
document.onclick = onclickHandler;

//if (document.all) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = getMouseXY;
/* end of event setting */

/* this is the before handler */
function tileChangeStatus(el)
{
	if (el.className == 'innerTileSelected')
		el.className = 'innerTile';
	else
		el.className = 'innerTileSelected';
}

/* this is the after handler */
function UpdateForMassAction()
{
	var s = '&amp;mass_act_nodes=';
	a = xGetElementsByClassName('innerTileSelected');
	for (i = 0; i < a.length; i++)
				s += a[i].id+'|';
	updateContextMenus(s);
	x = xGetParentWindowElementById('infoFrame');
	if (x == null) x = xGetElementById('infoFrame');
	var s1 = x.src.toString();
	i = s1.indexOf('&mass_act_nodes');
	if (i==-1)
	{
		s1 += s.replace('&amp;','&');
	}
	else
	{
		s1 = s1.substr(0,i) + s.replace('&amp;','&');;
	}
	x.src = s1;
}

function updateContextMenus(s) {
	
	for (i=0;i<ContextMenus['massAction'].length;i++)
	{
		ContextMenus['massAction'][i]['href'] = updateContextMenuHref(ContextMenus['massAction'][i]['href'],s);
	}
}

function updateContextMenuHref(href,s)
{
	
	var i = href.indexOf('\')');
	if (i!=-1)
	{
		href1 = href.substr(0,i);
		href = href1;
	}
	i = href.indexOf('&amp;mass_act_nodes');
	if (i==-1)
	{
		href += s;
	}
	else
	{
		href = href.substr(0,i) + s;
	}
	return href+'\');';
}


/* this is the notmass handler */
function tileSelectOne(id,str)
{
	selectTile(id);
	eval(str);
}


