//<![CDATA[
  function editMask(event, sMask) {
    //var sMask = "**?##?####";
    var keyTyped = String.fromCharCode(getKeyCode(event));
    var tArg = getTarget(event);

    keyCount = tArg.value.length;

    if (isSpecial(sMask.charAt(keyCount))) {
      tArg.value += sMask.charAt(keyCount);

      return isMaskKey(sMask, keyCount + 1, keyTyped);
    }

    if (sMask.charAt(keyCount) == '*') {
      return true;
    }

    if (sMask.charAt(keyCount) == keyTyped) {
      return true;
    }

    return isMaskKey(sMask, keyCount, keyTyped);
  }

  function isMaskKey(sMask, nKeyCount, cKeyTyped) {
    if ((sMask.charAt(nKeyCount) == '#') && isNumeric(cKeyTyped)) {
      return true;
    }

    if ((sMask.charAt(nKeyCount) == 'A') && isAlpha(cKeyTyped)) {
      return true;
    }

    if ((sMask.charAt(nKeyCount) == '?') && isPunct(cKeyTyped)) {
      return true;
    }

    if (cKeyTyped.charCodeAt(0) < 32) {
      return true;
    }

    return false;
  }

  function getTarget(e) {
    // IE5
    if (e.srcElement) {
      return e.srcElement;
    }

    if (e.target) {
      return e.target;
    }
  }

  function getKeyCode(e) {
    //IE5
    if (e.srcElement) {
      return e.keyCode
    }

    // NC5
    if (e.target) {
      return e.which
    }
  }

  function isSpecial(c)
  {
     var sSpecial = "()-/ ";
     
     if (sSpecial.indexOf(c) == -1) {
       return false;
     } else {
       return true;
     }
  }

  function isNumeric(c)
  {
     var sNumbers = "01234567890";
     
     if (sNumbers.indexOf(c) == -1) {
       return false;
     } else {
       return true;
     }
  }

  function isAlpha(c)
  {
     var lCode = c.charCodeAt(0);

     if (lCode >= 65 && lCode <= 122) {
       return true;
     } else {
       return false;
     }
  }

  function isPunct(c)
  {
     var lCode = c.charCodeAt(0);

     if (lCode >= 32 && lCode <= 47) {
       return true;
     } else {
       return false;
     }
  }
//]]>