//Function to insert element in required position
function insertElementPosition(docWindow, insertElement){
var area = docWindow.getSelection();
var range = area.getRangeAt(0);
var editorPosition = range.startContainer;
var pos = range.startOffset;
area.removeAllRanges();
range.deleteContents();
range = document.createRange();
if (editorPosition.nodeType==3 && insertElement.nodeType==3) {
editorPosition.insertData(pos, insertElement.nodeValue);
try{range.setEnd(editorPosition, pos + insertElement.length);}catch(exception){}
try{range.setStart(editorPosition, pos + insertElement.length);}catch(exception){}
}else{
var afterElement;
if (editorPosition.nodeType==3){
var textElement = editorPosition;
var text = textElement.nodeValue;
var textBefore = text.substr(0,pos);
var textAfter = text.substr(pos);
var beforeNode = document.createTextNode(textBefore);
var afterElement = document.createTextNode(textAfter);
editorPosition = textElement.parentNode;
editorPosition.insertBefore(afterElement, textElement);
editorPosition.insertBefore(insertElement, afterElement);
editorPosition.insertBefore(beforeNode, insertElement);
editorPosition.removeChild(textElement);
}else{
afterElement = editorPosition.childNodes[pos];
editorPosition.insertBefore(insertElement, afterElement);
}
try{range.setEnd(afterElement, 0);}catch(exception){}
try{range.setStart(afterElement, 0);}catch(exception){}
}
area.removeAllRanges();
area.addRange(range);
}