// Blatantly plagiarised from pbwiki
//
// www.pbwiki.com

function headTailAtCursor(myField, myHead,myTail) {
  var position = myField.scrollTop;

  //IE support
  if (document.selection) {
    myField.focus();

    var selectedRange = document.selection.createRange();
    if (selectedRange.parentElement() == myField) {
      var strSelection = document.selection.createRange().text ;
      document.selection.createRange().text = myHead + strSelection + myTail;
    }

    
  } else if (myField.selectionStart || myField.selectionStart == '0') {
    //MOZILLA/NETSCAPE support

    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myValue = myField.value.substring(startPos,endPos);
    myField.value = myField.value.substring(0, startPos) + myHead + myValue + myTail + myField.value.substring(endPos, myField.value.length);
    myField.selectionStart = startPos + myHead.length;
    myField.selectionEnd = startPos + myValue.length + myHead.length;
    myField.focus();

  } else {
    myField.value += myHead + myTail;
  }

  myField.scrollTop = position;
}

// From http://www.alexking.org/blog/2003/06/02/inserting-at-the-cursor-using-javascript

function insertAtCursor(myField, myValue) {
  var position = myField.scrollTop;

  //IE support
  if (document.selection) {
    myField.focus();

    sel = document.selection.createRange();
    sel.text = myValue;

  } else if (myField.selectionStart || myField.selectionStart == '0') {
    //MOZILLA/NETSCAPE support

    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
    myField.selectionStart = startPos;
    myField.selectionEnd = startPos + myValue.length;
    myField.focus();

    myField.scrollTop = position;
  } else {
    myField.value += myValue;
  }

  myField.scrollTop = position;
}
