(function($)
{
	jQuery.fn.insertAtCaret = function (myValue) {
    	return this.each(function(){
			//IE support
			var maxlength = jQuery('#'+this.id).attr('maxlength');
			
			if (Number(maxlength)){
				if (maxlength!='-1'){
					var val = jQuery('#'+this.id).val();				
					if (maxlength<=val.length){ return false; }
				}
			}
			if (document.selection) {
					this.focus();
					sel = document.selection.createRange();
					sel.text = myValue;
					this.focus();
			}
			//MOZILLA/NETSCAPE support
			else if (this.selectionStart || this.selectionStart == '0') {
					var startPos = this.selectionStart;
					var endPos = this.selectionEnd;
					var scrollTop = this.scrollTop;
					this.value = this.value.substring(0, startPos)
								  + myValue
						  + this.value.substring(endPos,
					this.value.length);
									this.focus();
									this.selectionStart = startPos + myValue.length;
									this.selectionEnd = startPos + myValue.length;
									this.scrollTop = scrollTop;
							} else {
									this.value += myValue;
									this.focus();
							}
		});
	
	};
})(jQuery);
