function fLtrim(text)
{
  var i;
  var strLength = text.length;
  while(text.charAt(i) == " ")		
  {
    text = text.substring(1,strLength);	
  } 			 
  return text;
}

function fRtrim(text)
{
  var i;
  var strLength = text.length;		
  for(i=strLength-1;i>=0;i--)
  {		
    if (text.charAt(i) != " ")
	{
	  break;
	}
	else
	{
	  text = text.substring(0,i);
	}				
  }   			
  return text;
} 

function fTrim(text)
{
	text = fLtrim(text);
	text = fRtrim(text);
	return text;
}

function CheckNumber(text)
{
  var checkOK = "0123456789-.()- ";
  var checkStr = text;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }
  if (!allValid)
  {
     return (false);
  }
  return (true);
}

function CheckPcode(text)
{
  var checkOK = "0123456789-";
  var checkStr = text;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }
  if (!allValid)
  {
     return (false);
  }
  return (true);
}

function emailCheck (emailStr) 
{
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]

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 domainArray=domain.match(domainPat)
if (domainArray==null) {
	//alert("The domain name doesn't seem to be valid.")
    return false
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   //alert("The address must end in a three-letter domain, or two letter country.")
   return false
}

if (len<2) {
   var errStr="This address is missing a hostname!"
   //alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!
return true;
}


function fValidateInput()
{
var errmsg = "Error:";
var errflag = false;
var isfocused = false;


//Check Account type
if (document.theform.accounttype)
{
var isacsel = false;
var accounttype;
for (var i = 0; i < document.theform.elements.length; i++)
{
	var e = document.theform.elements[i];
	if (e.name.indexOf('accounttype') >= 0)
	{
		if (e.checked == true)
		{
			isacsel = true;
			accounttype = e.value;
			break;
		}
	}
}

if (isacsel == false)
{
   errmsg = errmsg + "\r"+ "* Account type must be selected."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.accounttype[0].focus();
		isfocused = true;
   }
}
}
else
{
 	var accounttype = document.theform.atype.value;
} //if (document.theform.

//Check  Login ID
if (document.theform.txtloginid)
{
var loginid = document.theform.txtloginid.value;
if (loginid == "")
{
   errmsg = errmsg + "\r"+ "* Login ID cannot be empty."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtloginid.focus();
		isfocused = true;
   }
}

for (var i=0;i<=loginid.length;i++)
{
	if (loginid.charAt(i) == " ")
	{
		errmsg = errmsg + "\r"+ "* No spaces allowed in Login ID.";	
		errflag = true;
		if (isfocused == false)
		{
			document.theform.txtloginid.focus();
			isfocused = true;
		}
		break;
	}
}

var myloginid = "new_account";
if (loginid.indexOf(myloginid) == 0)
{
   errmsg = errmsg + "\r"+ "* Login ID cannot start with \"new_account\"."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtloginid.focus();
		isfocused = true;
   }	
}
} //if (document.theform.

//Check Login Password
if (document.theform.txtloginpwd)
{
var loginpwd = document.theform.txtloginpwd.value;
if (loginpwd == "")
{
   errmsg = errmsg + "\r"+ "* Login password cannot be empty."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtloginpwd.focus();
		isfocused = true;
   }
}

//Check if the login password for minimum 6 characters
if (loginpwd.length < 6)
{
   errmsg = errmsg + "\r"+ "* Login Password cannot be less than 6 characters."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtloginpwd.focus();
		isfocused = true;
   }
}

for (var i=0;i<=loginpwd.length;i++)
{
	if (loginpwd.charAt(i) == " ")
	{
		errmsg = errmsg + "\r"+ "* No spaces allowed in login password.";
		errflag = true;
		if (isfocused == false)
		{
			document.theform.txtloginpwd.focus();
			isfocused = true;
		}
		break;
	}
}

//Check if both passwords are equal
var reloginpwd = document.theform.txtpwdreenter.value;
if (loginpwd != reloginpwd)
{
	errmsg = errmsg + "\r"+ "* Reentered password does not match entered paswword."
	errflag = true;
	if (isfocused == false)
	{
	 	document.theform.txtpwdreenter.focus();
	 	isfocused = true;
	}
}
} //if (document.theform.

//Check Lost password question and answer
if (document.theform.txtpwdquestion)
{
var lostquestion = document.theform.txtpwdquestion.value;
lostquestion = fTrim(lostquestion);
document.theform.txtpwdquestion.value = lostquestion;
var lostans = document.theform.txtpwdans.value;

if ((lostquestion != "") && (lostans == ""))
{
	errmsg = errmsg + "\r"+ "* Lost password answer is required for lost password question."
	errflag = true;
	if (isfocused == false)
	{
	 	document.theform.txtpwdans.focus();
	 	isfocused = true;
	}
}

if ((lostquestion == "") && (lostans != ""))
{
	errmsg = errmsg + "\r"+ "* Lost password question is required for lost password answer."
	errflag = true;
	if (isfocused == false)
	{
	 	document.theform.txtpwdquestion.focus();
	 	isfocused = true;
	}
}

//Check for lost password answer has spaces
for (var i=0;i<=lostans.length;i++)
{
	if (lostans.charAt(i) == " ")
	{
		errmsg = errmsg + "\r"+ "* No spaces allowed in lost password answer.";
		errflag = true;
		if (isfocused == false)
		{
			document.theform.txtpwdans.focus();
			isfocused = true;
		}
		break;
	}
}

//Check if the login password for minimum 6 characters
if ((lostquestion != "") && (lostans.length < 6))
{
   errmsg = errmsg + "\r"+ "* Lost password answer cannot be less than 6 characters."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtpwdans.focus();
		isfocused = true;
   }
}

//Check if both lost password answers are equal
var relostpwd = document.theform.txtpwdansreenter.value;
if (lostans != relostpwd)
{
	errmsg = errmsg + "\r"+ "* Reentered lost password answer does not match entered lost password answer."
	errflag = true;
	if (isfocused == false)
	{
	 	document.theform.txtpwdansreenter.focus();
	 	isfocused = true;
	}
}
} //if (document.theform.

//Check Company name
var companyname = document.theform.txtcompanyname.value;
if (accounttype == "C")
{
	if (companyname == "")
	{
	   errmsg = errmsg + "\r"+ "* Company name cannot be empty for Company account type."
	   errflag = true;
	   if (isfocused == false)
	   {
			document.theform.txtcompanyname.focus();
			isfocused = true;
	   }
	}
}

//Check First name
var firstname = document.theform.txtfirstname.value;
firstname = fTrim(firstname);
document.theform.txtfirstname.value = firstname;
if (firstname == "")
{
   errmsg = errmsg + "\r"+ "* First name cannot be empty."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtfirstname.focus();
		isfocused = true;
   }
}

var myqq = "qq";
if (firstname.indexOf(myqq) == 0)
{
   errmsg = errmsg + "\r"+ "* First name cannot start with \"qq\"."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtfirstname.focus();
		isfocused = true;
   }
}

//Trim Middle Initial
var middleinitial = document.theform.txtmiddleinitial.value;
middleinitial = fTrim(middleinitial);
document.theform.txtmiddleinitial.value = middleinitial;

//Check Last Name
var lastname = document.theform.txtlastname.value;
lastname = fTrim(lastname);
document.theform.txtlastname.value = lastname;
if (lastname == "")
{
   errmsg = errmsg + "\r"+ "* Last name cannot be empty."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtlastname.focus();
		isfocused = true;
   }
}

/*if (lastname.indexOf(myqq) == 0)
{
   errmsg = errmsg + "\r"+ "* Last name cannot start with \"qq\"."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtlastname.focus();
		isfocused = true;
   }
}*/

//Check email and validate
var email = document.theform.txtemail.value;
email = fTrim(email);
document.theform.txtemail.value = email;
if (email == "")
{
   errmsg = errmsg + "\r"+ "* Email address cannot be empty."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtemail.focus();
		isfocused = true;
   }
}
else
{
var emailchk = emailCheck(email);
if (emailchk == false)
{
   errmsg = errmsg + "\r"+ "* Email address is invalid."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtemail.focus();
		isfocused = true;
   }
}
}

//Street address
var streetaddress = document.theform.txtstreetaddress.value;
streetaddress = fTrim(streetaddress);
document.theform.txtstreetaddress.value = streetaddress;

//Street address2
var streetaddress2 = document.theform.txtstreetaddress2.value;
streetaddress2 = fTrim(streetaddress2);
document.theform.txtstreetaddress2.value = streetaddress2;

//City Name
var cityname = document.theform.txtcityname.value;
cityname = fTrim(cityname);
document.theform.txtcityname.value = cityname;

//select US State, non US state, country
var statenonUS = document.theform.txtstatenonUS.value;
statenonUS = fTrim(statenonUS);
document.theform.txtstatenonUS.value = statenonUS;

var stateUS = document.theform.selstateUS.options[document.theform.selstateUS.selectedIndex].value;
var country = document.theform.country.options[document.theform.country.selectedIndex].value;

if (country == "")
{
   errmsg = errmsg + "\r"+ "* Country must be selected."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.country.focus();
		isfocused = true;
   }
}

if (country == "US")
{
	if (stateUS == "")
	{
	   errmsg = errmsg + "\r"+ "* US state must be selected when country is United States."
	   errflag = true;
	   if (isfocused == false)
	   {
			document.theform.selstateUS.focus();
			isfocused = true;
	   }
	}
}


//Postal code
var postalcode = document.theform.txtpostalcode.value;
postalcode = fTrim(postalcode);
document.theform.txtpostalcode.value = postalcode;
//--Postal Code validation removed due to alpha chars

//Phone No.
var phoneno = document.theform.txtphonenumber.value;
phoneno = fTrim(phoneno);
document.theform.txtphonenumber.value = phoneno;

if (phoneno != "")
{
var chkphoneno = CheckNumber(phoneno);
if (chkphoneno == false)
{
   errmsg = errmsg + "\r"+ "* Phone number must be numeric, -, (, ) and space."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.txtphonenumber.focus();
		isfocused = true;
   }
}
}

//Language
var language = document.theform.language.options[document.theform.language.selectedIndex].value;
if (language == "")
{
   errmsg = errmsg + "\r"+ "* Language must be selected."
   errflag = true;
   if (isfocused == false)
   {
		document.theform.language.focus();
		isfocused = true;
   }
}


//User has to enter pwd and lost password answer
document.theform.upflag.value=3;

//Display the errmsg
if (errflag == true)
{
	alert(errmsg);
}

return (!errflag);

}//fValidateInput
