var qp_isIE = (navigator.userAgent.indexOf("MSIE") != -1);

function getElemQP(id) {
	return document.getElementById(id);
}

function showElemQP(id) {
	var obj = getElemQP(id);
	if (obj) obj.style.display = "";
}

function hideElemQP(id) {
	var obj = getElemQP(id);
	if (obj) obj.style.display = "none";
}

function isElemDisplayed(id) {
	var result = false;
	var obj = getElemQP(id);
	if (obj) {
		result = (obj.style.display == "");
	}
	return result;
}
function setEventQP(obj, eventName, eventHandler)
{
	if (qp_isIE)
		obj.attachEvent('on'+ eventName, eventHandler)
	else
		obj.addEventListener(eventName, eventHandler, true)
}

function getCustomEventQP(mozEvent)
{
	var eventObj = (qp_isIE) ? event : mozEvent;
	if (qp_isIE) {
		if (eventObj.type == 'mousemove')
		{
			eventObj.target = eventObj.toElement;
			eventObj.relatedTarget = eventObj.fromElement;
		} else if (eventObj.type == 'mouseout') {
			eventObj.relatedTarget = eventObj.toElement;
			eventObj.target = eventObj.fromElement;
		}
		else eventObj.target = eventObj.srcElement;
	}
	return eventObj;
}

function stopEventQP(eventObj, forceBubble) {
	if (qp_isIE) {
		if (!forceBubble) // may be undefined
			eventObj.cancelBubble = true;
		eventObj.returnValue = false;
	} else {
		eventObj.preventDefault();
		if (!forceBubble) // may be undefined
			eventObj.stopPropagation();
	}
}

function getElementsByAttrQP(tagName, attrName, attrVal) {
	var arrRes = new Array();
	var tags = document.getElementsByTagName(tagName);
	for (var i = 0; i < tags.length; i++) {
		if (tags[i].getAttribute(attrName) == attrVal) arrRes[arrRes.length] = tags[i];
	}
	return arrRes;
}

function getParentElementByAttrQP(objEl, attrName, attrVal) {
	for (var objParentEl = objEl; (objParentEl != null) && ("getAttribute" in objParentEl); objParentEl = objParentEl.parentNode)
	{
		if (objParentEl.getAttribute(attrName) == attrVal) 
			return objParentEl;
	}
	return null;
}

function getParentElementByAttrAndDepthQP(objEl, attrName, attrVal, depth) {
	for (var objParentEl = objEl, i = 0; (objParentEl != null) && ("getAttribute" in objParentEl) && (i <= depth); objParentEl = objParentEl.parentNode) 
	{
		i++;
		if (objParentEl.getAttribute(attrName) == attrVal) 
			return objParentEl;
	}
	return null;
}

function getChildElementsByAttrQP(parentElement, tagName, attrName, attrVal) {
	var arrRes = new Array();
	var tags = parentElement.getElementsByTagName(tagName);
	for (var i = 0; i < tags.length; i++) {
		if (tags[i].getAttribute(attrName) == attrVal) arrRes[arrRes.length] = tags[i];
	}
	return arrRes;
}

function getOffsetQP(obj) {
	var x = 0;
	var y = 0;
	var currObj = obj;
	for (null;  currObj; x += currObj.offsetLeft, y += currObj.offsetTop, currObj = currObj.offsetParent);
	obj.offsetX = x;
	obj.offsetY = y;	
}











