

function ajaxTreeFunction(element,treediv,treeclass,loading,divdef,divevidence){

	var ajaxRequest;  // The variable that makes Ajax possible!
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}


	var query;

	query=document.getElementById(element).value;

	var queryString = "?go_value=" + query;

	var elementname = "&element=" + element;

	var treeclass = "&treeclass=" + treeclass;

        var divdef = "&divdef=" + divdef;

			var loadinggraph = document.getElementById(loading);
			loadinggraph.style.display="inline";			
			var ajaxDisplay = document.getElementById(treediv);
                        ajaxDisplay.innerHTML = "";
			var evidence = document.getElementById(divevidence);
			evidence.style.display="none";

	ajaxRequest.open("GET","/annotation/getchildren" + queryString + elementname + treeclass + divdef, true);
        ajaxRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

ajaxRequest.onreadystatechange = function(){

	if(ajaxRequest.readyState==4 && ajaxRequest.status==200){
			ajaxDisplay.innerHTML = ajaxRequest.responseText;
			loadinggraph.style.display="none";
                        ajaxDisplay.style.display="inline";
			evidence.style.display="inline";
			}
	}

	ajaxRequest.send(null);
	
}


function term_def(query,divdef2){

        var ajaxRequest2;  // The variable that makes Ajax possible!

        try{
            // Opera 8.0+, Firefox, Safari
                ajaxRequest2 = new XMLHttpRequest();
        } catch (e){
               // Internet Explorer Browsers
                try{
                        ajaxRequest2 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest2 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                               // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }
	
        var queryString = "?go_name=" + query;

	var divdefcgi= "&divdef=" + divdef2;


        ajaxRequest2.open("GET","/annotation/definitions" + queryString + divdefcgi, true);
        ajaxRequest2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	

ajaxRequest2.onreadystatechange = function(){

        if(ajaxRequest2.readyState==4 && ajaxRequest2.status==200){

			var ajaxDisplay2=document.getElementById(divdef2);
                        ajaxDisplay2.innerHTML="";
                        ajaxDisplay2.innerHTML=ajaxRequest2.responseText;
                        ajaxDisplay2.style.display="inline";


                        }

        }

        ajaxRequest2.send(null);
}

function checksubmit(e, accession, old_value, old_annotator, old_usergroup, ev_type, inputfield, name, feature_id, new_annotator, new_usergroup, save_all_check, version, source_inputfield){

if (e.keycode==13 || e.type=='click'){

document.body.style.cursor='progress';

        var ajaxRequest3;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest3 = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest3 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest3 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }
	
	var cgi_value;
	var url_or_pmid	=new Array();
	
	var new_feature_value;   
	var source;	
	
		if (ev_type != "mod_cosref" && ev_type!="add" && ev_type!="add_go" && ev_type!="mod_add" && ev_type!="del_evidence" && ev_type!="del_feature" && ev_type!="del_restore"){	
			new_feature_value=document.getElementById(inputfield).value;
			old_value=document.getElementsByName(name + "_" + feature_id)[0].value;
			if (null!=document.getElementById(source_inputfield)){
				source=document.getElementById(source_inputfield).value;
			}
		}
		if(ev_type=="add" || ev_type=="add_go"){
			new_feature_value=document.getElementById(inputfield).value;
			if (null!=document.getElementById(source_inputfield)){
                        	source=document.getElementById(source_inputfield).value;
			}
		}

                if(ev_type=="mod_add"){
			old_value=document.getElementsByName(name + "_" + feature_id)[0].value;						
		}

	var cosref_mod_id=old_annotator;	// for edit cosrefpage only
	var cosref_type=accession;		// for edit cosrefpage only
	var inputtype="mod";			// for edit cosrefpage only
	var cosref_annotator=old_usergroup;	// for edit cosrefpage only
	var chm;				// for edit cosrefpage only
	var chm2;				// for edit cosrefpage only
	var change_type;
	var checkvalues;
	var new_ev_array = new Array();
	var old_evidence;
	if(ev_type=="add") {change_type="add_feature";}
	if(ev_type=="add_go") {change_type="add_feature";}
	if(ev_type=="mod") {if (old_value!=new_feature_value){change_type="mod_feature";}else{change_type="mod_evidence";}}
	if(ev_type=="mod_go") {if (old_value!=new_feature_value){change_type="mod_feature";}else{change_type="mod_evidence";}}
	if(ev_type=="mod_add") {change_type="add_evidence";}
	if(ev_type=="his_feature") {change_type="hisrestore_feature";}
	if(ev_type=="his_evidence") {change_type="hisrestore_evidence";}
	if(ev_type=="del_feature") {change_type="del_feature";}
	if(ev_type=="del_evidence") {change_type="del_evidence";}
	if(ev_type=="del_restore"){change_type="del_restore";}	
	if (ev_type=="del_evidence"){ 
		new_ev_array[0]=inputfield;	
	}		



	if (ev_type=="add" || ev_type=="add_go" || ev_type=="mod" || ev_type=="mod_go" || ev_type=="mod_add"){

	if (typeof name!="undefined" && ev_type!="mod_cosref" && ev_type!="mod_add"){
	
		if((name.match(/protein name/i)) || (name.match(/gene name/i))){

			var check_case_response=check_name(name,new_feature_value);	
			if (check_case_response!=true){
				alert(check_case_response);
				document.body.style.cursor="default";
				return false;
			}
		}
	}
	
		checkvalues=checkevidence(ev_type,name,feature_id);
		if (checkvalues!=false && typeof checkvalues=="object"){
			if(typeof checkvalues[0][0]!="undefined")	


			for (var i in checkvalues){

				for (x=0;x<checkvalues[i].length;x++){	
					var tmp1=checkvalues[i][x];
					var checkend=checkvalues[i].length-1;
					if (x<checkend){
	                                        new_ev_array.push(tmp1+",,");
					}
					if (x==checkend){
						new_ev_array.push(tmp1+",,,");
					}

					if (checkvalues[i][x].match(/exturl==/)){	

						var tmp2=checkvalues[i][x].split("==");

							var new_ev_string=new_ev_array.join("");

							if (new_ev_string.match("new_ev_type==cosref")){

								for (y=0;y<new_ev_array.length;y++){

									if (new_ev_array[y].match(/new_ev_code==/)){
										var tmp_ev_code=new_ev_array[y].substring(0, new_ev_array[y].length-2);
										tmp2[1]=tmp2[1] + "---" + tmp_ev_code;
									}
								}
							}

						url_or_pmid.push(tmp2[1]);
					}
				}
			}		
		}

		if (typeof checkvalues=="boolean" && checkvalues==false){
			document.body.style.cursor='default';
			return false;
		}

	}	
	
	if (ev_type=="mod_cosref"){

	var ev_code;

		if(cosref_type=="customref"){
        		ev_code="EXP";
		}

		else{
        		ev_code="IEA";
		}

		chm = check_mendetory(cosref_type,inputtype,ev_code,cosref_mod_id);
		if (chm!=false && typeof chm=="object"){
        		for(var i=0; i < chm.length; i++){
                		if (chm[i].match("exturl")){
	                	        var tmp2=chm[i].split("==");
        	                	url_or_pmid.push(tmp2[1]);
	                	}

        		}
			var tmp=new Array();
			chm2=chm.join("----");
		}

		else{
			document.body.style.cursor='default';
			return false;
		}
	}


        cgi_value = "?url_or_pmid=" + url_or_pmid + "&annotator=" + new_annotator;

        ajaxRequest3.open("GET","/annotation/checksubmit" + cgi_value, true);
        ajaxRequest3.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		
	ajaxRequest3.onreadystatechange = function(){

        	if(ajaxRequest3.readyState == 4 && ajaxRequest3.status == 200){

			if (ajaxRequest3.responseText=="allvalid" && ev_type!="mod_cosref"){
				checkredundant(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_feature_value, new_annotator, new_usergroup, new_ev_array, save_all_check, version, source);
				//checkstatus(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_feature_value, new_annotator, new_usergroup, new_ev_array, save_all_check, version);
                        }
			if (ajaxRequest3.responseText=="allvalid" && ev_type=="mod_cosref"){
				sendmail('mod_cosref','0','0','0',cosref_annotator,'0',cosref_mod_id,'0',chm2,'2');
			}

			if(ajaxRequest3.responseText!="allvalid"){
				document.body.style.cursor='default';
		                cancel_reset(name);
				alert(ajaxRequest3.responseText);	
		                return false;
			}
        	}

	}

        ajaxRequest3.send(null);
}	

}

function showcosref(divelement,type,annotator,name_or_fid,value){

        var ajaxRequest6;  // The variable that makes Ajax possible!

        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest6 = new XMLHttpRequest();
        } catch (e){
               // Internet Explorer Browsers
                try{
                        ajaxRequest6 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest6 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                               // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }

	var cgi_value="?divelement=" + divelement + "&cosref_type=" + type + "&annotator=" + annotator + "&name_or_fid=" + name_or_fid + "&value=" + value;

        ajaxRequest6.open("GET","/annotation/cosrefinput" + cgi_value, true);
        ajaxRequest6.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

ajaxRequest6.onreadystatechange = function(){

        if(ajaxRequest6.readyState==4 && ajaxRequest6.status==200){
                        var ajaxDisplay6=document.getElementById(divelement);
                        ajaxDisplay6.innerHTML="";
                        ajaxDisplay6.innerHTML=ajaxRequest6.responseText;
                        ajaxDisplay6.style.display="inline";
                        }

        }

        ajaxRequest6.send(null);
}


function checkevidence(type, name, id){

if (type=='mod'){

	var f_id    	= id;	
	var arr_url 	= document.getElementsByName(name + "_" + f_id + "_url");
	var arr_url_des = document.getElementsByName(name + "_" + f_id + "_url_des");
	var re_array	= new Array();	

	if (typeof arr_url!="undefined"){

 	       for (var y = 0; y < arr_url.length; y++) {

			var url;
			url = arr_url[y].value;

			var url_des;
			url_des=arr_url_des[y].value;

			var ev_type=document.getElementById("radio_evidence_" + f_id + "_" + url_des).value;
			var checkelement=document.getElementById("url_mod_"+f_id+"_"+url_des);
			
		if (checkelement.value!="readonly"){

			if (ev_type=='pubmed'){
				
				var compare_pm;	
				var checkelement_pubmed=document.getElementById("pubmed_"+f_id+"_"+url_des);
				if(null==checkelement_pubmed){
					compare_pm=url; 
				}
			
                                else{
                                        compare_pm=checkelement_pubmed.value;
                                }


				if (checkelement.value!=compare_pm){
					var input=new Array();
					input[0]='exturl=='+checkelement.value;
                                        input.unshift("url_des=="+url_des);
					input.unshift("new_ev_type=="+ev_type);
                                        input.unshift("old_ev_anno=="+document.getElementById("url_anno_"+f_id+"_"+url_des).value);                                        
                                        input.unshift(":::old_ev=="+url);
					re_array.push(input);
				}

			}


                        if (ev_type=='customref'){

                                if (checkelement.value!=url){
					var chm		=check_mendetory('customref','new','EXP', f_id + "_" + url_des);
					if (chm!=false){
						chm.unshift("url_des=="+url_des);
						chm.unshift("new_ev_type=="+ev_type);
                                                chm.unshift("old_ev_anno=="+document.getElementById("url_anno_"+f_id+"_"+url_des).value);					
						chm.unshift(":::old_ev=="+url); 
						re_array.push(chm);
					}
					else{
						return false;
					}

                                }

                                if (checkelement.value==url){
					var csid=document.getElementById(f_id+"_"+url_des+"_csid").value;
                                        var chm=check_mendetory('customref','mod','EXP', csid);	

                                        if (chm!=false){
                                                chm.unshift(":::url_des=="+url_des);
                                                re_array.push(chm);
                                        }
                                        else{
                                                return false;
                                        }

                                }				
                        }

                        if (ev_type=='note'){

                                if (checkelement.value!=url){

                                        var chm=check_mendetory('note','new','IEA', f_id + "_" + url_des);

                                        if (chm!=false){
                                                chm.unshift("url_des=="+url_des);
						chm.unshift("new_ev_type=="+ev_type);
                                                chm.unshift("old_ev_anno=="+document.getElementById("url_anno_"+f_id+"_"+url_des).value);     
                                                chm.unshift(":::old_ev=="+url);    
                                                re_array.push(chm);
                                        }
                                        else{
                                                return false;
                                        }

                                }

                                if (checkelement.value==url){
					var csid=document.getElementById(f_id+"_"+url_des+"_csid").value;
                                        var chm=check_mendetory('note','mod','IEA', csid);
                                        if (chm!=false){
                                               chm.unshift(":::url_des=="+url_des);
                                               re_array.push(chm);
                                        }
                                        else{
                                                return false;
                                        }

                                }
                        }
			if (ev_type=='cosref'){
				
				var input=new Array();
                                input[0]='exturl=='+checkelement.value;
                                input.unshift("url_des=="+url_des);
				input.unshift("new_ev_type=="+ev_type);
				input.unshift("old_ev_anno=="+document.getElementById("url_anno_"+f_id+"_"+url_des).value);
				input.unshift(":::old_ev=="+url);
				re_array.push(input);

			}

		}
	}
	}
return re_array;
}

if (type=="mod_go"){

var ev_type;
var checkelement;
var ev_code;
var url;
var re_array=new Array();
	
	ev_type		=document.getElementById("radio_evidence_" + id).value;
	ev_code		=document.getElementById("evidence_mod_" +id).value;
	url		=document.getElementById("evidence_sc_mod_" +id).value;
	checkelement    =document.getElementById("evidence_source_mod_"+id);


			if (ev_type=='none' && ev_code!="IEA" && ev_code!="NAS"){

				alert("You have to provide a reference for " + ev_code + ".");
				return false;
			}

                        if (ev_type=='none' && (ev_code=="IEA" || ev_code=="NAS")){
				
                                var input=new Array();
                                input.unshift("new_ev_code=="+ev_code);
                                input.unshift("new_ev_type=="+ev_type);
                                input.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                input.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                input.unshift(":::old_ev=="+url);
                                re_array.push(input);
                                return re_array;
                        }

		if (checkelement.value!="readonly"){


                        if (ev_type=='pubmed'){
				
				var compare_pm;
				var checkelement_pubmed=document.getElementById("pubmed_go_"+id);
                                if(null==checkelement_pubmed){
                                        compare_pm=url;
                                }
				else{
					compare_pm=checkelement_pubmed.value;
				}


                                if (checkelement.value!=compare_pm){
                                        var input=new Array();
                                        input[0]='exturl=='+checkelement.value;
                                        input.unshift("new_ev_code=="+ev_code);
                                        input.unshift("new_ev_type=="+ev_type);
                                        input.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);     
                                        input.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);     
                                        input.unshift(":::old_ev=="+url);
                                        re_array.push(input);
					return re_array;
                                }
				else{
                                        var input=new Array();
                                        input.unshift("new_ev_code=="+ev_code);
                                        input.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                        input.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                        input.unshift(":::old_ev=="+url);
                                        re_array.push(input);


					return re_array;
				}
                        }

                        if (ev_type=='customref'){

                                if (checkelement.value!=url){
                                        var chm=check_mendetory('customref','new',ev_code, id);
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift("new_ev_type=="+ev_type);
                                                chm.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);  
                                        	chm.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);                                           
                                                chm.unshift(":::old_ev=="+url);
                                                re_array.push(chm);
						return re_array;
                                        }
                                        else{
                                                return false;
                                        }

                                }

                                if (checkelement.value==url){
                                        var csid=document.getElementById("csid_"+id).value;
                                        var chm=check_mendetory('customref','mod', ev_code, csid);
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                                chm.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                                chm.unshift(":::old_ev=="+url);
                                                re_array.push(chm);
						return re_array;
                                        }
                                        else{
                                                return false;
                                        }

                                }
                        }

                        if (ev_type=='note'){

                                if (checkelement.value!=url){
                                        var chm=check_mendetory('note','new',ev_code, id);
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift("new_ev_type=="+ev_type);
  						chm.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
  						chm.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                                chm.unshift(":::old_ev=="+url);
                                                re_array.push(chm);
                                                return re_array; 
                                        }
                                        else{
                                                return false;
                                        }

                                }

                                if (checkelement.value==url){
                                        var csid=document.getElementById("csid_"+id).value;
                                        var chm=check_mendetory('note','mod',ev_code, csid);
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                                chm.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                                chm.unshift(":::old_ev=="+url);
                                                re_array.push(chm);
                                                return re_array;
                                        }
                                        else{
                                                return false;
                                        }

                                }

			}

                        if (ev_type=='cosref'){

                                var input=new Array();
                                input[0]='exturl=='+checkelement.value;
                                input.unshift("new_ev_code=="+ev_code);
                                input.unshift("new_ev_type=="+ev_type);
				input.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                input.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                input.unshift(":::old_ev=="+url);
                                re_array.push(input);
				return re_array;
                        }
		}


		else{
				var input=new Array();
                                input.unshift("new_ev_code=="+ev_code);
                                input.unshift("old_ev_code=="+document.getElementById("old_ev_code_"+id).value);
                                input.unshift("old_ev_anno=="+document.getElementById("old_ev_anno_"+id).value);
                                input.unshift(":::old_ev=="+url);
				re_array.push(input);
                                return re_array;
		}
}

else{

var ev_type;
var checkelement;
var ev_code;
var url;
var re_array=new Array();

if (type=="add_go"){

	if (name.match(/cellular component/)){
        	ev_type         =document.getElementById("radio_cc_evidence").value;
	        checkelement    =document.getElementById("evidence_add_cc");
	        ev_code         =document.getElementById("go_cc_evidence").value;
	}
       if (name.match(/biological process/)){
                ev_type         =document.getElementById("radio_bp_evidence").value;
                checkelement    =document.getElementById("evidence_add_bp");
                ev_code         =document.getElementById("go_bp_evidence").value;
        }
       if (name.match(/molecular function/)){
                ev_type         =document.getElementById("radio_mf_evidence").value;
                checkelement    =document.getElementById("evidence_add_mf");
                ev_code         =document.getElementById("go_mf_evidence").value;
        }

}

if (type=="add"){

        ev_type         =document.getElementById("radio_evidence_"+name).value;
        checkelement    =document.getElementById("url_add_"+name);
        ev_code         ="IEA";
        if(ev_type=="pubmed"){ev_code="IEA";}
        if(ev_type=="customref"){ev_code="EXP";}
        if(ev_type=="note"){ev_code="IEA";}
}

if (type=="mod_add"){

        ev_type         =document.getElementById("radio_evidence_" + id).value;
        checkelement    =document.getElementById("url_add_"+id);
        if(ev_type=="pubmed"){ev_code="IEA";}
        if(ev_type=="customref"){ev_code="EXP";}
        if(ev_type=="note"){ev_code="IEA";}
	if(ev_type=="none"){document.body.style.cursor='default';cancel_reset(name);return false;}
}

                        if (ev_type=='none' && ev_code!="IEA" && ev_code!="NAS"){

                                alert("You have to provide an evidence for " + ev_code + ".");
                                return false;
                        }
			
			
                        if (ev_type=='none' && (ev_code=="IEA" || ev_code=="NAS")){

                                var input=new Array();
                                input.unshift("new_ev_code=="+ev_code);
                                input.unshift(":::new_ev_type=="+ev_type);
                                re_array.push(input);
                                return re_array;
                        }


                        if (ev_type=='pubmed'){

                                        var input=new Array();
                                        input[0]='exturl=='+checkelement.value;
                                        input.unshift("new_ev_code=="+ev_code);
                                        input.unshift(":::new_ev_type=="+ev_type);
                                        re_array.push(input);
					return re_array;
                        }

                        if (ev_type=='customref'){

                                        var chm;
					if(type=="mod_add"){
					chm=check_mendetory('customref','new',ev_code, id);
					}
					else{
					chm=check_mendetory('customref','new',ev_code, name);
					}
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift(":::new_ev_type=="+ev_type);
                                                re_array.push(chm);
                                                return re_array;
                                        }
                                        else{
                                                return false;
                                        }

                        }

                        if (ev_type=='note'){

                                        var chm;
                                        if(type=="mod_add"){
                                        chm=check_mendetory('note','new',ev_code, id);
                                        }
                                        else{
                                        chm=check_mendetory('note','new',ev_code, name);
                                        }
                                        if (chm!=false){
                                                chm.unshift("new_ev_code=="+ev_code);
                                                chm.unshift(":::new_ev_type=="+ev_type);
                                                re_array.push(chm);
                                                return re_array;
                                          
                                        }
                                        else{
                                                return false;
                                        }

                        }

                        if (ev_type=='cosref'){

                                var input=new Array();
                                input[0]='exturl=='+checkelement.value;
				input.unshift("new_ev_code=="+ev_code);
                                input.unshift(":::new_ev_type=="+ev_type);
                                re_array.push(input);
				return re_array;

                        }


}


}

function check_mendetory(type, inputtype, ev_code, id){

if (type=='customref'){

	var input	=new Array('title','author','journal','year','volume','pages','abstract','exturl');
	var inputhash	=new Array();	
	
	var regex_space=new RegExp(/^(\s+)$/);

	if (inputtype=='new')
	{
		for (i=0;i<input.length;i++){
			var field=document.getElementById(input[i]+"_"+id).value;
				
				
                                if (regex_space.test(field)){
                                        inputhash[input[i]]="";
                                }
                                else{
					if((input[i]=="year" || input[i]=="volume") && (!/^\d*$/.test(field))){
						alert("The fields year and volume only may contain numbers of type integer!");
						return false;
					}
                                        inputhash[input[i]]=field;
                                }
		}
	}

	if (inputtype=='mod')
	{

		for (i=0;i<input.length;i++){
			var field=document.getElementById("mod_"+input[i]+"_"+id).value;


				if (regex_space.test(field)){
					inputhash[input[i]]="";
				}
				else{
                                	if((input[i]=="year" || input[i]=="volume") && !/^\d*$/.test(field)){
 		                        	alert("The fields year and volume only may contain numbers of type integer!");
	                	                return false;
        	                        }
					inputhash[input[i]]=field;
				}
		}
	}

	var returnarray	=new Array();
	for (i in inputhash){
		if (inputhash[i]!=""){
			returnarray.push(i + "==" + inputhash[i]);
		}
	}



	var auto		="IEA";
	var full_tracable	="EXP,IDA,IPI,IMP,IGI,IEP,ISS,ISA,ISO,ISO,ISM,IGC,RCA";
	var tas			="TAS";
	var nas			="NAS";
	var ic			="IC";
	var nd			="ND";

	var regex = new RegExp(ev_code);

	var auto_error="";
	var full_tracable_error="Please provide a full tracable author statement for this reference.\nYou have to fill out following fields for this:\n\nTitle, Author, Year, Journal, Volume\n\nor\n\nTitle, Author, Year, Abstract\n\nor\n\nTitle, Author, Year, External URL\n\n";
	var tas_error="Please provide a tracable author statement for the chosen evidence code.\nYou have to fill out following fields for this:\n\nAuthor\n\n";
	var nas_error="";
	var ic_error="";
	var nd_error="";

        if(inputhash['title']=="" && inputhash['author']=="" && inputhash['journal']=="" && inputhash['year']=="" && inputhash['volume']=="" && inputhash['abstract']=="" && inputhash['exturl']=="" && inputhash['pages']==""){
                        return false;
        }

	//if(regex.test(auto))
	//{
                     // return returnarray;

	//}




        //if(regex.test(full_tracable))    
        //{
		if((inputhash['title']!="" && inputhash['author']!="" && inputhash['journal']!="" && inputhash['year']!="" && inputhash['volume']!="") || 
		   (inputhash['title']!="" && inputhash['author']!="" && inputhash['year']!="" && inputhash['abstract']!="") || 
	           (inputhash['title']!="" && inputhash['author']!="" && inputhash['year']!="" && inputhash['exturl']!="")){

        		   	return returnarray;
	        }

		else {
			alert(full_tracable_error);
			return false;
		}
        //}       

        //if(regex.test(tas))    
        //{       
	//	if(inputhash['author']!=""){
        //                        return returnarray;
	//	}
	//
	//	else{
	//		alert(tas_error);
	//		return false;
	//	}	
        //}       

        //if(regex.test(nas))    
        //{      
        //                        return returnarray;
        //}       

        //if(regex.test(ic))
        //{
        //                        return returnarray;
        //}

        //if(regex.test(nd))
        //{
        //                        return returnarray;
	//
        //}
}

if (type=='note'){

	var input		=new Array('abstract','exturl');
        var inputhash   	=new Array();
	var note_error		="Please submit a note or an URL.";
	var note_error_2	="It is not allowed to submit a note as reference for full tracable author statements (Computational analysis evidence codes, Experimental evidence codes).";
	var note_error_3	="It is not allowed to submit a note as reference for a tracable author statement";
        var full_tracable       ="EXP,IDA,IPI,IMP,IGI,IEP,ISS,ISA,ISO,ISO,ISM,IGC,RCA";
	var tas			="TAS";
        var regex = new RegExp(ev_code);
        var regex_space=new RegExp(/^(\s+)$/);


        if (inputtype=='new')
        {
                for (i=0;i<input.length;i++){
                        var field=document.getElementById(input[i]+"_"+id).value;
                                if (regex_space.test(field)){
                                        inputhash[input[i]]="";
                                }
                                else{
                                        inputhash[input[i]]=field;
                                }
                }
        }

        if (inputtype=='mod')
        {

                for (i=0;i<input.length;i++){
                        var field=document.getElementById("mod_"+input[i]+"_"+id).value;
                                if (regex_space.test(field)){
                                        inputhash[input[i]]="";
                                }
                                else{
                                        inputhash[input[i]]=field;
                                }
                }
        }
        var returnarray =new Array();

        for (i in inputhash){
                if (inputhash[i]!=""){
                        returnarray.push(i + "==" + inputhash[i]);
                }
        }

        if(inputhash['abstract']=="" && inputhash['exturl']==""){
		alert(note_error);
		return false;
	}

	else{
		if(regex.test(full_tracable)){
			alert(note_error_2);
			return false;
		}
		if(regex.test(tas)){
                        alert(note_error_3);
                        return false;
		}		
		else{
                        return returnarray;
		}
	}
} 

}

function checkstatus(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, save_all_check, version, source){

var conflict_text="This will create a conflict, making this annotation unavailable for modifying or adding references.\n\nAn email will be sent to \""+ old_annotator + "\".\n\nDo you want to continue?";


var new_scope;

var new_scope_element;

if (change_type=="add_feature"){

	new_scope_element=document.getElementById(name+"_anno_input_add");

}

else{
	new_scope_element=document.getElementById("anno_input_"+feature_id);
}

		
if (typeof new_scope_element!="undefined" && null!=new_scope_element){

	new_scope=new_scope_element.value;

}

else{
	new_scope="public";
}

if (new_scope!="public"){

	document.form.submit();

	return false;

}

if (change_type=="add_feature" || change_type=="add_evidence")
{
	
	var regex_space=new RegExp(/^(\s+)$/);

	if (regex_space.test(new_value) || new_value==""){	
		document.body.style.cursor='default';
		cancel_reset(name);
		return false;
	}

	else{
		
		if (change_type=="add_feature" && name=="description"){

			var check_des=check_description(new_value,new_evidence,change_type,feature_id,name);

			if (check_des==true){
				sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2',version, source);
			}

			else if (check_des==false){
				document.body.style.cursor='default';
                                cancel_reset(name);
                                return false;
			}

			else{	
				alert(check_des);
                                document.body.style.cursor='default';
                                cancel_reset(name);
                                return false;
			}
		}

		else{
			sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2',version, source);
		}
			
	}
}

if (change_type=="mod_feature")
{


	if (name=="description"){

	        var check_des=check_description(new_value,new_evidence,change_type,feature_id,name);

                if(check_des!=true){
	                alert(check_des);
                	document.body.style.cursor='default';
        	        cancel_reset(name,feature_id);
	                return false;
                }
	}




	if (old_usergroup=="public" && old_annotator!=new_annotator && !new_usergroup.match("admin") && old_annotator!='cosmoss'){
		var confirm_conflict=confirm(conflict_text);


			if (confirm_conflict==true){
			conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version);
			}
			else{

				document.body.style.cursor='default';
				cancel_reset(name,feature_id);
				return false;
			}

	}

        else{
	
		if (name=="gene name" || name=="protein name"){

			var confirm_swap=confirm("Do you want to become the old name a new alias?");
			if (confirm_swap==true){
				document.getElementsByName("name_alias_swap_"+feature_id)[0].value=old_value;
			}		

		}

                sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2',version, source);
        }


}

if (change_type=="mod_evidence"){

	if(typeof new_evidence[0]!="undefined"){
	        if (name=="description"){
	
        	        var check_des=check_description(new_value,new_evidence,change_type,feature_id,name);

                	if(check_des!=true){
                        	alert(check_des);
                        	document.body.style.cursor='default';
                        	cancel_reset(name,feature_id);
                        	return false;
                	}
        	}
	}

        var old_ev_anno=new Array();

	var ev_conflict_check='0';

        if (!name.match("gene ontology")){

	var ev_check_string=new_evidence.join("");
	var ev_check_arr=ev_check_string.split(",,");

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

			if (ev_check_arr[i].match("old_ev_anno")){
				var tmp= ev_check_arr[i].split("==");
				old_ev_anno.push(tmp[1]);
			}			

		}

		for (x=0; x<old_ev_anno.length; x++){
			if (old_ev_anno[x]!=new_annotator && !new_usergroup.match("admin")){

				ev_conflict_check="1";
					
			}

		}
	}

	var old_ev_code;
	var new_ev_code;
	var new_ev_type=0;

	if (name.match("gene ontology")){

	var ev_check_string=new_evidence.join("");
        var ev_check_arr=ev_check_string.split(",,");
                for (i=0;i<ev_check_arr.length;i++){

                        if (ev_check_arr[i].match("old_ev_anno")){
                                var tmp= ev_check_arr[i].split("==");
                                old_ev_anno.push(tmp[1]);
                        } 

                        if (ev_check_arr[i].match("old_ev_code")){
                                var tmp= ev_check_arr[i].split("==");
                                old_ev_code=tmp[1];
                        }

                        if (ev_check_arr[i].match("new_ev_code")){
                                var tmp=ev_check_arr[i].split("==");
                                new_ev_code=tmp[1];
                        }
			
			if(ev_check_arr[i].match("new_ev_type")){
                                var tmp=ev_check_arr[i].split("==");
                                new_ev_type=tmp[1];
                        }


                }

                if ((old_ev_code!=new_ev_code || new_ev_type!=0) && old_ev_anno[0]!=new_annotator && !new_usergroup.match("admin")){
           	     ev_conflict_check="1";
                }

		

	}


	var old_go_source=document.getElementById("evidence_sc_mod_"+feature_id);

	var source_old;

	if (typeof source!="undefined"){
		if (null!=document.getElementById("old_source_" + feature_id)){
			source_old=document.getElementById("old_source_" + feature_id).value;
		}
		else{
			source_old="";
		}
	}

	if (old_usergroup!="public" && new_scope=="public"){
		document.form.submit();
	}

	if (( (typeof new_evidence[0]=="undefined"  && !name.match("gene ontology")) || (name.match("gene ontology") && old_ev_code==new_ev_code && (null==old_go_source || old_go_source.value=="readonly"))))	       {

                        document.body.style.cursor='default';
                	cancel_reset(name,feature_id);
                        return false;

	}


        if (old_usergroup=="public" && old_annotator!=new_annotator && !new_usergroup.match("admin") && ev_conflict_check=="1" && old_annotator!='cosmoss'){

		conflict_text="This will create a conflict, making this feature unavailable for modifying or adding evidence.\n\nAn email will be sent to";

		for (y=0;y<old_ev_anno.length; y++){
		
			if (!conflict_text.match(old_ev_anno[y])){ 
			   conflict_text=conflict_text + " \"" + old_ev_anno[y] +"\" ";
			}
		}		

		conflict_text=conflict_text + ".\n\nDo you want to continue?";

                var confirm_conflict=confirm(conflict_text);
                if (confirm_conflict==true){
                conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version);
                }

                else{
			document.body.style.cursor='default';
                        cancel_reset(name,feature_id);
                        return false;
                }
	}





	if (old_usergroup=="public" && ev_conflict_check=="0" && typeof new_evidence[0]!="undefined"){
		//document.form.submit();
		sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence, '2', version, source);
	}

        if (old_usergroup=="public" && ev_conflict_check=="1" && typeof new_evidence[0]!="undefined" && old_annotator=='cosmoss'){
                //document.form.submit();
                sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence, '2', version, source);
        }


        if (old_annotator==new_annotator && ev_conflict_check=="0" && typeof new_evidence[0]=="undefined"){
		document.form.submit();
        }

	if (old_usergroup=="public" && old_annotator==new_annotator && ev_conflict_check=="1" && !new_usergroup.match("admin") && typeof new_evidence[0]!="undefined"){
		//document.form.submit();
		sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence, '2', version, source);
	}



}
	
if (change_type=="hisrestore_feature")
{

new_value=getCheckedValue(document.getElementsByName("history_value_"+feature_id));



if(typeof new_value == "undefined" || new_value==""){

                document.body.style.cursor='default';
                cancel_reset(name,feature_id);
                return false;
}

                if (name=="description"){

                        var check_des=check_description(new_value,new_evidence,change_type,feature_id,name);

                        if(check_des!=true){
                                alert(check_des);
                                document.body.style.cursor='default';
                                cancel_reset(name,feature_id);
                                return false;
                        }
                }



	if (name.match("gene ontology")){
		old_value=document.getElementById("old_go_name_"+feature_id).value+"---"+document.getElementById("old_ev_code_"+feature_id).value+"---"+document.getElementById("evidence_sc_mod_"+feature_id).value;

	}

        if (old_usergroup=="public" && old_annotator!=new_annotator && !new_usergroup.match("admin") && old_annotator!='cosmoss'){

                var confirm_conflict=confirm(conflict_text);
                if (confirm_conflict==true){
                conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version, source);
                }
		else{
		document.body.style.cursor='default';
		cancel_reset(name,feature_id);
		return false;
		}
        }

        else{
                sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2', version, source);
        }
}

if (change_type=="hisrestore_evidence")
{

var old_value	= new Array();
var new_value   = new Array();


var c_check="0";


	var arr_url_des_2=document.getElementsByName(feature_id+"_history_url_des");

	for(x=0;x<arr_url_des_2.length;x++){


		var tmp_old_value;
		var tmp_old_value_element=document.getElementById(name+"_"+feature_id+"_"+arr_url_des_2[x].value);
        	var tmp_new_value=getCheckedValue(document.getElementsByName("url_history_"+feature_id+"_"+arr_url_des_2[x].value));

		if(null!=tmp_old_value_element){
			tmp_old_value=tmp_old_value_element.value;
		}
		else{
			tmp_old_value="None";
		}

		if (tmp_new_value!=""){
	        	old_value.push(tmp_old_value);
			new_value.push(tmp_new_value);

			if (tmp_old_value == "None"){
				cur_anno=document.getElementsByName("his_url_anno_"+feature_id+"_"+arr_url_des_2[x].value)[0].value;
			}
			else{
				cur_anno=document.getElementById("url_anno_"+feature_id+"_"+arr_url_des_2[x].value).value;
			}

        	        if (cur_anno != new_annotator){ 
                	        c_check="1";
			}
		}
		
	}
	
	if(typeof new_value=="undefined" || new_value==""){

                document.body.style.cursor='default';
                cancel_reset(name,feature_id);
                return false;
	}
	
        if (name=="description"){

		var tmp_undef;
	        var check_des=check_description(tmp_undef,new_value,change_type,feature_id,old_value);

                        if(check_des!=true){
                                alert(check_des);
                                document.body.style.cursor='default';
                                cancel_reset(name,feature_id);
                                return false;
                        }
        }


        if (old_usergroup=="public" && c_check=="1" && old_annotator!=new_annotator && !new_usergroup.match("admin") && old_annotator!='cosmoss'){

                var confirm_conflict=confirm(conflict_text);
                if (confirm_conflict==true){
                conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version);
                }
		else{
			document.body.style.cursor='default';
                        cancel_reset(name,feature_id);
			return false;
		}
        }

        else{

                sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2', version, source);

        }

}

if (change_type=="del_feature")
{

old_value=document.getElementsByName(name + "_" + feature_id)[0].value;

        if (old_usergroup=="public" && old_annotator!=new_annotator && !new_usergroup.match("admin") && old_annotator!='cosmoss'){

                var confirm_conflict=confirm(conflict_text);
                if (confirm_conflict==true){
                conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version);
                }
                else{
                        document.body.style.cursor='default';
                        cancel_reset(name,feature_id);
                        return false;
                }

        }

        else{
                sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'2', version, source);
        }


}

if (change_type=="del_evidence")
{

        if (name=="description"){

                var check_des=check_description(new_value,new_evidence,change_type,feature_id,new_evidence[0]);

                if(check_des!=true){
                        alert(check_des);
                        document.body.style.cursor='default';
                        cancel_reset(name,feature_id);
                        return false;
                }
        }


var old_ev_anno=document.getElementById("url_anno_"+feature_id+"_"+new_evidence[0]).value

        if (old_usergroup=="public" && (old_ev_anno != new_annotator) && !new_usergroup.match("admin") && old_annotator!='cosmoss'){

                var confirm_conflict=confirm(conflict_text);
                if (confirm_conflict==true){
                conflict(change_type, accession, old_value, old_ev_anno, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version);
                }
                else{
                        document.body.style.cursor='default';
                        cancel_reset(name,feature_id);
                        return false;
                }

        }

        else{
  
	        sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence, '2', version, source);

        }

}

if (change_type=="del_restore")
{

var f_id_ar=document.getElementsByName('del_his_fids');

var val;


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

	var tmp_new_value=getCheckedValue(document.getElementsByName("deletehistory_value_"+f_id_ar[i].value));
	if (tmp_new_value!=""){
		var name_tmp=document.getElementById("d_his_name_"+f_id_ar[i].value).value;
		var acc_tmp=document.getElementById("d_his_acc_"+f_id_ar[i].value).value;
		var conc=":::"+tmp_new_value+"----"+name_tmp+"----"+acc_tmp; 						

		if (null!=val){
		val=val+conc;
		}
		else{
		val=conc;
		}
	}	

}


sendmail(change_type, accession, old_annotator, val, new_annotator, name, feature_id, new_value, new_evidence,'2', version, source);

}

}



function conflict(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_value, new_annotator, new_usergroup, new_evidence, version){


        var ajaxRequest8;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest8 = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest8 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest8 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }
	
        var cgi_value = "?change_type=" + change_type + "&accession=" + accession + "&old_value=" + old_value + "&old_annotator=" + old_annotator + "&old_usergroup=" + old_usergroup + "&name=" + name + "&feature_id=" + feature_id + "&new_value=" + new_value + "&new_annotator=" + new_annotator + "&new_usergroup=" + new_usergroup + "&new_evidence=" + new_evidence;

        ajaxRequest8.open("GET","/annotation/generate_conflict" + cgi_value, true);
        ajaxRequest8.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        ajaxRequest8.onreadystatechange = function(){


                if(ajaxRequest8.readyState == 4 && ajaxRequest8.status == 200){
                        if (ajaxRequest8.responseText==""){
				sendmail(change_type, accession, old_annotator, old_value, new_annotator, name, feature_id, new_value, new_evidence,'1', version);
                        }

                        else{
                                alert(ajaxRequest8.responseText);
				document.body.style.cursor='default';
				cancel_reset(name,feature_id);
                        }
                }

        }

        ajaxRequest8.send(null);

}

function sendmail (change_type, accession, old_annotator, old_value, new_annotator, name, id_or_value, new_value, new_evidence, conflict_check, version, source){

	var version_name=document.getElementById('version_name_ajax_'+version).value;

        var ajaxRequest9;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest9 = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest9 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest9 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }


        var cgi_value = "?change_type=" + change_type + "&accession=" + accession + "&old_value=" + old_value + "&old_annotator=" + old_annotator + "&name=" + name + "&feature_id=" + id_or_value + "&new_annotator=" + new_annotator + "&new_value=" + new_value + "&new_evidence=" + new_evidence + "&conflict_check=" + conflict_check + "&version=" + version + "&source=" + source;

        ajaxRequest9.open("GET","/annotation/sendmail" + cgi_value, true);
        ajaxRequest9.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        ajaxRequest9.onreadystatechange = function(){

                if(ajaxRequest9.readyState == 4 && ajaxRequest9.status == 200){

                        if (ajaxRequest9.responseText==""){
				
				if (change_type=="add_feature" || change_type=="add_evidence" || conflict_check=="2"){
					document.form.submit();
				}
	
				else{
					document.form.reset();
					location.replace("/annotation/genonaut?accession="+accession+"&version="+version_name);	                                
				}
                        }

                        if(ajaxRequest9.responseText=="NO EMAIL NEEDED"){

                                if (change_type=="add_feature" || change_type=="add_evidence" || conflict_check=="2"){

                                        document.form.submit();
                                }

                                else{
                                        document.form.reset();
                                        location.replace("genonaut?accession="+accession+"&version="+version_name);
                                }

                        }

                }

        }

        ajaxRequest9.send(null);

}



function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


function cancel_reset(name,feature_id){


if (typeof feature_id=="undefined"){

	if (name.match("gene ontology")){

		document.getElementsByName("so_user_add_cc_go")[0].value="";
		document.getElementsByName("so_evidence_add_cc")[0].value="";

		document.getElementsByName("so_user_add_bp_go")[0].value="";
		document.getElementsByName("so_evidence_add_bp")[0].value="";

		document.getElementsByName("so_user_add_mf_go")[0].value="";
		document.getElementsByName("so_evidence_add_mf")[0].value="";


	}

 	else{
		if(typeof document.getElementsByName("so_user_add_"+name)[0]!="undefined"){	
		document.getElementsByName("so_user_add_"+name)[0].value="";
		}
	}
}

else{

	document.getElementsByName("so_user_mod_"+feature_id)[0].value="";
	var del_arr=new Array()
        del_arr=document.getElementsByName("delete_"+feature_id);
	for(b=0;b<del_arr.length;b++){
		del_arr[b].value="";
	}

	if (typeof document.getElementById("delete_url_" + feature_id) != "undefined" && null!=document.getElementById("delete_url_" + feature_id)){
		document.getElementById("delete_url_" + feature_id).value="";
	}

	if (name.match("gene ontology")){
	
		if(null!=document.getElementsByName("so_evidence_source_mod_"+feature_id)){
		document.getElementsByName("so_evidence_source_mod_"+feature_id)[0].value="";
		}
	}

	else{
	
	document.getElementsByName("so_url_add_" +feature_id)[0].value="";
	

	if (null!=document.getElementsByName(name + "_" + feature_id + "_url_des")){
	var arr_url_des = document.getElementsByName(name + "_" + feature_id + "_url_des");

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

			document.getElementsByName("so_url_mod_"+feature_id+"_"+arr_url_des[i].value)[0].value="";
		}

	}
	}
}
}


function checkredundant (change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_feature_value, new_annotator, new_usergroup, new_evidence, save_all_check, version, source){

        var ajaxRequest9;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest9 = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest9 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest9 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }

	var new_scope;

	var new_scope_element;

	if (change_type=="add_feature"){

	new_scope_element=document.getElementById(name+"_anno_input_add");

	}
	else{

	new_scope_element=document.getElementById("anno_input_"+feature_id);

	}


	if (typeof new_scope_element!="undefined" && null!=new_scope_element){

        	new_scope=new_scope_element.value;

	}

	else{
        	new_scope="public";
	}


	if (typeof new_feature_value!="undefined"){
		new_feature_value=trim(new_feature_value);
	}

        var cgi_value = "?change_type=" + change_type + "&accession=" + accession + "&old_value=" + old_value + "&old_annotator=" + old_annotator + "&name=" + name + "&feature_id=" + feature_id + "&new_annotator=" + new_annotator + "&new_value=" + new_feature_value + "&new_evidence=" + new_evidence + "&version=" + version + "&usergroup=" + new_scope + "&source=" + source;

        ajaxRequest9.open("GET","/annotation/checkredundant" + cgi_value, true);
        ajaxRequest9.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

        ajaxRequest9.onreadystatechange = function(){

                if(ajaxRequest9.readyState == 4 && ajaxRequest9.status == 200){

                        if (ajaxRequest9.responseText==""){

				checkstatus(change_type, accession, old_value, old_annotator, old_usergroup, name, feature_id, new_feature_value, new_annotator, new_usergroup, new_evidence, save_all_check, version, source);


                        }

                        if(ajaxRequest9.responseText!=""){
				
				alert (ajaxRequest9.responseText);
	                        document.body.style.cursor='default';
                                cancel_reset(name,feature_id);
         	                return false;
							
	
	
                        }

                }

        }

        ajaxRequest9.send(null);

}

function trim(str){
while(str.substring(0,1)==' ')str=str.substring(1,str.length);
while(str.substring(str.length-1,str.length)==' ')str=str.substring(0,str.length-1);
return str;
}


function check_description(new_value,new_evidence,change_type,feature_id,name){
		

		if (typeof new_value=="undefined"){
			new_value=document.getElementById("user_mod_"+feature_id).value;
		}

		if (new_value.length>85){
			return "The description line is too long. A maximum of 85 signs is allowed.";
		}

		var regex_des_general=new RegExp(/^.+gene.+(for|similar to).+protein.+$/i);
                if(!regex_des_general.test(new_value)){
	                return "The submitted description line does not match the required format.\n\nThe format has to be:\n\n <gene name> gene for <function> protein <PROTEIN NAME> (without \"<>\")";
                }

		var regex_des=new RegExp(/^.+gene.+(for putative|for hypothetical|similar to).+protein.+$/i);
		if(!regex_des.test(new_value)){

			var check_ev=check_ev_description(new_evidence,change_type,feature_id,name);

			if(check_ev==true){
				return true;
			}
			
			else if(check_ev==false){
				return false;
			}

			else{
               			return check_ev;
			}	
		}

		else{
			return true;
		}

}

function check_ev_description(new_evidence,change_type,feature_id,name){

	
	var new_evidence_str	=new_evidence.join(",");
	var ev_arr_1		=new_evidence_str.split(":::");
	var ev_arr_1_str;

	var new_ev_type;

	for(i=0;i<ev_arr_1.length;i++){
		if(typeof ev_arr_1[i]!=undefined){
			ev_arr_1_str=ev_arr_1[i];
		}
	}

	var ev_arr_2=ev_arr_1_str.split(",,,");
	for (x=0;x<ev_arr_2.length;x++){
		var tmp_arr=ev_arr_2[x].split("==");
		if(tmp_arr[0]=="new_ev_type"){
			new_ev_type=tmp_arr[1];		
		}
	}
	
	if (change_type=="add_feature"){

		if(new_ev_type=="pubmed" || new_ev_type=="customref"){
			return true;
		}

		if(new_ev_type=="none" || new_ev_type=="note"){
			return "The submitted description line requires a custom reference or a PubMed ID.";
		}

		if(new_ev_type=="cosref"){
                        return ajax_check_des_line(change_type,feature_id,new_evidence);
        	}
	}

	if (change_type=="mod_feature"){

        var arr_url     = document.getElementsByName(name + "_" + feature_id + "_url");
        var arr_url_des = document.getElementsByName(name + "_" + feature_id + "_url_des");

        var csid=new Array();

        if (typeof arr_url!="undefined"){

               for (var y=0; y<arr_url.length; y++) {

                        var url;
                        url = arr_url[y].value;
                        var url_des;
                        url_des=arr_url_des[y].value;

                        var ev_type=document.getElementById("radio_evidence_" + feature_id + "_" + url_des).value;
                        var checkelement=document.getElementById("url_mod_"+feature_id+"_"+url_des);
                        if (typeof checkelement!="undefined"){
                                csid.push(url);
                        }
                }

		return ajax_check_des_line(change_type,feature_id,new_evidence);
	}
	}

        if (change_type=="mod_evidence"){

        var arr_url     = document.getElementsByName(name + "_" + feature_id + "_url");
        var arr_url_des = document.getElementsByName(name + "_" + feature_id + "_url_des");

	var csid=new Array();

        if (typeof arr_url!="undefined"){
		
               for (var y=0; y<arr_url.length; y++) {

                        var url;
                        url = arr_url[y].value;
                        var url_des;
                        url_des=arr_url_des[y].value;

                        var ev_type=document.getElementById("radio_evidence_" + feature_id + "_" + url_des).value;
                        var checkelement=document.getElementById("url_mod_"+feature_id+"_"+url_des);
			if (typeof checkelement!="undefined"){
				csid.push(url);
			}
		}
		
                return ajax_check_des_line(change_type,feature_id,new_evidence,csid);
        }
	}

        if (change_type=="del_evidence"){
		 var url_des=name;
		 var csid=document.getElementById("description_"+feature_id+"_"+url_des).value;
		 return ajax_check_des_line(change_type,feature_id,new_evidence,csid);
        }

	if (change_type=="hisrestore_evidence"){
	
		csid=name;
		return ajax_check_des_line(change_type,feature_id,new_evidence,csid);
	}

	if (change_type=="hisrestore_feature"){

		return ajax_check_des_line(change_type,feature_id,new_evidence,csid);
	}


}

function ajax_check_des_line(change_type,feature_id,new_evidence,csid){

        var ajaxRequest10;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest10 = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest10 = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest10 = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }


        var cgi_value = "?change_type=" + change_type + "&feature_id=" + feature_id + "&new_evidence=" + new_evidence;

	if (typeof csid!="undefined"){

	cgi_value     = cgi_value + "&csid=" + csid; 

	}

        ajaxRequest10.open("GET","/annotation/checkdes" + cgi_value, false);
        ajaxRequest10.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	var state;
	
        ajaxRequest10.send(null);

                if(ajaxRequest10.status == 200){
                        if (ajaxRequest10.responseText==""){
				state=true;
                        }
                        else{
				state=ajaxRequest10.responseText;
                        }
        	}

		return state;
}

function check_name(name,new_feature_value){

        if (typeof new_feature_value!="undefined"){

	new_feature_value=trim(new_feature_value);

	}	

	if (name.match(/protein name/)){

		var regex=new RegExp(/^[A-Z]/);
		
                if(regex.test(new_feature_value)==false){
                        var response="At least the first letter in protein name has to be uppercase.";
                        return response;
                }
		else{
			return true;
		}

	}

        if (name.match(/gene name/)){
		var regex=new RegExp(/^[a-z]/);

		if(regex.test(new_feature_value)==false){
			var response="At least the first letter in gene name has to be lowercase.";
			return response;
		}
                else{
                        return true;
                }
        }
}

function search (element){

        var ajaxRequest;  // The variable that makes Ajax possible!
        try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest = new XMLHttpRequest();
        } catch (e){
                // Internet Explorer Browsers
                try{
                        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try{
                                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e){
                                // Something went wrong
                                alert("Your browser broke!");
                                return false;
                        }
                }
        }

        var query=document.getElementsByName(element)[0].value;

        var includeDbCheckboxes=document.getElementsByName('searchdb');

        var checkedIncDb = new Array();

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

                if(includeDbCheckboxes[i].checked==true){
                        checkedIncDb.push(includeDbCheckboxes[i].value);
                }

        }

        var includeDb = checkedIncDb.join(",");


	var includeTermsCheckboxes=document.getElementsByName('includeterm');

	var checkedIncTerm = new Array();

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

		if(includeTermsCheckboxes[i].checked==true){
			checkedIncTerm.push(includeTermsCheckboxes[i].value);
		}

	}

	var includeTerm = checkedIncTerm.join(",");	
	
        var queryString = "?query=" + query + "&includeDb=" + includeDb + "&includeTerm=" + includeTerm;

                        var ajaxDisplay = document.getElementById('searchresult');
                        ajaxDisplay.innerHTML = "<img src=\"\/annotation\/loadingbig.gif\" alt=\"\" \/>";

        ajaxRequest.open("GET","/annotation/searchresult" + queryString, true);
        ajaxRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	ajaxRequest.onreadystatechange = function(){

        if(ajaxRequest.readyState==4 && ajaxRequest.status==200){
                        ajaxDisplay.innerHTML = ajaxRequest.responseText;
                        }
        }

        ajaxRequest.send(null);
}

