// vars specific to this js

var opened_unipub_id=new Array();

var block_hline=200;

var old_percent=0;

// ****************

//
 function is_organism_selected(org_id) {
  if(org["ID_"+org_id]==1) return true;
  
  return false;
 }

function cid_search(cid) {
  //http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=pccompound&term=
  window.pubmed_win=popitupType(window.pubmed_win, "http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid="+cid, "PubMed");
}

function getLink(pnr, str, item_source, item_id, pairs) {
 var link=new Array();
 
 if(item_source=="ACTION_VERB") {  
  link[0]="";
  link[1]="";

  if(action_verbs) {   
   
   var class_str="action_verb";

   link[0]="<SPAN class=\""+class_str+"\">"+hl_query(pnr, str)+"</SPAN>";   
  }
   
  return link;
 }

 if(item_source=="CH") {
  setItemsourceIdAttribute(item_source, item_id, "CID", pairs["CID"]);
  setItemsourceIdAttribute(item_source, item_id, "name", pairs["name"]);
 } 

 if(item_source=="MeSH") {
  setItemsourceIdAttribute(item_source, item_id, "name", pairs["name"]);
 } 

 if(item_source=="GENE") {
  setItemsourceIdAttribute(item_source, item_id, "symbol", pairs["symbol"]);

  if(pairs["name"] && pairs["name"].length>0) {
   setItemsourceIdAttribute(item_source, item_id, "name", pairs["name"]);
  }

  if(pairs["org_id"] && pairs["org_id"].length>0) {
   setItemsourceIdAttribute(item_source, item_id, "org_id", pairs["org_id"]);
   
   //
   if(pairs["org_name"] && pairs["org_name"].length>0) {
    new_org_id_name_array["_"+pairs["org_id"]]=pairs["org_name"];
   }
  }
 } 

 // ***
 if(window.getLinkExtra) {
  var eres=getLinkExtra(pnr, str, item_source, item_id, pairs);
 
  if(eres!=null && eres.length>0) {
     
	var show_off_symbol=official_symbol;
		 
   if(eres[2]!=null && eres[2].length>0) {
    if(eres[2]=="-") show_off_symbol=false;
    if(eres[2]=="+") show_off_symbol=true; 
   }
   
     if(show_off_symbol) {
         var official_term_for_multilink=str;
   
        if(item_source=="GENE") {
         official_term_for_multilink=pairs["symbol"];
        }

       eres[2]=official_term_for_multilink;   
    } else {
	 eres[2]="";
	}

   return eres;   
  }	
 } 
 
 // ***

 if(item_source=="MeSH") {

       var class_str="mesh";

  var sstr="mesh";

  var clean_name=pairs["name"];

  link[0]="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ NPEml('"+item_source+"',"+item_id+"); }} \" onmouseover=\"return psg('"+item_source+"',"+item_id+",false); \" onmouseout=\"return ps();\"><SPAN class=\""+class_str+"\">"+hl_query(pnr, str)+"</SPAN></A>";                

  link[1]="<TD nowrap=\"1\">"+"<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ NPEml('"+item_source+"',"+item_id+"); }} \" onmouseover=\"return psg('"+item_source+"',"+item_id+",true); \" onmouseout=\"return ps();\"><SPAN class=\""+class_str+"\">"+hl_query(pnr, clean_name)+"</SPAN></A>"+"</TD><TD width=\"100%\" nowrap=\"1\">"+"MeSH Term"+"</TD>";
  
  return link;
 }

 if(item_source=="CH") {

       var sym=pairs["symbol"];

       var id=item_id;

       var url="";
       var motext="";
       var class_str="ch";

       //

  var clean_name=pairs["name"];   
  var clean_str=str.replace(/'/g, "\\'");
    
  link[0]="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ NPEml('"+item_source+"',"+item_id+",'"+clean_str+"'); }} \" onmouseover=\"psg('"+item_source+"',"+item_id+",false); \" onmouseout=\"return ps();\"><SPAN class=\""+class_str+"\">"+hl_query(pnr, str)+"</SPAN></A>";


  link[1]="<TD nowrap=\"1\">"+"<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ NPEml('"+item_source+"',"+item_id+",'"+clean_str+"'); }} \" onmouseover=\"psg('"+item_source+"',"+item_id+",false); \" onmouseout=\"return ps();\"><SPAN class=\""+class_str+"\">"+hl_query(pnr, clean_name)+"</SPAN></A>"+"</TD>";
  return link;
       
       return link;
 }

 return null;
}

function popitupType(win, url, winname) {
 //

 var ok=false;

 var w=80;
 var h=65;
 var nr=3;

 var style="toolbar=yes,location=no,menubar=no,status=yes,directories=no,scrollbars=yes,resizable=yes";

 if(winname=="HOP_Options") {
  nr=3;

  ok=true;
 }

 if(winname=="PubMed") {

  style="toolbar=yes,location=yes,menubar=yes,status=yes,directories=no,scrollbars=yes,resizable=yes";
  nr=2;

  ok=true;
 }

 if(winname=="HOP_TextBrowser") {

  style="toolbar=yes,location=yes,menubar=yes,status=yes,directories=yes,scrollbars=yes,resizable=yes";

  nr=0;
  w=100;
  h=80;

  ok=true;
 }

 if(winname=="HOP_GeneModel") {

  style="toolbar=yes,location=no,menubar=no,status=yes,directories=no,scrollbars=yes,resizable=yes";

  w=90;

  nr=1;

  ok=true;
 }

 if(ok){
  return rpopitup(win, url, winname, style, w, h, nr); 
 }
 
 return globalPopitupType(win, url, winname);
}

function upm_cdi(n) {

 if(!n || !n.childNodes) return;
 
 for (var i = 0; i < n.childNodes.length; i++) {
  var elem=n.childNodes[i];
 
  if(elem.nodeType!=3 && elem.tagName.toLowerCase()=="img") {

   if(elem.src.lastIndexOf("_.")>=0) return;
 
   var s=elem.src.lastIndexOf(".");
   elem.src=elem.src.substring(0, s)+"_."+elem.src.substring(s+1);
  }
 } 
 
}

function upm_cd(elem) {

 // !!! upon complete load of the page this info is lost, solution would be to loop through clicked pmids upon toll load (i.e. call this method with a pmid1-array
 
 var pmid1 = elem.getAttribute("pmid");
 var elements = document.getElementsByTagName("a");

 if (pmid1!=null && elements != null) {

  for (var i = 0; i < elements.length; i++) {
   var pmid2 = elements[i].getAttribute("pmid");
   if(!pmid2) continue;
   
   if(pmid1==pmid2) {
 
    elements[i].style.color="#660099";   
    //
    upm_cdi(elements[i]);
   }
  }
 } 

 return true;
}
 
function upm_mo(unipub_id, ab_text) {

 if(opened_unipub_id[unipub_id]) {
  ab_text+="<BR/> (You opened this abstract before).";
 } else {
  ab_text+=".";
 }
 
 return ps(ab_text);
}

function upm_open(unipub_id, nr, pmid, elem) {
 
 //
 opened_unipub_id[unipub_id]=1; 
 window.pm_win=popitupType(window.pm_win, iHOP_central_host+"/UniPub/iHOP/pm/"+unipub_id+".html?nr="+nr+"&pmid="+pmid, "PubMed");
}

// store sentence in model !!!

     var buyflag=false;
     var buy_str="";
     var buy_unipub_id="";
     var buy_nr="";
     var buy_pmid="";

     function transmitSentence() {

      if(buyflag) return;

      var tsok=false;
						
      try {
      if(window.gmod_win.store) {

       buyflag=true;
       
       // changes here, have to be reflected in sentence_send.xsp and sentence_send.xsl
       window.gmod_win.store(buy_str, buy_unipub_id, buy_nr, buy_pmid);

      } 
						} catch(error) {}
						
						if(!tsok) {

       window.setTimeout("transmitSentence();", 200);
      }
     }

     function buy(pnr) {
      
      add_sentence(phrase_array[pnr]["ostr"], phrase_array[pnr]["unipub_id"], phrase_array[pnr]["nr"], phrase_array[pnr]["pmid"]);
     }

     function add_sentence(s_str, s_unipub_id, s_nr, s_pmid) {
            
      buyflag=false;

      var gourl="/UniPub/iHOP/gmod/man.html?go=iHOP_gmod";
      if(main_ID && main_TYPE) gourl+="&ID1="+main_ID+"&type1="+main_TYPE;
      
      window.gmod_win=popitupType(window.gmod_win, gourl, "HOP_GeneModel");

      buy_str=s_str;
      buy_nr=s_nr;
      buy_pmid=s_pmid;
      buy_unipub_id=s_unipub_id;

      //
      transmitSentence();
     } 

function virtual_verb(encode_for_transport, term, id) {
 var quot="\\'"; 
 if(!encode_for_transport) quot="\"";

 return "[)}"+quot+term+quot+", "+quot+"ACTION_VERB"+quot+", 0, "+quot+"|"+quot+" [(}"; 
}

function virtual_sentence(str_before, entityType1, entityId1, entityStr1, entityParams1, str_between, entityType2, entityId2, entityStr2, entityParams2, str_after) {
 
 var quot="\"";
    
 var s_str=str_before;
 s_str+="[)}"+quot+entityStr1.replace(/"/g, "&quot;")+quot+", "+quot+entityType1+quot+", "+entityId1;
 for(p in entityParams1) {
  var pv=entityParams1[p];
  if(pv) {
   pv=pv.replace(/"/g, "&quot;");
   s_str+=", "+quot+p+quot+", "+quot+pv+quot;
  } 
 }
 s_str+=", "+quot+"|"+quot+" [(}";
 s_str+=str_between; 

 s_str+="[)}"+quot+entityStr2.replace(/"/g, "&quot;")+quot+", "+quot+entityType2+quot+", "+entityId2;
 for(p in entityParams2) {
  var pv=entityParams2[p];
  if(pv) {
   pv=pv.replace(/"/g, "&quot;");
   s_str+=", "+quot+p+quot+", "+quot+pv+quot;
  } 
 }
 s_str+=", "+quot+"|"+quot+" [(}";
 s_str+=str_after;

 return s_str; 
}

//

function virtual_buy(varray, pnr) {
 add_sentence(varray[pnr]["ostr"], "", "", "", main_ID);
}

function mk_virt_exp_evid(ed_gene_id) {

var ret=new Array();

        var ext_data_conf="";
       
       var edata_ids=ed["_"+ed_gene_id].split("_");
       
       for(ei in edata_ids) {
        var edata=edata_ids[ei];

	if(ext_data_conf.length>0) ext_data_conf+=" & ";
	ext_data_conf+=edata_id_name_hash[edata];
       }       

       //
       var ed_gene_symbol=eds["_"+ed_gene_id];
       
       var str_between=" and ";
       var str_after=".";       

       var mainEntityLocal_params=new Array();
       var q="";
       mainEntityLocal_params["symbol"]=mainEntity["symbol"];       
       mainEntityLocal_params["org_id"]=mainEntity["org_id"];
       mainEntityLocal_params["org_name"]=mainEntity["org_name"];
       mainEntityLocal_params["z"]=""+100;

       var ed_gene_params=new Array();
       ed_gene_params["symbol"]=ed_gene_symbol;
       ed_gene_params["org_id"]=mainEntity["org_id"];
       ed_gene_params["org_name"]=mainEntity["org_name"];
       ed_gene_params["z"]=""+100;
       var ed_type="GENE";
       
       q=mainEntity["symbol"]+" - "+ed_gene_symbol;
       
       var v_ostr=virtual_sentence("Experimental evidence for the association between ", main_TYPE, main_ID, mainEntity["symbol"], mainEntityLocal_params, str_between, ed_type, ed_gene_id, ed_gene_symbol, ed_gene_params, " from "+virtual_verb(false, ext_data_conf)+""+str_after);

       // exp-data-icon
       ext_data_conf="Experimental evidence from "+ext_data_conf;
       
       var ed_url="/UniPub/iHOP/exd/link.html?GENE_ID_1="+main_ID+"&GENE_ID_2="+ed_gene_id+"&q="+encodeURIComponent(q);
       
       ext_data_conf="&#160;<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ open_OPTS('"+ed_url+"'); }}\" onmouseover=\"return ps('"+ext_data_conf+"');\" onmouseout=\"return ps();\"><IMG src='"+img_edata_src+"' border='0' /></A>";

 ret[0]=v_ostr;
 ret[1]=ext_data_conf;
 
 return ret;
}
			
    function show_virtual_exp_evidence_phrases(ed_gene_id) {

     var vi=virt_phrase.length;
     if(!virt_phrase[vi]) virt_phrase[vi]=new Array();
       
       // exp-icon
       var vext_ecid=mk_virt_exp_evid(ed_gene_id);
       
       var v_ostr=vext_ecid[0];
       var ext_data_conf=vext_ecid[1];

       var v_str=evalPhrase(-1, v_ostr);       
   
       virt_phrase[vi]["ostr"]=v_ostr;
              
       // gmodel-button
       var add_to_gmod="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ virtual_buy(virt_phrase,"+vi+"); }} \" onmouseover=\"return ps('Add this relation to your gene model.');\" onmouseout=\"return ps();\"><IMG src='"+img_model_add_src+"' border='0' /></A>";

       //      
       var vs="<TR><TD WIDTH=\"100%\" >"+v_str+"</TD>";
       vs+="<TD VALIGN=\"TOP\" ALIGN=\"right\" >&#160;</TD>";     
       vs+="<TD VALIGN=\"TOP\" ALIGN=\"left\" nowrap=\"1\" >"+add_to_gmod+ext_data_conf+"</TD></TR>";     
       
       virt_phrase[vi]["str"]=vs;
       
       return vi;
    }

    function show_virtual_exp_evidence_line(ed_gene_id) {

     var vi=virt_phrase.length;
     if(!virt_phrase[vi]) virt_phrase[vi]=new Array();
            
     // exp-icon
     var vext_ecid=mk_virt_exp_evid(ed_gene_id);
     
     var v_ostr=vext_ecid[0];
     var ext_data_conf=vext_ecid[1];
       
     virt_phrase[vi]["ostr"]=v_ostr;              
     v_str=evalPhrase(-1, v_ostr);
     
     var add_to_gmod="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ virtual_buy(virt_phrase, "+vi+"); }} \" onmouseover=\"return ps('Add this relation to your gene model.');\" onmouseout=\"return ps();\"><IMG src='"+img_model_add_src+"' border='0' /></A>";     
     
     //
     var class_str="gene";
     if(window.old_ID && window.old_ID == ed_gene_id) {
      class_str="gene_old";
     }

     var motext="Show information for this gene.";
     
     var symbol=eds["_"+ed_gene_id];
     
     virt_phrase[vi]["str"]="<TR><TD valign=\"top\"><A onmouseover=\"return ps('"+motext+"');\" onmouseout=\"return ps();\" href=\"/UniPub/iHOP/nv?ID1="+ed_gene_id+"&ID2="+window.main_ID+"\" class=\""+class_str+"\" >"+hl_query(-1, symbol)+"</A></TD><TD colspan=\"3\">"+v_str+"</TD><TD nowrap=\"1\">"+add_to_gmod+ext_data_conf+"</TD></TR>";

     return vi;
    }
   
 function showSpecialVirtualPhrase(vi) {
		
		var rs="";
  
  var pml="&#160;";
  var add_to_gmod="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ virtual_buy(special_phrase_array, "+vi+"); }} \" onmouseover=\"return ps('Add this relation to your gene model.');\" onmouseout=\"return ps();\"><IMG src='"+img_model_add_src+"' border='0' /></A>";     

  var str=evalPhrase(-1, special_phrase_array[vi]["ostr"]);

   rs+="<TR><TD WIDTH=\"100%\" >"+str+"</TD>";
   rs+="<TD VALIGN=\"TOP\" ALIGN=\"right\" >"+pml+"</TD>";
   rs+="<TD VALIGN=\"TOP\" ALIGN=\"left\" nowrap=\"1\">"+add_to_gmod+"</TD></TR>";

  return rs;
 }
				
 function show_next_phrase(i) {        
   global_nr_lines=show_phrase_order.length;

      if(show_phrase_order.length==0) {
       if(window.post_phrases) post_phrases(); 
       updateSentenceLayer(mmm); 

       return;
      } 
 
      var all=false;            
      
      for(var j=0; j<block_sent; ) {

       if(i>=(page-1)*lines_per_page && i<(page)*lines_per_page) { 
 
       j++;
       var nstr=""+show_phrase_order[i];

       if(nstr!="sep") {

        if(nstr.charAt(1)=="_") {

         var vi=nstr.split("_")[1];       

         // virtual phrase
         if(nstr.charAt(0)=="v") {									
          mmm+=virt_phrase[vi]["str"];
         }

         // virtual phrase
         if(nstr.charAt(0)=="s") {							

          mmm+=showSpecialVirtualPhrase(vi);
         }
									    
         truly_shown_phrases++;
        }	else {
											
         if(show_line(show_phrase_order[i])) truly_shown_phrases++;
        } 

       } else {

        if(truly_shown_phrases>0 && i<show_phrase_order.length-1) {
         mmm+="<TR><TD><P onmouseover=\"return ps('Sentences above contain associations between the last two entities you clicked on.');\" onmouseout=\"return ps();\" class=\"hline\" /><BR/></TD><TD colspan=\"2\">&#160;</TD></TR>";
        } else {
         // nothing
        }
       }
                      
       var percent=0;
       if(show_phrase_order.length>0) {
        percent=Math.round(truly_shown_phrases/show_phrase_order.length*100);
       } 
       if(percent%5==0 && percent!=old_percent) { 
        old_percent=percent; 
        
        if(existLayer("status")) layerInnerHTML("status", "iHOP status - "+percent+"%"); 
       }
       
      } // if in-page 
       
       i++;      
       if(i>=show_phrase_order.length) { all=true; break; }       
      }
      
      if(all) {
      
       if(window.post_phrases) post_phrases(); 
              
       updateSentenceLayer(mmm);        

       mmm="";
       window.status=""; 

       return;
       
      } else {

       if(block_sent>1) {
        block_sent=1; 

        var extra=null;
        if(window.getHalfTimeMessage) extra=getHalfTimeMessage();
        updateSentenceLayer(mmm, extra);  
       } 
      }
            
      //calltimeout i
      window.setTimeout("show_next_phrase("+i+");", 10);
      //
}

 function updateSentenceLayer(sc, extra) {  
  var tsc="<TABLE BORDER=\"0\" width=\"100%\" CELLSPACING=\"2\" CELLPADDING=\"2\" align=\"center\" >";
  if(window.getHeaderMessage) tsc+=getHeaderMessage();        

  sc=tsc+sc;
  if(extra) sc+=extra;
  sc+="</TABLE>";

  if(existLayer('sentences')) layerInnerHTML('sentences', sc);
 }   

function show_next_hline(i) {        
 //
 global_nr_lines=show_hline_order.length;
 
 //
 if(show_hline_order.length==0) {
  if(window.post_hub) post_hub(); 
  updateSentenceLayer(mmm); 

  return;
 }
   
      var all=false;            
      var last_true_nr=-1;
      
      for(var j=0; j<block_hline; ) {

       if(i>=(page-1)*lines_per_page && i<(page)*lines_per_page) { 
       
       j++;
       var nstr=""+show_hline_order[i];

       if(nstr!="sep") {
        
        if(nstr.charAt(0)=="v") {
         // virtual phrase
         var vi=nstr.split("_")[1];

         hop_makeTableHeader();         
        
         mmm+=virt_phrase[vi]["str"];
        
         truly_shown_hline++;
        } else {

         if(hline(nstr)) truly_shown_hline++;
        }         
        
       } else {

        if(truly_shown_hline>0) {
         mmm+="<TR><TD colspan=\"5\"><P onmouseover=\"return ps('Please find above the last gene you clicked on.');\" onmouseout=\"return ps();\" class=\"hline\" /><BR/></TD></TR>";
         
        } else {
         
         // nothing
        }
       }

       var percent=0;       
       if(show_hline_order.length>0) {
        percent=Math.round(truly_shown_hline/show_hline_order.length*100);
       }        
       if(percent%5==0 && percent!=old_percent) { 
        old_percent=percent; 
        
        if(existLayer("status")) layerInnerHTML("status", "iHOP status - "+percent+"%"); 
       }

       } // if in-page 
             
       i++;      
       if(i>=show_hline_order.length) { all=true; break; }
      }
      
      if(all) {
       if(window.post_hub) post_hub(); 
                            
       updateSentenceLayer(mmm); 
       mmm="";
       window.status=""; 
              
       return;
       
      } else {

       if(block_hline>1) {
        block_hline=1; 

        var extra=null;
        if(window.getHalfTimeHubMessage) extra=getHalfTimeHubMessage();        
        updateSentenceLayer(mmm, extra);          
        
       } 
      }
            
      //calltimeout i
      window.setTimeout("show_next_hline("+i+");", 10);
      //
}

function showPageSelector(nr_cols) {
 if(global_nr_lines<0) return;
 var nrp=Math.floor(global_nr_lines/lines_per_page);
 if(global_nr_lines%lines_per_page!=0) nrp+=1;

 //
 if(nrp==1 || nr_lines<=0) return;
 //
 mmm+="<TR><TD colspan=\"5\" align=\"center\"><BR/>";

 if(is_a_hub && page==nrp) {

 if(pageType=="gismo") is_a_hub__iap="Chem. Compounds and MeSH terms";  

 mmm+="<SPAN class='gene_active'>"+mainEntity["symbol"]+"</SPAN> is a hub protein found together with <B>"+is_a_hub__nrp+"</B> "+is_a_hub__iap+" in <B>"+is_a_hub__nrs+"</B> sentences (<B>"+is_a_hub__nra+"</B> abstracts). Not all information can be shown as sentences. ";
  mmm+="<A onmouseover=\"return ps('Show overview.');\" onmouseout=\"return ps();\" href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ gothispage(new Array('list', 1, 'page',1)); }}\" ><BR/><img src=\"/UniPub/html/img/hcad/arrow.gif\" border=\"0\" align=\"middle\" /> <B>Click here</B></A> for an overview.";             

	mmm+="<BR/><BR/>";
 }
	 	 
 if(pageType!="mgi")  mmm+="Result page: ";
 
 if(page>1) {
  mmm+="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ gothispage(new Array('page',"+eval(page*1-1)+")); }}\" onmouseover=\"return ps('See previous page.');\" onmouseout=\"return ps();\" ><B>[Previous]</B></A>&#160;";
 } 

 //
 for(var p=1; p<=nrp; p++) {
  if(p==page) {
   mmm+="<B>"+p+"</B>";
  } else {
   mmm+="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ gothispage(new Array('page',"+p+")); }} \" onmouseover=\"return ps('See page "+p+".');\" onmouseout=\"return ps();\" >"+p+"</A>"; 
   //'page',"+p+");\" >"+p+"</A>"; 
  }  
  
  mmm+="&#160;";
 }
 
 if(page<nrp) {
  mmm+="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ gothispage(new Array('page',"+eval(page*1+1)+")); }}\" onmouseover=\"return ps('See next page.');\" onmouseout=\"return ps();\" ><B>[Next]</B></A>";
 }
 
 mmm+="</TD><TR>";  
}

function open_GM(l_url) {
 window.gmod_win=popitupType(window.gmod_win, l_url, 'HOP_GeneModel');  
}

function open_HOME(l_url) {
 // if the current window is not defined replace it!
 if(!window.name || window.name.length==0) {
  window.location.href=l_url;
 } else {
 
  window.hoptb_win=popitupType(window.hoptb_win, l_url, 'HOP_TextBrowser'); 
 } 
}

function open_OPTS(l_ed_url) {
 window.opt_win=popitupType(window.opt_win, l_ed_url, 'HOP_Options');
}

//??? remove org_id !!!
function psg(item_source, id, multilink) {
 var motext="";
 
	if(item_source=="MeSH") {
	 
  motext="MeSH-Term: "+" - Click for options...";
		
		return ps(motext);
	}						      

	if(item_source=="CH") {
	 
  motext="Chem. Compound: "+" - Click for options...";
		
		return ps(motext);
	}						      
		
	// default is gene											
 var sym= "<BR/><B>"+getItemsourceIdAttribute(item_source, id, "symbol")+"</B>"; 
 var name=getItemsourceIdAttribute(item_source, id, "name");
 if(name && name.length>0) sym+=" - \""+name+"\"";

 var org="";

 if(item_source=="GENE") {
  var org_id=getItemsourceIdAttribute(item_source, id, "org_id");
  org=" ("+new_org_id_name_array["_"+org_id]+")"; 
 }

 //
 if(!multilink) {
  motext="Hyperlink - This term has been predicted to be a gene:"+sym;
 } else {
  motext="Hyperlink - Gene:"+sym;
 }
 
 if(window.old_ID && window.old_ID == id) { motext="Hyperlink - The last gene but one you clicked on:"+sym; }

 if(id==window.main_ID || ID1_array["_"+id]==1 || ID2_array["_"+id]==1) { motext="The last gene you clicked on:"+sym; }
 
 motext+=org;

 return ps(motext);
}


function keyDown_plus(key_ascii, metaKey, ctrlKey) {
 
 if(key_ascii==70 && (metaKey || ctrlKey)) {
 
  // don't if microsoft explorer!
  if(navigator.appName.toLowerCase().indexOf("microsoft")<0) {
  
   if(searchInPage_active) {
    window.setTimeout("searchInPage()", 100);
    return false;
   } 
  }
 }
 
 return true;
}

function searchInPage() {

 var capa="dialog";
 
 if(!existLayer(capa)) {
  valert("Layer: "+capa+" is undefined. ");

  return;
 }

 var msg="";

 msg+="<TABLE width='400' border='0' class='border_dialog' style='background-color: #FFFFFF;' cellpadding='0' cellspacing='0' >";
 msg+="<TR><TD>";
 msg+="<FORM name='sip_form' id='sip_form' method='post' >";  

 msg+="<TABLE cellpadding='2' cellspacing='0' >";
 msg+="<TR><TD class='col_bg_middle'>";

 msg+="<B>Find in this Page</B>";
 msg+="</TD><TD class='col_bg_middle' align='right'>";
 msg+="<A class='col_font_white' href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ ps(''); closeDialog(); }}\" onmouseover=\"return ps('Cancel ...');\" onmouseout=\"return ps();\" ><B>[x]</B></A>";
 msg+="</TD><TR>";

 msg+="<TR><TD colspan='2'>";

 msg+="<TABLE>";
 msg+="<TR><TD nowrap='1'><BR/>";
 var selected="";
 if(sip_active) selected=" checked='checked' ";
 msg+="Find text: <input type='text' name='sip_text' id='sip_text'  size='60' maxlength='400' value='' />";
 msg+="</TD><TR>";

 msg+="<TR><TD align='center'>";
 msg+="<input type='checkbox' name='sip_active' id='sip_active' value='active' "+selected+" />";
 msg+=" Keep this search active during navigation."; // ??? better and link to HELP
 msg+="</TD><TR>";
 
 msg+="<TR><TD align='center'><BR/>"; 
 msg+="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ document.forms['sip_form'].submit(); }}\" onmouseover=\"return ps('Find ...');\" onmouseout=\"return ps();\" ><B>[Find]</B></A>";
 msg+="&#160;&#160;&#160;&#160;"
 msg+="<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ ps(''); closeDialog(); }}\" onmouseover=\"return ps('Cancel ...');\" onmouseout=\"return ps();\" ><B>[Cancel]</B></A>";
 msg+="</TD><TR>";
 msg+="<TR><TD>&#160;</TD><TR>";
 msg+="</TABLE> ";

 msg+="</TD><TR>";
 msg+="</TABLE> ";

 msg+="</FORM>";
 msg+="</TD><TR>";
 msg+="</TABLE> ";

 msg=shdw_dlg(msg);

 var w=400;
 
 layerInnerHTML(capa, msg);
 initLayer(capa);
 
 var mx=bodyWidth()/2-w/2;
 if(mx<0) mx=0;
 layerLeft(capa, mx);
 
 var h=layerContentHeight(capa);
 var my=scrollTop()+bodyHeight()/2-h/2;
 
 layerTop(capa, my);

 initLayer(capa); 
 showLayer(capa, true);
 
 //
 document.forms["sip_form"].elements["sip_text"].value=sip_text;
 document.forms["sip_form"].elements["sip_text"].focus();
 document.forms["sip_form"].elements["sip_text"].select();
}

// **


        
    function border(syn) {
     //
     var sa=new Array();
     
     var parts=new Array();

     var last_digitOrLetter=-1;
     var term="";    
         
     for(var i=0; i<syn.length; i++) {
      var c=String(syn.charAt(i));
      var cu=c.toUpperCase(); 
      
      //
      var digitOrLetter=-1;
      
      if(isLetter(cu)) {
       digitOrLetter=1;
      } else {
      
       if(isDigit(cu)) {
        digitOrLetter=0;
       }
      }
      
      if(digitOrLetter<0) {
       return new Array();
      }

      if(last_digitOrLetter>=0 && last_digitOrLetter!=digitOrLetter) {
       if(term.length>0) parts[parts.length]=term;  
       term="";
      }

      //
      term+=c;

      //      
      last_digitOrLetter=digitOrLetter;
     }
     
     if(term.length>0) parts[parts.length]=term;  
     
     //
     var new_term="";
     for(var i=0; i<parts.length; i++) {
      if(i>0) new_term+="-";
      new_term+=parts[i];
     }

     sa[sa.length]=new_term;
     return sa;
    }
   
    function extendSyn(tag_type, syn, incl_hyphen) {
     var sa=new Array();
     
     sa[sa.length]=syn;
     
     if(tag_type=="G") {
  
     // abcX
     var tmp_sa=border(syn);
          
     for(var i=0; i<tmp_sa.length; i++) {
      sa[sa.length]=tmp_sa[i];

      if(incl_hyphen) {
       // -     
       var tmp_s1=tmp_sa[i].replace(/ /g, "-");
       var tmp_s2=tmp_sa[i].replace(/-/g, " ");
       
       if(tmp_s1!=tmp_sa[i]) sa[sa.length]=tmp_s1;
       if(tmp_s2!=tmp_sa[i]) sa[sa.length]=tmp_s2;       
      }
     } 
          
     //
     } 
     
     return sa;
    }

//

function getGeneAttrText_idc(idc, ridc, mo, show_pc) {
       var str="";
        if(idc && idc>0) {
         var star_img=null;
         //last_idcs: 35 26 
         
         if(idc>21) {
												star_img="<IMG border=\"0\" width=\"15\" height=\"11\" src=\"/UniPub/html/img/star3.png\" />";
         } else {

          if(idc>13) {
												star_img="<IMG border=\"0\" width=\"15\" height=\"11\" src=\"/UniPub/html/img/star2.png\" />";
          } else {
												star_img="<IMG border=\"0\" width=\"15\" height=\"11\" src=\"/UniPub/html/img/star1.png\" />";
          } 
         } 

         if(star_img) {
          str=star_img;        
          
          var nmo="iHOP confidence value ("+idc+") for this gene.";
          if(!show_pc) nmo="iHOP confidence value for this gene.";
          if(mo && mo.length>0) nmo=mo;
          str="<SPAN onmouseover=\"return ps('"+nmo+"');\" onmouseout=\"return ps();\" >"+str+"</SPAN>";
         }
        } 

 //str="";
 return str;
}

function getGeneAttrText_hlog(pairs) {
 var str="";
 
      var found_itself="";
     
			if(pairs["hinf"] && pairs["hinf"].length>0) {
       found_itself="<BR/><I>(Not found in text!)</I>";
			}

						if(pairs["hlog"] && pairs["hlog"].length>0) {
						 str=" / homologs: "+pairs["hlog"]+"";
							str+=found_itself;
						}

 return str;
}

// no-page-entity-multilink
function NPEml(item_source, id, term) {
var uname;
var extra_search="";

if(item_source=="MeSH") {
 extra_search="{[MH]}|"+getItemsourceIdAttribute(item_source, id, "name").replace(/'/g, "\\'");
 uname="MeSH term";
} else
  if(item_source=="CH") {
   uname="Chem. Compound";
   var local_name=getItemsourceIdAttribute(item_source, id, "name");

   extra_search="{[CH]}|"+local_name.replace(/'/g, "\\'");
   if(term && term.length>0 && term!=local_name) extra_search+="|"+term;
  }
   
if(!uname) return;

 var msg="";
 
 //
var vis=getItemsourceIdAttribute(item_source, id, 'nr_vis');

var _mainG="";
if(window.mainEntity && window.mainEntity["symbol"]) {
 _mainG=mainEntity["symbol"]+" and ";
}

if((!vis && list==1) || vis>1) {

var local_s="";
if(vis && vis>2) local_s="s"; 
var local_txt="See <B>"+(vis-1)+"</B> other occurrence"+local_s+" of this "+uname+" in this page";
if(!vis) local_txt="<B>See sentences</B> that contain "+_mainG+" this "+uname;

msg+="<TR><TD nowrap='1' >"+"<A href=\""+main_ID+".html?type="+item_source+"&ID="+id+"\" onmouseover=\"return ps('Search in this page...'); \" onmouseout=\"return ps();\">"+local_txt+"</A>"+"</TD></TR>";
}

msg+="<TR><TD nowrap='1' >"+"<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ pm_cmb_search("+add_pm_search(extra_search)+"); }} \" onmouseover=\"return ps('Click for enhanced PubMed/Google query...'); \" onmouseout=\"return ps();\"><B>Enhanced PubMed/Google query</B> for "+_mainG+" this "+uname+"</A>"+"</TD></TR>";

if(item_source=="CH") {
msg+="<TR><TD nowrap='1' >"+"<A href=\"javascript:if(window.name=='') {{ window.location.href='./nil'; }} else {{ cid_search("+getItemsourceIdAttribute(item_source, id, 'CID')+"); }} \" onmouseover=\"return ps('See more info at NCBI PubChem...'); \" onmouseout=\"return ps();\"><B>Check PubChem</B> for this "+uname+"</A>"+"</TD></TR>";

}

// msg+="<TR><TD>"+getItemsourceIdAttribute(item_source, id, "name")+"</TD></TR>";

 multilink(msg, "Options for this "+uname+":");
}


