var globalCursorPos; // global variabe to keep track of where the cursor was

//sets the global variable to keep track of the cursor position
function setCursorPos() {
 globalCursorPos = getCursorPos(Letters_Global_Backend.BodyText);
}

//This function returns the index of the cursor location in the value of the input text element
function getCursorPos(textElement) {
 //save off the current value to restore it later,
 var sOldText = textElement.value;

//create a range object and save off it's text
 var objRange = document.selection.createRange();
 var sOldRange = objRange.text;

//set this string to a small string that will not normally be encountered
 var sWeirdString = '#%~';

//insert the weirdstring where the cursor is at
 objRange.text = sOldRange + sWeirdString; objRange.moveStart('character', (0 - sOldRange.length - sWeirdString.length));

//save off the new string with the weirdstring in it
 var sNewText = textElement.value;

//set the actual text value back to how it was
 objRange.text = sOldRange;

//look through the new string we saved off and find the location of
//the weirdstring that was inserted and return that value
 for (i=0; i <= sNewText.length; i++) {
   var sTemp = sNewText.substring(i, i + sWeirdString.length);
   if (sTemp == sWeirdString) {
     var cursorPos = (i - sOldRange.length);
     return cursorPos;
   }
 }
}

//inserts the input string into the textarea where the cursor is
function insertString(stringToInsert) {
 var firstPart = Letters_Global_Backend.BodyText.value.substring(0, globalCursorPos);
 var secondPart = Letters_Global_Backend.BodyText.value.substring(globalCursorPos, Letters_Global_Backend.BodyText.value.length);
 Letters_Global_Backend.BodyText.value = firstPart + stringToInsert + secondPart;
}
