  var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
  var regexp = new RegExp("[\r]","gi");

  function storeCaret(selec)
  {
	if (isMozilla) 
	{

  oField = document.forms['modifica'].elements['testo'];
  objectValue = oField.value;
  deb = oField.selectionStart;
  fin = oField.selectionEnd;

  objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
  objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
  objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

  oField.value = objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">" + objectValueFin;
  oField.selectionStart = strlen(objectValueDeb);
  oField.selectionEnd = strlen(objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">");
  oField.focus();
  oField.setSelectionRange(
  objectValueDeb.length + selec.length + 2,
  objectValueDeb.length + selec.length + 2);

  } 
  else
  {
		
  oField = document.forms['modifica'].elements['testo'];
  var str = document.selection.createRange().text;

  if (str.length>0)
  {

  var sel = document.selection.createRange();
  sel.text = "<" + selec + ">" + str + "</" + selec + ">";
  sel.collapse();
  sel.select();
  }
  else
  {
  oField.focus(oField.caretPos);

  oField.focus(oField.value.length);
  oField.caretPos = document.selection.createRange().duplicate();
			
  var bidon = "%~%";
  var orig = oField.value;
  oField.caretPos.text = bidon;
  var i = oField.value.search(bidon);
  oField.value = orig.substr(0,i) + "<" + selec + "></" + selec + ">" + orig.substr(i, oField.value.length);
  var r = 0;
  for(n = 0; n < i; n++)
  {if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
  pos = i + 2 + selec.length - r;

  var r = oField.createTextRange();
  r.moveStart('character', pos);
  r.collapse();
  r.select();

      }
    }
  }
