
function cpiRichTextReplaceSelection(element, replacement) {
  element.focus();
  var start = 0;
  if (document.selection && !$.browser['opera']) {
    var range = document.selection.createRange(),
        copy  = range.duplicate();
    
    copy.moveToElementText(element);
    copy.setEndPoint('EndToEnd', range);
    start = copy.text.length - range.text.length;
    range.text = replacement;
    
    if (keepSelection) {
      copy.moveStart('character', start);
      copy.moveEnd('character', replacement.length);
      copy.select();
    }
      
  }
  else if (element.selectionStart != undefined) {
  
    start = element.selectionStart
    
    var value  = element.value,
        scroll = element.scrollTop,
        end    = element.selectionEnd,
        len    = start + replacement.length;
    
    element.value   = value.substr(0, start) + replacement + value.substr(end, value.length);
    element.scrollTop = scroll;
    
    element.setSelectionRange(start, len);
  
  }
  else{
    alert('Votre navigateur ne prends pas en charge cette fonction.');
  }

}

function cpiRichTextGetSelection(element) {
  var selection = null;
  if (document.selection) {
    selection = document.selection.createRange().text;
  }
  else {
    selection = element.value.substr(element.selectionStart, element.selectionEnd - element.selectionStart);
  }
  return selection;
}