/*
// Get Element by ID - plus the style object
*/

function update_status(mytext){
	var x = new getObj('status_div');
	if(x && x.obj){
		x.obj.innerHTML += "<br>" + mytext;
	}
}


function getObj(name)
{
//	alert(name  + " = " + document.getElementById(name));
  if (document.getElementById(name))
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all[name])
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
	this.obj = getObjNN4(document,name);
	this.style = this.obj;
  }
	else {
//		alert("Object '" + name + "' not found");
		this.obj=false;
		this.style=false;
	}
}

function getObjNN4(obj,name)
{
	var x = obj.layers;
	var foundLayer;
	for (var i=0;i<x.length;i++)
	{
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}

/*
// Get X and Y coordinates of element
*/

function getPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function getPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/*
// Get style attributes
*/

function getStyle(x,styleProp)
{
	if (x.currentStyle) return x.currentStyle[styleProp];
	if (window.getComputedStyle) return document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
}

/*
// Event Functions
*/

function getAllInfo(e){
	var temp="\nEventKey:" + getEventKey(e);
	temp+="\nEventType:" + getEventType(e);
	temp+="\nEventTarget:" + getEventTarget(e);
	temp+="\nEventRightClick:" + getEventRightClick(e);
	temp+="\nEventPosX:" + getEventPosX(e);
	temp+="\nEventPosY:" + getEventPosY(e);
	temp+="\nEventCtrl:" + getEventCtrl(e);
	temp+="\nEventAlt:" + getEventAlt(e);
	temp+="\nEventShift:" + getEventShift(e);
	return temp;
}

function printObj(x){
	var temp = new Array();
	for(var i in x){
		temp.push(i + ": " + x[i]);
	}
	return temp.join("\n");	
}

function getEventKey(e){
	if (e.which) return e.which;
	if (e.keyCode) return e.keyCode;
}

function getEventType(e){
	return e.type;
}

function getEventTarget(e){
	var targ = null;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	return targ;
}

function getEventRightClick(e){
	if (e.which) return (e.which == 3);
	if (e.button) return (e.button == 2);
	return null;
}

function getEventPosX(e){
	if (e.pageX) return e.pageX;
	if (e.clientX) return e.clientX + document.body.scrollLeft;
	return null;
}

function getEventPosY(e){
	if (e.pageY) return e.pageY;
	if (e.clientY) return e.clientY + document.body.scrollTop;
	return null;
}

function get_event(evt){
    evt = (evt) ? evt : ((window.event) ? window.event : "");	
	return evt;
}

function getEventModifier(e,key,mask){
	if (e[key]) return e[key];
	if(e.modifiers) return (e.modifiers & Event[mask]);
	return false;
}

function getEventCtrl(e){
	return getEventModifier(get_event(e),"ctrlKey","CONTROL_MASK");
}

function getEventAlt(e){
	return getEventModifier(get_event(e),"altKey","ALT_MASK");
}

function getEventShift(e){
	return getEventModifier(get_event(e),"shiftKey","SHIFT_MASK");
}

function cancel_bubble(e){
	e = get_event(e);
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
}
