
NS6 = (!document.all && document.getElementById)? 1:0;
NS4 = (document.layers) ? 1:0;
IE4 = (document.all) ? 1:0;

var divname = "tooltip";
var x = 0;
var y = 0;
var timeoutId = 0;
var window_width = 1024;
var window_height = 768;

var IE_WIDTH_OFFSET = 0;
var FIREFOX_WIDTH_OFFSET = 60;
var IE_HEIGHT_OFFSET = 0;
var HEIGHT_OFFSET = 60;
var MENU_XOFFSET	= 10;
var MENU_YOFFSET	= 5;
var MENU_BORDERCOLOR = "#000000";
var MENU_CAPTIONBG = "#D2D2FF";
var MENU_CAPTIONFG = "#000000";
var MENU_TIPBG	= "#F5F5FF";
var MENU_BORDERBG	= "#AAAAAA";
var MENU_INNER_COLOR = "#666666";
var MENU = true;
var MENU_WIDTH	= 100;
var MENU_TIMEIN = 500;
var MENU_TIMEOUT = 40000;
var ddEnabled = false;
var TITLE = "Title";

if(NS4 || IE4 || NS6) {
	document.onmousemove = mouseMove;
	document.onmousedown= mouseDown;
	document.onmouseup = mouseUp;
	if(NS4 || NS6) {
		document.captureEvents(Event.MOUSEMOVE);
	}
}

function mouseDown(e) {
	 	 
	 if(NS4) {
	 		topLayer = 'HTML';
			whichLayer = document.layers[divname];
			moveableLayer = e.target;
			while (moveableLayer.id!=TITLE&&moveableLayer.tagName!=topLayer){
				moveableLayer = moveableLayer.parentNode;
			}
	 }
	 else if(IE4) {
	 		topLayer = 'BODY';
			whichLayer = document.all[divname];
			moveableLayer = event.srcElement;
			
			while (moveableLayer.id!=TITLE&&moveableLayer.tagName!=topLayer){
    		moveableLayer = moveableLayer.parentElement;
  		}
	 }
	 else if(NS6) {
	 		topLayer = 'HTML';
			whichLayer = document.getElementById(divname);
			moveableLayer = e.target;
			while (moveableLayer.id!=TITLE&&moveableLayer.tagName!=topLayer){
				moveableLayer = moveableLayer.parentNode;
			}
	 }
	 
	 if (moveableLayer.id==TITLE){
	 	if (IE4) {
    	offsetx=event.clientX;
    	offsety=event.clientY;    	
    }
    else {
    	offsetx=e.clientX;
    	offsety=e.clientY;    	
    }	 	 	 		
    	nowX=parseInt(whichLayer.style.left);
    	nowY=parseInt(whichLayer.style.top);
    	ddEnabled=true;
   }
}

function mouseMove(e) {
	if(NS4) {
		x = e.pageX +MENU_XOFFSET;
		y = e.pageY +MENU_YOFFSET;
		window_width = window.innerWidth - FIREFOX_WIDTH_OFFSET;
		window_height = window.innerHeight - HEIGHT_OFFSET;
	}
	else if(IE4) {
		x = event.x +MENU_XOFFSET + document.body.scrollLeft;
		y = event.clientY+MENU_YOFFSET + document.body.scrollTop - IE_HEIGHT_OFFSET;
		window_width = document.body.clientWidth + document.body.scrollLeft - IE_WIDTH_OFFSET;
		window_height = document.body.clientHeight + document.body.scrollTop - HEIGHT_OFFSET;
	}
	else if(NS6) {
		x = e.clientX +MENU_XOFFSET + window.pageXOffset;
		y = e.clientY +MENU_YOFFSET + window.pageYOffset;
		window_width = window.innerWidth + window.pageXOffset - FIREFOX_WIDTH_OFFSET;
		window_height =  window.innerHeight + window.pageYOffset - HEIGHT_OFFSET;
	}
	
	if (ddEnabled) {
		if (IE4) {
			whichLayer.style.left = nowX+event.clientX-offsetx;
			whichLayer.style.top = nowY+event.clientY-offsety;
		}
		else {
			whichLayer.style.left = nowX+e.clientX-offsetx;
			whichLayer.style.top = nowY+e.clientY-offsety;
		}
  
  	return false;
  }
}

function mouseUp(e) {
	ddEnabled=false;
}

function menuoff() {
	window.clearTimeout(timeoutId);
	if(NS4) {
		document.layers[divname].visibility = "hide";
	}
	else if(IE4) {
		document.all[divname].style.visibility = "hidden";
	}
	else if(NS6) {
		document.getElementById(divname).style.visibility = "hidden";
	}
}

function menuClearTimeout() {
	window.clearTimeout(timeoutId);
}

function menuCheckVisible() {
	if(NS4) {
		l = document.layers[divname];
		if ((l.visibility) == "show") {
			return true;
		}
		else {
			return false;
		}
	}
	else if(IE4) {
		l = document.all[divname];
		if (l.style.visibility	== "visible") {
			return true;
		}
		else {
			return false;
		}
	}
	else if(NS6) {
		l = document.getElementById(divname);
		if (l.style.visibility	== "visible") {
			return true;
		}
		else {
			return false;
		}
	}	
}

function menuon_now() {
	if(NS4) {
		l = document.layers[divname];
		l.visibility		= "show";

	}
	else if(IE4) {
		l = document.all[divname];
		l.style.visibility	= "visible";

	}
	else if(NS6) {
		l = document.getElementById(divname);
		l.style.visibility	= "visible";
	}
	window.clearTimeout(timeoutId);
	timeoutId = window.setTimeout('menuoff()', MENU_TIMEOUT);
	return true;
}

function showMenu(txt) {
	if(x + MENU_WIDTH > window_width) {
		var difference = (x + MENU_WIDTH) - window_width;
		x -= difference;
	}
			
	if(y > window_height) {
		
		var difference = y - window_height;
		y -= difference;
	}
		
	if(NS4) {
		l = document.layers[divname];
		l.document.open("text/html");
		l.document.write(txt);
		l.document.close();
		l.document.bgColor	= MENU_TIPBG;
		l.width			= MENU_WIDTH;
		l.left			= x;
		l.top			= y;
	}
	else if(IE4) {
		l = document.all[divname];
		l.style.backgroundColor	= MENU_TIPBG;
		l.innerHTML		= txt;

		l.style.pixelWidth	= MENU_WIDTH;
		l.style.pixelLeft	= x;
		l.style.pixelTop	= y;

	}
	else if(NS6) {
		l = document.getElementById(divname);

		rng = document.createRange();
		rng.setStartBefore(l);
		htmlFrag = rng.createContextualFragment(txt);

		while (l.hasChildNodes()) {
			l.removeChild(l.lastChild);
		}
		l.appendChild(htmlFrag);

//		l.style.border		= 1;		
		l.style.backgroundColor	= MENU_TIPBG;
		l.style.left		= x;
		l.style.top		= y;
	}

	window.clearTimeout(timeoutId);
	
	timeoutId = window.setTimeout('menuon_now()', MENU_TIMEIN);
	
	return true;
}

function menu() {
	menuoff();
	var txt = "";
	if(arguments.length < 2) {
		return true;
	}
	if (arguments[0] !="") {
		MENU_WIDTH = arguments[0];
	}

	txt += '<table style="border-style:solid;border-width:1px;border-color:'+MENU_BORDERCOLOR+'" cellpadding="2" cellspacing="0" width="'+MENU_WIDTH+'">' +
	'<tr id="'+TITLE+'" style="cursor:move;" bgcolor="'+MENU_CAPTIONBG+'">' +
	'<td width="100%"><span style="color:'+MENU_CAPTIONFG+';font-family:arial,sans-serif,helvetica;font-size:8pt;font-weight:bold;top:0;left:2;">&nbsp;'+arguments[1]+'</span></td>' +
	'</tr>';

	for(i = 2; i < arguments.length; i+=1) {
		if(arguments[i] != "") {
			txt += '<tr><td><span style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;color:'+MENU_INNER_COLOR+';">'+arguments[i] + '</span></td></tr>';
		}
	}

	txt += '</table>';
	showMenu(txt);
	return true;
}

function menu_nucleotide() {
	menuoff();
	var txt = "";

	if(arguments.length < 2) {
		//No Comments Detected;
		return true;
	}

	if (arguments[0] !="") {
		MENU_WIDTH = arguments[0];
	}

	txt += '<table style="border-style:solid;border-width:1px;border-color:'+MENU_BORDERCOLOR+'" cellpadding="0" cellspacing="0" width="'+MENU_WIDTH+'">';

	for(i = 2; i < arguments.length; i+=1) {
		if(arguments[i] != "") {
			txt += '<tr><td style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;color:'+MENU_INNER_COLOR+';text-align:center;">'+
			arguments[i] + '</td></tr>';
		}
	}

	txt += '</table>';
	showMenu(txt);
	return true;
}

function menu_mutation() {
	
	menuoff();
	
	var txt = "";

	if(arguments.length < 2) {
		return true;
	}
	else if(arguments.length % 2 == 1) {
		//no. of arguments need to be even. First argument for width, next for Title, subsequent ones link, followed by content
		return true;
	}

	if (arguments[0] !="") {
		MENU_WIDTH = arguments[0];
	}

	txt += '<table style="border-style:solid;border-width:1px;border-color:'+MENU_BORDERCOLOR+'" cellpadding="2" cellspacing="0" width="'+MENU_WIDTH+'">' + 
	       '<tr id="'+TITLE+'" style="cursor:move;" bgcolor="'+MENU_CAPTIONBG+'">' + 
	       '<td width="100%"><span style="color:'+MENU_CAPTIONFG+';font-family:arial,sans-serif,helvetica;font-size: 8pt;font-weight:bold;">&nbsp;'+arguments[1]+'</span></td>' +
	       '<td style="font-family:arial,sans-serif,helvetica;font-size:8pt;font-weight:bold;text-decoration:none;cursor:pointer;" onClick="menuoff();">x</td>' +
	       '</tr>';
	       
	for(i = 2; i < arguments.length; i+=2) {
		link = "";
		txt += '<tr>';
		if(arguments[i] != "") {
			txt+= '<td colspan=2><a style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;cursor:pointer" onClick="'+arguments[i]+'">'+arguments[i+1]+'</a></td>';
		}
		else {
			txt+= '<td colspan=2 style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;color:'+MENU_INNER_COLOR+';">'+arguments[i+1]+'</td>';
		}
	}
	showMenu(txt);
	return true;
}

function menu_link() {
			
	menuoff();
	var txt = "";

	if(arguments.length < 2) {
		return true;
	}
	else if(arguments.length % 2 == 1) {
		//no. of arguments need to be even. First argument for width, next for Title, subsequent ones link, followed by content
		return true;
	}

	if (arguments[0] !="") {
		MENU_WIDTH = arguments[0];
	}

	txt += '<table style="border-style:solid;border-width:1px;border-color:'+MENU_BORDERCOLOR+'" cellpadding="2" cellspacing="0" width="'+MENU_WIDTH+'">' + 
	       '<tr id="'+TITLE+'" style="cursor:move;" bgcolor="'+MENU_CAPTIONBG+'">' + 
	       '<td width="100%"><span style="color:'+MENU_CAPTIONFG+';font-family:arial,sans-serif,helvetica;font-size: 8pt;font-weight:bold;">&nbsp;'+arguments[1]+'</span></td>' +
	       '<td style="font-family:arial,sans-serif,helvetica;font-size:8pt;font-weight:bold;text-decoration:none;cursor:pointer;" onClick="menuoff();">x</td>' +
	       '</tr>';
	       
	for(i = 2; i < arguments.length; i+=2) {
		link = "";
		txt += '<tr>';
		if(arguments[i] != "") {
			txt+= '<td colspan=2><a style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;cursor:pointer" href="'+arguments[i]+'">'+arguments[i+1]+'</a></td>';
		}
		else {
			txt+= '<td colspan=2 style="font-family:arial,sans-serif,helvetica;font-size:8pt;text-decoration:none;color:'+MENU_INNER_COLOR+';">'+arguments[i+1]+'</td>';
		}
	}
	showMenu(txt);
	return true;
}

function toggle(nameofdiv) {
	var disItem;
	if(IE4) {
		l = document.all[nameofdiv];
		disItem = 'block';
  }
	else if (NS4) {
		l = document.layers[nameofdiv];
		disItem = 'block';
				
	}else if (NS6) {
		l = document.getElementById(nameofdiv);
		disItem = 'table-row';
	}
	
	if (l.style.display == 'none') {
		l.style.display	= disItem;
		document.p53form.ruler.value = disItem;
	}
	else {
		l.style.display	= 'none';
		document.p53form.ruler.value = 'none';
	}
  
  return true;
}									


function showHideLayers(checkbox, layername) {		
	var disItem;
	if (checkbox.checked) {
		if(IE4) {
			disItem = 'block';
		}
		else if (NS4) {
			disItem = 'block';
		}
		else if (NS6) {
			disItem = 'table-row';
		}
	}
	else {
		disItem = 'none';
	}
			
	var i = 0;
	tmp_layer_name = layername + '' + i;
	if(IE4) {		
		l = document.all[tmp_layer_name];
		while (l || (i==0)) {
				if (l) {			
					l.style.display = disItem;
				}
				i++;
				tmp_layer_name = layername + '' + i;
				l = document.all[tmp_layer_name];			
		}
	}
	else if (NS4) {
		l = document.layers[tmp_layer_name];
		while (l || (i==0)) {
				if (l) {
					l.style.display = disItem;
				}
				i++;
				tmp_layer_name = layername + '' + i;
				l = document.all[tmp_layer_name];			
		}
	}
	else if (NS6) {
		l = document.getElementById(tmp_layer_name);
		while (l || (i==0)) {
				if (l) {			
					l.style.display = disItem;
				}
				i++;
				tmp_layer_name = layername + '' + i;
				l = document.getElementById(tmp_layer_name);			
		}
	}
}

function imgHelpRollOver(img) {
	img.src="/common/images/helpOver.png";
}

function imgHelpRollOut(img) {
	img.src="/common/images/help.png";
}

function IsNumeric(sText) {
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
		
	for (i = 0; i < sText.length && IsNumber == true; i++)
	{
		Char = sText.charAt(i);
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	
	return IsNumber;
}
