function retrieveStrainInfo(vr_number,vrid,group_name) {
	var url = 'retrieve_strain_info.html?vrid='+vrid+'&vr_number='+vr_number+'&group_name='+group_name;
	new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(response) {
        handleStrainInfoResponse(response);
      }
    });
}

function handleStrainInfoResponse(response) {
	var responseStr = response.responseText;
/*  alert(responseStr);*/
	responseXml = (new DOMParser()).parseFromString(responseStr, "text/xml");

	//do something with response
	var vr_number=responseXml.getElementsByTagName("vr_number")[0].firstChild.nodeValue;
	var vrid=responseXml.getElementsByTagName("vrid")[0].firstChild.nodeValue;
	var numStrains=responseXml.getElementsByTagName("strain").length;
	for (var i=0;i<numStrains;i++){
		var sid=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("sid")[0].firstChild.nodeValue;
		var name=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("name")[0].firstChild.nodeValue;
		var start=parseFloat(responseXml.getElementsByTagName("strain")[i].getElementsByTagName("start")[0].firstChild.nodeValue);
		var end=parseFloat(responseXml.getElementsByTagName("strain")[i].getElementsByTagName("end")[0].firstChild.nodeValue);
		var direction=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("direction")[0].firstChild.nodeValue;
		
		var id="td-strain_pos-" + vr_number + "-" + (i+1);
		var elementContents=document.getElementById(id).innerHTML;
		elementContents= elementContents.replace(/Retrieving Data/,"");
		elementContents= elementContents.replace(/\&nbsp\;/ig,"");
		elementContents= elementContents.replace(/<img src=\".*\/images\/progress.gif\">$/i, "");
		document.getElementById(id).innerHTML=elementContents + name + "<br>" + start + "-" + end;
		
		
		var id="td-strain_length_dir-" + vr_number + "-" + (i+1);
		var elementContents="";
		var maxLength;
		if (start<end){
			maxLength=end-start;
		}
		else{
			maxLength=start-end;
		}
		elementContents=maxLength + "<br>forward<input type=\"radio\" name=\"direction-" + vrid + "-" + sid + "\" value=\"forward\" ";
		if (direction=="forward"){
			elementContents=elementContents + "CHECKED";
		}
		elementContents=elementContents + "><br>";

		elementContents=elementContents + "reverse<input type=\"radio\" name=\"direction-" + vrid + "-" + sid + "\" value=\"reverse\" ";
		if (direction=="reverse"){
			elementContents=elementContents + "CHECKED";
		}
		elementContents=elementContents + "><br>";
		document.getElementById(id).innerHTML=elementContents;
		
		
		var id="td-strain_features-" + vr_number + "-" + (i+1);
		var elementContents= "";
		var numFeatures=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("feature").length;
		for (var j=0;j<numFeatures;j++){
			var tag=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("feature")[j].getElementsByTagName("tag")[0].firstChild.nodeValue;
			var value=responseXml.getElementsByTagName("strain")[i].getElementsByTagName("feature")[j].getElementsByTagName("value")[0].firstChild.nodeValue;
			elementContents=elementContents + tag + ":" + value + "<br>";
		}
		elementContents= elementContents.replace(/<br>$/, "");
		if (elementContents==""){elementContents="&nbsp;"};
		document.getElementById(id).innerHTML=elementContents;
	}
}

function retrieveRegionInfo(vr_number,vrid,strain_number,num_of_strains) {
    var url = 'retrieve_region_info.html?vrid='+vrid+'&vr_number='+vr_number+'&strain_number='+strain_number+ '&num_of_strains=' +num_of_strains;
    new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(response) {
        handleRegionInfoResponse(response);
      }
    });

}

function handleRegionInfoResponse(response) {
	var responseStr = response.responseText;
	//alert(responseStr);
	responseXml = (new DOMParser()).parseFromString(responseStr, "text/xml");

	//do something with response
	var vr_number=responseXml.getElementsByTagName("vr_number")[0].firstChild.nodeValue;
	var vrid=responseXml.getElementsByTagName("vrid")[0].firstChild.nodeValue;
	var numRegions=responseXml.getElementsByTagName("region_boundaries").length;
	for (var i=0;i<numRegions;i++){
		var strain_number=responseXml.getElementsByTagName("region_boundaries")[i].getElementsByTagName("strain_number")[0].firstChild.nodeValue;
		var sid=responseXml.getElementsByTagName("region_boundaries")[i].getElementsByTagName("sid")[0].firstChild.nodeValue;
		var rbid=responseXml.getElementsByTagName("region_boundaries")[i].getElementsByTagName("rbid")[0].firstChild.nodeValue;
		var start=parseFloat(responseXml.getElementsByTagName("region_boundaries")[i].getElementsByTagName("start")[0].firstChild.nodeValue);
		var end=parseFloat(responseXml.getElementsByTagName("region_boundaries")[i].getElementsByTagName("end")[0].firstChild.nodeValue);
		
		var id="td-region_alt_pos-" + vr_number + "-" + strain_number + "-" + (i+1);
		document.getElementById(id).innerHTML=start+ "-" + end;
		
		
		id="td-region_dir_length-" + vr_number + "-" + strain_number + "-" + (i+1);
		var elementContents;
		var maxLength;
		if (start<end){
			maxLength=end-start;
			elementContents="Forward: " + maxLength + " ";
			
		}
		else{
			maxLength=start-end;
			elementContents="Reverse: " + maxLength + " ";
		}
		
		elementContents=elementContents + "<input type=\"checkbox\" id=\"" + vrid + "-" + sid + "-" + rbid + "\" name=\"rbids\" value=\"" + vrid + "-" + sid + "-" + rbid + "\" CHECKED>";
		document.getElementById(id).innerHTML=elementContents;
      if (i == numRegions-1 && $(id).up().next('tr')) {// if last region to add and there is still another row (contaning rotating gif) then make innerHTML a nbsp and reduce height by setting fontSize
          var next_row = $(id).up().next('tr');
          while (next_row != undefined){ 
                next_row.childElements().each(function(childElement) {
                    childElement.innerHTML = "&nbsp;";
                    childElement.setStyle({fontSize: '1px'});
                });
                next_row = next_row.next('tr');
            }
        }
	}
}
function retrieveGeneInfo(sid,start,end) {
    var url = 'retrieve_gene_info.html?sid=' + sid + '&start=' + start + '&end='+ end;
    new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(response) {
        handleGeneInfoResponse(response);
      }
    });
}
function handleGeneInfoResponse(response){
    var responseStr = response.responseText;
    var responseXml = (new DOMParser()).parseFromString(responseStr, "text/xml").documentElement;
    var sid=responseXml.getElementsByTagName("sid")[0].firstChild.nodeValue;
    var id = "strain_info-" + sid;
    var accession=responseXml.getElementsByTagName("accession")[0].firstChild.nodeValue;
    elementContents = "<ul><li><strong>Sequence Features</strong></li>";
    var features = responseXml.getElementsByTagName("features")[0];
    var numFeatures=features.getElementsByTagName("feature").length;
    if (numFeatures == 0){
        elementContents += "None";
    }
    else{
        elementContents += "<ol>";
    }
    for (var i=0;i<numFeatures;i++){
        var feature = features.getElementsByTagName("feature")[i];
        if( navigator.appName != 'Microsoft Internet Explorer' ) {
            Element.cleanWhitespace(feature);
        }
        elementContents += "<li><ul>"
        for (var j=0;j<feature.childNodes.length;j++){
            var tag = feature.childNodes[j];
            elementContents += "<li>" + tag.nodeName + ": " + tag.firstChild.nodeValue + "</li>";
        }
         elementContents += "</ul></li>"
    }
    if (numFeatures != 0){
        elementContents += "</ol>";
    }
    elementContents += "</ul>";
    document.getElementById(id).innerHTML=elementContents;
    
}

//make DOMParser function if it does not exist e.g in IE
if (typeof DOMParser == "undefined") {
	DOMParser = function (){}
	
	DOMParser.prototype.parseFromString = function (str, contentType) {
		if (typeof ActiveXObject != "undefined") {
			var d = new ActiveXObject("MSXML.DomDocument");
			d.loadXML(str);
			return d;
		}
		else if (typeof XMLHttpRequest != "undefined") {
			var req = new XMLHttpRequest;
			req.open("GET", "data:" + (contentType || "application/xml") +
				 ";charset=utf-8," + encodeURIComponent(str), false);
			if (req.overrideMimeType) {
				req.overrideMimeType(contentType);
			}
			req.send(null);
			return req.responseXML;
		}
	}
}

