(function(){var ldCaret;ldCaret={get:function(){var sel,range,obj,n,ref$;sel=window.getSelection();if(!sel.rangeCount){return{}}range=sel.getRangeAt(0);obj={ns:range.startContainer,ne:range.endContainer,os:range.startOffset,oe:range.endOffset};n=obj.ns.childNodes[obj.os];if(n&&((ref$=n.nodeName)==="TEXTAREA"||ref$==="INPUT")){obj={ns:n,ne:n,os:n.selectionStart,oe:n.selectionEnd}}return obj},set:function(opt,edit){var ns,os,ne,oe,range,newRange,n,o,_,ref$,selection;opt==null&&(opt={});edit==null&&(edit=false);if(opt.ns!=null){ns=opt.ns,os=opt.os,ne=opt.ne,oe=opt.oe;if(ns.setSelectionRange){ns.focus();return ns.setSelectionRange(os,oe!=null?oe:os)}range=document.createRange();range.setStart(ns,os);range.setEnd(ne!=null?ne:ns,oe!=null?oe:os)}else if(opt.startContainer){}if(edit){newRange=document.createRange();n=range.startContainer;o=range.startOffset;if(range.startContainer.nodeType!==Element.TEXT_NODE){_=function(n,o){var ret,that;if(!n||!n.childNodes){return n}ret=_(n.childNodes[o],0);return(that=ret)?that:n};ref$=[_(n,o),0],n=ref$[0],o=ref$[1]}newRange.setStart(n,o);newRange.setEnd(n,o);range=newRange}selection=window.getSelection();selection.removeAllRanges();return selection.addRange(range)},clear:function(){var selection;selection=window.getSelection();return selection.removeAllRanges()},getBoundingBox:function(){var range;range=window.getSelection().getRangeAt(0);return range.getBoundingClientRect()},insert:function(n){var obj,range;if(typeof n==="string"){obj=ldCaret.get();if(obj.ns.setRangeText){return obj.ns.setRangeText(txt)}n=document.createTextNode(txt)}range=window.getSelection().getRangeAt(0);range.deleteContents();return range.insertNode(n)},getContent:function(opt){var text,range;if(!opt){return text=window.getSelection().toString()}range=document.createRange();range.setStart(opt.ns,opt.os);range.setEnd(opt.ne,opt.oe);return range.toString()},byPtr:function(arg$){var node,x,y,range,ret,box;node=arg$.node,x=arg$.x,y=arg$.y,range=arg$.range;ret=ldCaret._byPtr({node:node,x:x,y:y,range:range});box=ret.range.getBoundingClientRect();ret.box=box;return ret},_byPtr:function(arg$){var node,x,y,range,min,i$,to$,i,r,p,c,box,tx,ty,dist;node=arg$.node,x=arg$.x,y=arg$.y,range=arg$.range;if(!range){range=document.createRange()}if(node.nodeType===Element.TEXT_NODE){return ldCaret._byPtrInText({node:node,x:x,y:y,range:range})}min=null;for(i$=0,to$=node.childNodes.length;i$