/**
* Method trims white space off both ends of the string
*/

	String.prototype.trim = function(){
		return( (ar=/^\s*([\s\S]*\S+)\s*$/.exec(this)) ? ar[1] : "" );
	}

	function charInString (c, s){
		for (i = 0; i < s.length; i++){
			if (s.charAt(i) == c) return true;
		}
		return false;
	}

var whitespace = " \t\n\r";

	function stripTailingWhitespace (s){
		var i = s.length-1;
		while ((i >=0 ) && charInString (s.charAt(i), whitespace))
		i--;
		return s.substring (0, i+1);
	}

	function stripInitialWhitespace (s){
		var i = 0;
		while ((i < s.length) && charInString (s.charAt(i), whitespace))
		i++;
		return s.substring (i, s.length);
	}

	function trim (s){
		return stripTailingWhitespace(stripInitialWhitespace(s));
	}

	function keyhandler(e, fieldName){
		if (e.keyCode == 13){
			switch (fieldName){
				case "geneSearch":
				document.getElementById('geneForm:geneSearchBtn').click();
				E.returnValue = false;
				break;
			}
		}
	}

	function doSearch(){
		var geneText = document.getElementById('geneForm:geneSearch');
		var geneReg = /[&\*@\\\^\{}\$"=!%\|\?#~]/;
		var erroroperator = geneReg.exec(geneText.value);

		if (geneText == null || geneText.value == '') {
			alert("Please enter a Gene Symbol, Gene Description, Keyword or MGI to search!");
			document.getElementById('geneForm:geneSearch').focus();
			return false;
		}
		else if (geneReg.test(geneText.value)){
			alert("Invalid character in gene search: " + erroroperator);
			document.getElementById('geneForm:geneSearch').select();
			return false;
		}
		else {
			return true;
		}
	}

	function doBlast(){
		var seq = document.getElementById('blastForm:sequence');
		var eValue = document.getElementById('blastForm:eValue');
		var blastReg = /[&\*@\\\^\{}\$"=!\<%\?#~]/;
		seq.value = trim(seq.value);
		var occur = seq.value.match(/>/g);

		if (eValue == null || eValue.value == ''){
			alert("Please enter an expectation value to search!");
			document.getElementById('blastForm:eValue').focus();
			return false;
		}
		else if (blastReg.test(eValue.value)){
			var erroroperator = blastReg.exec(eValue.value);
			alert("Invalid character in expectation value: " + erroroperator);
			document.getElementById('blastForm:eValue').select();
			return false;
		}
		else if (seq == null || seq.value == ''){
			alert("Please enter a sequence to search!");
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else if (seq.value.length < 4){
			alert("Please enter a sequence to search!");
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else if (seq.value.length > 10000){
			alert("Sequence is too large!");
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else if (seq.value.substr(0,1) != '>'){
			alert("Please make sure that the sequence is in the FASTA format!");
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else if (occur.length > 1){
			alert("Only one sequence per BLAST search is allowed!");
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else if (blastReg.test(seq.value)){
			var erroroperator = blastReg.exec(seq.value);
			alert("Invalid character in BLAST sequence: " + erroroperator);
			document.getElementById('blastForm:sequence').focus();
			return false;
		}
		else {
			return true;
		}
	}

  function clearSequence(){
  	var seq = document.getElementById('blastForm:sequence');
  	if (seq != null) {
  			seq.value = "";
		} 
  }
