/*
 * file: searchresults.js
 * 
 * purpose: javascript used in search results
 * 
 * history
 *    11/13/09  eksc  created
 */
   var num_jobs           = 0;
   var num_completed_jobs = 0;
   var completed_jobs     = '';
   var job_set_id         = '';

   var timer;
   
   function checkSearch() {
      $.ajaxSetup ({  
          cache: false  
       });
      
    
      var jobs = $('.job_id');
      jQuery.each(
         jobs, 
         function() {
            var job_id = this.value;
            job_set_id = job_id.substr(0, 12);

            if (completed_jobs.indexOf(job_id) == -1) {
               $.get("taskcontroller.php?a=CHECK_SEARCH", // url     
                  { 'job_id' : job_id },            // data
                  function(data, status, req) {                        // callback function
                     if (status != "success") {
                        var divname = "#tab" + data.job_id + 'status';
                        var div = $(divname);
                        div.html('ERROR');
                         
                        // Record this job as completed
                        if (completed_jobs.indexOf(job_id) == -1) {
                           completed_jobs = completed_jobs + "," + data.job_id;
                           num_completed_jobs++;
                        }
                        /*
                        var divname = "#" + data.job_id + 'contents';
                        var div = $(divname);
                        div.html(data.html);
                        */
                     }
                     
                     if (data.result == 'WAITING') {
                        var divname = "#tab" + data.job_id + 'status';
                        var div = $(divname);
                        div.html('searching...');
                        // Set elapsed time
                        var now = new Date();
                        var time_elapsed = parseInt((now.getTime() - start_time)/1000);
                        $('.time_elapsed').text(time_elapsed + ' secs');
                        return;
                     }//WAITING
   
                     if (data.result == 'ERROR') {
                        var divname = "#tab" + data.job_id + 'status';
                        var div = $(divname);
                        div.html('ERROR');
                        
                         if (completed_jobs.indexOf(job_id) == -1) {
                           completed_jobs = completed_jobs + "," + data.job_id;
                           num_completed_jobs++;
                         }
                     }//ERROR
   
                     if (data.result == "OK") {
                   var now = new Date();
                   var time_elapsed = parseInt((now.getTime() - start_time)/1000);
                   var check =  $('.time_elapsed');
                   $('.time_elapsed').text(time_elapsed + ' secs');

                        // Tell  main controller to process and display the results
                        $.get("taskcontroller.php?a=PROCESS_SEARCH",
                            {job_id : data.job_id},
                            function(data) {
                               var divname = "#" + data.job_id + 'contents';
                               var div = $(divname);
                               div.html(data.html);
                               
                               if (completed_jobs.indexOf(job_id) == -1) {
                                  completed_jobs = completed_jobs + "," + data.job_id;
                                  num_completed_jobs++;
                               }
                               
                               // Get hit count for status div
                               $.get("taskcontroller.php?a=COUNT_SEARCH_HITS",
                                     {job_id : data.job_id},
                                     function(data) {
                                        var divname = "#tab" + data.job_id + 'status';
                                        var div = $(divname);
                                        div.html(data.msg);
                                     },
                                     'json'
                                );//.get("taskcontroller.php?a=COUNT_SEARCH_HITS
                            },//$.get function
                            'json'
                        );//.get("taskcontroller.php?a=PROCESS_SEARCH
                     }//OK
                  },//$.get funcBLAST hitstion 
                  'json'                                 // data format
               );//.get("taskcontroller.php?a=CHECK_SEARCH"
            }//job not completed
         }//.each function
      );//.each job_id

      // Set timer for next check
        if (num_completed_jobs >= num_jobs) {
           // all jobs have been processed: report and stop looping
         $.get("taskcontroller.php?a=END_JOB_SET",
                {job_set_id : job_set_id},
                function(data) {
                  clearInterval(timer);
                }
        );
         
        return false;
        }

   }//checkSearch()
   

   function MSOsubmit(form_name){
	   document.forms[form_name].submit();
   }
   
   function setNumJobs(num) {
	 num_jobs = num;
   }

   
   function uploadMaizeGDBBlastHits(uploadURL) {
      $('.upload_blast_hits').html("<center><b>Uploading Hits to GBrowse...</b></center>");
      
      // Create an error handler
      $('.upload_blast_hits').ajaxError(function(event, request, settings) {
         $('.upload_blast_hits').text('ERROR');
      });

      // Use Ajax directly (code from Carson)
        var xmlHttp;
        try {
          // Firefox, Opera 8.0+, Safari
          xmlHttp=new XMLHttpRequest();
        }
        catch (e) {
          try {
              xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch (e) {
            try {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
              alert("Your browser does not support AJAX!");
              return false;
            }
          }
        }
        xmlHttp.onreadystatechange=function() {
          if (xmlHttp.readyState==4) {
           var status = xmlHttp.status;
            $('.upload_blast_hits').html("<center><b>BLAST hits uploaded</b></center>");
            $('.viewlink').css('visibility', 'visible');
          }
          if(xmlHttp.readyState==0) {
           $('.upload_blast_hits').html("<center><b>0 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==1) {
           $('.upload_blast_hits').html("<center><b>1 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==2) {
           $('.upload_blast_hits').html("<center><b>2 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==3) {
           $('.upload_blast_hits').html("<center><b>3 [still] Uploading Hits to GBrowse...</b></center>");
          }
        };
  
        try {
           xmlHttp.open("GET", uploadURL, true);
           xmlHttp.send(null);
        }
        catch (e) {
           $('.upload_blast_hits').html("<center><b>Possible problem with track uploads</b></center>");
           alert("Caught erorr: Possible problem with track file uploading...Try the genome browser as this may be an issue with your browser");
        }
   }//uploadMaizeGDBBlastHits()
   
   function uploadPhytozomeBlastHits(uploadURL) {
      $('.upload_phytozome_blast_hits').html("<center><b>Uploading Hits to GBrowse...</b></center>");
      
      // Create an error handler
      $('.upload_phytozome_blast_hits').ajaxError(function(event, request, settings) {
         $('.upload_phytozome_blast_hits').text('ERROR');
      });

      // Use Ajax directly (code from Carson)
       var xmlHttp;
       try {
         // Firefox, Opera 8.0+, Safari
         xmlHttp=new XMLHttpRequest();
       }
       catch (e) {
         try {
             xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e) {
           try {
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {
             alert("Your browser does not support AJAX!");
             return false;
           }
         }
       }
       xmlHttp.onreadystatechange=function() {
         if (xmlHttp.readyState==4) {
          var status = xmlHttp.status;
           $('.upload_phytozome_blast_hits').html("<center><b>BLAST hits uploaded</b></center>");
           $('.viewlink').css('visibility', 'visible');
         }
         if(xmlHttp.readyState==0) {
          $('.upload_phytozome_blast_hits').html("<center><b>0 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==1) {
          $('.upload_phytozome_blast_hits').html("<center><b>1 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==2) {
          $('.upload_phytozome_blast_hits').html("<center><b>2 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==3) {
          $('.upload_phytozome_blast_hits').html("<center><b>3 [still] Uploading Hits to GBrowse...</b></center>");
         }
       };
 
       try {
          xmlHttp.open("GET", uploadURL, true);
          xmlHttp.send(null);
       }
       catch (e) {
          $('.upload_phytozome_blast_hits').html("<center><b>Possible problem with track uploads</b></center>");
           alert("Caught erorr: Possible problem with track file uploading...Try the genome browser as this may be an issue with your browser");
       }
   }//uploadPhytozomeBlastHits()
   
   function uploadMAGIBlastHits(uploadURL) {
      $('.upload_magi_blast_hits').html("<center><b>Uploading Hits to GBrowse...</b></center>");
      
      // Create an error handler
      $('.upload_magi_blast_hits').ajaxError(function(event, request, settings) {
         $('.upload_magi_blast_hits').text('ERROR');
      });

      // Use Ajax directly (code from Carson)
        var xmlHttp;
        try {
          // Firefox, Opera 8.0+, Safari
          xmlHttp=new XMLHttpRequest();
        }
        catch (e) {
          try {
              xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch (e) {
            try {
              xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
              alert("Your browser does not support AJAX!");
              return false;
            }
          }
        }
        xmlHttp.onreadystatechange=function() {
          if (xmlHttp.readyState==4) {
           var status = xmlHttp.status;
            $('.upload_magi_blast_hits').html("<center><b>BLAST hits uploaded</b></center>");
            $('.viewlink').css('visibility', 'visible');
          }
          if(xmlHttp.readyState==0) {
           $('.upload_magi_blast_hits').html("<center><b>0 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==1) {
           $('.upload_magi_blast_hits').html("<center><b>1 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==2) {
           $('.upload_magi_blast_hits').html("<center><b>2 [still] Uploading Hits to GBrowse...</b></center>");
          }
          if(xmlHttp.readyState==3) {
           $('.upload_magi_blast_hits').html("<center><b>3 [still] Uploading Hits to GBrowse...</b></center>");
          }
        };
  
        try {
           xmlHttp.open("GET", uploadURL, true);
           xmlHttp.send(null);
        }
        catch (e) {
           $('.upload_magi_blast_hits').html("<center><b>Possible problem with track uploads</b></center>");
           alert("Caught erorr: Possible problem with track file uploading...Try the genome browser as this may be an issue with your browser");
        }
   }//uploadMAGIBlastHits()

   function uploadMAGIv3_1BlastHits(uploadURL) {
      $('.upload_magiv3_1blast_hits').html("<center><b>Uploading Hits to GBrowse...</b></center>");
      
      // Create an error handler
      $('.upload_magiv3_1blast_hits').ajaxError(function(event, request, settings) {
         $('.upload_magiv3_1blast_hits').text('ERROR');
      });

      // Use Ajax directly (code from Carson)
       var xmlHttp;
       try {
         // Firefox, Opera 8.0+, Safari
         xmlHttp=new XMLHttpRequest();
       }
       catch (e) {
         try {
             xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e) {
           try {
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {
             alert("Your browser does not support AJAX!");
             return false;
           }
         }
       }
       xmlHttp.onreadystatechange=function() {
         if (xmlHttp.readyState==4) {
          var status = xmlHttp.status;
           $('.upload_magiv3_1blast_hits').html("<center><b>BLAST hits uploaded</b></center>");
           $('.viewlink').css('visibility', 'visible');
         }
         if(xmlHttp.readyState==0) {
          $('.upload_magiv3_1blast_hits').html("<center><b>0 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==1) {
          $('.upload_magiv3_1blast_hits').html("<center><b>1 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==2) {
          $('.upload_magiv3_1blast_hits').html("<center><b>2 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==3) {
          $('.upload_magiv3_1blast_hits').html("<center><b>3 [still] Uploading Hits to GBrowse...</b></center>");
         }
       };
 
       try {
          xmlHttp.open("GET", uploadURL, true);
          xmlHttp.send(null);
       }
       catch (e) {
          $('.upload_magiv3_1blast_hits').html("<center><b>Possible problem with track uploads</b></center>");
           alert("Caught erorr: Possible problem with track file uploading...Try the genome browser as this may be an issue with your browser");
       }
  }//uploadMAGIv3_1BlastHits()
  
   function uploadMAGIv4_0BlastHits(uploadURL) {
      $('.upload_magiv4_0blast_hits').html("<center><b>Uploading Hits to GBrowse...</b></center>");
      
      // Create an error handler
      $('.upload_magiv4_0blast_hits').ajaxError(function(event, request, settings) {
         $('.upload_magiv4_0blast_hits').text('ERROR');
      });

      // Use Ajax directly (code from Carson)
       var xmlHttp;
       try {
         // Firefox, Opera 8.0+, Safari
         xmlHttp=new XMLHttpRequest();
       }
       catch (e) {
         try {
             xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e) {
           try {
             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
           }
           catch (e) {
             alert("Your browser does not support AJAX!");
             return false;
           }
         }
       }
       xmlHttp.onreadystatechange=function() {
         if (xmlHttp.readyState==4) {
          var status = xmlHttp.status;
           $('.upload_magiv4_0blast_hits').html("<center><b>BLAST hits uploaded</b></center>");
           $('.viewlink').css('visibility', 'visible');
         }
         if(xmlHttp.readyState==0) {
          $('.upload_magiv4_0blast_hits').html("<center><b>0 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==1) {
          $('.upload_magiv4_0blast_hits').html("<center><b>1 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==2) {
          $('.upload_magiv4_0blast_hits').html("<center><b>2 [still] Uploading Hits to GBrowse...</b></center>");
         }
         if(xmlHttp.readyState==3) {
          $('.upload_magiv4_0blast_hits').html("<center><b>3 [still] Uploading Hits to GBrowse...</b></center>");
         }
       };
 
       try {
          xmlHttp.open("GET", uploadURL, true);
          xmlHttp.send(null);
       }
       catch (e){
          $('.upload_magiv4_0blast_hits').html("<center><b>Possible problem with track uploads</b></center>");
           alert("Caught erorr: Possible problem with track file uploading...Try the genome browser as this may be an issue with your browser");
       }
  }//uploadMAGIv4_0BlastHits()
   

