// This plugin extends jQuery with a single function, caret(pos), that
// gets or sets the position of the caret or cursor in a text box.
// http://plugins.jquery.com/project/caret (plus a little jslint cleanup)
(function ($) {
  $.fn.caret = function (pos) {
    var target = this[0];
    var range;
    if (arguments.length === 0) {
      // Get caret position
      if (target.selectionStart) {
        // Use the DOM in modern browsers
        pos = target.selectionStart;
        return pos > 0 ? pos : 0;
      }
      else {
        if (target.createTextRange) {
          // but IE is a special case
          target.focus();
          range = document.selection.createRange();
          if (range === null) {
            return 0;
          }
          var re = target.createTextRange();
          var rc = re.duplicate();
          re.moveToBookmark(range.getBookmark());
          rc.setEndPoint('EndToStart', re);
          return rc.text.length;
        }
        else {
          return 0;
        }
      }
    }
    // Set caret position
    if (target.setSelectionRange) {
      // Use the DOM in modern browsers
      target.setSelectionRange(pos, pos);
    }
    else {
      if (target.createTextRange) {
        // but IE is a special case
        range = target.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
      }
    }
  };
})(jQuery);
