//
// file: lib.js
//
// purpose: general purpose functions used by multiple js scripts.
//
// history:
//  12/16/09  eksc  created

   function getCleanSequence() {
      var seq = $('#sequence').val().toUpperCase();
      
      // strip out def lines and spaces
      seq = seq.replace(/>.*/g, '');
      seq = seq.replace(/\s/g, '');
      seq = seq.replace(/^\d+/, '');
      
      return seq;
   }//getCleanSequence
   
   
   function pause(t) {
      var date = new Date();
      var curDate = null;
      do { 
         curDate = new Date(); 
      }
      while(curDate - date < t);
   }//pause
   
   
   function repeatAction(frm, action) {
      ret = $.post('taskcontroller.php', {
         a : 'CLEAR_CACHE'
      });
      if (action.indexOf('search') > -1)
        frm.a.value = "SEQUENCE_SEARCH_UI";
      else
          frm.a.value = "BLAST_UI";
      frm.submit();
   }//searchAgain()
  
  
   function saveJobName(job_id, ctlname) {
      if ($('#'+ctlname).val() != '') {
         var new_name = $('#'+ctlname).val();
          $.get("taskcontroller.php?a=SET_JOB_NAME",
                  {'job_id' : job_id, 'new_name' : new_name},
                  function(data) {
                     alert("Job name changed to " + data.new_name);
                  },
                  'json'
             );//.get      
      }
   }
   
   
   function sendForm(frm, url) {
    frm.action = url;
    frm.submit();
   }
   
   
   function verifyNucleotideSequence() {
     var seq = getCleanSequence();
     
     var valid_chars = /^[ABCDGHKMNRSTUVWY\-]*$/g;
     if (!seq.match(valid_chars)) {
        return false;
     }
     else {
         return true;
     }
   }//verifyNucleotideSequence


   function verifyAminoAcidSequence() {
     var seq = getCleanSequence();
     
     var valid_chars = /^[ABCDEFGHIKLMNPQRSTVWXYZ\*\-]*$/g;
     if (!seq.match(valid_chars)) {
        return false;
     }
     else {
        return true;
     }
   }//verifyAminoAcidSequence


   function verifySequenceType() {
	 var seq = getCleanSequence();
     if (seq.match(/\d/) != null) {
       // assume sequence contains genbank ids; delay check
       return true;
     }
     if ($('.seq_type:checked').val() == 'nucleotide') {
        return verifyNucleotideSequence();
     }
     else if ($('.seq_type:checked').val() == 'aminoacid') {
        return verifyAminoAcidSequence();
     }
     else {
        alert("you haven't indicated whether your query consists of nucleotides or amino acids");
        return false;
     }
   }//verifySequenceType
      
   function verifyEmail(email) {
		//address = $('.' + email).val();
	   if(email == ''){
		   return true;
	   }

		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if(reg.test(email) == false) {
			alert('Invalid Email Address');
			return false;
		}

		return true;
	}//verifyemail


      
   
