function getNextSiblingTag( Obj ) {
	if( ! Obj ) return null;
	
	var Sib = null;
	for( Sib = Obj.nextSibling; Sib && ! Sib.tagName; Sib = Sib.nextSibling )
		;
	
	if( ! Sib ) 
		return Obj;
	else
		return Sib;
}

function getPreviousSiblingTag( Obj ) {
	if( ! Obj ) return null;
	
	var Sib = null;
	for( Sib = Obj.previousSibling; Sib && ! Sib.tagName; Sib = Sib.previousSibling )
		;
	
	if( ! Sib ) 
		return Obj;
	else
		return Sib;
}

function setupEventListener( Elem, TypeStr, ListenerFunc, UseCapture ) {
	var F = function( Evt ) { ListenerFunc(new XBrowserEvent(Evt,Elem)); };
	
	if( Elem.addEventListener )
		Elem.addEventListener(TypeStr, F, UseCapture);
	else {
		Elem.attachEvent("on" + TypeStr, F);
	}
}

function XBrowserEvent( Evt, SrcElem ) {
	// get correct event object
	if (! Evt ) var Evt = window.event;
	
	// set event type
	this.Type = Evt.type;
	
	// set source element
	this.SourceElement = SrcElem;
	
	// set the event target
	this.TargetElement = null;
	if( Evt.target ) 
		this.TargetElement = Evt.target;
	else if( Evt.srcElement ) 
		this.TargetElement = Evt.srcElement;
	if( this.TargetElement && this.TargetElement.nodeType == 3 ) // safari bug
		this.TargetElement = this.TargetElement.parentNode;
	
	// set key code
	this.KeyCode = null;
	if( this.Type.contains("key") ) {
		if( Evt.keyCode ) 
			this.KeyCode = Evt.keyCode;
		else if( Evt.which ) 
			this.KeyCode = Evt.which;
		if( this.KeyCode )
			this.Key = String.fromCharCode(this.KeyCode);
	}
	
	// set mouse button
	this.LeftClick = false;
	this.MiddleClick = false;
	this.RightClick = false;
	if( this.Type.contains("mouseup") || this.Type.contains("mousedown") ) {
		
	}
	
	
}
