function SequenceLength() 
{
  var Seq=document.SubmissionForm.Sequence.value;
  var J=Seq.indexOf(">");
  if (J==0)
  {
    var I=Seq.indexOf(String.fromCharCode(10))+1;
    if (I==0)
    {
      Seq="";
    }
    else
    {
      var L=Seq.length;
      Seq = Seq.substr(I,L);
    }
  }
  else if (J>=1)
  {
    alert ("Invalid Sequence Header or character");
    document.SubmissionForm.Sequence.value="";
  }
  while (Seq.indexOf(String.fromCharCode(10))>=0)
  {
    Seq=Seq.replace(String.fromCharCode(10),"");
  }
  while (Seq.indexOf(String.fromCharCode(13))>=0)
  {
    Seq=Seq.replace(String.fromCharCode(13),"");
  }
  while (Seq.indexOf(" ")>=0)
  {
    Seq=Seq.replace(" ","");
  }
  document.SubmissionForm.SequenceBrute.value = Seq;
  document.SubmissionForm.SeqLen.value = Seq.length;
  document.SubmissionForm.sSeqLen.value = Seq.length;
}
function CheckAA(String)
{
  	var keychar;
  	var goods="CSTPAGNDEQHRKMILVFYW";
  	String=String.toUpperCase();
	for (var i = 0; i < String.length; i++)
	{
		keychar=String.substr(i,1);
		var iof = goods.indexOf(keychar);
		if (iof == -1)
		{
			alert("The Peptide's sequence contains invalid Amino Acids!");
			return false;
		}
	}
	return true;
}	
function SelectItem(j)
{
	if (j==0)
	{
		document.SubmissionForm.sPreviousImmunization.value=document.SubmissionForm.PreviousImmunization.value;
		if (document.SubmissionForm.sPreviousImmunization.value=="1")
		{
			document.SubmissionForm.Segments.disabled=false;
			document.SubmissionForm.Segments.value="Specify the peptides/protein segment you used (Sequences)";
			document.SubmissionForm.Methods.disabled=false;
			document.SubmissionForm.Methods.value="Which experimental methods have you tried?";
			document.SubmissionForm.Results.disabled=false;
			document.SubmissionForm.Results.value="What were the results?";
		}
		else
		{
			document.SubmissionForm.Segments.disabled=true;
			document.SubmissionForm.Segments.value="";
			document.SubmissionForm.Methods.disabled=true;
			document.SubmissionForm.Methods.value="";
			document.SubmissionForm.Results.disabled=true;
			document.SubmissionForm.Results.value="";
		}
	}
	if (j==1)document.SubmissionForm.sMembraneous.value=document.SubmissionForm.Membraneous.value;
	if (j==2)
	{
		document.SubmissionForm.sPostTmodifications.value=document.SubmissionForm.PostTmodifications.value;
		if (document.SubmissionForm.sPostTmodifications.value=="1")
		{
			document.SubmissionForm.Modifications.disabled=false;
			document.SubmissionForm.Modifications.value="Be kind to precise the type of modification and the serial number of concerned amino acid.";
		}
		else
		{
			document.SubmissionForm.Modifications.disabled=true;
			document.SubmissionForm.Modifications.value="";
		}
	}
	if (j==3)
	{
		document.SubmissionForm.sAnalyseType.value=document.SubmissionForm.AnalyseType.value;
		switch(document.SubmissionForm.sAnalyseType.value)
		{
			case "4":
				document.SubmissionForm.AnalyseSpec.disabled=false;
				document.SubmissionForm.AnalyseSpec.value="Specify the concentration and the name of the detergent";
				break;
			case "5":
				document.SubmissionForm.AnalyseSpec.disabled=false;
				document.SubmissionForm.AnalyseSpec.value="Specify the fixative";
				break;
			case "7":
				document.SubmissionForm.AnalyseSpec.disabled=false;
				document.SubmissionForm.AnalyseSpec.value="Specify";
				break;
			default:
				document.SubmissionForm.AnalyseSpec.disabled=true;
				document.SubmissionForm.AnalyseSpec.value="";
				break;
		};
	}
	if (j==4)
	{
	  if(document.SubmissionForm.Country.value=="-") document.SubmissionForm.Country.value="Belgium";
	  document.SubmissionForm.sCountry.value=document.SubmissionForm.Country.value;
	}
	if (j==5)
	{
	  if(document.SubmissionForm.CountryOther.value=="-") document.SubmissionForm.CountryOther.value="Belgium";
	  document.SubmissionForm.sCountryOther.value=document.SubmissionForm.CountryOther.value;
	}
}
function CheckBillTo(i){
 	document.SubmissionForm.BillTo.value=i;
	if (i==1) {document.SubmissionForm.Contact_personOther.disabled=false;
	 	document.SubmissionForm.AddressOther.disabled=false;
	  	document.SubmissionForm.ZipCodeOther.disabled=false;
	  	document.SubmissionForm.StateOther.disabled=false;
	    	document.SubmissionForm.CountryOther.disabled=false;
	    	document.SubmissionForm.CityOther.disabled=false;
	    	}
	else  {document.SubmissionForm.Contact_personOther.disabled=true;
	 	document.SubmissionForm.AddressOther.disabled=true;
	  	document.SubmissionForm.ZipCodeOther.disabled=true;
	  	document.SubmissionForm.StateOther.disabled=true;
	    	document.SubmissionForm.CountryOther.disabled=true;
	    	document.SubmissionForm.CityOther.disabled=true;
	    	};
	}
//
function emailCheck (emailStr) 
{
  var checkTLD=1;
  var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);
  if (matchArray==null)
  {
    alert("Email address seems incorrect (check @ and .'s)");
    return false;
  }
  var user=matchArray[1];
  var domain=matchArray[2];
  for (i=0; i<user.length; i++)
  {
    if (user.charCodeAt(i)>127)
    {
      alert("This username contains invalid characters.");
      return false;
    }
  }
  for (i=0; i<domain.length; i++)
  {
    if (domain.charCodeAt(i)>127)
    {
      alert("This domain name contains invalid characters.");
      return false;
    }
  }
  if (user.match(userPat)==null)
  {
    alert("The username doesn't seem to be valid.");
    return false;
  }
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!=null)
  {
    for (var i=1;i<=4;i++)
    {
      if (IPArray[i]>255)
      {
        alert("Destination IP address is invalid!");
        return false;
      }
    }
    return true;
  }
  var atomPat=new RegExp("^" + atom + "$");
  var domArr=domain.split(".");
  var len=domArr.length;
  for (i=0;i<len;i++)
  {
    if (domArr[i].search(atomPat)==-1)
    {
      alert("The domain name does not seem to be valid.");
      return false;
    }
  }
  if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
  {
    alert("The address must end in a well-known domain or two letter " + "country.");
    return false;
  }
  if (len<2)
  {
    alert("This address is missing a hostname!");
    return false;
  }
  return true;
}
function validate()
{
	SequenceLength();
	var msg="You have not completed all of the required fields: ";
	if (document.SubmissionForm.Company_Institution.value == ""||document.SubmissionForm.Company_Institution.value == "Required")
	{
		msg=msg+"Company / Institution"+", ";
		document.SubmissionForm.Company_Institution.value="Required";
	}
	if (document.SubmissionForm.Contact_person.value == ""||document.SubmissionForm.Contact_person.value == "Required")
	{
		msg=msg+"Contact person"+", ";
		document.SubmissionForm.Contact_person.value="Required";
	}
	if (document.SubmissionForm.Address.value== ""||document.SubmissionForm.Address.value == "Required")
	{
		msg=msg+"Address"+", ";
		document.SubmissionForm.Address.value="Required";
	}
	if (document.SubmissionForm.ZipCode.value == ""||document.SubmissionForm.ZipCode.value == "Required")
	{
		msg=msg+" Zip-Code"+", ";
		document.SubmissionForm.ZipCode.value="Required";
	}
	if (document.SubmissionForm.City.value == ""||document.SubmissionForm.City.value == "Required")
	{
		msg=msg+"City"+", ";
		document.SubmissionForm.City.value="Required";
	}
	if (document.SubmissionForm.sCountry.value == "")
	{
		msg=msg+"Select your Country"+", ";
	}
	if (document.SubmissionForm.VAT_number.value == ""||document.SubmissionForm.VAT_number.value == "Required")
	{
		msg=msg+"VAT number"+", ";
		document.SubmissionForm.VAT_number.value="Required";
	}
	if (document.SubmissionForm.E_mail.value == ""||document.SubmissionForm.E_mail.value == "Required")
	{
		msg=msg+"E-mail"+", ";
		document.SubmissionForm.E_mail.value="Required";
	}
	if (document.SubmissionForm.BillTo.value==1)
	{

		if (document.SubmissionForm.Contact_personOther.value == ""||document.SubmissionForm.Contact_personOther.value == "Required")
		{
			msg=msg+"Contact person"+", ";
			document.SubmissionForm.Contact_personOther.value="Required";
		}
		if (document.SubmissionForm.Address.value== ""||document.SubmissionForm.AddressOther.value == "Required")
		{
			msg=msg+"Address"+", ";
			document.SubmissionForm.AddressOther.value="Required";
		}
		if (document.SubmissionForm.ZipCodeOther.value == ""||document.SubmissionForm.ZipCodeOther.value == "Required")
		{
			msg=msg+" Zip-Code"+", ";
			document.SubmissionForm.ZipCodeOther.value="Required";
		}
		if (document.SubmissionForm.CityOther.value == ""||document.SubmissionForm.CityOther.value == "Required")
		{
			msg=msg+"City"+", ";
			document.SubmissionForm.CityOther.value="Required";
		}
		if (document.SubmissionForm.sCountryOther.value == "")
		{
			msg=msg+"Select your Country"+", ";
		}
	}
	if (document.SubmissionForm.GenericFileName.value == ""||document.SubmissionForm.GenericFileName.value == "Required")
	{
		msg=msg+" Generic File Name"+", ";
		document.SubmissionForm.GenericFileName.value="Required";
	}
	if (document.SubmissionForm.Sequence.value == ""||document.SubmissionForm.Sequence.value == "Required")
	{
		msg=msg+"Sequence"+", ";
		document.SubmissionForm.Sequence.value="Required";
	}
	if (document.SubmissionForm.sAnalyseType.value == "") 
	{
		msg=msg+"Experimental method"+", ";
	}
	if (document.SubmissionForm.sPostTmodifications.value == "") 
	{
		msg=msg+"Posttranslational modifications"+", ";
	}
	if (document.SubmissionForm.sMembraneous.value == "") 
	{
		msg=msg+"Is your protein membraneous"+", ";
	}
	if (document.SubmissionForm.sPreviousImmunization.value == "") 
	{
		msg=msg+"Previous immunization"+", ";
	}
	if (msg.length>52)
	{
		msg=msg.substr(0,msg.length-2)+"!";
		alert(msg);
		return false;
	}
	if (CheckAA(document.SubmissionForm.SequenceBrute.value)==false) return false;
	if (document.SubmissionForm.SeqLen.value==0)
	{
	  alert ("Error in sequence, check the format");
	  return false;
	}
	var emailID=document.SubmissionForm.E_mail;
	if (emailCheck(emailID.value)==false)
	{
		emailID.value="";
		emailID.focus();
		return false;
	}
	if(document.SubmissionForm.Pass1.value!=document.SubmissionForm.Pass2.value)
	{
		alert ("The new password and the confirmation password do not match. Please type the same password in both boxes.");
		return false;
	}
	return true;
}
function ResetBlank(i)
{
	switch(i)
	{
		case 0:
		  var InputID=document.SubmissionForm.Company_Institution;
		  break;
		case 1:
		  var InputID=document.SubmissionForm.Contact_person;
		  break;
		case 2:
		  var InputID=document.SubmissionForm.Address;
		  break;
		case 3:
		  var InputID=document.SubmissionForm.ZipCode;
		  break;
		case 4:
		  var InputID=document.SubmissionForm.City;
		  break;
		case 5:
		  var InputID=document.SubmissionForm.VAT_number;
		  break;
		case 6:
		  var InputID=document.SubmissionForm.E_mail;
		  break;
		case 7:
		  var InputID=document.SubmissionForm.Contact_personOther;
		  break;
		case 8:
		  var InputID=document.SubmissionForm.AddressOther;
		  break;
		case 9:
		  var InputID=document.SubmissionForm.ZipCodeOther;
		  break;
		case 10:
		  var InputID=document.SubmissionForm.CityOther;
		  break;
		case 11:
		  var InputID=document.SubmissionForm.GenericFileName;
		  break;
		case 12:
		  var InputID=document.SubmissionForm.Sequence;
		  break;
		case 13:
		  var InputID=document.SubmissionForm.AnalyseSpec;
		  if (InputID.value=="Specify the concentration and the name of the detergent"||InputID.value=="Specify the fixative"||InputID.value=="Specify")
		  {
                    InputID.value="";
                  }
		  break;
		case 14:
		  var InputID=document.SubmissionForm.Modifications;
		  if (InputID.value=="Be kind to precise the type of modification and the serial number of concerned amino acid.")
		  {
                    InputID.value="";
                  }
		  break;
		case 15:
		  var InputID=document.SubmissionForm.Segments;
		  if (InputID.value=="Specify the peptides/protein segment you used (Sequences)")
		  {
                    InputID.value="";
                  }
		  break;
		case 16:
		  var InputID=document.SubmissionForm.Methods;
		  if (InputID.value=="Which experimental methods have you tried?")
		  {
                    InputID.value="";
                  }
		  break;
		case 17:
		  var InputID=document.SubmissionForm.Results;
		  if (InputID.value=="What were the results?")
		  {
                    InputID.value="";
                  }
		  break;
	};
	if (InputID.value=="Required")
	{
		InputID.value="";
	};
}
function getkey(e)
{
  if (window.event) return window.event.keyCode;
  else if (e) return e.which;
  else return null;
}
function goodchars(e, goods)
{
  var key, keychar;
  key = getkey(e);
  if (key == null) return true;
  // get character
  keychar = String.fromCharCode(key);
  keychar = keychar.toLowerCase();
  goods = goods.toLowerCase();
  // check goodkeys
  if (goods.indexOf(keychar) != -1)
  	return true;
  // control keys
  if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
     return true;
  // else return false
  return false;
}
function SecureCheck()
{
	if(document.SubmissionForm.Secure.value=="0")
	{
		document.SubmissionForm.Secure.value=1;
		document.SubmissionForm.SecureMail.value=1;
		document.SubmissionForm.Pass1.disabled=false;
		document.SubmissionForm.Pass2.disabled=false;
	}
	else
	{
		document.SubmissionForm.Secure.value=0;
		document.SubmissionForm.SecureMail.value=0;
		document.SubmissionForm.Pass1.disabled=true;
		document.SubmissionForm.Pass2.disabled=true;
	}
}