function getCaretPosition(input)
{
	var result = { start: 0, end: 0 };
	if (input.setSelectionRange){
		result.start = input.selectionStart;
		result.end = input.selectionEnd;
	}else if (document.selection && document.selection.createRange && document.activeElement){
		if(document.activeElement == input){
			var range = document.selection.createRange();
			var r2 = range.duplicate();
			result.start = 0 - r2.moveStart('character', -100000);
			result.end = result.start + range.text.length;
		}
		else{
			result.start = -1;
		}
	}
	return result;
}

function setCaretPosition(el, caretPos) {
    if(el != null) {
        if(el.createTextRange) {
            var range = el.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(el.selectionStart) {
                el.focus();
                el.setSelectionRange(caretPos, caretPos);
            }
            else
                el.focus();
        }
    }
}
	
var formatPhone = function(inpt){
	var n = inpt.value;
	var pos = getCaretPosition(inpt).start;
	var prevDigits = n.substr(0, pos).replace(/\D/g, '').length;
	var digits = n.replace(/\D/g, '') + inpt.extraDigits;
	inpt.extraDigits = "";
	var ret = "";
	if(digits.length < 3)
		ret = n;
	if(digits.length >= 3){
	
		ret = "(" + digits.substr(0,3) + ") ";
		
		if(digits.length > 10){
			ret = ret + digits.substr(3, 3) + "-" + digits.substr(6, 4);
			inpt.extraDigits = digits.substr(10);
		}
		else if(digits.length > 6)
			ret = ret + digits.substr(3, 3) + "-" + digits.substr(6);
		else
			ret = ret + digits.substr(3);
	}
	if(ret != n){
		inpt.value = ret;
		if(pos >= 0){
			if(prevDigits < 3)
				setCaretPosition(inpt, 1 + prevDigits);
			else if(prevDigits < 6)
				setCaretPosition(inpt, 3 + prevDigits);
			else
				setCaretPosition(inpt, 4 + prevDigits);
		}
	}
	
};

var formatPhoneStatic = function(s){
	var digits = s.innerHTML;
	var ret = "";
	if(digits.length < 3)
		ret = n;
	if(digits.length >= 3){
	
		ret = "(" + digits.substr(0,3) + ") ";
		
		if(digits.length > 6)
			ret = ret + digits.substr(3, 3) + "-" + digits.substr(6);
		else
			ret = ret + digits.substr(3);
	}
	s.innerHTML = ret;	
};
