function findIESelectionRange(element) {
	if(document.selection){
		var range = document.selection.createRange();
		var stored_range = range.duplicate();
		stored_range.moveToElementText(element);
		stored_range.setEndPoint('EndToEnd', range);
		element.selectionStart = stored_range.text.length - range.text.length; 
		element.selectionEnd = element.selectionStart + range.text.length; 
	}
}

function getSelectionStart(comp) {
	if(comp.selectionStart < 0)
		findIESelectionRange(comp);
	return comp.selectionStart;
}

function getSelectionEnd(comp) {
	if(comp.selectionEnd < 0)
		findIESelectionRange(comp);
	return comp.selectionEnd;
}

function isSelection(comp) {
	return (getSelectionEnd(comp)-getSelectionStart(comp) > 0);
}

function setCaretPos(comp, start, end) {
    if (document.selection) {
        var sel = comp.createTextRange();
        sel.collapse(true);
        sel.moveStart("character", start);
        sel.moveEnd("character", end - start);
        sel.select();
    } else if (comp.selectionStart || comp.selectionStart == "0") {
        comp.selectionStart = start;
        comp.selectionEnd = end;
    }
    comp.focus();
} 


function getCaretPos(compt) {
	compt.focus();
	if(compt.selectionStart >= 0)
		return compt.selectionStart;

	var i = compt.value.length+1;
	if (compt.createTextRange){
		theCaret = document.selection.createRange().duplicate();
		while (theCaret.parentElement() == compt && theCaret.move("character",1) == 1) 
			--i;
	}
	return (i == compt.value.length + 1) ? -1 : i;
}
