
/*
[^a-z*#\|&A-Z0-9!<>.?%@$^`~():;{}\\/+=\-_ \s'",]
*/

	function loadXMLDoc(fname)
	{
		var xmlDoc;
		// code for IE
		if (window.ActiveXObject)
		{
			xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if(window.XMLHttpRequest) {
		//alert("here");
			  xmlDoc = new XMLHttpRequest();
		}
		else if (document.implementation && document.implementation.createDocument)
		{
			xmlDoc=document.implementation.createDocument("","",null);
					alert(xmlDoc);
		}
		else
		{
			alert('Your browser cannot handle this script');
		}

		//xmlDoc.async=false;
		xmlDoc.load(fname);
		return(xmlDoc);
	}


	function displayResult(xmlFile, xslFile, parentIdOfHtml )
	{
		var req =new XMLHttpRequest();
		req.open("GET", xmlFile, false);
		req.send(null);
	// print the name of the root element or error message
		var xml = req.responseXML;


		var req1 =new XMLHttpRequest();
		req1.open("GET", xslFile, false);
		req1.send(null);
	// print the name of the root element or error message
		var xsl = req1.responseXML;

		if (window.ActiveXObject)
		{
			ex=xml.transformNode(xsl);
			document.getElementById(parentIdOfHtml).innerHTML=ex;
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if (document.implementation
			&& document.implementation.createDocument)
		{
			xsltProcessor=new XSLTProcessor();
			xsltProcessor.importStylesheet(xsl);
			resultDocument = xsltProcessor.transformToFragment(xml,document);
			document.getElementById(parentIdOfHtml).appendChild(resultDocument);
		}
	}
/***********************************************
* Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/

var delayb4scroll=2000 //Specify initial delay before marquee starts to scroll on page (2000=2 seconds)
var marqueespeed=1 //Specify marquee scroll speed (larger is faster 1-10)
var pauseit=1 //Pause marquee onMousever (0=no. 1=yes)?

////NO NEED TO EDIT BELOW THIS LINE////////////

var copyspeed=marqueespeed
var pausespeed=(pauseit==0)? copyspeed: 0
var actualheight=''

function scrollmarquee(){

	if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8))
	cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px"
	else
	cross_marquee.style.top=parseInt(marqueeheight)+8+"px"
}

function initializemarquee(vmarquee,marqueecontainer){
	cross_marquee=document.getElementById(vmarquee)
	cross_marquee.style.top=0
	marqueeheight=document.getElementById(marqueecontainer).offsetHeight
	actualheight=cross_marquee.offsetHeight
	if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit
		cross_marquee.style.height=marqueeheight+"px"
		cross_marquee.style.overflow="scroll"
	return
	}
	setTimeout('lefttime=setInterval("scrollmarquee()",30)', delayb4scroll)
}

var copyspeed1=marqueespeed
var pausespeed1=(pauseit==0)? copyspeed1: 0
var actualheight1=''

function scrollmarquee1()
{

	if (parseInt(cross_marquee1.style.top)>(actualheight1*(-1)+8))
	cross_marquee1.style.top=parseInt(cross_marquee1.style.top)-copyspeed1+"px"
	else
	cross_marquee1.style.top=parseInt(marqueeheight1)+8+"px"
}

function initializemarquee1(vmarquee,marqueecontainer)
{
	cross_marquee1=document.getElementById(vmarquee)
	cross_marquee1.style.top=0
	marqueeheight1=document.getElementById(marqueecontainer).offsetHeight
	actualheight1=cross_marquee1.offsetHeight
	if (window.opera || navigator.userAgent.toLowerCase().indexOf("Netscape/7")!=-1 ||
		navigator.userAgent.toLowerCase().indexOf("safari")!=-1){ //if Opera or Netscape 7x, add scrollbars to scroll and exit
		cross_marquee1.style.height=marqueeheight1+"px"
		cross_marquee1.style.overflow="scroll"
	return
	}
	setTimeout('lefttime=setInterval("scrollmarquee1()",30)', delayb4scroll)
}

// if (window.addEventListener)
// window.addEventListener("load", initializemarquee, false)
// else if (window.attachEvent)
// window.attachEvent("onload", initializemarquee)
// else if (document.getElementById)
// window.onload=initializemarquee


/*
var lines = 10;
var currentLine = 0;
var xml=loadXMLDoc("clients.xml");
path="/clients/companies/company/name"

var t;
var clientsList = new Array();
		if (window.ActiveXObject)
		{
			var nodes=xml.selectNodes(path);
			for (i=0;i<nodes.length;i++)
			{
				clientsList[i]= "<li>" + nodes[i].childNodes[0].nodeValue + "</li>";

			}
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if (document.implementation && document.implementation.createDocument)
		{
			var nodes=document.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);

			var result=nodes.iterateNext();

			var i = 0;
			while (result)
			{
				clientsList[i]= "<li>" + result.childNodes[0].nodeValue + "</li>";
				i++;
				result=nodes.iterateNext();
			}
		}
//alert("TOtal clients collected : " +clientsList.length);
*/
/*		xml=loadXMLDoc("books.xml");
		path="/errorDefs/book/title"
		// code for IE
		if (window.ActiveXObject)
		{
			var nodes=xml.selectNodes(path);

			for (i=0;i<nodes.length;i++)
			{
				document.write(nodes[i].childNodes[0].nodeValue);
				document.write("<br />");
			}
		}
		// code for Mozilla, Firefox, Opera, etc.
		else if (document.implementation && document.implementation.createDocument)
		{
			var nodes=document.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
 alert('node ' + nodes);
			var result=nodes.iterateNext();
alert('result ' + result);
			while (result)
			{
				document.write(result.childNodes[0].nodeValue);
				document.write("<br />");
				result=nodes.iterateNext();
			}
		}
*/

var delayDef = 3000;
var delay = delayDef;
var t;
var divA = 1;
function marq()
{

	var divName= "div" + divA;
// 	document.getElementById(divName).style.visibility="hidden";
document.getElementById(divName).className="invisible";
//	alert(divA + " " + divName + " " + document.getElementById(divName).className);
	divA += 1;
	//alert(divA);
	if(divA > 7)
		divA=1;
	divName= "div" + divA;
// 	document.getElementById(divName).style.visibility="visible";
document.getElementById(divName).className="visible";
//	alert(divA + " " + divName + " " + document.getElementById(divName).className);
	t=setTimeout('marq()',delay);
}

var startIndex = 1;
function marqDiv(divId, count)
{

	var divName= divId + startIndex;

// 	document.getElementById(divName).style.visibility="hidden";
document.getElementById(divName).className="invisible";
//	alert(divA + " " + divName + " " + document.getElementById(divName).className);
	startIndex += 1;
	//alert(divA);
	if(startIndex > count)
		startIndex=1;
	divName= divId + startIndex;
// 	document.getElementById(divName).style.visibility="visible";
	document.getElementById(divName).className="visible";
//	alert(divA + " " + divName + " " + document.getElementById(divName).className);
	t=setTimeout("marqDiv('"+divId+"','"+count+"')",10000);
}

function control(c)
{
//  	if(c== 0)
//  		clearTimeout(t);
//  	else
//  		marq();
	//alert(delay);
}



function showClientsList()
	{
		var html = "<ul class=\"clients\">";
		var last = currentLine + lines;
		if(last >= clientsList.length)
			last = clientsList.length;
		var j;
		for(j=currentLine;j<last;j++)
		{
			html += clientsList[j];
		}
		if(last >= clientsList.length)
			currentLine=0;
		else currentLine=j;

		document.getElementById("clientsList").innerHTML=html + "</ul>";
		t=setTimeout('showClientsList()',2000);

	}
	function waitForMouseOut(d)
	{
		d.style.background="#FF9999";
		clearTimeout(t);
	}
	function startClientsList(d)
	{
		d.style.background="white";
		showClientsList();
	}


function drawChartForType(selectRef,divContainer){
var _chart=selectRef.value;
//alert(_chart);
var _chartval=document.getElementById(_chart+'_data1').innerHTML
//alert(_chart+"-"+_chartval)
redrawData(_chartval,_chart,_chart,divContainer)



}




function drawChartDefault(_data, divContainer){

	if(_data == 'Protein')
	{
	/*	var defaultGraphText = "<span style=\"display: inline; float: right; margin-right: 10px;\">Please Select Type: <select id=\"chartType\" onchange=\"drawChartForType(this,'disChart')\">" +
		"<option value=\"Protein\">Protein</option><option value=\"Disease\">Disease</option><option value=\"Drug\">Drug</option>" +
		"<option value=\"Process\">Process</option><option value=\"KeyRelation\">Key Relation</option><option value=\"Category\">Category</option>" +
		"</select></span><div id=\"disChart\" class=\"disChart\"></div>";
	*/
		var defaultGraphText = "<span style=\"display: inline; float: right; margin-right: 50px; font-size: 12px;\">Entities with Maximum"+
	" facts/relationships:: <select id=\"chartType\" onchange=\"drawChartForType(this,'disChart')\">" +
		"<option value=\"Protein\">Protein</option><option value=\"Disease\">Disease</option><option value=\"Drug\">Drug</option>" +
		"<option value=\"Process\">Process</option><option value=\"Category\">Category</option>" +
		"</select></span><div id=\"disChart\" class=\"disChart\"></div>";


		document.getElementById("StatDisplay_1").innerHTML = defaultGraphText;

	}
	else if(_data == 'Journal')
	{
		var JournalText ="<span style=\"display: inline; width: 100%; text-align: center;font-size: 12px;\">From Other Journals : "+document.getElementById("FromOtherJournals_current_data").innerHTML + " facts</span>" +
		"<div id=\"disChart1\" class=\"disChart\"></div>";

		document.getElementById("StatDisplay_1").innerHTML = JournalText;

	}


	var _chart=_data;
	//setSelectValue(document.getElementById('chartType'),_data)
	var _chartval=document.getElementById(_chart+'_data1').innerHTML;
	//alert(_chart+"-"+_chartval);
	redrawData(_chartval,_chart,_chart, divContainer)



}

function redrawData(_data,Title, type, divContainer){
	var _node=document.getElementById(divContainer);
	var child=_node.childNodes;
	var i=0;

	while(i<child.length){
	child[i].parentNode.removeChild(child[i]);
	i++;

	}

//alert("in chart redrawData");
	var g = new graph();
	var _data1=_data.split('|')

	for(var i=0;i<_data1.length;i++)
	{
		var entityUrl = "";
		var _data2=_data1[i].split('@');
		var symbol = _data2[0];
		var symRep;
		if(type == "Protein"){
			symRep = symbol.replace("_HUMAN","");
		}
		else if(type == "Category")
		{
			symRep = symbol.replace("/", "/<br/>").replace("-", "<br/>");
		}
		else
		{
			symRep = (symbol.length > 9) ? symbol.substring(0,5)+"...." : symbol;
		}
		var id = (type == "KeyRelation" || type == "Category" || type == "Journal") ? "" :" (" + _data2[1] + ")";

		var onClick = ""
			if(type == "Protein")
			{
				onClick = "onclick=\"getInstaResultFor('" + _data2[1] + "','" + symbol + "','SWISSPROT')\"";
			}
			else if(type == "Disease")
			{
				onClick = "onclick=\"getInstaResultFor('" + _data2[1] + "','" + symbol + "','MESH')\"";
			}
			else if(type == "Process")
			{
				onClick = "onclick=\"getInstaResultFor('" + _data2[1] + "','" + symbol + "','GO')\"";
			}
			else if(type == "Drug")
			{
				onClick = "onclick=\"getInstaResultFor('" + _data2[1] + "','" + symbol + "','DRUG')\"";
			}
			else
			{
				onClick = "";
			}

		var count= _data2[2];

		//	entityUrl = "<span title=\"" + symbol + id + " : " + count + " facts\"><font size=\"1\" class=\"lableG\">" + symRep + "</font></span>";
			entityUrl = "<span title=\"" + symbol + id + " : " + count + " facts\" class=\"lableG\" " + onClick + ">" + symRep + "</span>";


		 g.add(entityUrl,_data2[2]);
	 }

	 g.render(divContainer, Title)

}
function setVisibleStat(type, ref)
{

	if(type == "Journal")
	{
		drawChartDefault("Journal","disChart1");
	}
	else if(type == "Entity Stat")
	{

		drawChartDefault("Protein","disChart");
	}
	else
	{
		document.getElementById("StatDisplay_1").innerHTML = "Yet to decide";
	}


	var divs=document.getElementsByName("statypespan");
	for(i=0;i<divs.length;i++)
	{
		divs[i].className= "unselected";
		if(divs[i] == ref)
			divs[i].className= "selected";
	}


}

function showPopUpDiv(event, id)
{
	showTooltip(event, document.getElementById(id).innerHTML);
}




// For Floating div
/*function showPopUpDiv(id)
{
	document.getElementById(id).style.display='block'
}*/

/*function hidePopUpDiv(id)
{
	document.getElementById(id).style.display='none'
}*/
