// For IE, Opera
function GetStringPosition(textAreaObject) {
	textAreaObject.focus();
	if ('undefined' != typeof textAreaObject.selectionStart && 'undefined' != typeof textAreaObject.selectionEnd) {
		var intPosOfNeedle	= textAreaObject.selectionStart;
		var intEndOfNeedle	= textAreaObject.selectionEnd;
		var strRange		= textAreaObject.value.substring(intPosOfNeedle, intEndOfNeedle);
		return {pos:intPosOfNeedle, len:strRange.length, str:strRange};
	}

	return	GetIEStringPos(textAreaObject);
}


function GetStringPositionOLD(textAreaObject) {

	textAreaObject.focus();

	if ('undefined' != typeof textAreaObject.selectionStart && 'undefined' != typeof textAreaObject.selectionEnd) {
		var intPosOfNeedle	= textAreaObject.selectionStart;
		var intEndOfNeedle	= textAreaObject.selectionEnd;
		var strRange		= textAreaObject.value.substring(intPosOfNeedle, intEndOfNeedle);
		return {pos:intPosOfNeedle, len:strRange.length, str:strRange};
	}

	var strHaystack		= textAreaObject.value;
	var intLenOfHaystack	= strHaystack.length;


	var objRange		= document.selection.createRange();
	var strRange		= objRange.text;
	objRange.moveEnd("character", intLenOfHaystack);

	var intLenOfPartial	= objRange.text.length;
	alert("[" + objRange.text + "]");


	// Opera is likely to work in IE mode.
	// The fucking IE will add a space to the end of the needle string!!!
	// One <textarea>, one space!!!
	// Killing IE begin
	var strTestHaystack	= strHaystack + ' ';
	var intIntPosOfNeedle	= strTestHaystack.length - intLenOfPartial;
	var boolIsFuckingIE	= false;
	if (strTestHaystack.substr(intIntPosOfNeedle) == objRange.text) {
		// This approve that your browser is the fucking IE!!!
		boolIsFuckingIE	= true;
		intLenOfPartial--;
		alert('IE');
	}
	// Killing IE end

	var intPosOfNeedle	= intLenOfHaystack - intLenOfPartial;
	alert(intPosOfNeedle);

	return {pos:intPosOfNeedle, len:strRange.length, str:strRange};

}

function GetIEStringPos(ObjTextArea) {

	var range	= document.selection.createRange();
	var strSelected	= range.text;
	var start, end;

	if (range.parentElement().id == ObjTextArea.id) {

		var range_all	= document.body.createTextRange();
		range_all.moveToElementText(ObjTextArea);
		for (start = 0; range_all.compareEndPoints("StartToStart", range) < 0; start++) {
			range_all.moveStart('character', 1);
		}
		for (var i = 0; i <= start; i++){
			if (ObjTextArea.value.charAt(i) == "\n") {
				start++;
			}
		}


		var range_all	= document.body.createTextRange();
		range_all.moveToElementText(ObjTextArea);
		for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end++) {
			range_all.moveStart('character', 1);
		}
		for (var i = 0; i <= end; i++){
			if (ObjTextArea.value.charAt(i) == "\n") {
				end++;
			}
		}

	}

	return {pos:start, len:strSelected.length, str:strSelected};

}