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

function ask_and_storeCaret(selecDebut, selecFin, idForm, idZoneTexte, message, contenu, labelOption)
{
	var ask = prompt(message, contenu);
	
	storeCaret(selecDebut+' '+labelOption+'='+ask, selecFin, idForm, idZoneTexte);
}

function storeCaret(selecDebut, selecFin, idForm, idZoneTexte)
{
  if (isMozilla) 
    {
      // Si on est sur Mozilla
      
      oField = document.forms[idForm].elements[idZoneTexte];
      
      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 );
      
      //	alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
      
      oField.value = objectValueDeb + "[" + selecDebut + "]" + objectSelected + "[/" + selecFin + "]" + objectValueFin;
      oField.selectionStart = strlen(objectValueDeb);
      oField.selectionEnd = strlen(objectValueDeb + "[" + selecDebut + "]" + objectSelected + "[/" + selecFin + "]");
      oField.focus();
      oField.setSelectionRange(
			       objectValueDeb.length + selecDebut.length + 2,
			       objectValueDeb.length + selecDebut.length + 2);
    }
  else
    {
      // Si on est sur IE
      
      oField = document.forms[idForm].elements[idZoneTexte];
      var str = document.selection.createRange().text;
      
      if (str.length>0)
	{
	  // Si on a selectionné du texte
	  var sel = document.selection.createRange();
	  sel.text = "[" + selecDebut + "]" + str + "[/" + selecFin + "]";
	  sel.collapse();
	  sel.select();
	}
      else
	{
	  oField.focus(oField.caretPos);
	  //	alert(oField.caretPos+"\n"+oField.value.length+"\n")
	  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) + "[" + selecDebut + "][/" + selecFin + "]" + 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 + selecDebut.length - r;
	  //placer(document.forms['news'].elements['newst'], pos);
	  var r = oField.createTextRange();
	  r.moveStart('character', pos);
	  r.collapse();
	  r.select();
	  
	}
    }
}

function storeCaretUnique(selecDebut, idForm, idZoneTexte)
{
  if (isMozilla)
    {
      // Si on est sur Mozilla
      
      oField = document.forms[idForm].elements[idZoneTexte];
      
      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 );
      
      //	alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
      
      oField.value = objectValueDeb + "[" + selecDebut + "]" + objectSelected + objectValueFin;
      oField.selectionStart = strlen(objectValueDeb);
      oField.selectionEnd = strlen(objectValueDeb + "[" + selecDebut + "]" + objectSelected);
      oField.focus();
      oField.setSelectionRange(
			       objectValueDeb.length + selecDebut.length + 2,
			       objectValueDeb.length + selecDebut.length + 2);
    }
  else
    {
      // Si on est sur IE
      
      oField = document.forms[idForm].elements[idZoneTexte];
      var str = document.selection.createRange().text;
      
      if (str.length>0)
	{
	  // Si on a selectionné du texte
	  var sel = document.selection.createRange();
	  sel.text = "[" + selecDebut + "]" + str;
	  sel.collapse();
	  sel.select();
	}
      else
	{
	  oField.focus(oField.caretPos);
	  //	alert(oField.caretPos+"\n"+oField.value.length+"\n")
	  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) + "[" + selecDebut + "]" + 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 + selecDebut.length - r;
	  //placer(document.forms['news'].elements['newst'], pos);
	  var r = oField.createTextRange();
	  r.moveStart('character', pos);
	  r.collapse();
	  r.select();
	  
	}
    }
}

