var kstate='n';
var wkey='';

function getSelectionRange(field) {
    if (field.setSelectionRange)
        return [field.selectionStart, field.selectionEnd];
    else if (field.createTextRange) {
        var range = document.selection.createRange();
    if (range.parentElement() == field) {
        var range2 = field.createTextRange();
        range2.collapse(true);
            range2.setEndPoint('EndToEnd', range);
        return [range2.text.length - range.text.length, range2.text.length];
    }
    }
    return [field.value.length, field.value.length];
}

function setSelectionRange(field, start, end) {
    if (field.setSelectionRange)
        field.setSelectionRange(start, end);
    else if (field.createTextRange) {
    var range = field.createTextRange();
    range.collapse(true);
    range.moveStart('character', start);
    range.moveEnd('character', end - start);
    range.select();
    }
}


      $(document).ready(function(){
      
        $("#input").keypress(function (e) {
  	  $("div").text(kstate + ' ' + e.which)

          if (e.which == 39 || e.which == 42 || e.which == 95 || e.which == 64 || e.which == 45) {
	    switch (kstate) {
	    case '1':
	     if (wkey != e.which) break;
	      var c = String.fromCharCode(e.which);
              kstate='n';
	      var missive = $("#input")[0];
              var temp = missive.value;
              var range = getSelectionRange(missive);
              missive.focus();
              missive.value = temp.substring(0, range[0])+ c + c + c + " " +temp.substring(range[0], temp.length);
              setSelectionRange(missive, range[1]+1, range[1]+1);
              if (e && e.preventDefault) {
                e.preventDefault();
              }
	      break;
	    case '0':
	      kstate='1';
	      wkey=e.which;
	      break;
	    default:
	      kstate='n';
	      break;
	    }
    	    return true;
	  }
	  if (e.which == 32) {
            kstate='0';
	    return true;
	  }
	  kstate='n';
	  wkey='';
	  return true;
        });
      });

