function CheckPwd(str) {
  var lstr=str.length;
  var failed = false;
  var msg = "";

  if ((lstr == 0) || (str == null)) {
     failed = true;
  }

  if (failed == true) {
      msg += "Password field cannot be blank.\n";
  }

  return msg;
}

function CheckEmail(str) {

    var lstr=str.length
    var failed = false;
    var msg = "";

    if ((lstr == 0) || (str == null)) {
       failed = true;
    }

    var filter  = /^\W*([+a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,})+\W*$/;
    if (! filter.test( str )) {
      failed = true;
    }

    if (failed == true) {
        msg += "Your email address ("+ str + ") is invalid.\n";
    }
    return msg;
}

function CheckEmailNotRequired(str) {
    var msg = "";
    if (str.length > 0) {
      msg = CheckEmail(str);
    }
    return msg;
}

function CheckMultiEmail(str) {

    var lstr=str.length
    var failed = false;
    var msg = "";

    if ((lstr == 0) || (str == null)) {
       failed = true;
    }

    var filter  = /^\W*([+a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,})+\W*$/;
    var emailArr = str.split( /,|;/ );

    for (i=0; i < emailArr.length; i++) {
      if (! filter.test( emailArr[i] )) {
        msg += "Email '"+emailArr[i]+"' is invalid.\n";
      }
    }

    return msg;
}

function CheckPasswords(p1, p2, lname) {
   var msg = "";
   var minPasswordLength = 6;

   if ((p1.length < minPasswordLength) || (p2.length < minPasswordLength)) {
      msg = "Your password must be at least 6 characters.\n";
   }
   if (p1 != p2) {
      msg += "Your password entries do not match.\n";
   }
   if (p1 == lname) {
      msg += "Your password cannot be the same as your login name.\n";
   }
   return msg;
}

function CheckSecurityQuestion(s) {
   var msg = "";

   if (s == 1)
     msg = "You must select a Security Question.\n"

   return msg;
}

function CheckState(s,controlType) {
   var msg = "";
   var error = "";
   
   if (controlType == "C") {
     error = "You must select a State.\n";
   } else {	// for edit controls use this error.
     error = "The State/Province field can not be empty\n";
   }
   if (s == "00" && controlType == "C") {
       msg = error;
   }
   else if (s.length == 0) {
       msg = error;
   } 
   else {
     msg =CheckTextField(s, "State/Province");
   }

   return msg;
}

function CheckStateNotRequired(s, controlType) {
  var msg = "";
  if ((s.length > 0) && (s != "00")) {
    msg = CheckState(s, controlType);
  }
  return msg;
}

//Check to see whether all characters in a string are numbers

function isInteger(s) {
    for (i=0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (((c < "0") || (c > "9")))
            return false;
    }
    return true;
}

function stripChars(s, compString) {
    var returnString = "";

    // Search through string's characters one by one.
    // If character is not in compstring, append to returnString.

    for (i=0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (compString.indexOf(c) == -1)
            returnString += c;
    }
    return returnString;
}

function trim(s) {
    s = s.replace(/^\s*/, '');
    s = s.replace(/\s*$/, ''); 
    return s;
} 

function CheckNumber( num, controlName, min, max ) {
     var delims = " ";
     var error = "";

     var s = stripChars(num, delims);
     if (! isInteger(s)) {
      error += "Your "+ controlName + " contains illegal characters.\n";
     } else {
      val = new Number(s);
      if ((val < min) || (val > max)) {
        error += "Your "+ controlName + " is out of range.  Legal values are between "+min+" and "+ max + ".\n";
      }
     }

     return error;
}

function CheckPhoneRequired(phoneNo, controlName, domestic ){

     phoneNumberDelimiters = "()- .";
     validPhoneChars = phoneNumberDelimiters + "+";
     minDigitsInPhoneNumber = 10;
     var error = "";

     s = stripChars(phoneNo, validPhoneChars);
     if (!isInteger(s)) {
         error += "Your " + controlName + " contains illegal characters.\n";
     }
     if ( domestic ) {
       if (s.length < minDigitsInPhoneNumber) {
           error += "Your " + controlName + " contains too few digits.\n";
       }
     }
     return error;
}

function CheckPhoneNotRequired(phoneNo, controlName, domestic ){

     phoneNumberDelimiters = "()- .";
     validPhoneChars = phoneNumberDelimiters + "+";
     minDigitsInPhoneNumber = 10;
     var error = "";

     if (phoneNo.length > 0) {
       s = stripChars(phoneNo, validPhoneChars);
       if (!isInteger(s)) {
         error += "Your " + controlName + " contains illegal characters.\n";
       }
       if ( domestic ) {
         if (s.length < minDigitsInPhoneNumber) {
           error += "Your " + controlName + " contains too few digits.\n";
         }
       }
     }
     return error;
}

function CheckZip(zip, country, controlName ){

     zipDelimiters = "- ";
     minDigitsInZip = 5;
     maxDigitsInZip = 9;
     var error = "";
     var s;

     if ((country == "USA") || (country == "Australia")) {
       if (country != "USA" ) {
         zipDelimiters = " ";
         minDigitsInZip = 4;
         maxDigitsInZip = 4;
       }

       s = stripChars(zip, zipDelimiters);
       if (!isInteger(s)) {
           error += "Your " + controlName + " contains illegal characters.\n";
       }
       if (s.length < minDigitsInZip) {
           error += "Your " + controlName + " contains too few digits.\n";
       }
       if (s.length > maxDigitsInZip) {
           error += "Your " + controlName + " contains too many digits.\n";
       }
       if ((error.length == 0) && (s.length != minDigitsInZip) && (s.length != maxDigitsInZip)) {
           error += "Your " + controlName + " contains an illegal zip/postal code.\n";
       }
     } else if (country == "Canada") {
       zipDelimiters = " ";
       s = stripChars(zip, zipDelimiters);

       minDigitsInZip = 6;
       maxDigitsInZip = 6;
       regStr = /[a-z]\d[a-z]\s*\d[a-z]\d/i;

       if (s.length < minDigitsInZip) {
           error += "Your " + controlName + " contains too few digits.\n";
       } else if (s.length > maxDigitsInZip) {
           error += "Your " + controlName + " contains too many digits.\n";
       } else if (regStr.exec(s) == null) {
           error += "Your " + controlName + " contains illegal characters.\n";
       }
     } else {
       s = stripChars(zip, zipDelimiters);
       if (s.length == 0) {
         error += "Your " + controlName + " can not be blank.\n";
       } else {
         error = CheckTextField(zip, controlName);
       }

     }

     return error;
}
function CheckZipNotRequired(zip, country, controlName ) {
  var msg = "";
  if (zip.length > 0) {
    msg = CheckZip(zip, country, controlName );
  }
  return msg;
}

function CheckCCNum(cardNum, securityCCNum, controlName ){

     var cardNumDelimiters = " -";
     var minDigitsInCardNum = 13;
     var maxDigitsInCardNum = 16;
     var error = "";

     var s = stripChars(cardNum, cardNumDelimiters);

     if (s.length == 0) {
        error += "You didn't enter a " + controlName + ".\n";
     } else if (cardNum != securityCCNum) {

        if (!isInteger(s)) {
           error += "Your " + controlName + " contains illegal characters.\n";
         }
         if ((s.length < minDigitsInCardNum) || (s.length > maxDigitsInCardNum)) {
           error += "Your " + controlName + " is incorrect.\n";
         }
     }

     return error;
}
function CheckCCNumNotRequired(cardNum, securityCCNum, controlName ){
  var msg = "";
  if (cardNum.length > 0) {
    msg = CheckCCNum( cardNum, securityCCNum, controlName );
  }
  return msg;
}

function CheckSecurityCode(securityCode, controlName ){

     var minCodeSize = 3;
     var maxCodeSize = 4;
     var error = "";

     securityCode = trim(securityCode);

     if (!isInteger(securityCode)) {
         error += "Your " + controlName + " contains illegal characters.\n";
     }
     if (securityCode.length < minCodeSize) {
         error += "Your " + controlName + " contains too few digits.\n";
     }
     if (securityCode.length > maxCodeSize) {
         error += "Your " + controlName + " contains too many digits.\n";
     }
     return error;
}
function CheckSecurityCodeNotRequired(securityCode, controlName ){
  var msg = "";

  if (securityCode.length > 0) {
    msg = CheckSecurityCode(securityCode, controlName);
  }
  return msg;
}

function checkChars(s, compString) {
    var returnString = "";

    // Search through string s characters one by one.
    // If character is in the compString, return an index
    // to the offending character

    for (i=0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (compString.indexOf(c) != -1)
            return i;
    }
    return -1;
}

function CheckUserName(strng, controlName) {
    var badChars = "<>=& ";
    var bc2 = String.fromCharCode(34, 92);  // double quote, and forward slash
    badChars = badChars + bc2;
    var error = "";
    if (strng == "") {
       error = "You didn't enter a " + controlName + ".\n";
    }
    strng = trim(strng);
    var istChar = strng.charAt(0);
    if ( istChar == "_") {
        error = "A '_' is not allowed as the first character in the " + controlName + ".\n";
    } else {
      match = checkChars( badChars, strng );
       if ( match != -1 ) {
          error = "The characters \"<>=&\ and space are not allowed in the " + controlName + ".\n";
       }
    }

    return error;
}

function CheckTextField(strng, controlName) {
    var badChars = "<>=&\\";
    var error = "";
    if (strng == "") {
       error = "You didn't enter a " + controlName + ".\n";
    }
    match = checkChars( badChars, strng );
    if ( match != -1 ) {
       error = "The characters <>=&\ and ' are not allowed for the " + controlName + ".\n";
    }

    return error;
}

function CheckNonRequiredTextField(strng, controlName) {
    var badChars = "<>=&\\";
    var error = "";
    match = checkChars( badChars, strng );
    if ( match != -1 ) {
       error = "The characters <>=&\ and ' are not allowed for the " + controlName + ".\n";
    }
    return error;
}

function CheckAPNameField(strng, controlName) {
    var badChars = "<>";
    var error = "";

    if (strng == "") {
       error = "You didn't enter a " + controlName + ".\n";
    } else {

      if ((strng.charAt(0) == " ") || (strng.charAt(strng.length-1) == " ")) {
       error += "Leading and Trailing spaces are not allowed in " + controlName + ".\n";
      }
    }
    match = checkChars( badChars, strng );
    if ( match != -1 ) {
       error = "The characters < and > are not allowed for the " + controlName + ".\n";
    }
    return error;
}

function fillStateComboIntl( form, f, country, defaultState ) {

var usVal = new Array("00", "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DC", "DE", "FL",
             "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
             "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM",
             "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN",
             "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY");
var usText = new Array("<-Select a State->", "Alabama", "Alaska", "Arizona", "Arkansas",
              "California", "Colorado", "Connecticut", "D.C.", "Delaware", "Florida",
              "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas",
              "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan",
              "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
              "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina",
              "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
              "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
              "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming");

var caVal = new Array( "00", "AB", "BC", "MB", "NB", "NL", "NT", "NS", "NU", "ON", "PE", "QC", "SK", "YT" );
var caText = new Array("<-Select a Province->", "Alberta", "British Columbia", "Manitoba", "New Brunswick", "Newfoundland/Labrador",
               "Northwest Territories", "Nova Scotia", "Nunavut", "Ontario", "Prince Edward Island",
               "Quebec", "Saskatchewan", "Yukon" );

// Australia
var ausVal = new Array( "00", "ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA" );
var ausText = new Array("<-Select a State/Territory->", "Australian Capital Territory",
                 "New South Wales", "Northern Territory", "Queensland", "South Australia",
                 "Tasmania", "Victoria", "Western Australia" );

  f.options.length = 0

  var values, text;
  if (country == "USA") {
    f.options.length = usVal.length;
    values = usVal;
    text = usText;
  } else if (country == "Canada" ) {
    f.options.length = caVal.length;
    values = caVal;
    text = caText;
  } else if (country == "Australia") {
    f.options.length = ausVal.length;
    values = ausVal;
    text = ausText;
  } else {
    document.getElementById("scombo").style.visibility = "hidden";
    document.getElementById("sedit").style.visibility = "visible";
    return;
  }

  document.getElementById("scombo").style.visibility = "visible";
  document.getElementById("sedit").style.visibility = "hidden";

  var selectedIdx = 0;

  for (var i=0; i < values.length; i++) {
    opt = document.createElement("Option");
    opt.text = text[i];
    opt.value = values[i];
    f.options[i] = opt;

    if (values[i] == defaultState) {
      selectedIdx = i;
    }
  }

  f.options[selectedIdx].selected = true;
}

function isDropdownCountry(country) {
  var results;
    if ((country == "USA") || (country == "Canada") || (country == "Australia")) {
      results = true;
  } else {
      results = false;
  }
  return results
}
