function convert_to_log_base_ten(na_and_k)
{
  var na_plus_k = na_and_k;
  log_base_ten = (Math.log(na_plus_k) / Math.log(10));
  return log_base_ten;
}

  function replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

  function checkMe(){
			var newstring = document.addprimer.sequence.value;
			init();
			for (var i=0; i<newstring.length; i++){
				finalCheck(newstring.charCodeAt(i));
			 }
				 var tmpstring = newstring.toUpperCase();
				 tmpstring = replace(replace(tmpstring,'\r',''),'\n','');
				 tmpstring = replace(tmpstring,' ','');
				  document.addprimer.sequence.value = tmpstring;
			}
// generic positive number decimal formatting function
function format (expr, decplaces) {
	// raise incoming value by power of 10 times the
	// number of decimal places; round to an integer; convert to string
	var str = "" + Math.round (eval(expr) * Math.pow(10,decplaces))
	// pad small value strings with zeros to the left of rounded number
	while (str.length <= decplaces) {
		str = "0" + str
	}
	// establish location of decimal point
	var decpoint = str.length - decplaces
	// assemble final result from: (a) the string up to the position of
	// the decimal point; (b) the decimal point; and (c) the balance
	// of the string. Return finished product.
	return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
}
			
	
		function checkIt(e){
			var charCode = (navigator.appName == "Netscape") ? e.which : e.keyCode;
			//status = charCode
			if (charCode == 65 || charCode == 97){
				//A
			}else if (charCode == 66 || charCode == 98){
				//B

			}else if (charCode == 67 || charCode == 99){
				//C
				

			}else if (charCode == 68 || charCode == 100){
				//D
				
			} else if (charCode == 71 || charCode == 103){
				//G
				

			} else if (charCode == 72 || charCode == 104){
				//H
				

			} else if (charCode == 73 || charCode == 105){
				//I
				

			} else if (charCode == 75 || charCode == 107){
				//K
				

			}else if (charCode == 77 || charCode == 109){
				//M
				
			} else if (charCode == 78 || charCode == 110){
				//N
				
			} else if (charCode == 80 || charCode == 112){
				//P
				

			} else if (charCode == 82 || charCode == 114){
				//R
				
			} else if (charCode == 83 || charCode == 115){
				

			} else if (charCode == 84 || charCode == 116){
				

			} else if (charCode == 85 || charCode == 117){
				
			} else if (charCode == 86 || charCode == 118){
				

			} else if (charCode == 87 || charCode == 119){
				

			} else if (charCode == 89 || charCode == 121){
				

			} else if (charCode == 32){
				var a = 1;
			}else {
				//alert("not a valid entry"); 
				return false;
			}

			return true;	
		}



		function baseLetter(count){
		 this.count = count
			}
			
			function calcGC(){
				var thisGC = ((baseCodes[2].count + baseCodes[4].count) / baseCodes[19].count) * 100;
				document.addprimer.cg.value = parseInt(thisGC);
				document.addprimer.size.value = baseCodes[19].count;
				}
				
			function calcMW(){
				var thisMW = (baseCodes[0].count * 313.2) 
								+ (baseCodes[2].count * 289.19 ) 
								+ (baseCodes[4].count * 329.21 ) 
								+ (baseCodes[13].count * 304.2 ) 
								+ (baseCodes[6].count * 314.2 ) 
								+ (baseCodes[9].count * 308.95 ) 
								+ (baseCodes[11].count * 321.21 ) 
								+ (baseCodes[17].count * 296.69 ) 
								+ (baseCodes[8].count *  301.2) 
								+ (baseCodes[7].count * 316.7 ) 
								+ (baseCodes[12].count * 309.2 )
								+ (baseCodes[16].count * 308.71 ) 
								+ (baseCodes[5].count * 302.2 ) 
								+ (baseCodes[1].count * 307.53 ) 
								+ (baseCodes[3].count * 315.54 ) 
								+ (baseCodes[15].count * 310.53 ) 
								+ (baseCodes[10].count * 79.98 ) 
								+ (baseCodes[14].count * 290.17 ) -62
	 
	 document.addprimer.mw.value = format(thisMW,2);

				}
	
			function calcEC(){
				var thisEC = (baseCodes[0].count * 15.4)
								+ (baseCodes[2].count * 7.4) 
								+ (baseCodes[4].count * 11.5 ) 
								+ (baseCodes[13].count * 8.7 ) 
								+ (baseCodes[6].count * 7.2 ) 
								+ (baseCodes[9].count * 10.7 ) 
								+ (baseCodes[11].count * 13.45 ) 
								+ (baseCodes[17].count * 8.05 ) 
								+ (baseCodes[8].count *  11.4) 
								+ (baseCodes[7].count * 10.1 ) 
								+ (baseCodes[12].count * 9.45 )
								+ (baseCodes[16].count * 12.05 ) 
								+ (baseCodes[5].count * 10.5 ) 
								+ (baseCodes[1].count * 9.2 ) 
								+ (baseCodes[3].count * 11.86 ) 
								+ (baseCodes[15].count * 11.43 ) 
								+ (baseCodes[10].count * 0 ) 
								+ (baseCodes[14].count * 9.9 )
	 
	 document.addprimer.EC.value = format(thisEC,2);
				}
				
			function calcTM(){
			var thisGC = document.addprimer.cg.value;
				
			var thisTm = (81.5 + (16.6 * (convert_to_log_base_ten(0.05))) + (0.41 * thisGC) - (675/baseCodes[19].count));
			  //var thisTm = (81.5 - (16.6*1.6989) + (0.41 * thisGC)) - 675 / baseCodes[19].count;
				document.addprimer.tm.value = format(thisTm,1);
				}
				
			function calcOtherFormulas(){
				var thisMW = document.addprimer.mw.value;
				var thisEC = document.addprimer.EC.value;
				var mgA260 = format(thisMW/thisEC,2);
				var nmolA260 = format((thisMW/thisEC)/(thisMW/1000),2);
				document.addprimer.mgA260.value = mgA260;
				document.addprimer.nmolA260.value = nmolA260;
				}
		
		function init(){
			baseCodes = new Array(20);
			baseCodes[0] = new baseLetter(0);
			baseCodes[1] = new baseLetter(0);
			baseCodes[2] = new baseLetter(0);
			baseCodes[3] = new baseLetter(0);
			baseCodes[4] = new baseLetter(0);
			baseCodes[5] = new baseLetter(0);
			baseCodes[6] = new baseLetter(0);
			baseCodes[7] = new baseLetter(0);
			baseCodes[8] = new baseLetter(0);
			baseCodes[9] = new baseLetter(0);
			baseCodes[10] = new baseLetter(0);
			baseCodes[11] = new baseLetter(0);
			baseCodes[12] = new baseLetter(0);
			baseCodes[13] = new baseLetter(0);
			baseCodes[14] = new baseLetter(0);
			baseCodes[15] = new baseLetter(0);
			baseCodes[16] = new baseLetter(0);
			baseCodes[17] = new baseLetter(0);
			baseCodes[18] = new baseLetter(0);
			baseCodes[19] = new baseLetter(0);
			}
			
		

			
		function finalCheck(e){
			var charCode = e;
			//status = charCode
			if (charCode == 65 || charCode == 97){
				//A
				baseCodes[0].count = baseCodes[0].count + 1 ;
				baseCodes[19].count = baseCodes[19].count + 1 ;
			}else if (charCode == 66 || charCode == 98){
				//B
				baseCodes[1].count = baseCodes[1].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;
			}else if (charCode == 67 || charCode == 99){
				//C
				baseCodes[2].count = baseCodes[2].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			}else if (charCode == 68 || charCode == 100){
				//D
				baseCodes[3].count = baseCodes[3].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 71 || charCode == 103){
				//G
				baseCodes[4].count = baseCodes[4].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 72 || charCode == 104){
				//H
				baseCodes[5].count = baseCodes[5].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 73 || charCode == 105){
				//I
				baseCodes[6].count = baseCodes[6].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 75 || charCode == 107){
				//K
				baseCodes[7].count = baseCodes[7].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			}else if (charCode == 77 || charCode == 109){
				//M
				baseCodes[8].count = baseCodes[8].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 78 || charCode == 110){
				//N
				baseCodes[9].count = baseCodes[9].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 80 || charCode == 112){
				//P
				baseCodes[10].count = baseCodes[10].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 82 || charCode == 114){
				//R
				baseCodes[11].count = baseCodes[11].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 83 || charCode == 115){
				baseCodes[12].count = baseCodes[12].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 84 || charCode == 116){
				baseCodes[13].count = baseCodes[13].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 85 || charCode == 117){
				baseCodes[14].count = baseCodes[14].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 86 || charCode == 118){
				baseCodes[15].count = baseCodes[15].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 87 || charCode == 119){
				baseCodes[16].count = baseCodes[16].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 89 || charCode == 121){
				baseCodes[17].count = baseCodes[17].count + 1;
				baseCodes[19].count = baseCodes[19].count + 1 ;

			} else if (charCode == 32){
				var a = 1;
			}else {
				//alert("not a valid entry"); 
				return false;
			}

			calcGC();
			calcMW();
			calcTM();
			calcEC();
			calcOtherFormulas();
			
			return true;	
		}

			
  function fillCustDetails() {
    with (document.form) {
	if (RelatedCustomers.selectedIndex < 2){
		TempName.value = "";
		TempPhone.value = "";
		TempEmail.value = "";
		shipnameold.value = "";
		shipphoneold.value = "";
		shipemailold.value = "";
	}else{
  	  var RowNum = RelatedCustomers.selectedIndex - 2;
      TempName.value = customers.shipname[RowNum];
      TempPhone.value = customers.shipphone[RowNum];
      TempEmail.value = customers.shipemail[RowNum];
      shipnameold.value = customers.shipname[RowNum];
      shipphoneold.value = customers.shipphone[RowNum];
      shipemailold.value = customers.shipemail[RowNum];
	  }
	  }
	  }
  
function changeOligoType(){
    with (document.form) {
			  var RowNum = scale.selectedIndex;
			  var myscale = synthesisscale.scale[RowNum];
			  OligoType.options.length = 0;
      for (var i = 0; i < synthesis.getRowCount(); i++) {
				if (synthesis.synthesisscale[i] == myscale){
        			NewOpt = new Option;
        			NewOpt.value = synthesis.oligotype[i];
       				NewOpt.text = synthesis.oligotype[i];
		        	OligoType.options[OligoType.options.length] = NewOpt;
				}
				}
	}
}