var http_request = false;
var ajaxbubblex=0;
var ajaxbubbley=0;

function makeRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function alertContents() {
  if (http_request.readyState == 4) {
    document.body.style.cursor='default';
     if (http_request.status == 200) {
		var bubble=document.getElementById('ajaxbubble');
		if (bubble) {
			document.body.removeChild(bubble);
		}
		var result=http_request.responseText;
		if (result !='') {
			bubble=document.createElement('div');
			bubble.id='ajaxbubble';
			bubble.className='ajaxbubble';
			bubble.style.position='absolute';
			bubble.style.left=ajaxbubblex+10+'px';
			bubble.style.top=ajaxbubbley+10+'px';
			bubble.innerHTML=result+'<div id="close_bubble"><a href="javascript:hideBubble()"><b>X</b></a></div>';
			document.body.appendChild(bubble);
		}
     } else {
        alert('There was a problem with the request.');
     }
  } else if (http_request.readyState == 1) {
    document.body.style.cursor = 'progress';
  }
}

//function getTSSInfo(event,obj,imgid,location) {
//	if ((imgid=="pptss") || (imgid=="pmtss") || (imgid=="mptss") || (imgid=="mmtss")) { 
//		if (event.pageX && event.pageY) {
//			ajaxbubblex = event.pageX;
//			ajaxbubbley = event.pageY;
//		} else {
//			ajaxbubblex = window.event.clientX + document.documentElement.scrollLeft-2;
//			ajaxbubbley = window.event.clientY + document.documentElement.scrollTop-2;
//		}
//		var pos=ajaxbubblex-obj.offsetLeft;
//		while (obj = obj.offsetParent) {
//			pos-=obj.offsetLeft;
//		}
//		pos--;
//		makeRequest('/cgi-bin/dbtgr2/get_tss_info.cgi', 'p='+pos+'&t='+imgid+'&'+location);
//	}
//}

function getMatrixInfo(event,obj,imgid,location) {
	if (imgid=="jaspar") { 
		if (event.pageX && event.pageY) {
			ajaxbubblex = event.pageX;
			ajaxbubbley = event.pageY;
		} else {
			ajaxbubblex = window.event.clientX + document.documentElement.scrollLeft-2;
			ajaxbubbley = window.event.clientY + document.documentElement.scrollTop-2;
		}
		var pos=ajaxbubblex-obj.offsetLeft;
		while (obj = obj.offsetParent) {
			pos-=obj.offsetLeft;
		}
		pos--;
		makeRequest('/cgi-bin/dbtgr2/get_matrix_info.cgi', 'p='+pos+'&t='+imgid+'&'+location);
	}
}

function getSitesInfo(event,obj,imgid,location) {
	if (imgid=="sites") { 
		if (event.pageX && event.pageY) {
			ajaxbubblex = event.pageX;
			ajaxbubbley = event.pageY;
		} else {
			ajaxbubblex = window.event.clientX + document.documentElement.scrollLeft-2;
			ajaxbubbley = window.event.clientY + document.documentElement.scrollTop-2;
		}
		var pos=ajaxbubblex-obj.offsetLeft;
		while (obj = obj.offsetParent) {
			pos-=obj.offsetLeft;
		}
		pos--;
		makeRequest('/cgi-bin/dbtgr2/get_sites_info.cgi', 'p='+pos+'&t='+imgid+'&'+location);
	}
}

function getHomologyInfo(event,obj,imgid,location) {
	if ((imgid=="pgene") || (imgid=="mgene")) { 
		if (event.pageX && event.pageY) {
			ajaxbubblex = event.pageX;
			ajaxbubbley = event.pageY;
		} else {
			ajaxbubblex = window.event.clientX + document.documentElement.scrollLeft-2;
			ajaxbubbley = window.event.clientY + document.documentElement.scrollTop-2;
		}
		var pos=ajaxbubblex-obj.offsetLeft;
		while (obj = obj.offsetParent) {
			pos-=obj.offsetLeft;
		}
		pos--;
		makeRequest('/cgi-bin/dbtgr2/get_homology_info.cgi', 'p='+pos+'&t='+imgid+'&'+location);
	}
}

function showPosition(event,obj,start,stop,width) {
	var x,y;
	if (event.pageX && event.pageY) {
		x = event.pageX;
		y = event.pageY;
	} else {
		x = window.event.clientX + document.documentElement.scrollLeft-2;
		y = window.event.clientY + document.documentElement.scrollTop-2;
	}
	if ((obj.id == "jaspar-img") || (obj.id == "pptss-img") || (obj.id == "pmtss-img") || (obj.id == "mptss-img") || (obj.id == "mmtss-img") || (obj.id == "sites-img")) {
		document.body.style.cursor='none';
		var oh=obj.height;
		var ot=obj.offsetTop-1;
		var pobj=obj;
		while (pobj = pobj.offsetParent) {
			ot+=pobj.offsetTop;
		}
		var btf=document.getElementById('browser_target_frame');
		if (btf) {
				btf.style.display='inline';
				btf.style.left=x-15+'px';
				btf.style.top=ot+'px';
				btf.style.width='10px';
				btf.style.height=oh+'px';
				x-=15;
		}
	}

//	var pos=x-obj.offsetLeft;
//	while (obj = obj.offsetParent) {
//		pos-=obj.offsetLeft;
//	}
//	pos--;
//	var bp=document.getElementById('browser_position');
//	if (bp) {
//		if ((pos<0) || (pos>=width)) {
//			bp.style.display='none';
//		} else {
//			bp.style.display='inline';
//			bp.style.left=x+10+'px';
//			bp.style.top=y+10+'px';

//			var ppp=(stop-start+1)/width;
//			var from=start+Math.floor(pos*ppp);
//			var to=from+Math.floor(ppp)-1;
//			bp.innerHTML=from>=to?from:from+'-'+to;
//		}
//	}
}

function hidePosition() {
	document.body.style.cursor='default';
//	var bp=document.getElementById('browser_position');
//	if (bp) {
//		bp.style.display='none';
//	}
//	var btf=document.getElementById('browser_target_frame');
//	if (btf) {
//		btf.style.display='none';
//	}
}

function hideBubble() {
	var bubble=document.getElementById('ajaxbubble');
	if (bubble) {
		document.body.removeChild(bubble);
	}
}
