// Cross browser JS Interface by danila99@mail.ru 
// Most ideas were taken from www.quirksmode.org
// Currently tested on 
//		MSIE 6.02 
//  	Firefox 1.0.2, 1.0 RC2

function jsiGetElementById(strId)
{
	if (document.all)
		return document.all[strId] ;
	else
	if (document.getElementById)
		return document.getElementById(strId) ;
}

function jsiGetEventObj(e)
{
	return  (e && e != "undefined") ? e : window.event  ;
}

function jsiGetSrcElement(e)
{
	var eObj = jsiGetEventObj(e) ;
	var targ ;
	
	if (eObj.target) targ = eObj.target;
	else 
		if (eObj.srcElement) targ = eObj.srcElement;
	
	if (targ.nodeType == 3) // defeat Safari bug. Rare case
		targ = targ.parentNode;
		
	return targ ;
}

function jsiContains(objParent, objChild) // returns true if objParent has objChild as a nested child
{
	if (objParent.contains)	
		return objParent.contains(objChild) ;
	else
	{
		if (objParent == objChild)
			return true ;
		
		while (objChild.parentNode)
		{
			if ( objChild.parentNode == objParent ) 
				return true ;
			objChild = objChild.parentNode ;
		}
		
		return false ;
	}
}

function jsiHasAttribute(el, attrName)
{
	if(el == null || !el.getAttribute)
		return false;
	if(el.hasAttribute)	
		return el.hasAttribute(attrName);
	else
		return el.getAttribute(attrName) != null && el.getAttribute(attrName) != '';
}

function GetAllLeftOffsets(el)
{
	var i = 0;
	if(!isNaN(Number(el.offsetLeft)))
		i = Number(el.offsetLeft);
	if(el.parentNode)
		i += GetAllLeftOffsets(el.parentNode);
	
	return i;
}

function GetAllTopOffsets(el)
{
	var i = 0;
	if(!isNaN(Number(el.offsetTop)))
		i = Number(el.offsetTop);
	if(el.parentNode && el.parentNode.tagName != "TR") // tr counts just as td - so it duplicates, and should be skipped
		i += GetAllTopOffsets(el.parentNode);

	return i;
}

// ...Cross browser JS Interface
