function AutoFormatPhone(formField, areaCodePrefix, areaCodeSuffix, threeFourSeparator) {
  // lock out NS4
  if ((!document.layers) && (formField.value.charAt(0) != '0')) {
    // assign default values if nothing passed in
    var areaCodePrefix     = (areaCodePrefix == null) ? '(' : areaCodePrefix;
    var areaCodeSuffix     = (areaCodeSuffix == null) ? ') ' : areaCodeSuffix;
    var threeFourSeparator = (threeFourSeparator == null) ? '-' : threeFourSeparator;
    var previousLength     = 0;
       
    // local values
    var groupLengths    = new Array(3, 3, 4);
    var phonePieces     = new Array();
    var thisInput       = null;
    var regNumberFirst  = new RegExp("^[0-9]");
    
    thisInput = formField.value;
    
    if (thisInput.length == areaCodePrefix.length && thisInput == areaCodePrefix) {
      // no action taken on area code prefix
      previousLength = areaCodePrefix.length; 
      return true;
    } else if (thisInput.length > previousLength && (regNumberFirst.test(thisInput) || (areaCodePrefix.length > 0 && thisInput.substr(0, areaCodePrefix.length) == areaCodePrefix))) {
      // length has incrased (no action taken on backspace) and value begins with a number or area code prefix (other entries not formatted)
      thisInput = thisInput.replace(/[. ()-\/]/gi, '');
      
      // separate string into groups
      phonePieces[0] = thisInput.substr(0, groupLengths[0]);
      phonePieces[1] = thisInput.substr(groupLengths[0], groupLengths[1]);
      phonePieces[2] = thisInput.substr(groupLengths[0] + groupLengths[1], groupLengths[2]);
      
      // prefix for area code
      if (thisInput.length > 0) { phonePieces[0] = areaCodePrefix + phonePieces[0]; }
      
      // suffix for area code, add length of prefix
      if (phonePieces[0].length == groupLengths[0] + areaCodePrefix.length) { phonePieces[0] += areaCodeSuffix; }
      
      // add separator for last seven numbers
      if (phonePieces[1].length == groupLengths[1]) { phonePieces[1] += threeFourSeparator; }
      
      // assign to field
      formField.value = phonePieces.join('');
    }
    previousLength = formField.value.length
  }
}