
// global variables;
var sortedArray = new Array();		 //for Genes;
var sortedQtlArray = new Array();	 //for QTLs;
var ratQtlArray = new Array();		 //for rat QTLs;
var humanQtlArray = new Array();	 //for human QTLs;
var mouseQtlArray = new Array();	 //for mouse QTLs;
var sortedStrainArray = new Array(); //for Strain;

var selectedGeneIDs = new Array();
var selectedHGeneIDs = new Array();
var selectedMGeneIDs = new Array();
var selectedQtlIDs = new Array();
var selectedHQtlIDs = new Array();
var selectedMQtlIDs = new Array();
var selectedStrainIDs = new Array();

var ratQtls = 0;
var humanQtls = 0;
var mouseQtls = 0;

var cateName;
var categories;


// invoked by "category" select element change;
// clears 'topics' select element, loads new branchs into 'topics' select element.
function showCategory(evt) {
     //equalize W3C/IE event models to get event object;
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (evt) {
		 //equalize W3C/IE models to get event target reference;
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if (elem) {
            try {

                categories = ireq.responseXML.getElementsByTagName('topnodes')[elem.value]; //elem.value=0,1,2...;
                cateName = getElementTextNS('categoryname', categories, 0); //get category name;
                processCategoryChange();

             }
            catch(e) {
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
                alert("Unable to get data:\n" + msg);
                return;
            }
        }
    }
}


function processCategoryChange() {

	 //clear all arrays first, any other methods to clear an array?
	selectedGeneIDs = new Array();
	selectedHGeneIDs = new Array();
	selectedMGeneIDs = new Array();
	selectedQtlIDs = new Array();
	selectedHQtlIDs = new Array();
	selectedStrainIDs = new Array();

	 //show category name;
	document.getElementById('category').innerHTML = cateName;
	clearItem('diseasename');

	 //show Genes Info;
	var thisGeneNode = categories.getElementsByTagName('geneList');
		
	appendTable(thisGeneNode,'geneList','geneInfo');
	printGeneTable('geneList','geneInfo','rat');	//print rat highlight at this time;

	 //display Genes number on summary area;
	var theGeneSum = selectedGeneIDs.length;
	document.getElementById('genes-sum').innerHTML = theGeneSum;
	var theHGeneSum = selectedHGeneIDs.length;
	document.getElementById('human-genes-sum').innerHTML = theHGeneSum;
	var theMGeneSum = selectedMGeneIDs.length;
	document.getElementById('mouse-genes-sum').innerHTML = theMGeneSum;

	var theAllGenes = theGeneSum + theHGeneSum + theMGeneSum;
	if (theAllGenes == 0){
		document.getElementById('no-gene').innerHTML = ' None found';
	 }
	else {
		clearItem('no-gene');
	}


	 //show QTLs Info;
	if ( pagename != 'biological' && pagename != 'pathway' ) {

		var thisQtlNode = categories.getElementsByTagName('qtlList');
		
	//	appendTable(thisQtlNode,'qtlList','qtlInfo'); //show both QTLs Info;
		appendQtlTable(thisQtlNode,'ratsym','ratid','rat-qtl'); //show rat QTLs separately;
		printQtlTable('rat',ratQtlArray,'ratid','rat-qtl'); //print rat QTLs in rat-view;
		appendQtlTable(thisQtlNode,'humansym','humanid','human-qtl'); //show human QTLs separately;
		printQtlTable('rat',humanQtlArray,'humanid','human-qtl'); //print human QTLs in rat-view;

		 //display Rat and Human QTL number on summary area;
		document.getElementById('qtls-sum').innerHTML = ratQtls;
		document.getElementById('human-qtls-sum').innerHTML = humanQtls;

		if ( pagename == 'phenotype' ){
			selectedMQtlIDs = new Array();
			appendQtlTable(thisQtlNode,'mousesym','mouseid','mouse-qtl'); //show mouse QTLs only on phenotype page;
			printQtlTable('rat',mouseQtlArray,'mouseid','mouse-qtl'); //print mouse QTLs in rat-view;
			 //display mouse QTL number on summary area;
			document.getElementById('mouse-qtls-sum').innerHTML = mouseQtls;

			var theAllQtls = ratQtls + humanQtls + mouseQtls ;
		} else {
			var theAllQtls = ratQtls + humanQtls;
		}

		if (theAllQtls == 0){
			document.getElementById('no-qtl').innerHTML = ' None found';
		} else {
			clearItem('no-qtl');
		}


		 //show Strains Info;
		var thisStrainNode = categories.getElementsByTagName('strainList');
			
		appendTable(thisStrainNode,'strainList','strainInfo');
		printStrainTable('strainList','strainInfo');

		//'display Strains bumber on summary' is in the function 'printStrainTable'; 

	 }


	 //build diseases list
	buildDiseaseList();

	 //create categories flash Gviewer;
	createFlashTab('rat',cateName,'rgd_rat_ideo.xml','820','240','GViewer2.swf');
	setBgColor('rat-flash');


	 //create Rat, Human and Mouse Gviewer link-tab on the top of Gviewer;
	var ratFlashLink = " <a href=\"javascript:createFlashTab('rat','" + cateName + "','rgd_rat_ideo.xml','820','240','GViewer2.swf');printAllTables('rat');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + cateName + "','rat');\"> <b>Rat</b> </a> ";
	document.getElementById('rat-flash').innerHTML = ratFlashLink;

	var humanFlashLink = " <a href=\"javascript:createFlashTab('human','" + cateName + "','human_ideo.xml','820','240','GViewer2.swf');printAllTables('human');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + cateName + "','human');\"> <b>Human</b> </a> ";
	document.getElementById('human-flash').innerHTML = humanFlashLink;

	var mouseFlashLink = " <a href=\"javascript:createFlashTab('mouse','" + cateName + "','mouse_ideo.xml','820','240','GViewer2.swf');printAllTables('mouse');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + cateName + "','mouse');\"> <b>Mouse</b> </a> ";
	document.getElementById('mouse-flash').innerHTML = mouseFlashLink;


	 //create Rat's SyntenyTab on right-side of Gviewer;
	createSyntenyTab(cateName,'rat');


	 //create Pie Graphics and Report;
	clearItem('cc-pie');
	loadingData('cc-report');
	clearItem('bp-pie');
	loadingData('bp-report');
	clearItem('mf-pie');
	loadingData('mf-report');
//	clearItem('pw-pie'); //for pathway; 
//	loadingData('pw-report');  //for pathway;

	window.setTimeout("createFusionCharts('cc','cc-pie','cc-report')",4000);
	window.setTimeout("createFusionCharts('bp','bp-pie','bp-report')",5000);
	window.setTimeout("createFusionCharts('mf','mf-pie','mf-report')",6000);
//	window.setTimeout("createFusionCharts('pw','pw-pie','pw-report')",7000); //for pathway; 


	 //print buttons to load charts;
	printButtons();

}


// fill 'topics' select list with branchs from the current XML document.
function buildDiseaseList() {

	var diseasesList = new Array();	
	clearList('topics');	//clear 'topic' area first;
    var select = document.getElementById('topics');

    var terms = categories.getElementsByTagName('terms');

    var initOpt = document.createElement('option');
	var initContent = document.createTextNode('Choose one ... ');
    initOpt.value = '';
    initOpt.appendChild(initContent);
    select.appendChild(initOpt);

     //loop through <terms> elements, and add each nested <termName> element to topics select element.
    for (i=0; i<terms.length; i++) {
		var selectDisease = new Array();
		var getTermName = getElementTextNS('termName', terms[i], 0);
		 //added a sort function below to order diseases in alphabetic

	 	// does this row already exist in diseasesList? if no, do appendToSelect().
		if ( i == 0 ){	//first item should be pushed in;
			selectDisease.push(getTermName);
			selectDisease.push(i);
			diseasesList.push(selectDisease);
		 }
		var hasItin = 0;
		for ( n=0; n<diseasesList.length; n++ ){
			if ( diseasesList[n][0] == getTermName ){
				hasItin = 1;
				break;
			}
		 }
		if ( hasItin == 0 ){
			selectDisease.push(getTermName);
			selectDisease.push(i);
			diseasesList.push(selectDisease);
		}
    }

    diseasesList.sort();

    for (i=0; i<diseasesList.length; i++){
    	var thiscontent = document.createTextNode(diseasesList[i][0]);
    	var idvalue = diseasesList[i][1];
    	appendToSelect(select, idvalue, thiscontent);

    }
}


// invoked by "disease" select element change, display details retrieved from XML document.
function showDetail(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : null);
	if (evt) {
		var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (select) {	// ( && select.options.length > 1)
			 //copy <terms> element text for the selected terms;
			var terms = categories.getElementsByTagName('terms')[select.value]; //select.value=0,1,2...;
						
			var diseaseName = getElementTextNS('termName', terms, 0); //get disease name;
		//	var contentlink = getElementTextNS('termID', terms, 0); //get linkURL's rgd-id;

			 //show disease name after category;
			document.getElementById('diseasename').innerHTML = '&nbsp;<font color="#CC0000">></font>&nbsp;' + diseaseName;

			 //clear all arrays again, any other methods to clear an array?
			selectedGeneIDs = new Array();
			selectedHGeneIDs = new Array();
			selectedMGeneIDs = new Array();
			selectedQtlIDs = new Array();
			selectedHQtlIDs = new Array();
			selectedStrainIDs = new Array();


			 //display selected disease's Gene info;
			var thisGeneNode = terms.getElementsByTagName('geneList'); //---------gene;
			appendTable(thisGeneNode,'geneList','geneInfo');
			printGeneTable('geneList','geneInfo','rat');	//print rat highlight only;

			 //display Genes number on summary area;
			var theGeneSum = selectedGeneIDs.length;
			document.getElementById('genes-sum').innerHTML = theGeneSum;
			var theHGeneSum = selectedHGeneIDs.length;
			document.getElementById('human-genes-sum').innerHTML = theHGeneSum;
			var theMGeneSum = selectedMGeneIDs.length;
			document.getElementById('mouse-genes-sum').innerHTML = theMGeneSum;

			var theAllGenes = theGeneSum + theHGeneSum + theMGeneSum;
			if (theAllGenes == 0){
				document.getElementById('no-gene').innerHTML = ' None found';
			 }
			else {
				clearItem('no-gene');
			}


			if ( pagename != 'biological' && pagename != 'pathway' ) {

				 //display selected disease's Rat and Human QTL info;
				var thisQtlNode = terms.getElementsByTagName('qtlList'); //----------qtl;
			//	appendTable(thisQtlNode,'qtlList','qtlInfo'); //show both rat and human QTLs Info;
				appendQtlTable(thisQtlNode,'ratsym','ratid','rat-qtl'); //show rat QTLs only;
				printQtlTable('rat',ratQtlArray,'ratid','rat-qtl');
				appendQtlTable(thisQtlNode,'humansym','humanid','human-qtl'); //show human QTLs only;
				printQtlTable('rat',humanQtlArray,'humanid','human-qtl');

				 //display Rat and Human QTL number on summary area;
				document.getElementById('qtls-sum').innerHTML = ratQtls;
				document.getElementById('human-qtls-sum').innerHTML = humanQtls;

				if ( pagename == 'phenotype' ) {
					selectedMQtlIDs = new Array();
					appendQtlTable(thisQtlNode,'mousesym','mouseid','mouse-qtl'); //show mouse QTLs on phenotype page;
					printQtlTable('rat',mouseQtlArray,'mouseid','mouse-qtl');

					 //display Mouse QTL number on summary area;
					document.getElementById('mouse-qtls-sum').innerHTML = mouseQtls;

					var theAllQtls = ratQtls + humanQtls + mouseQtls ;
				 }
				else {
					var theAllQtls = ratQtls + humanQtls;
				}

				if (theAllQtls == 0){
					document.getElementById('no-qtl').innerHTML = ' None found';
				 }
				else {
					clearItem('no-qtl');
				}


				 //display selected disease's Strain info;
				var thisStrainNode = terms.getElementsByTagName('strainList'); //-------strain;
				appendTable(thisStrainNode,'strainList','strainInfo');
			//	printTable('strainList','strainInfo'); ** replaced by below printStrainTable();
				printStrainTable('strainList','strainInfo');

				 //'display Strains number on summary' is in the function 'printStrainTable'; 

			}


			 //create disease flash Gviewer;
			createFlashTab('rat',diseaseName,'rgd_rat_ideo.xml','820','240','GViewer2.swf');
			setBgColor('rat-flash');


			 //create Rat, Human and Mouse Gviewer link-tab on the top of Gviewer;
			var ratFlashLink = " <a href=\"javascript:createFlashTab('rat','" + diseaseName + "','rgd_rat_ideo.xml','820','240','GViewer2.swf');printAllTables('rat');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + diseaseName + "','rat');\"> <b>Rat</b> </a> ";
			document.getElementById('rat-flash').innerHTML = ratFlashLink;

			var humanFlashLink = " <a href=\"javascript:createFlashTab('human','" + diseaseName + "','human_ideo.xml','820','240','GViewer2.swf');printAllTables('human');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + diseaseName + "','human');\"> <b>Human</b> </a> ";
			document.getElementById('human-flash').innerHTML = humanFlashLink;

			var mouseFlashLink = " <a href=\"javascript:createFlashTab('mouse','" + diseaseName + "','mouse_ideo.xml','820','240','GViewer2.swf');printAllTables('mouse');\" class=\"asubtitle\" onClick=\"createSyntenyTab('" + diseaseName + "','mouse');\"> <b>Mouse</b> </a> ";
			document.getElementById('mouse-flash').innerHTML = mouseFlashLink;


			 //create Rat's SyntenyTab in right-side of Gviewer;
			createSyntenyTab(diseaseName,'rat');


			 //create Pie Graphics and Report;
			clearItem('cc-pie');
			loadingData('cc-report');
			clearItem('bp-pie');
			loadingData('bp-report');
			clearItem('mf-pie');
			loadingData('mf-report');
		//	clearItem('pw-pie'); //for pathway; 
		//	loadingData('pw-report'); //for pathway;

			window.setTimeout("createFusionCharts('cc','cc-pie','cc-report')",3000);
			window.setTimeout("createFusionCharts('bp','bp-pie','bp-report')",4000);
			window.setTimeout("createFusionCharts('mf','mf-pie','mf-report')",5000);
		//	window.setTimeout("createFusionCharts('pw','pw-pie','pw-report')",6000); //for pathway; 


			 //print buttons to load charts;
			printButtons();

		 }
		else {
			alert("There was a problem retrieving the XML data: \n" + ireq.statusText);
		}
	}
}


// add branch to select element the less elegant, but compatible way.
function appendToSelect(select, value, content) {
    var opt;
    opt = document.createElement('option');
    opt.value = value;
    opt.appendChild(content);
    select.appendChild(opt);
}


// store rgd IDs in an array, and sort them;
function appendTable(thisNode,thisItem,div) { 

	var thisArray = new Array();

	for (i=0; i<thisNode.length; i++)
	{
		var getRatNodeName = thisNode[i].getElementsByTagName('ratsym'); //'thisNode[i]' is this specfied node(gene,qtl,strain);
		if (getRatNodeName[0]) { //if this node exists;
			var getRatNodeNameValue = getRatNodeName[0].firstChild.nodeValue;
		} else {
			var getRatNodeNameValue = ''; } //empty if it doesn't exist;
		var getRatNodeID = thisNode[i].getElementsByTagName('ratid');
		if (getRatNodeID[0]) {
			var getRatNodeIDValue = getRatNodeID[0].firstChild.nodeValue;
		} else { 
			var getRatNodeIDValue = ''; }
		var ratArray = new Array();
		ratArray.push(getRatNodeNameValue);
		ratArray.push(getRatNodeIDValue);

		var getHumanNodeName = thisNode[i].getElementsByTagName('humansym');
		var getHumanNodeID = thisNode[i].getElementsByTagName('humanid');
		if (getHumanNodeName[0]) {
			var getHumanNodeNameLength = getHumanNodeName.length; //check how namy 'hsymbol' in this node, cool!!!;
			var humanArray = new Array();
			for (m=0; m<getHumanNodeNameLength; m++) {
				var getHumanNodeNameValue = getHumanNodeName[m].firstChild.nodeValue;
				var getHumanNodeIDValue = getHumanNodeID[m].firstChild.nodeValue;
				humanArray.push(getHumanNodeNameValue);
				humanArray.push(getHumanNodeIDValue);
			}
		} else {
			var getHumanNodeNameValue = '';
			var getHumanNodeIDValue = '';
			var humanArray = new Array();
			humanArray.push(getHumanNodeNameValue);
			humanArray.push(getHumanNodeIDValue);
		}

		var getMouseNodeName = thisNode[i].getElementsByTagName('mousesym');
		var getMouseNodeID = thisNode[i].getElementsByTagName('mouseid');
		if (getMouseNodeName[0]) {
			var getMouseNodeNameLength = getMouseNodeName.length;
			var mouseArray = new Array();
			for (m=0; m<getMouseNodeNameLength; m++) {
				var getMouseNodeNameValue = getMouseNodeName[m].firstChild.nodeValue;
				var getMouseNodeIDValue = getMouseNodeID[m].firstChild.nodeValue;
				mouseArray.push(getMouseNodeNameValue);
				mouseArray.push(getMouseNodeIDValue);
			}
		} else {
			var getMouseNodeNameValue = '';
			var getMouseNodeIDValue = '';
			var mouseArray = new Array();
			mouseArray.push(getMouseNodeNameValue);
			mouseArray.push(getMouseNodeIDValue);
		}


	 	 //does this row already exist in thisArray? if no, push it into thisArray.
		if ( i == 0 ){	//first item should be pushed in;
			thisArray.push([ratArray,humanArray,mouseArray]);
		 }
		var hasIt = 0;
		var compareArray = new Array();
		compareArray.push([ratArray,humanArray,mouseArray]);
		var compared = compareArray[0][0][1];
		var compared2 = compareArray[0][1][1];

		for (n=0; n<thisArray.length; n++){
			if ( thisArray[n][0][1] == compared && thisArray[n][1][1] == compared2 ){ //
				hasIt = 1;
				break;
			}
		 }
		if ( hasIt==0 ){
			thisArray.push([ratArray,humanArray,mouseArray]);
		}

	}


	if ( thisItem == "geneList" ) {

		sortedArray = thisArray.sort();

		 //store current rat, human and mouse Gene IDs,
		for (i=0; i<sortedArray.length; i++) {

			var subArray = 3; //there are only rat, human and mouse 3 sub-array;
			for (n=0; n<subArray; n++) { //n=0:rat; n=1:human; n=2:mouse;

				for (j=0; j<sortedArray[i][n].length-1; j=j+2) {

					 //get theItemID (rgdid, such as '1325',...);
					var theItemID = sortedArray[i][n][j+1];

					if (thisItem == 'geneList' && n == 0) {	//only for genes:rat list;
						if (theItemID != ''){ //store current rat gene IDs;
							selectedGeneIDs.push(theItemID); }
					 }
					else if (thisItem == 'geneList' && n == 1){	//for genes:human list;
						if (theItemID != ''){	//store human IDs;
							selectedHGeneIDs.push(theItemID); }
					 }
					else if (thisItem == 'geneList' && n == 2){	//for genes:mouse list;
						if (theItemID != ''){	//store mouse IDs;
					 		selectedMGeneIDs.push(theItemID); }
					}

				 } //End j-loop;
			 } //End n-loop;
		 } //End i-loop;

	 }
	else if ( thisItem == "strainList" ) {

		sortedStrainArray = thisArray.sort(); //added on 2006-05-22; selectedStrainIDs

	}

}


// print out appended Gene table (symbols list and their links) in each 'Gene Info' area;
function printGeneTable(thisItem,div,thisKind){ //thisKind=rat,human,mouse;
	var baseLink,trailLink,linkURL;

	var newTable = document.createElement('TABLE');
	newTable.setAttribute('cellPadding',1);
	var tbody = document.createElement('TBODY');
	newTable.appendChild(tbody);

	for (i=0; i<sortedArray.length; i++) {
		
		var row = document.createElement('TR');
		var subArray = 3; // there are only rat, human and mouse 3 sub-array;

		for (n=0; n<subArray; n++) { //n=0:rat; n=1:human; n=2:mouse;
			 //define baseLink, trailLink;
			if (n == 0){ //n=0:rat genes;
				baseLink = 'http://rgd.mcw.edu/tools/genes/genes_view.cgi?id=';
				trailLink = '';
			 }
			else if (n == 1){ //n=1:human genes;
				baseLink = 'http://rgd.mcw.edu/tools/genes/genes_view.cgi?id=';
				// baseLink = 'http://rgd.mcw.edu/tools/homologs/homologs_view.cgi?id=';
				trailLink = '&species=1';
			 }
			else if (n == 2){ //n=2:mouse genes;
				baseLink = 'http://rgd.mcw.edu/tools/genes/genes_view.cgi?id=';
				// baseLink = 'http://rgd.mcw.edu/tools/homologs/homologs_view.cgi?id=';
				trailLink = '&species=2';
			}

			var container = document.createElement('TD');
			container.setAttribute('width', 100);
			
			container.onmouseover = function(){this.style.backgroundColor="#CCCCAA"};
			container.onmouseout = function(){this.style.backgroundColor=""};
			
			for (j=0; j<sortedArray[i][n].length-1; j=j+2) {

				var span = document.createElement('span');

				 //get theItem, theItemID;
				var theItem = sortedArray[i][n][j]; //symbol;
				var theItemID = sortedArray[i][n][j+1]; //rgdid;

				linkURL = baseLink + theItemID + trailLink;

				if (n == 0) {	//only for genes:rat list;
					if (thisKind == 'rat'){
						var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> "; 
					}
					else {	//for no highlight of genes list;
						var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
					}
				 }
				else if (n == 1){	//for genes:human list;
					if (thisKind == 'human'){
						var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> ";
					}
					else {	//for no highlight of genes list;
						var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
					}
				 }
				else if (n == 2){	//for genes:mouse list;
					if (thisKind == 'mouse'){
				 		var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> ";
					}
					else {	//for no highlight of genes list;
						var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
					}
				 }
			//	else {	//for no highlight of genes list;
			//		var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
			//	}

				span.innerHTML = printline;
				container.appendChild(span);
			 } //End j-loop;

			row.appendChild(container);
		 } //End n-loop;

		tbody.appendChild(row);
	 } //End i-loop;
	
	clearItem(div);
	document.getElementById(div).appendChild(newTable);

}


function printStrainTable(thisItem,div){
	var baseLink,trailLink,linkURL;

	 //print Strains number on summary area;
	var theStrainSum = sortedStrainArray.length;
	document.getElementById('strains-sum').innerHTML = theStrainSum;

	if (theStrainSum == 0){
		document.getElementById('no-strain').innerHTML = ' None found';
	 }
	else {
		clearItem('no-strain');
	}


	var newTable = document.createElement('TABLE');
	newTable.setAttribute('cellPadding',1);
	var tbody = document.createElement('TBODY');
	newTable.appendChild(tbody);

	for (i=0; i<sortedStrainArray.length; i++) {
		
		var row = document.createElement('TR');
		var subArray = 3; // there are only rat, human and mouse 3 sub-array;

		for (n=0; n<subArray; n++) { //n=0:rat; n=1:human; n=2:mouse;
			 //define baseLink, trailLink;
			if (thisItem == 'strainList'){ //strains;
				baseLink = 'http://rgd.mcw.edu/tools/strains/strains_view.cgi?id='; //strain: rat;
				trailLink = '';
			}

			var container = document.createElement('TD');
			container.setAttribute('width', 100);

			for (j=0; j<sortedStrainArray[i][n].length-1; j=j+2) {

				 //get theItem, theItemID;
				var theItem = sortedStrainArray[i][n][j]; //symbol;
				var theItemID = sortedStrainArray[i][n][j+1]; //rgdid;

				if (theItem != ''){
					container.onmouseover = function(){this.style.backgroundColor="#CCCCAA"};
					container.onmouseout = function(){this.style.backgroundColor=""};

					var span = document.createElement('span');
					
					linkURL = baseLink + theItemID + trailLink;
					var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
					span.innerHTML = printline;
					container.appendChild(span);	
				}

			 } //End j-loop;

			row.appendChild(container);
		 } //End n-loop;

		tbody.appendChild(row);
	 } //End i-loop;
	
	clearItem(div);
	document.getElementById(div).appendChild(newTable);

}


// only for QTLs. It stores rgdIds in an array, sort them;
function appendQtlTable(thisNode,symbol,id,div) { //symbol=ratsym,humansym,mousesym;

	var thisArray = new Array();

	for (i=0; i<thisNode.length; i++) {

		var getNodeName = thisNode[i].getElementsByTagName(symbol);
		var getNodeID = thisNode[i].getElementsByTagName(id);

		if (getNodeName[0]) { //if this node exists;
			var getNodeNameLength = getNodeName.length;
			var subArray = new Array();
			for (m=0; m<getNodeNameLength; m++) { //for case: [name1,id1,name2,id2];
				var getNodeNameValue = getNodeName[m].firstChild.nodeValue;
				var getNodeIDValue = getNodeID[m].firstChild.nodeValue;
				if (getNodeNameValue != ''){ //if this node value is NOT null;
					subArray.push(getNodeNameValue);
					subArray.push(getNodeIDValue);
				}
			 }

			 // does this row already exist in thisArray? if no, push it into thisArray.
			if ( i == 0 ){	//first item should be pushed in;
				thisArray.push([subArray]);
			 }
			var hasItq = 0;
			var compareArray = new Array();
			compareArray.push([subArray]);
			var compared = compareArray[0][0][0];
			for (m=0; m<thisArray.length; m++){
				if ( thisArray[m][0][0] == compared ){
					hasItq = 1;
					break;
				}
			 }
			if ( hasItq==0 ){
				thisArray.push([subArray]);
			}

		 }
	}


	if ( id == 'ratid' ){
		ratQtlArray = thisArray.sort();
		for (i=0; i<ratQtlArray.length; i++) {
		//	for (j=0; j<ratQtlArray[i][0].length-1; j=j+2) { //for case: [name1,id1,name2,id2];
		//		var theItemID = ratQtlArray[i][0][j+1];
				var theItemID = ratQtlArray[i][0][1];
				if ( theItemID!='' ){
					selectedQtlIDs.push(theItemID);	//store current rat QTLs' IDs;
				}
		//	}
		 }
		ratQtls = selectedQtlIDs.length;
	 }
	else if ( id == 'humanid' ) {
		humanQtlArray = thisArray.sort();
		for (i=0; i<humanQtlArray.length; i++) {
		//	for (j=0; j<humanQtlArray[i][0].length-1; j=j+2) { //for case: [name1,id1,name2,id2];
		//		var theItemID = humanQtlArray[i][0][j+1];
				var theItemID = humanQtlArray[i][0][1];
				if ( theItemID!='' ){
					selectedHQtlIDs.push(theItemID);	//store human QTLs' IDs;
				}
		//	}
		 }
		humanQtls = selectedHQtlIDs.length;
	 }
	else if ( id == 'mouseid' ) {
		mouseQtlArray = thisArray.sort();
		for (i=0; i<mouseQtlArray.length; i++) {

				var theItemID = mouseQtlArray[i][0][1];
				if ( theItemID!='' ){
					selectedMQtlIDs.push(theItemID);	//store mouse QTLs' IDs;
				}

		 }
		mouseQtls = selectedMQtlIDs.length;
	}

}


// only for QTLs print out;
function printQtlTable(thisKind,qtlArray,id,div) { //qtlArray=ratQtlArray,humanQtlArray,mouseQtlArray;

        var baseLink = 'http://rgd.mcw.edu/objectSearch/qtlReport.jsp?rgd_id=';

	var linkURL;

	var newTable = document.createElement('TABLE');
	newTable.setAttribute('cellPadding', 1);
	var tbody = document.createElement('TBODY');
	newTable.appendChild(tbody);

	for (i=0; i<qtlArray.length; i++) {

		var row = document.createElement('TR');
		var container = document.createElement('TD');	
		container.setAttribute('width', 100);
		container.onmouseover = function(){this.style.backgroundColor="#CCCCAA"};
		container.onmouseout = function(){this.style.backgroundColor=""};

		for (j=0; j<qtlArray[i][0].length-1; j=j+2) { //for case: [name1,id1,name2,id2];
			var span = document.createElement('span');

			 //get theItem, theItemID;
			var theItem = qtlArray[i][0][j];
			var theItemID = qtlArray[i][0][j+1];

			linkURL = baseLink + theItem;

			if ( id == 'ratid' ){	//only for rat;
				if (thisKind == 'rat'){
					var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> "; 
				 }
				else {
					var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
				}
			 }
			else if (id == 'humanid'){	//only for human;
				if (thisKind == 'human'){
					var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> ";
				 }
				else {
					var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
				}
			 }
			 else if (id == 'mouseid'){	//only for mouse (only phenotype);
				if (thisKind == 'mouse'){
					var printline = " <a href=\"" + linkURL + "\"  target=new " + "onMouseOver=\"javascript:doHighlight2('set', '" + theItem + "');\" onMouseOut=\"javascript:doHighlight2('unset', '" + theItem + "');\">" + theItem + "</a> ";
				 }
				else {
					var printline = " <a href=\"" + linkURL + "\" target=new>" + theItem + "</a> ";
				}
			 }

			span.innerHTML = printline;
			container.appendChild(span);
		} //end j-loop;

		row.appendChild(container);
		tbody.appendChild(row);
	} //end i-loop;


	if ( document.getElementById(div) ){
		clearItem(div);
		document.getElementById(div).appendChild(newTable);
	}
	
}


var uid = 200511081215; //needs to be unique on page, gets passed to Flash movie too;
var flashProxy = new FlashProxy(uid, '../GViewer/javascript/JavaScriptFlashGateway.swf');
function doHighlight2(action, featureName) {
	if(action == 'set') {
		flashProxy.call('setHighlight', featureName);
	 }
	else {
		flashProxy.call('unsetHighlight', featureName);
	}
}


// create an embed object to display it in 'gviewer' area;
// show selected genes and QTLs IDs in GViewer Falsh tab;
function createFlashTab(thiskind,thisName,datafile,thisw,thish,thisflashfile){

	var cgi_req = false;
	var xmlGviewer = "";
	var toShowIds = "";

	if ( thiskind == "rat" ) {

		toShowIds = selectedGeneIDs.join('__') + '__' + selectedQtlIDs.join('__');
	}
	else if ( thiskind == "human" ){

		toShowIds = selectedHGeneIDs.join('__') + '__' + selectedHQtlIDs.join('__');
	}
	else if ( thiskind == "mouse" ){

		toShowIds = selectedMGeneIDs.join('__');
	}


	var posturl2 = "/tools/GViewerFlashV2/getPositionForRGD.cgi";
	var poststr2 = "dbIds=" + toShowIds;
	makePOSTRequest2(posturl2, poststr2);


	function makePOSTRequest2(xmlurl, parameters) {
      cgi_req = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         cgi_req = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // IE
         try {
            cgi_req = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               cgi_req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!cgi_req) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      if (cgi_req.overrideMimeType) {
		//	set type accordingly to anticipated content type
			cgi_req.overrideMimeType('text/xml');
		//	cgi_req.overrideMimeType('text/html');
      }

      cgi_req.onreadystatechange = alertContents2;
      cgi_req.open('POST', xmlurl, true);
      cgi_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      cgi_req.setRequestHeader("Content-length", parameters.length);
      cgi_req.setRequestHeader("Connection", "close");
      cgi_req.send(parameters);
   }

   function alertContents2() {
      if (cgi_req.readyState == 4) {
         if (cgi_req.status == 200) {

			xmlGviewer = cgi_req.responseText.toString();

		//	alert(xmlGviewer);

document.getElementById('gviewer').innerHTML = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" " +
					" width=\"" + thisw + "\" height=\"" + thish + "\" id=\"GViewer2\" align=\"middle\"> " +
					" <param name=\"allowScriptAccess\" value=\"sameDomain\" /> " +
					" <param name=\"movie\" value=\"../GViewer/" + thisflashfile + "\" /> " +
					" <param name=\"quality\" value=\"high\" /> " +
					" <param name=\"bgcolor\" value=\"#EEF9FC\" /> " +
					" <param name=\"FlashVars\" value=\"&lcId=200511081215&baseMapURL=../GViewer/data/" + datafile +
				//	"&annotationURL=/tools/GViewerFlashV2/getPositionForRGD.cgi?dbIds=" + toShowIds + // use script...
					"&annotationXML=" + xmlGviewer +
					"&titleBarText=" + thisName + "&browserURL=http://mcnally.hmgc.mcw.edu/gb/gbrowse/rgd_903/?name=Chr&\" /> " +

					" <embed src=\"../GViewer/" + thisflashfile + "\" quality=\"high\" bgcolor=\"#EEF9FC\" " +
					" width=\"" + thisw + "\" height=\"" + thish + "\" " +
					" name=\"GViewer2\" align=\"middle\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" " +
					" FlashVars=\"&lcId=200511081215&baseMapURL=../GViewer/data/" + datafile +
				//	"&annotationURL=/tools/GViewerFlashV2/getPositionForRGD.cgi?dbIds=" + toShowIds +
					"&annotationXML=" + xmlGviewer +
					"&titleBarText=" + thisName + "&browserURL=http://mcnally.hmgc.mcw.edu/gb/gbrowse/rgd_903/?name=Chr&\" " +
					"pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /> " +
					" </object>";

		//	document.getElementById('gviewer').innerHTML = gviewerContents;

         } else {
            alert('There was a problem with the request.');
         }
      }
   }


	 //print 'view large' or '...back' button;
	if ( thish == "240" ){

		var largeLink = " <a href=\"javascript:createFlashTab('" + thiskind + "','" + thisName + "','" + datafile + "','800','560','GViewer2-2row.swf');\" class=\"asubtitle\"> Large View... </a> ";
		document.getElementById('large-button').innerHTML = largeLink;

	} else {

		var largeLink = " <a href=\"javascript:createFlashTab('" + thiskind + "','" + thisName + "','" + datafile + "','820','240','GViewer2.swf');\" class=\"asubtitle\"> ...Back </a> ";
		document.getElementById('large-button').innerHTML = largeLink;
	}

	openClose('GViewerSpace'); //make all browsers expanded and shrunk easily;

}


// create links on the right-side of Gviewer;
// function createSyntenyTab(thisIDs,thisHIDs,thisMIDs,thisName,theSeleced){
function createSyntenyTab(thisName,theSeleced){

	if (theSeleced == "rat")
	{
		var ratSynteLink = " <a href=\"javascript:createFlashTab('rat','" + thisName + "','rgd_rat_ideo.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('rat-Synteny');\"> Rat </a> ";
		document.getElementById('rat-Synteny').innerHTML = ratSynteLink;

		var humanSynteLink = " <a href=\"javascript:createFlashTab('rat','" + thisName + "','rat-human_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('human-Synteny');\"> Human Synteny </a> ";
		document.getElementById('human-Synteny').innerHTML = humanSynteLink;

		var mouseSynteLink = " <a href=\"javascript:createFlashTab('rat','" + thisName + "','rat-mouse_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('mouse-Synteny');\"> Mouse Synteny </a> ";
		document.getElementById('mouse-Synteny').innerHTML = mouseSynteLink;
	
		setBgColor('rat-flash');
		setBgColorRight('rat-Synteny');
	 }
	else if (theSeleced == "human")
	{
		var ratSynteLink = " <a href=\"javascript:createFlashTab('human','" + thisName + "','human-rat_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('rat-Synteny');\"> Rat Synteny </a> ";
		document.getElementById('rat-Synteny').innerHTML = ratSynteLink;

		var humanSynteLink = " <a href=\"javascript:createFlashTab('human','" + thisName + "','human_ideo.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('human-Synteny');\"> Human </a> ";
		document.getElementById('human-Synteny').innerHTML = humanSynteLink;

		var mouseSynteLink = " <a href=\"javascript:createFlashTab('human','" + thisName + "','human-mouse_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('mouse-Synteny');\"> Mouse Synteny </a> ";
		document.getElementById('mouse-Synteny').innerHTML = mouseSynteLink;
	
		setBgColor('human-flash');
		setBgColorRight('human-Synteny');
	 }
	else if (theSeleced == "mouse")
	{
		var ratSynteLink = " <a href=\"javascript:createFlashTab('mouse','" + thisName + "','mouse-rat_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('rat-Synteny');\"> Rat Synteny </a> ";
		document.getElementById('rat-Synteny').innerHTML = ratSynteLink;

		var humanSynteLink = " <a href=\"javascript:createFlashTab('mouse','" + thisName + "','mouse-human_synteny.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('human-Synteny');\"> Human Synteny </a> ";
		document.getElementById('human-Synteny').innerHTML = humanSynteLink;

		var mouseSynteLink = " <a href=\"javascript:createFlashTab('mouse','" + thisName + "','mouse_ideo.xml','820','240','GViewer2.swf');\" class=\"asubtitle\" onClick=\"setBgColorRight('mouse-Synteny');\"> Mouse </a> ";
		document.getElementById('mouse-Synteny').innerHTML = mouseSynteLink;
	
		setBgColor('mouse-flash');
		setBgColorRight('mouse-Synteny');
	 }
	else {
		return "no";
	}
}


function openFlashGuide(){

	var guideSpan = document.createElement('span');
	var guideText ='<li>Expand View: click chromosome to expand view. You can drag two handles to select a region of the chromosome,<br>&nbsp;&nbsp;&nbsp;&nbsp; click on the green bar to a genome browser;</li>'
				 + '<li>View Report: [SHIFT + click] to view genes and qtls report;</li>'
				 + '<li>Print: right click, select print ... </li>'
				 + '<li>Click ( i ) icon for more options </li>';
	guideSpan.innerHTML = guideText;

	var gvgdiv = document.getElementById('GViewerGuide');
	gvgdiv.innerHTML = ' ';
	gvgdiv.appendChild(guideSpan);

	var closeme = document.createElement('P');
	closeme.setAttribute('align','center');
	var closemeLink = document.createElement('A');
	var gvgtextclosemeLink = document.createTextNode('[ Click to close ]');
	closemeLink.appendChild(gvgtextclosemeLink);

	closemeLink.onclick = function closeme(){
		clearItem('GViewerGuide');
		clearItem('closeHelp')
	 };

	closeme.appendChild(closemeLink); 
	gvgdiv.appendChild(closeme);

	document.getElementById('closeHelp').innerHTML = " <a href=\"javascript:clearItem('GViewerGuide'); clearItem('closeHelp');\" class=\"alink\"> Close </a> ";
}


function openClose(thisArea){

	var ocSpan = document.createElement('span');
	var ocText =' ... ';
	ocSpan.innerHTML = ocText;

	var ocdiv = document.getElementById(thisArea);
	ocdiv.innerHTML = ' ';
	ocdiv.appendChild(ocSpan);

	clearItem(thisArea);

}


// display Fusion Charts on bottom;
function createFusionCharts(thisType,pieDiv,gridDiv) {

	var grv_req = false;
	var xmlGroovy = "";
	
	thisIDs = selectedGeneIDs.join(',');
//	allGeneIDs = selectedGeneIDs.join(',') + ',' + selectedHGeneIDs.join(',') + ',' + selectedMGeneIDs.join(','); 
//	allHGeneIDs = selectedHGeneIDs.join(','); //add ??? 
//	allMGeneIDs = selectedMGeneIDs.join(','); //add ??? 

	var poststr = thisType + '=' + thisIDs;
	var posturl = "/goslim/getgo.groovy"; //http://rgd.mcw.edu
	makePOSTRequest(posturl, poststr);


   function makePOSTRequest(xmlurl, parameters) {
      grv_req = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         grv_req = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // IE
         try {
            grv_req = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               grv_req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!grv_req) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      if (grv_req.overrideMimeType) {
		//	set type accordingly to anticipated content type
			grv_req.overrideMimeType('text/xml');
		//	grv_req.overrideMimeType('text/html');
      }

      grv_req.onreadystatechange = alertContents;
      grv_req.open('POST', xmlurl, true);
      grv_req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      grv_req.setRequestHeader("Content-length", parameters.length);
      grv_req.setRequestHeader("Connection", "close");
      grv_req.send(parameters);
   }

   function alertContents() {
      if (grv_req.readyState == 4) {
         if (grv_req.status == 200) {

		//	xmlGroovy = grv_req.responseXML;
			xmlGroovy = grv_req.responseText.toString();

			var pieSrc = '../Charts/FC_2_3_Column2D.swf?';
			var gridSrc = '../Charts/FC_2_3_SSGrid.swf?';
		
			var dataURL = '&dataURL=/goslim/getgo.groovy?';
				//can this dataURL reture a response.text()? I'll use 'req-groovy' HttpXMLRequest object to get it.
		
			var classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
			var codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0';
		
			var pieFlashVars = '&chartHeight=160&chartWidth=280';
			var gridFlashVars = '&chartHeight=120&chartWidth=270&alternateRowBgColor=CCCC00&alternateRowBgAlpha=10&numberItemsPerPage=5';
		
			var pieNAME = 'FC_2_3_Column2D';	// NAME = 'FC_2_3_Pie3D';
			var gridNAME = 'FCGrid';		// NAME = 'FCGrid';
			var mquality = 'high';
			var mbgcolor = '#FFFFFF';
			var mTYPE = 'application/x-shockwave-flash';
			var mPLUGINSPAGE = 'http://www.macromedia.com/go/getflashplayer';
		
		//	var pieUrl = pieSrc + dataURL + thisType + '=' + thisIDs + pieFlashVars;
			var pieUrl = pieSrc + pieFlashVars + '&dataXML=' + xmlGroovy; // &dataURL ???
			
		//	var gridUrl = gridSrc + dataURL + thisType + '=' + thisIDs + gridFlashVars;
			var gridUrl = gridSrc + gridFlashVars + '&dataXML=' + xmlGroovy;
		
			var pieEmbed = document.createElement('embed');
			pieEmbed.setAttribute('width', 300);
			pieEmbed.setAttribute('height', 160);
			pieEmbed.setAttribute('src', pieUrl);
		
			var mypieDiv = document.getElementById(pieDiv);
			mypieDiv.innerHTML = ' ';
			mypieDiv.appendChild(pieEmbed);
		
			var gridEmbed = document.createElement('embed');
			gridEmbed.setAttribute('width', 300);
			gridEmbed.setAttribute('height', 120);
			gridEmbed.setAttribute('src', gridUrl);
		
			var mygridDiv = document.getElementById(gridDiv);
			mygridDiv.innerHTML = ' ';
			mygridDiv.appendChild(gridEmbed);

         } else {
            alert('There was a problem with the request.');
         }
      }
   }

}


// retrieve text of an XML document element, including elements using namespaces.
function getElementTextNS(local, parentElem, index) {
	 // the namespace versions of this method (getElementsByTagNameNS()) operate
     // differently in Safari and Mozilla, but both return value with just local name,
     // provided there aren't conflicts with non-namespace element names.
    var result = parentElem.getElementsByTagName(local)[index];
    if (result) {
         //get text, accounting for possible whitespace (carriage return) text nodes. 
        if (result.childNodes.length > 1) {
            return result.childNodes[1].nodeValue;
        } else {
            return result.firstChild.nodeValue;    		
        }
     } else {
        return "no";
    }
}


// empty 'topics' select list content;
function clearList(thisItem) {
	var select = document.getElementById(thisItem);
	while (select.length > 0) {
		select.remove(0);
	}
}


function clearItem(idName) {
    document.getElementById(idName).innerHTML = ' ';
}


function loadingData(idName) {
    document.getElementById(idName).innerHTML = ' ';
    document.getElementById(idName).innerHTML = ' Loading Charts ... ';
}


// set background color for the top-part of Gviewer;
function setBgColor(thisTD) {
	document.getElementById('rat-flash').removeAttribute("bgcolor");
	document.getElementById('human-flash').removeAttribute("bgcolor");
	document.getElementById('mouse-flash').removeAttribute("bgcolor");

	document.getElementById(thisTD).setAttribute("bgcolor","#FFFFFF");

//	if (thisTD == "human-flash"){
//		document.getElementById('human-flash').setAttribute("bgcolor","FFFFFF");
//	 }
//	else if (thisTD == "mouse-flash"){
//		document.getElementById('mouse-flash').setAttribute("bgcolor","FFFFFF");
//	 }
//	else {
//		document.getElementById('rat-flash').setAttribute("bgcolor","FFFFFF");
//	}

}


// set background color for the right-side of Gviewer;
function setBgColorRight(thisTD) {
	document.getElementById('rat-Synteny').removeAttribute("bgcolor");
	document.getElementById('human-Synteny').removeAttribute("bgcolor");
	document.getElementById('mouse-Synteny').removeAttribute("bgcolor");

	document.getElementById(thisTD).setAttribute("bgcolor","#FFFFFF");

//	if (thisTD == "rat-Synteny"){
//		document.getElementById('rat-Synteny').setAttribute("bgcolor","FFFFFF");
//	 }
//	else if (thisTD == "human-Synteny"){
//		document.getElementById('human-Synteny').setAttribute("bgcolor","FFFFFF");
//	 }
//	else if (thisTD == "mouse-Synteny"){
//		document.getElementById('mouse-Synteny').setAttribute("bgcolor","FFFFFF");
//	}

}


//print Gene, QTL (and Strain) Info table after click top 'rat', 'human' and 'mouse' button; 
function printAllTables(w){
	if (w == "rat"){
		printGeneTable('geneList','geneInfo','rat');
		if (pagename == "disease"  || pagename == "phenotype" ) {
			printQtlTable('rat',ratQtlArray,'ratid','rat-qtl'); //print rat QTLs in rat-view;
			printQtlTable('rat',humanQtlArray,'humanid','human-qtl'); //print human QTLs in rat-view;
		}
	 }
	else if (w == "human"){
		printGeneTable('geneList','geneInfo','human');
		if (pagename == "disease"  || pagename == "phenotype" ) {
			printQtlTable('human',ratQtlArray,'ratid','rat-qtl'); //print rat QTLs in human-view;
			printQtlTable('human',humanQtlArray,'humanid','human-qtl'); //print human QTLs in human-view;
		}
	 }
	else if (w == "mouse"){
		printGeneTable('geneList','geneInfo','mouse');
		if (pagename == "disease"  || pagename == "phenotype" ) {
			printQtlTable('mouse',ratQtlArray,'ratid','rat-qtl'); //print rat QTLs in mouse-view;
			printQtlTable('mouse',humanQtlArray,'humanid','human-qtl'); //print human QTLs in mouse-view;
		}
	 }
}


//print buttons to load Fusion Charts when charts cannot display;
function printButtons(){

	var ccButton = "<br><a href=\"javascript:createFusionCharts('cc','cc-pie','cc-report');\" class=\"asubtitle\">[Click here if no chart is visible]</a><br><br>"; 
	document.getElementById('cc-button').innerHTML = ccButton;

	var bpButton = "<br><a href=\"javascript:createFusionCharts('bp','bp-pie','bp-report');\" class=\"asubtitle\">[Click here if no chart is visible]</a><br><br>";
	document.getElementById('bp-button').innerHTML = bpButton;

	var mfButton = "<br><a href=\"javascript:createFusionCharts('mf','mf-pie','mf-report');\" class=\"asubtitle\">[Click here if no chart is visible]</a><br><br>";
	document.getElementById('mf-button').innerHTML = mfButton;

}
