function setBackground(elem, col) {
	elem.style.backgroundColor = col;	
}

function setVisible(elemId)
{
	obj = document.getElementById(elemId);
	obj.style.visibility = (obj.style.visibility == 'visible') ? 'hidden' : 'visible';
}

function onCellMouseOver(elem) {
	setBackground(elem, '#ECECEC');
}

function onCellMouseOut(elem) {
	setBackground(elem, '#FFFFFF');
}

function doRequest(targetURI, args){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
 	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	
	while (args.indexOf('+') > -1) {
		args = args.replace('+', queryStringEncodeChar('+'));
	}
	//alert(targetURI+"?"+args);
	xmlhttp.open("GET", targetURI+"?"+args, false);
	xmlhttp.send("");
	//alert(xmlhttp.responseText);
	return xmlhttp.responseXML;
}

function getElementsByClass(node,tag,searchClass){
	var classElements=new Array();
	if(node==null)
		node=document;
	if(tag==null)
		tag='*';
	//alert(node);
	var els=node.getElementsByTagName(tag);
	//alert(tag + ': ' + els.length);
	var elsLen=els.length;
	if (searchClass != null) {
		var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for(i=0,j=0;i<elsLen;i++){
			if(pattern.test(els[i].className)){
				classElements[j]=els[i];
				j++;
			}
		}
	} else {
		classElements = els;
	}	
	//alert('classElements: ' + classElements);
	return classElements;
}

function enableTooltips() {
	var elems = getElementsByClass(document,'dl','fancytip');
	if (elems != null) {
		for (var i = 0; i < elems.length; i++) {
			setupTooltip(elems[i]);
		}
	}
}

var prog = 0;

function setupTooltip(elem) {
	var img = null;
	var a = null;
	var dtElem = elem.getElementsByTagName('dt')[0];
	var id = 'tooltip_' + (++prog);	

	if (dtElem != null) {
		var coll = dtElem.getElementsByTagName('img');
		if (coll.length == 0) {
			img = document.createElement('img');
			var imgTitle = dtElem.innerHTML;
			img.src = '/marco/images/ico_help.gif';
			if (imgTitle != null) {
				img.setAttribute('title', imgTitle);
				img.setAttribute('alt', imgTitle);
			}	
			else
				alert('NULL!!!');
		}	else {
			img = coll[0];
		}
		coll = dtElem.getElementsByTagName('a');
		if (coll.length > 0) {
			a = coll[0];
		}
	}
	else
		alert('NULL');
	
	//addEvent(img, 'mouseover', function() {toggle(this, 'block')});
	//addEvent(img, 'mouseout', function() {toggle(this, 'none')});
	img.onmouseover=showTooltip;
        img.onmouseout=hideTooltip;
	img.id = 'img_' + id;
	var lnk = null;
	if (a != null) {
		img.style.cursor = 'pointer';
		img.onclick=openLink;
		lnk =  document.createElement('div');
		lnk.className = 'tooltip-link';
		lnk.innerHTML = a.parentNode.innerHTML;
		lnk.style.display = 'none';
	}
	
	var tooltip = document.createElement('div');
	tooltip.id = 'div_' + id;
	tooltip.className = 'tooltip';
	
	var tooltipText = document.createElement('div');
	tooltipText.className = 'bottom';
	tooltipText.innerHTML = elem.getElementsByTagName('dd')[0].innerHTML;
	
	var tooltipClose = document.createElement('div');
	tooltipClose.className = 'top';
	tooltipClose.innerHTML = '&nbsp;';
	
	tooltip.appendChild(tooltipClose);
	tooltip.appendChild(tooltipText);
	
	var parent = elem.parentNode;
	
	parent.replaceChild(img, elem);
	//document.body.appendChild(tooltip);
	document.getElementById('append').appendChild(tooltip);
	if (lnk != null)
		parent.appendChild(lnk);	
	
	//alert(tooltip.innerHTML);
}

function openLink(ev) {
	var targ = getElementFromEvent(ev);
	var tooltipLink = getElementsByClass(targ.parentNode, 'div', 'tooltip-link')[0];
	var a = tooltipLink.getElementsByTagName('a')[0];
	//alert(a.target)
	if (a.target != null && a.target != '') {
		window.open(a.href, a.target, '');
	} else {
		location.href = a.href;
	}
	dispose(ev);
}

function getElementFromEvent(ev) {
	var targ;
	if (!ev) 
		var ev = window.event;
	if (ev.target) 
		targ = ev.target;
	else 
		if (ev.srcElement) 
			targ = ev.srcElement;
	if (targ.nodeType == 3) 
		targ = targ.parentNode;
	return targ;	
}

function showTooltip(ev) {
	var targ = getElementFromEvent(ev);
	var tooltip = toggle(targ, 'block');
	dispose(ev, tooltip);
}

function hideTooltip(ev) {
	var targ = getElementFromEvent(ev);
	var tooltip = toggle(targ, 'none');
	dispose(ev, tooltip);
}

function toggle(sibling, status) {
	var divId = 'div_' + substringAfter(sibling.id, '_');
	var tooltip = document.getElementById(divId);
	tooltip.style.display = status;
	return tooltip;
}

function dispose(e, tooltip){
	var posx=0
	var posy=0;
	
	if(e==null) 
		e=window.event;
	if(e.pageX || e.pageY) {
    posx=e.pageX; posy=e.pageY;
  } else 
   		if(e.clientX || e.clientY){
    		if(document.documentElement.scrollTop){
        	posx=e.clientX+document.documentElement.scrollLeft;
        	posy=e.clientY+document.documentElement.scrollTop;
      	} else{
        	posx=e.clientX+document.body.scrollLeft;
        	posy=e.clientY+document.body.scrollTop;
      	}
   		}
   var srcElem = getElementFromEvent(e);
   //var tooltip = getElementsByClass(srcElem.parentNode, '*','tooltip')[0];
	 tooltip.style.top=(posy-(tooltip.offsetHeight+18))+"px";
	 tooltip.style.left=(posx-280)+"px";
}

function addEvent(obj,type,fn){if(obj.addEventListener)
obj.addEventListener(type,fn,false);else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);}}