function getSelectionStart(t)
{
	if ( typeof elem(t).selectionStart != 'undefined' )	return 
elem(t).selectionStart;
	elem(t).focus();
	var range = elem(t).createTextRange();
	
range.moveToBookmark(document.selection.createRange().getBookmark());
	range.moveEnd('character', elem(t).value.length);
	return elem(t).value.length - range.text.length;
}

function getSelectionEnd(t)
{
	if ( typeof elem(t).selectionEnd != 'undefined' ) return 
elem(t).selectionEnd;
	elem(t).focus();
	var range = elem(t).createTextRange();
	
range.moveToBookmark(document.selection.createRange().getBookmark());
	range.moveStart('character', - elem(t).value.length);
	return range.text.length;
}
function setCaretPos(start, end, t)
{
	end = end || start; 	elem(t).focus();
	if (elem(t).setSelectionRange) elem(t).setSelectionRange(start, 
end);
	else if (document.selection)
	{
		var range = elem(t).createTextRange();
		range.moveStart('character', start);
		range.moveEnd('character', - elem(t).value.length + 
end);
		range.select();
	}
}
function replaceSelection(str, keep, t)
{
	elem(t).focus();
	var start = getSelectionStart(t);
	var stop = getSelectionEnd(t);
	var end = start + str.length;
	var scrollPos = elem(t).scrollTop;
	elem(t).value = elem(t).value.substring(0, start) + str + 
elem(t).value.substring(stop);
	if (keep) setCaretPos(start, end, t);
	else setCaretPos(end, end, t);
	elem(t).scrollTop = scrollPos;
}

function gettSelection(t)
{
        var val=elem(t).value;
	var s=elem(t).selectionStart;
	var e=elem(t).selectionEnd;	
	if (elem(t).setSelectionRange) return val.substring(s,e);
	else if (document.selection)
        {
                elem(t).focus();
                return document.selection.createRange().text;
        }       
}

function setBalise(t,balise1,balise2)
{
		var start=elem(t).selectionStart;
		var end=elem(t).selectionEnd;
		var res="";
		if (start==end)
		{
			res+=elem(t).value.substring(0,end);
			res+=balise1+balise2;
			res+=elem(t).value.substring(end);
			elem(t).value=res;
			
setCaretPos((end+balise1.length),(end+balise1.length),t);
		}
		else if (start<end)
		{
			res+=elem(t).value.substring(0,start);
			res+=balise1;
			res+=gettSelection(t);
			res+=balise2;
			res+=elem(t).value.substring(end);
			elem(t).value=res;
		}
}

function setLink(t)
{
	var start=elem(t).selectionStart;
	var end=elem(t).selectionEnd;
	var res="";
	if (start==end)
	{
		res+=elem(t).value.substring(0,end);
		res+="[a "+prompt("Indiquez l'url de votre lien.")+"]"+prompt("Indiquez le nom de votre lien")+"[/a]";
		res+=elem(t).value.substring(end);
		elem(t).value=res;
	}
	else if (start<end)
	{
		res+=elem(t).value.substring(0,start);
		res+="[a "+prompt("Indiquez l'url de votre lien.")+"]";
		res+=gettSelection(t);
		res+="[/a]";
		res+=elem(t).value.substring(end);
		elem(t).value=res;
	}
}

function setColor(t,color)
{
	var start=elem(t).selectionStart;
	var end=elem(t).selectionEnd;
	var res="";
	if (start==end)
	{
		res+=elem(t).value.substring(0,end);
		res+="[color "+color+"][/color]";
		res+=elem(t).value.substring(end);
		elem(t).value=res;
	}
	else if (start<end)
	{
		res+=elem(t).value.substring(0,start);
		res+="[color "+color+"]";
		res+=gettSelection(t);
		res+="[/color]";
		res+=elem(t).value.substring(end);
		elem(t).value=res;
	}
}

function setImage(t)
{
	var start=elem(t).selectionStart;
	var end=elem(t).selectionEnd;
	var res="";
	
	res+=elem(t).value.substring(0,end);
	res+="[img "+prompt("Indiquez l'url de votre image.")+"]";
	res+=elem(t).value.substring(end);
	elem(t).value=res;
}

