document.domain="epa.gov";
function get_style(doc){
  top.tri_offset=354;
  try{
    if (top.navigator.appName.match(/Microsoft Internet Explorer/i)){
      doc.document.write("<link rel='stylesheet' type='text/css' href='http://epa.gov/dsstox03/ie.css'>");
      top.tri_offset=351;
      top.is_ie=true;
    }
    else if (top.navigator.appName.match(/Netscape/i)){
      doc.document.write("<link rel='stylesheet' type='text/css' href='http://epa.gov/dsstox03/netscape.css'>");
      top.is_ie=false;
    }
    if (top.navigator.oscpu){
      if (top.navigator.oscpu.match(/Windows NT 5.0/i)){ // trixie firefox
        top.tri_offset=348;
      }
    }
  }
  catch (err){alert ("get_style err: "+err);}
}

function check(event) {
  if (event.keyCode==13 && top.search.document.action_form.qtype.value !=""){
    top.search_now(top.search.document.action_form.qtype.value);
    return false;
  }
  /* RETURN FALSE KEEPS IE FROM BEEPING */
}

function help_div(x,y,width,msg) {
  try{
   
    var help_wind = top.document.getElementById("help_div");
    help_wind.style.width=width+"px";
    if (msg == ""){
      help_wind.style.visibility="hidden";
      help_wind.childNodes[0].nodeValue = msg; /* BLANK */
      help_wind.style.left = 0;
      help_wind.style.top  = 0;
      help_wind.style.height="";
    }
    else{
      help_wind.style.left = x + 'px';
      if (y+(msg.length/5) > 600){
        y -= 100;         /* KEEP TEXT ON PAGE */
      }
      help_wind.style.top  = y + 'px';
      help_wind.childNodes[0].nodeValue = msg;
      help_wind.style.visibility="visible";
      /*alert (parseInt(help_wind.style.top.slice(0,-2))+10);*/
      
    }
  }
  catch (err){alert ("help_div err: "+err);}
}
function help_img(x,y,img_sid) {
  try{
    var help_wind = top.document.getElementById("help_div");
    if (img_sid == 0){
      help_wind.style.visibility="hidden";
      help_wind.style.width  = ""
      help_wind.style.height = ""
      help_wind.style.backgroundImage = ''; /* BLANK */
      help_wind.style.left = 0;
      help_wind.style.top  = 0;
    }
    else{
      help_wind.style.left = x + 50 +'px';
      help_wind.style.top  = y - 50 + 'px';
      help_wind.style.width  = "200px";
      help_wind.style.height = "200px";
      var path_file= 'http://epa.gov/dsstox03/images/'+img_sid+'_200.png';
      help_wind.style.backgroundImage = 'url('+path_file+')';
      help_wind.style.visibility="visible";
    }
  }
  catch (err){alert ("help_img err: "+err);}
}

function save(type) {
  try{
    switch (type){
      case "substance":
        var form =  top.substance.document.forms[0];
        var format =  form.output_format.selectedIndex;
        switch (format){
          case 0: alert("Please choose an output format");
          break;
          case 1:
            var table=top.frames[0].document.getElementById('substance_table');
              
            var output_string=new String("Text output from DSSTox Structure Browser result\r\n");
            output_string+=top.q0.html[1].substr(3,-6);
            var query = top.q0.html[1].match(/<b>(.*?):<\/b> (.*?)$/);
            var qval = query[2];
            if (top.q0.type == "struc"){qval="(Drawn structure)";}
            output_string+="\r\nQuery: "+query[1]+" = "+qval+"\r\n";
            var db_match=top.substance.location.href.match(/([A-Z]{6})_/);
            for (var i=0;i<top.db_full.length;i++){
              if (dbs[i].substr(0,6) == db_match[1]){
                output_string+="Matching chemical found in "+db_match[1]+":\r\n";
                output_string+=db_full[i]+"\r\n\r\n";
              }
            }
            for (var i=0;i<table.rows.length;i++){
              var cell_name = new String(table.rows[i].cells[1].innerHTML);
              var cell_value = new String(table.rows[i].cells[2].innerHTML);
              var match;
              if (match=cell_value.match(/window\.open\("(http:\/\/.*?)"/)){
                cell_value=match[1];
              }
              output_string+=cell_name+"\t"+cell_value+"\r\n";
            }
            form.save_block.value=output_string;
            form.submit();
          break;
        }
      break;
      case "details":
        var form =  top.frames[1].document.forms[0];
        var format =  form.output_format.selectedIndex;
        switch (format){
          case 0: alert("Please choose an output format");
          break;
          case 1:
            var row_count=top.output_array.length;
            var output_string=new String("Text output from DSSTox Structure Browser result\r\n\r\n");
            output_string+='"DSSTox Substance ID","Tanimoto Similarity (%)","Substance Name","CASRN","Substance Description","Data Files Matching"\r\n';
            for (var i=0;i<row_count;i++){
              var temp= top.output_array[i].join("\t");
              output_string+= temp.substr(0,temp.length-1)+"\r\n";
            }
            form.save_block.value=output_string;
            form.submit();
          break;
          case 2:
            var row_count=top.output_array.length;
            var output_string=new String("CSV output from DSSTox Structure Browser result\r\n\r\n");
            output_string+='"DSSTox Substance ID","Tanimoto Similarity (%)","Substance Name","CASRN","Substance Description","Data Files Matching"\r\n';
            for (var i=0;i<row_count;i++){
              for (var j=0;j<(top.output_array[i].length-1);j++){
                var escaped=top.output_array[i][j].toString();
                if (escaped.match(/^\d+$|^\d+\.\d+$/)){   /*NUMBERS UNQUOTED*/
                  output_string+=escaped+",";
                }
                else {
                  output_string+="\""+escaped+"\",";    /*OTHERS QUOTED*/
                }
              }
              var escaped=top.output_array[i][top.output_array[i].length-1];
              if (escaped.match(/^\d+$|^\d+\.\d+$/)){   /*NUMBERS UNQUOTED*/
                output_string+=escaped+",";
              }
              else {
                if (escaped.length>6){escaped=escaped.substr(0,escaped.length-1);}
                output_string+="\""+escaped+"\"\r\n"; /*OTHERS QUOTED*/
              }
            }
            form.filename.value="dsstox_details.csv";
            form.save_block.value=output_string;
            form.submit();
          break;
        }
      break;
    }
  }
  catch (err){alert ("save err: "+err);}
}

function tab(vis,sel) {
  try{
    top.lastcall="top.tab("+vis+","+sel+");";
    top.tab_vis=vis;
    top.tab_sel=sel;
    if(sel==1 || sel==4){                 /* WRONG TAB */
      top.document.getElementById("alt_dbs").style.visibility="hidden";
    }
    else if ((top.q0.inchi_key == "") &&  /* NO RESULTS TO DISPLAY */
             (top.q0.smiles == "") &&
             (top.q0.pubchem_cid == 0)){
      top.document.getElementById("alt_dbs").style.visibility="hidden";
    }
    else if (top.q0.exact.length == 0){   /* NO EXACT MATCHES */
      top.document.getElementById("alt_dbs").style.visibility="hidden";
    }
    else {                                /* NEED TO DISPLAY */
      top.document.getElementById("alt_dbs").style.visibility="visible";
    }
    for (var i=1;i<=vis;i++){
      var tab_el = top.document.getElementById("t"+i);
      var tab_area_el = top.document.getElementById("a"+i);
      if (i==sel){
       tab_area_el.style.visibility="visible";
       tab_el.className = "tab_front";
       tab_area_el.style.width="800px";
      }
      else {
       tab_area_el.style.visibility="hidden";
       tab_el.className = "tab_back";
       tab_area_el.style.width="0px";
      }
    }
    for (var i=vis+1; i<=4; i++){
      var tab_el = top.document.getElementById("t"+i);
      var tab_area_el = top.document.getElementById("a"+i);
      tab_area_el.style.visibility="hidden";
      tab_el.className = "tab_gone";
    }
    window.scroll(0,0);
  }
  catch (err){alert ("tab err: "+err);}
}
function make_sum_html(summ){      /* OPERATES ON summ (IN PLACE) */
  try{
    var to_show=new Array(true,true,true); /* FIXME -- REMOVE ONCE SEARCH IS FIXED */
    if (top.q0.type.match(/struc|smiles/)){
      to_show[0]=top.search.document.storage_form.match_exc.checked;
      to_show[1]=top.search.document.storage_form.match_sub.checked;
      to_show[2]=top.search.document.storage_form.match_sim.checked;
    }
    var html = new Array();
    switch (summ.type){
      case 'name':
        html=top.sum_text.slice(0);      /* FIXME ARRAY COPY */
        html[1]="<b>NAME:</b> "+summ.query;
        html[5]="Exact matches";
        html[7]=summ.exact_count /* NOW SET BY PERL CGI */
        /* html[9]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[11]=summ.date; FIXME TO REMOVE */ 
        html[13]="Partial matches";
        html[15]=summ.sub_count /* NOW SET BY PERL CGI */
        /* html[17]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[19]=summ.tmst; FIXME TO REMOVE */
        html[21]="";
        html[23]="";
        html[25]="<td/>";  /* N/A HERE */
      break;
      case 'cas':
        html=top.sum_text.slice(0);      /* ARRAY COPY */
        html[1]="<b>CAS #:</b> "+summ.query;
        html[5]="Matches";
        html[7]=summ.exact_count /* NOW SET BY PERL CGI */
        /* html[9]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[11]=summ.date; FIXME TO REMOVE */  
        html[13]="";
        html[15]="";
        html[17]="<td/>"; /* N/A HERE */
        /* html[19]=summ.tmst; FIXME TO REMOVE */
        html[21]="";
        html[23]="";
        html[25]="<td/>";  /* N/A HERE */
      break;
      case 'inchi':
        html=top.sum_text.slice(0);      /* ARRAY COPY */
        html[1]="<b>InChI:</b> "+summ.query; /* CONTAINS THE TEXT: InChI= */
        html[5]="Matches";
        html[7]=summ.exact_count /* NOW SET BY PERL CGI */
        /* html[9]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[11]=summ.date; FIXME TO REMOVE */
        html[13]="";
        html[15]="";
        html[17]="<td/>"; /* N/A HERE */
        /* html[19]=summ.tmst; FIXME TO REMOVE */
        html[21]="";
        html[23]="";
        html[25]="<td/>";  /* N/A HERE */
      break;
      case 'formula':
        html=top.sum_text.slice(0);      /* ARRAY COPY */
        html[1]="<b>FORMULA:</b> "+summ.query;
        html[5]="Exact matches";
        html[7]=summ.exact_count /* NOW SET BY PERL CGI */
        /* html[9]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[11]=summ.date; FIXME TO REMOVE */
        html[13]="Substructures";
        html[15]=summ.sub_count /* NOW SET BY PERL CGI */
        /* html[17]="<td/>"; */  /* NO OPTION TO REMOVE */
        /* html[19]=summ.tmst; FIXME TO REMOVE */
        html[21]="";
        html[23]="";
        html[25]="<td/>";  /* N/A HERE */
      break;
      case 'smiles':
        html=top.sum_text.slice(0);      /* ARRAY COPY */
        html[1]="<b>SMILES:</b> "+top.search.document.smiles_form.smiles_query.value;
        /*html[3]='<img src="http://localhost:8080/jsp-examples/marvin/generate_image.jsp?mol='+summ.query+'&format=png:w100,h100">';*/  /* GEN ON THE FLY */
        html[3]='<applet class="depict" code="JME.class" archive="http://epa.gov/dsstox03/JME.jar"><param name="options" value="depict"><param name="jme" value="'+top.search.document.JME.jmeFile()+'"></applet>';
        if (to_show[0]){
          html[5]="Exact matches";
          html[7]=summ.exact_count /* NOW SET BY PERL CGI */
        }
        else {html[9]="<td/>";}
        /* html[11]=summ.date; FIXME TO REMOVE */
        if (to_show[1]){
          html[13]="Substructures";
          html[15]=summ.sub_count /* NOW SET BY PERL CGI */
        }
        else{ html[17]="<td/>";}  /* UNLESS REMOVED */
        /* html[19]=summ.tmst; FIXME TO REMOVE */
        if (to_show[2]){
          html[21]="Similarity "+top.sim_text;
          //html[21]="Similarity &gt "+top.search.document.storage_form.thresh.value+"%";
          html[23]=summ.sim_count /* NOW SET BY PERL CGI */
        }
        else{ html[25]="<td/>";}  /* UNLESS REMOVED */
      break;
      case 'struc':
        html=top.sum_text.slice(0);      /* ARRAY COPY */
        html[1]="<b>Structure:</b> "
        html[3]='<applet class="depict" code="JME.class" archive="http://epa.gov/dsstox03/JME.jar"><param name="options" value="depict"><param name="jme" value="'+top.search.document.JME.jmeFile()+'"></applet>';
        if (to_show[0]){
          html[5]="Exact matches";
          html[7]=summ.exact_count; /* NOW SET BY PERL CGI */
        }
        else{ html[9]="<td/>";}  /* UNLESS REMOVED */
        html[11]=summ.date;
        if (to_show[1]){
          html[13]="Substructures";
          html[15]=summ.sub_count; /* NOW SET BY PERL CGI */
        }
        else{ html[17]="<td/>";}  /* UNLESS REMOVED */
        html[19]=summ.tmst;
        if (to_show[2]){
          html[21]="Similarity "+top.sim_text;
          //html[21]="Similarity &gt "+top.search.document.storage_form.thresh.value+"%";
          html[23]=summ.sim_count; /* NOW SET BY PERL CGI */
        }
        else{ html[25]="<td/>";}  /* UNLESS REMOVED */
      break;
    }
    summ.html=html.slice(0); /* NOW COPY ALL TO THE INPUT OBJECT */
  }
  catch (err){alert ("make_sum_html err: "+err);}
}

function draw_incidences_page(){ /* ALWAYS FOLLOWS top.make_sum_html (LEGACY DESGIN) */
  try{
    searching(false);
    top.lastcall="top.draw_incidences_page();";
    /* MULTIPLE "write" STATEMENTS OCCASIONALLY CAUSE PROBLEMS IN (e.g.) */
    /* FIREFOX 2.0 */
    /* THEREFORE, BUFFER ALL TEXT, THEN WRITE IT ALL AT ONCE */
    if (top.q0.exact.length+top.q0.subst.length+top.q0.simil.length == 0){
      alert("Your query matched no structures.");
      top.tab(1,1);
      return;
    }
    var to_show=new Array(true,true,true); /* FIXME -- REMOVE ONCE SEARCH IS FIXED */
    if (top.q0.type.match(/struc|smiles/)){
      to_show[0]=top.search.document.storage_form.match_exc.checked;
      to_show[1]=top.search.document.storage_form.match_sub.checked;
      to_show[2]=top.search.document.storage_form.match_sim.checked;
    }
    top.incid_main[2] = ""; /* BLANK THIS OUT */
    for (var i=0;i<3;i++){
      if (to_show[i]){
        top.incid_main[2]+= '<th style="width:120px;text-align:right;">'+top.q0.html[8*i+5]+'</th>'; /* LOADS HEADERS */
      }
      else {top.incid_main[2]+= '<th style="width:120px;"></th>';}
    }
    var buffer = new String("");
    buffer+=top.incid_main[0]+"\n";
    buffer+=top.q0.html.join("\n")+"\n";
    buffer+=top.incid_main[1]+"\n";
    buffer+=top.incid_main[2]+"\n";
    buffer+=top.incid_main[3]+"\n";

    var count=0;
    var ex_sub_sim = new Array(0,0,0);
    var sform=top.search.document.storage_form.dbase;
    for (var i=0;i<sform.length;i++){ /* GO THROUGH EACH DB */
      if (top.search.document.storage_form.all_or_some[0].checked || (sform[i].checked)){
        if (count % 2 == 0){top.incid_row[1]="w";}
        else {top.incid_row[1]="g";}
        var match=top.dbs[i].match(/^([A-Z]{6})_v\d[a-z]_(\d+)/);
        var db_name=match[1];      /* ZERO IS WHOLE STRING */
        top.incid_row[5]=match[2]; /* ZERO IS WHOLE STRING */
        top.incid_row[3]="<a style=\"color:black;text-decoration:none;cursor:pointer;width:70px;\" href=\"http://www.epa.gov/ncct/dsstox/sdf_"+db_name.toLowerCase()+".html\" target=\"dsstox_help\" onmouseout=top.help_div(0,0,0,\"\"); onmouseover=\'top.help_div(event.clientX+20,event.clientY,400,top.db_full["+i+"]);\'>"+top.dbs[i].substr(0,10)+"</a>";
        if (top.q0.incid[db_name] == undefined){
          top.incid_row[7]  = "-";
          top.incid_row[9]  = "-";
          top.incid_row[11] = "-";
        }
        else{
          for (var j=0;j<3;j++){
            if (to_show[j]){
              var hits=top.q0.incid[db_name][j].length;
              ex_sub_sim[j]+=hits;
              if (hits == 0){
                top.incid_row[2*j+7] = '-';
              }
              else {
                top.incid_row[2*j+7] = '<div style="cursor:pointer;color:#0000FF;text-decoration:underline;" onclick=\'top.show_details("'+db_name+'",'+j+');\'>'+hits+'</div>';  /* ??? FIRST VALUE INTEGER TELLS show_details TO USE q.incid */
              }
            }
            else {top.incid_row[2*j+7] = "";}
          }
        }
        buffer += top.incid_row.join("");
        count++;
      }
    }
    buffer += "<tr><td colspan=5 style='height:1px;background-color:black;'/></tr>";
    top.incid_row[1]="g";
    top.incid_row[3]="<font color='#800000'><b>Total Unique Substance Hits</b>";
    top.incid_row[5]="";
    if (! to_show[0] || top.q0.html[5] == ""){
      top.incid_row[7]="";
    }
    else {
      top.incid_row[7]="<b>"+top.q0.exact_count+"</b>";
    }
    if (! to_show[1] || top.q0.html[13] == ""){
      top.incid_row[9]="";
    }
    else {
      top.incid_row[9]="<b>"+top.q0.sub_count+"</b>";
    }
    if (! to_show[2] || top.q0.html[21] == ""){
      top.incid_row[11]="</font>";
    }
    else {
      top.incid_row[11]="<b>"+top.q0.sim_count+"</b></font>";
    }
    buffer += top.incid_row.join("");
    buffer += "<tr color='black' style='height:1px;'/>";
    top.incid_row[1]="g";
    top.incid_row[3]="<font color='#800000'><b>Total Substance Hits - All Files</b>";
    top.incid_row[5]="";

    if (! to_show[0] || top.q0.html[5] == ""){
      top.incid_row[7]="";
    }
    else {
      top.incid_row[7]="<b>"+ex_sub_sim[0]+"</b>";
    }
    if (! to_show[1] || top.q0.html[13] == ""){
      top.incid_row[9]="";
    }
    else {
      top.incid_row[9]="<b>"+ex_sub_sim[1]+"</b>";
    }
    if (! to_show[2] || top.q0.html[21] == ""){
      top.incid_row[11]="</font>";
    }
    else {
      top.incid_row[11]="<b>"+ex_sub_sim[2]+"</b></font>";
    }

    buffer += top.incid_row.join("");
    
    buffer+=top.incid_main[4]+"\n";

    var me=top.incidences.document;
    top.back_disabled=false;
    me.open();
    me.write(buffer);
    me.close();
    if (top.tab_vis<2){top.tab_vis=2;} /* SHOW AT LEAST 2 */
    top.tab(2,2);
    top.back_disabled=true;
  }
  catch (err){alert ("draw_incidences_page err: "+err);}
}

/* db_name IS "all" OR e.g. "CPDBAS" 
   num    IS 0, 1, OR 2 FOR EXACT, SUB, OR SIM */
function show_details(db_name,num){
  try{
    top.lastcall="top.show_details('"+db_name+"',"+num+");";

    top.help_div(80,230,300,"Formatting..... ");
    var help_div = top.document.getElementById("help_div");
    help_div.style.height="100px";
    top.output_array=[];
    var sform=top.search.document.storage_form.dbase;
    var dbs_to_use = new Array();
    var files_column = new Array();
    var sid_list=new Array();
    var sid_triangle=new Array(); /* RENAME THIS */
    if (db_name == "all"){
      switch (num){
        case 0:
          sid_list=top.q0.exact;
          sid_triangle=sid_list.slice(0);
        break;
        case 1:
          sid_list=top.q0.subst;
          sid_triangle=sid_list.slice(0);
        break;
        case 2:
          sid_list=top.q0.simil;
          sid_triangle=sid_list.slice(0);
        break;
      }
      var files_count = new Array();
      if ((sid_list.length > 500) && (top.informed != 1)){
        alert("Displaying more than 500 details may take more than 10 seconds.\nDisplaying more than 2000 may cause your browser to become unresponsive.");
        top.informed=1;
      }
      for (var i=0;i<sid_list.length;i++){
        files_count[i] =0;
        files_column[i] = new String();
        top.output_array[i]=["","","","","",""];
      }
 
      for (var i=0;i < sform.length;i++){ //COLLECT ALL ACTIVE DATABASES
        if ((top.search.document.storage_form.all_or_some[0].checked) || (sform[i].checked)){
          cur_db=top.dbs[i].substr(0,6);
          if (top.q0.incid[cur_db] != undefined){
            for (var j=0;j<top.q0.incid[cur_db][num].length;j++){
              var sid_ref=top.q0.incid[cur_db][num][j];
              var sid=Math.abs(sid_list[sid_ref]);
              top.output_array[sid_ref][5]+=cur_db+",";
              files_count[sid_ref]++;
              if (files_count[sid_ref]%2 == 1){
                files_column[sid_ref]+="<tr>"
              }
              files_column[sid_ref]+= '<td width="50"><a class="detail" onclick="top.show_subst(\''+cur_db+'_'+sid+'-0.html\','+sid+');">'+cur_db+'</a></td>'; /* FIXME NEED TO HANDLE MULTIPLE RIDS */
              if (files_count[sid_ref]%2 == 0){
                files_column[sid_ref]+="</tr>"
              }
            }
          }
        }
      }
    }

    var table = new String("");
    var ss_array = new Array();
    var count = 0;
    switch (num){
      case 0:           /* EXACT MATCHES */
        if (db_name != "all"){
          if ((top.q0.incid[db_name][0].length > 500) && (top.informed !=1)){
            alert("Displaying more than 500 details may take more than 10 seconds.\nDisplaying more than 2000 may cause your browser to become unresponsive.");
            top.informed=1;
          }
          for (var i=0;i<top.q0.incid[db_name][0].length;i++){
            top.output_array[i]=["","","","","",""];
            var ref=top.q0.incid[db_name][0][i];
            var sid=Math.abs(top.q0.exact[ref]);
            if (top.q0.exact[ref]>0){
              sid_triangle.push(sid);
            }
            else {
              sid_triangle.push(0);
            }
            top.det_row[1] = sid;
            top.output_array[i][0]=top.det_row[1];
            top.det_row[3] = 100
            top.output_array[i][1]=top.det_row[3];
            top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
            if (! top.is_ie){
              top.det_row[7]  = "";
              var name_text=top.q0.ex_ncs[ref][0];
              for (var p=0;p<name_text.length;p+=35){
                top.det_row[7] += name_text.substr(p,35);
                if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
              }
            }
            else{
              top.det_row[7]=top.q0.ex_ncs[ref][0];
            }
            top.output_array[i][2]=top.det_row[7];
            top.det_row[9]  = top.q0.ex_ncs[ref][1];
            top.output_array[i][3]=top.det_row[9];
            top.det_row[11] = top.q0.ex_ncs[ref][2];
            top.output_array[i][4]=top.det_row[11];
            top.det_row[13] ='<tr><td width="50"><a class="detail" onclick="top.show_subst(\''+db_name+'_'+sid+'-0.html\','+sid+');">'+db_name+'</a></td></tr>'; /* FIXME NEED TO HANDLE MULTIPLE RIDS */
            top.output_array[i][5]=db_name;
            count++;
            table+=top.det_row.join("\n")+"\n";
          }
        }
        else{
          for (var i=0;i<top.q0.exact.length;i++){
            if (output_array[i][5].length >5){
              var sid=Math.abs(top.q0.exact[i]);
              top.det_row[1] = sid;
              top.output_array[i][0]=top.det_row[1];
              top.det_row[3] = 100;
              top.output_array[i][1]=top.det_row[3];
              top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
              if (! top.is_ie){
                top.det_row[7]  = "";
                var name_text=top.q0.ex_ncs[i][0];
                for (var p=0;p<name_text.length;p+=35){
                  top.det_row[7] += name_text.substr(p,35);
                  if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
                }
              }
              else{
                top.det_row[7]=top.q0.ex_ncs[i][0];
              }
              top.output_array[i][2]=top.det_row[7];
              top.det_row[9]  = top.q0.ex_ncs[i][1];
              top.output_array[i][3]=top.det_row[9];
              top.det_row[11] = top.q0.ex_ncs[i][2];
              top.output_array[i][4]=top.det_row[11];
              top.det_row[13] = files_column[i];
              count++;
              table+=top.det_row.join("\n")+"\n";
            }
          }
        }
      break;
      case 1:           /* SUBSTRUCTURE MATCHES */
        if (db_name != "all"){
          if ((top.q0.incid[db_name][1].length > 500) && (top.informed !=1)){
            alert("Displaying more than 500 details may take more than 10 seconds.\nDisplaying more than 2000 may cause your browser to become unresponsive.");
            top.informed=1;
          }
          for (var i=0;i<top.q0.incid[db_name][1].length;i++){
            top.output_array[i]=["","","","","",""];
            var ref=top.q0.incid[db_name][1][i];
            var sid=Math.abs(top.q0.subst[ref]);
            if (top.q0.subst[ref]>0){
              sid_triangle.push(sid);
            }
            else {
              sid_triangle.push(0);
            }
            top.det_row[1] = sid;
            top.output_array[i][0]=top.det_row[1];
            if (top.q0.type == "struc" || top.q0.type == "smiles"){
              top.det_row[3] = Math.floor(1000*top.q0.sub_tani[ref]+0.5)/10;
            }
            else {top.det_row[3] = "N/A";}
            top.output_array[i][1]=top.det_row[3];
            top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
            if (! top.is_ie){
              top.det_row[7]  = "";
              var name_text=top.q0.sub_ncs[ref][0];
              for (var p=0;p<name_text.length;p+=35){
                top.det_row[7] += name_text.substr(p,35);
                if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
              }
            }
            else{
              top.det_row[7]=top.q0.sub_ncs[ref][0];
            }
            top.output_array[i][2]=top.det_row[7];
            top.det_row[9]  = top.q0.sub_ncs[ref][1];
            top.output_array[i][3]=top.det_row[9];
            top.det_row[11] = top.q0.sub_ncs[ref][2];
            top.output_array[i][4]=top.det_row[11];
            top.det_row[13] ='<tr><td width="50"><a class="detail" onclick="top.show_subst(\''+db_name+'_'+sid+'-0.html\','+sid+');">'+db_name+'</a></td></tr>'; /* FIXME NEED TO HANDLE MULTIPLE RIDS */
            top.output_array[i][5]=db_name;
            count++;
            table+=top.det_row.join("\n")+"\n";
          }
        }
        else{
          for (var i=0;i<top.q0.subst.length;i++){
            if (output_array[i][5].length >5){
              var sid=Math.abs(top.q0.subst[i]);
              top.det_row[1] = sid;
              top.output_array[i][0]=top.det_row[1];
              if (top.q0.type == "struc" || top.q0.type == "smiles"){
                top.det_row[3] = Math.floor(1000*top.q0.sub_tani[i]+0.5)/10;
              }
              else {top.det_row[3] = "N/A";}
              top.output_array[i][1]=top.det_row[3];
              top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
              if (! top.is_ie){
                top.det_row[7]  = "";
                var name_text=top.q0.sub_ncs[i][0];
                for (var p=0;p<name_text.length;p+=35){
                  top.det_row[7] += name_text.substr(p,35);
                  if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
                }
              }
              else{
                top.det_row[7]=top.q0.sub_ncs[i][0];
              }
              top.output_array[i][2]=top.det_row[7];
              top.det_row[9]  = top.q0.sub_ncs[i][1];
              top.output_array[i][3]=top.det_row[9];
              top.det_row[11] = top.q0.sub_ncs[i][2];
              top.output_array[i][4]=top.det_row[11];
              top.det_row[13] = files_column[i];
              count++;
              table+=top.det_row.join("\n")+"\n";
            }
          }
        }
      break;
      case 2:           /* SIMILARITY MATCHES */
        if (db_name != "all"){
          if ((top.q0.incid[db_name][2].length > 500) && (top.informed !=1)){
            alert("Displaying more than 500 details may take more than 10 seconds.\nDisplaying more than 2000 may cause your browser to become unresponsive.");
            top.informed=1;
          }
          for (var i=0;i<top.q0.incid[db_name][2].length;i++){
            top.output_array[i]=["","","","","",""];
            var ref=top.q0.incid[db_name][2][i];
            var sid=Math.abs(top.q0.simil[ref]);
            if (top.q0.simil[ref]>0){
              sid_triangle.push(sid);
            }
            else {
              sid_triangle.push(0);
            }
            top.det_row[1] = sid;
            top.output_array[i][0]=top.det_row[1];
            if (top.q0.type == "struc" || top.q0.type == "smiles"){
              top.det_row[3] = Math.floor(1000*top.q0.sim_tani[ref]+0.5)/10;
            }
            else {top.det_row[3] = "N/A";}
            top.output_array[i][1]=top.det_row[3];
            top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
            if (! top.is_ie){
              top.det_row[7]  = "";
              var name_text=top.q0.sim_ncs[ref][0];
              for (var p=0;p<name_text.length;p+=35){
                top.det_row[7] += name_text.substr(p,35);
                if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
              }
            }
            else{
              top.det_row[7]=top.q0.sim_ncs[ref][0];
            }
            top.output_array[i][2]=top.det_row[7];
            top.det_row[9]  = top.q0.sim_ncs[ref][1];
            top.output_array[i][3]=top.det_row[9];
            top.det_row[11] = top.q0.sim_ncs[ref][2];
            top.output_array[i][4]=top.det_row[11];
            top.det_row[13] ='<tr><td width="50"><a class="detail" onclick="top.show_subst(\''+db_name+'_'+sid+'-0.html\','+sid+');">'+db_name+'</a></td></tr>'; /* FIXME NEED TO HANDLE MULTIPLE RIDS */
            top.output_array[i][5]=db_name;
            count++;
            table+=top.det_row.join("\n")+"\n";
          }
        }
        else{
          for (var i=0;i<top.q0.simil.length;i++){
            if (output_array[i][5].length >5){
              var sid=Math.abs(top.q0.simil[i]);
              top.det_row[1] = sid;
              top.output_array[i][0]=top.det_row[1];
              if (top.q0.type == "struc" || top.q0.type == "smiles"){
                top.det_row[3] = Math.floor(1000*top.q0.sim_tani[i]+0.5)/10;
              }
              else {top.det_row[3] = "N/A";}
              top.output_array[i][1]=top.det_row[3];
              top.det_row[5] = '"top.help_img(event.clientX,event.clientY,'+sid+');"><img src="http://epa.gov/dsstox03/images/'+sid+'_100.png"';
              if (! top.is_ie){
                top.det_row[7]  = "";
                var name_text=top.q0.sim_ncs[i][0];
                for (var p=0;p<name_text.length;p+=35){
                  top.det_row[7] += name_text.substr(p,35);
                  if (p+35 < name_text.length){top.det_row[7]+="-<br>";}
                }
              }
              else{
                top.det_row[7]=top.q0.sim_ncs[i][0];
              }
              top.output_array[i][2]=top.det_row[7];
              top.det_row[9]  = top.q0.sim_ncs[i][1];
              top.output_array[i][3]=top.det_row[9];
              top.det_row[11] = top.q0.sim_ncs[i][2];
              top.output_array[i][4]=top.det_row[11];
              top.det_row[13] = files_column[i];
              count++;
              table+=top.det_row.join("\n")+"\n";
            }
          }
        }
      break;
    }

    var num_plus=num+1;
    table+= '<script>top.det_choose('+num_plus+');</script>\n';
    /* alert("Done making table"); */
    var buffer = new String("");
    buffer+=top.det_main[0]+"\n";
    buffer+=top.q0.html.join("\n")+"\n";
    buffer+=top.det_main[1]
    for (var i=0;i < sid_triangle.length;i++){
      // alert(sid_triangle[i]);
      if (sid_triangle[i] > 0){
        var tri_pos = 102*i+top.tri_offset;
        buffer+="<img style='position:absolute;top:"+tri_pos+"px;left:217px;cursor:pointer;padding:0px;margin:0px;' src='http://epa.gov/dsstox03/corner_button.gif' onclick='top.sid_search("+sid_triangle[i]+");'/>";
      }
    }

    /* NOW WRITE THINGS */
    var me=top.frames[1].document;
    top.back_disabled=false;
    me.open();
    me.write(buffer);
    me.write(table);
    me.write(top.det_main[2]);
    me.close();
    top.document.getElementById("detail").style.height= count*102+300+"px";
    if (top.tab_vis<3){top.tab_vis=3;} /* SHOW AT LEAST 3 */
    top.tab(top.tab_vis,3);
    top.help_div(0,0,0,"");
    top.back_disabled=true;
  }
  catch (err){alert ("show_details err: "+err);}
}
function show_subst(url,sid){
  try{
    top.lastcall="top.show_subst('"+url+"',"+sid+");";
    window.scroll(0,0);
    top.substance.location.replace("http://epa.gov/dsstox03/substance_files/"+url);
    top.tab(4,4);
  }
  catch (err){alert ("show_subst err: "+err);}
}

function searching(bool){
  var help_wind = top.document.getElementById("help_div");
  if (bool){
    top.help_div(80,230,300,"Searching..... ");
    help_wind.style.height="100px";
  }
  else {
    top.help_div(0,0,0,"");
  }
}
function sid_search(sid){
  top.q0 = new Object();
  q0.type     = new String();
  q0.query    = new String();
  q0.exact    = new Array ();
  q0.subst    = new Array ();
  q0.simil    = new Array ();
  q0.sub_tani = new Array ();
  q0.sim_tani = new Array ();
  q0.incid    = new Object (); /* HoLoLoL - [DB's 6 CHAR ID][EXACT, SUBST, OR SIMIL][SIDS][RIDS] */
  q0.ex_ncs   = new Array (); /* LoL - [INDEX][NAME, CAS, SUBSTANCE DESC.] */
  q0.sub_ncs  = new Array (); /* LoL - [INDEX][NAME, CAS, SUBSTANCE DESC.] */
  q0.sim_ncs  = new Array (); /* LoL - [INDEX][NAME, CAS, SUBSTANCE DESC.] */
  q0.html     = new Array ();
  var stor = top.search.document.storage_form;
  var act  = top.incidences.document.incid_action_form;
  act.qtype.value="sid";
  act.qval.value=sid;
  act.thresh.value=stor.thresh.value;
  act.min_sim.value=stor.min_sim.value;
  if (stor.all_or_some.value == "all"){act.dbs.value="all";}
  else {
    for (var i=0;i<top.dbs.length;i++){
      if (stor.dbase[i].checked){act.dbs.value+=top.dbs[i].substr(0,6)+"-";}
    }
  }
  if (stor.match_exc.checked){act.hits.value+="exc-";}
  if (stor.match_sub.checked){act.hits.value+="sub-";}
  if (stor.match_sim.checked){act.hits.value+="sim-";}
  window.scroll(0,0);
  /* alert("paused");  */
  top.searching(true);
  /* top.pausecomp(5000); */
  act.submit();
  /*alert("sent");*/
}
function search_now(type){
  try{
    /*top.document.getElementById("detail").style.height = 700; /* PREVENT UNNECESSARY SCROLL BAR */
    /*top.document.getElementById("substance").style.height = 700; /* PREVENT UNNECESSARY SCROLL BAR */
    top.mol_kekule   = []; /* CLEAR THIS ARRAY */
    var form_tx = top.search.document.text_form;
    var form_sm = top.search.document.smiles_form;
    var form_jm = top.search.document.jme_form;
    var form_st = top.search.document.storage_form;
    var form_ac = top.search.document.forms[4];
    /* SET UP THE hits LIST */
    form_ac.hits.value=""; 
    if (form_st.match_exc.checked){form_ac.hits.value+="exc-";}
    if (form_st.match_sub.checked){form_ac.hits.value+="sub-";}
    if (form_st.match_sim.checked){form_ac.hits.value+="sim-";}

    /* SET UP THE dbs LIST */
    if (form_st.all_or_some[0].checked){form_ac.dbs.value="all";}
    else {
      form_ac.dbs.value="";
      for (var i=0; i<top.dbs.length;i++){
        if (form_st.dbase[i].checked){
          form_ac.dbs.value+=top.dbs[i].substr(0,6)+"-";
        }
      }
    }
    /* COPY thresh VALUE */
    form_ac.thresh.value = form_st.thresh.value;
    form_ac.min_sim.value = form_st.min_sim.value;

    /* DEFINE qtype AND qval */
    switch (type){
      case 'struc':
        if (top.search.document.JME.smiles() == ""){
          alert("Please draw a chemical structure before clicking 'Search'");
          return;
        }
        else if (!form_ac.hits){
          alert("Please check at least one of the three boxes under 'Structure Search Options'.");
          return;
        }
        else {searching(true);}
        form_sm.struc_options.value="struc_submit";
        form_sm.smiles_query.value = top.search.document.JME.smiles();
        form_sm.submit(); /* THIS PRODCUES OUTPUT WHICH WILL SUBMIT ACTION FORM */
        return; /* PROBABLY NEVER GETS HERE */
      break;
      case 'smiles_preview':
        if (form_sm.smiles_query.value == ""){
          alert("Please enter a SMILES string before clicking 'Preview below'");
          return;
        }
        form_sm.struc_options.value="smiles_preview";
        form_sm.submit(); /* CREATES A MOL FILE IN JME, BUT DOES NOT SUBMIT ACTION FORM */
        return;
      break;
      case 'smiles_submit':
        if (form_sm.smiles_query.value == ""){
          alert("Please enter a SMILES string before clicking 'Search'");
          return;
        }
        else {searching(true);}
        if (!form_ac.hits){
          alert("Please check at least one of the three boxes under 'Structure Search Options'.");
          return;
        }
        form_sm.struc_options.value="smiles_submit";
        form_sm.submit(); /* CREATES A MOL FILE IN JME, THEN SUBMITS ACTION FORM */
        return;
      break;
      case 'auto':
        if (form_tx.text_query.value == ""){
          alert("Please enter text before clicking 'Search'");
          return;
        }
        else {searching(true);}
        form_ac.qval.value    = form_tx.text_query.value;
        /* CLEAR OTHER SEARCH VALUES */
        form_sm.smiles_query.value="";
        top.search.document.JME.readMolecule(""); 
        form_ac.submit();
      break;
      case 'name':
        if (form_tx.text_query.value == ""){
          alert("Please enter text before clicking 'Search'");
          return;
        }
        else {searching(true);}
        form_ac.qval.value    = form_tx.text_query.value;
        /* CLEAR OTHER SEARCH VALUES */
        form_sm.smiles_query.value="";
        top.search.document.JME.readMolecule(""); 
        form_ac.submit();
      break;
      case 'cas':
        if (form_tx.text_query.value == ""){
          alert("Please enter text before clicking 'Search'");
          return;
        }
        else if (! ((form_tx.text_query.value.match(/^\d{1,6}-\d{2}-\d$/)) ||
                   (form_tx.text_query.value.match(/^\d{4,9}$/)))){
          alert("'"+form_tx.text_query.value+"' is not a properly formatted CAS RN number");
          return;
        }
        else {searching(true);}
        form_ac.qval.value    = form_tx.text_query.value;
        /* CLEAR OTHER SEARCH VALUES */
        form_sm.smiles_query.value="";
        top.search.document.JME.readMolecule(""); 
        form_ac.submit();
      break;
      case 'inchi':
        if (form_tx.text_query.value == ""){
          alert("Please enter text before clicking 'Search'");
          return;
        }
        else if (! form_tx.text_query.value.match(/^InChI=/)){
          alert("InChI strings must begin with \"InChI=\" (case-sensitive)"); 
          return;
        }
        else {searching(true);}
        form_ac.qval.value    = form_tx.text_query.value;
        /* CLEAR OTHER SEARCH VALUES */
        form_sm.smiles_query.value="";
        top.search.document.JME.readMolecule(""); 
        form_ac.submit();
      break;
      case 'formula':
        if (form_tx.text_query.value == ""){
          alert("Please enter text before clicking 'Search'");
          return;
        }
        else if (! form_tx.text_query.value.match(/^([A-Z][a-z]??[0-9]*?)+$/)){
          alert("Note: Chemical formulas must be case sensitive"); 
          return;
        }
        else {searching(true);}
        form_ac.qval.value    = form_tx.text_query.value;
        /* CLEAR OTHER SEARCH VALUES */
        form_sm.smiles_query.value="";
        top.search.document.JME.readMolecule(""); 
        form_ac.submit();
      break;
    }
    return;
  }
  catch (err){alert ("search_now err: "+err);}
}
function match_options(change){
  /* 0 => OFF, 1 => ON, 2 => TOGGLE */
  try{
    ops = top.frames[3].document.getElementById("match_options");
    fls = top.frames[3].document.getElementById("db_details");
    if ((ops.style.visibility == "visible") || (change == 0)){
      ops.style.visibility="hidden";
    }
    else {
      ops.style.visibility="visible";
    }
  }
  catch (err){alert ("match_options err: "+err);}
}

function some(){ /* AUTOMATICALLY SELECT "Selected DSSTox Files" */
 top.search.document.storage_form.all_or_some[1].checked= true;
}

function db_details(change){
  /* 0 => OFF, 1 => ON, 2 => TOGGLE */
  try{
    fls = top.frames[3].document.getElementById("db_details");
    if ((change == 1) || ((change == 2) && fls.style.visibility == "hidden")){
      fls.style.visibility="visible";
    }
    else {
      fls.style.visibility="hidden";
    }
  }
  catch (err){alert ("db_details err: "+err);}
}
function t_edit(increment){
  try{
    var t_in=top.search.document.storage_form.thresh;
    if (!t_in.disabled){
      t_in.value=(t_in.value*1)+(increment*1);
      top.update_thresh();
    }
  }
  catch (err){alert ("t_up err: "+err);}
}
function update_thresh() {
  try{
    var t = top.search.document.storage_form.thresh;
    t.value*=1;
    if (isNaN(t.value)){t.value = 0;}
    else if (t.value >= 100){t.value = 100;}
    else if (t.value <= 0){t.value = 0;}
  }
  catch (err){alert ("update_thresh err: "+err);}
}
function update_min_sim() {
  try{
    var t = top.search.document.storage_form.min_sim;
    t.value*=1;
    if (isNaN(t.value)){t.value = 0;}
    else if (t.value <= 0){top.value = 0;}
  }
  catch (err){alert ("update_min_sim err: "+err);}
}

function clear_jme(){
  try{
  searching(false);
  top.search.document.JME.readMolecule(""); 
  return;
  }
  catch (err){alert ("clear_jme err: "+err);}
}
function det_choose(row){
  try{
    for (var i=1; i<4; i++){
      if (row == i){top.frames[1].document.getElementById("det_choice"+i).style.backgroundColor = "#FFC";}
      else {top.frames[1].document.getElementById("det_choice"+i).style.backgroundColor = "#F0F0F0";}
    }
  }
  catch (err){alert ("det_choose err: "+err);}
}
function pausecomp(millis) {
  var date = new Date();
  var curDate = null;

  do { curDate = new Date(); }
  while(curDate-date < millis);
} 
function noback(){
  if (top.back_disabled == true){
    top.back_disabled=false;
    history.forward();
    top.frames[1].document.domain="epa.gov";
    eval(top.lastcall.toString());
    /*top.frames[1].location.reload();*/
    /*top.frames[1].document.styleSheets[0].href="style.css";*/
    /*top.frames[1].document.styleSheets[1].href="netscape.css"*/
    /*top.frames[1].document.styleSheets[0].disabled=true;*/
    /*top.frames[1].document.styleSheets[1].disabled=true;*/
    /*top.frames[1].document.styleSheets[0].disabled=false;*/
    /*top.frames[1].document.styleSheets[1].disabled=false;*/
    if (! top.is_ie){top.location.replace('http://epa.gov/dsstox03/');}
    alert("Use tabs rather than back arrow");
  }
}

function linkout(database,chem_ref){
  try{
    switch (database){
      case "pubchem" :
        if (chem_ref=="exact"){
          if (top.q0.pubchem_cid > 0){
            var url="http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid="+top.q0.pubchem_cid;
            window.open(url);
          }
          else {alert("no PubChem chemical available");}
        }
        else if (chem_ref=="none"){alert("PubChem compound not available");}
        else {
          var url="http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid="+chem_ref;
          window.open(url);
        }
      break;
      case "lazar" :
        if (chem_ref=="exact"){
          if (top.q0.smiles != ""){
            var url="http://lazar.in-silico.de/?smiles="+top.q0.smiles;
            window.open(url);
          }
          else {alert("no SMILES string available to search Lazar");}
        }
        else if (chem_ref=="none"){alert("no Lazar chemical available");}
        else{
          var url="http://lazar.in-silico.de/?smiles="+chem_ref;
          window.open(url);
        }
      break;
      case "chemspider" :
        if (chem_ref=="exact"){
          if (top.q0.inchi_key != ""){
            var url="http://www.chemspider.com/InChIKey="+top.q0.inchi_key;
            window.open(url);
          }
          else {alert("no ChemSpider chemical available");}
        }
        else if (chem_ref=="none"){alert("no ChemSpider chemical available");}
        else{
          var url="http://www.chemspider.com/InChIKey="+chem_ref;
          window.open(url);
        }
      break;
      case "actor" :
        if (chem_ref=="exact"){
          if (top.q0.ex_ncs[0][1] != ""){
            var url="http://actor.epa.gov/actor/GenericChemical?casrn="+top.q0.ex_ncs[0][1];
            window.open(url);
          }
          else {alert("no ACToR link info available");}
        }
        else if (chem_ref=="none"){alert("no ACToR chemical available");}
        else{
          var url="http://actor.epa.gov/actor/GenericChemical?casrn="+chem_ref;
          window.open(url);
        }
      break;
    }
    return;
  }
  catch (err){alert ("linkout err: "+err);}
}
