// Трёхбуквенные-однобуквенные аминокислотные последовательности.


three = new Array("ala","cys","asp","glu","phe","gly","his","ile","lys","leu","met","asn","pro","gln","arg","ser","thr","val","trp","tyr","***","end");

threelett = new Array("Ala","Cys","Asp","Glu","Phe","Gly","His","Ile","Lys","Leu","Met","Asn","Pro","Gln","Arg","Ser","Thr","Val","Trp","Tyr","***","End");

onelett = new Array("a","c","d","e","f","g","h","i","k","l","m","n","p","q","r","s","t","v","w","y","*","*");

weight = new Array(71.08,103.14,115.09,129.12,147.18,57.06,137.15,113.17,128.18,113.17,131.21,114.11,97.12,128.41,156.20,87.08,101.11,99.14,186.21,163.18,0,0);

function split(x,n)
{
	var y = "";
	var str = x.length/n;
	for (var i = 0; i < str; i++) {
		y =y + x.substring(i*n,n+i*n) + "<br>";
	}
	return y;
}

function one_three()
{
// забираем значения, заданные в форме
name_seq = document.fthree_one.s_name.value;
str = document.fthree_one.str.value;
var nl = parseFloat(document.fthree_one.nl.value); 
if(isNaN(nl)){alert(alt17_01); document.rand_seq.nl.focus(); return true;};
nl = Math.floor(Math.abs(nl));
document.fthree_one.nl.value = nl;

// приводим "str" к стандартному виду который будет называться "aseq"
aseq = ""
aseq = aseq.replace(/\W/g,"");
aseq = str.toLowerCase()+"*";
aseq = aseq.replace(/\*+/g,"*");
aseq = aseq.replace(/[^acdefghiklmnpqrstvwy*]/g,"");
laseq = aseq.length;

three_seq = "";
m=0;
i = 0;
while(i<laseq) { 
	i++; n = 0;
	while(n<22) {n++; if(aseq.charAt(i-1)==onelett[n-1]) {let = threelett[n-1]; mlet = weight[n-1]; break}} three_seq = three_seq + let; m = m + mlet;
}


three_seq = split(three_seq, nl*3);
m = m + 18.02; // last aminoacid
m = Math.round(m*100)/100;


// открываем окно 
id = window.open('','sequtil', config='height=500,width=600,toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes,location=no,status=no');
id.document.write("<title>&nbsp;&nbsp;&nbsp;Protein sequence conversion (one to three letter code.&nbsp;&nbsp;&nbsp;</title><BODY BGCOLOR='white'>");
id.focus();

// выводим последовательность
if(document.fthree_one.meth0.checked) 
{
if(document.fthree_one.meth1.checked) 
{
aseq = aseq.toUpperCase();
}
aseq = split(aseq, nl);
id.document.write("One letter sequence:<br>");
id.document.write("<font color='Gray'>&gt; ");
id.document.write(name_seq);
id.document.write("&nbsp;&nbsp;&nbsp;");
id.document.write(laseq-1);
id.document.write(" aminoacids; Mw=");
id.document.write(m);
id.document.write("Da</font><br><TT>");
id.document.write(aseq);
id.document.write("</TT><br><br>");
}
id.document.write("Three letter sequence:<br>");
id.document.write("<font color='Gray'>&gt; ");
id.document.write(name_seq);
id.document.write("&nbsp;&nbsp;&nbsp;");
id.document.write(laseq-1);
id.document.write(" aminoacids; Mw=");
id.document.write(m);
id.document.write("Da</font><br><TT>");
id.document.write(three_seq);
id.document.write("</TT><br><br>");

// закрываем окно 
id.document.write("</body></html>");
id.document.close();

}

function three_one()
{
// забираем значения, заданные в форме
name_seq = document.fthree_one.s_name.value;
str = document.fthree_one.str.value;
var nl = parseFloat(document.fthree_one.nl.value); 
if(isNaN(nl)){alert(alt17_01); document.rand_seq.nl.focus(); return true;};
nl = Math.floor(Math.abs(nl));
document.fthree_one.nl.value = nl;

// приводим "str" к стандартному виду который будет называться "aseq"
aseq = ""
aseq = str.toLowerCase()
aseq = aseq.replace(/\W/g,"")+"*";
aseq = aseq.replace(/end/g,"*");
aseq = aseq.replace(/\*+/g,"*");
aseq = aseq.replace(/[^acdeghilmnoprstuvy*]/g,"");
aseq = aseq.replace(/[*]/g,"***");
laseq = aseq.length;
laseq = Math.floor(laseq/3);

one_seq = "";
three_seq = "";
m=0;
i = 0;
while(i<laseq) { 
	i++; n=0; let=0;
	while(n<22) {n++; 
	if(aseq.substring(3*i-3,3*i)==three[n-1]) {let = onelett[n-1]; tlet = threelett[n-1]; mlet = weight[n-1]; break} 
	} 
	if(let==0) {
	alt=alt17_02+aseq.substring(3*i-3,3*i);
	alert(alt);
	return true;
	}
	one_seq = one_seq + let; m = m + mlet; three_seq = three_seq + tlet;
}

m = m + 18.02; // last aminoacid
m = Math.round(m*100)/100;

// открываем окно 
id = window.open('','sequtil', config='height=500,width=600,toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes,location=no,status=no');
id.document.write("<title>&nbsp;&nbsp;&nbsp;Protein sequence conversion (one to three letter code.&nbsp;&nbsp;&nbsp;</title><BODY BGCOLOR='white'>");
id.focus();

// выводим последовательность
if(document.fthree_one.meth0.checked) 
{
three_seq = split(three_seq, nl*3);
id.document.write("Three letter sequence:<br>");
id.document.write("<font color='Gray'>&gt; ");
id.document.write(name_seq);
id.document.write("&nbsp;&nbsp;&nbsp;");
id.document.write(laseq-1);
id.document.write(" aminoacids; Mw=");
id.document.write(m);
id.document.write("Da</font><br><TT>");
id.document.write(three_seq);
id.document.write("</TT><br><br>");
}

if(document.fthree_one.meth1.checked) 
{
one_seq = one_seq.toUpperCase();
}
one_seq = split(one_seq, nl);
id.document.write("One letter sequence:<br>");
id.document.write("<font color='Gray'>&gt; ");
id.document.write(name_seq);
id.document.write("&nbsp;&nbsp;&nbsp;");
id.document.write(laseq-1);
id.document.write(" aminoacids; Mw=");
id.document.write(m);
id.document.write("Da</font><br><TT>");
id.document.write(one_seq);
id.document.write("</TT><br><br>");

// закрываем окно 
id.document.write("</body></html>");
id.document.close();

}

