/*
 * jQuery plugin: fieldSelection - v0.1.0 - last change: 2006-12-16
	 * (c) 2006 Alex Brem <alex@0xab.cd> - http://blog.0xab.cd
		 */

			(function() {

				var fieldSelection = {

						getSelection: function() {

									var e = this.jquery ? this[0] : this;

												return (

																/* mozilla / dom 3.0 */
																				('selectionStart' in e && function() {
																									var l = e.selectionEnd - e.selectionStart;
																														return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
																																		}) ||

																																						/* exploder */
																																										(document.selection && function() {

																																															e.focus();

																																																				var r = document.selection.createRange();
																																																									if (r == null) {
																																																															return { start: 0, end: e.value.length, length: 0 }
																																																																				}

																																																																									var re = e.createTextRange();
																																																																														var rc = re.duplicate();
																																																																																			re.moveToBookmark(r.getBookmark());
																																																																																								rc.setEndPoint('EndToStart', re);

																																																																																													return { start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text };
																																																																																																	}) ||

																																																																																																					/* browser not supported */
																																																																																																									function() {
																																																																																																														return { start: 0, end: e.value.length, length: 0 };
																																																																																																																		}

																																																																																																																					)();

																																																																																																																							},

																																																																																																																									replaceSelection: function() {

																																																																																																																												var e = this.jquery ? this[0] : this;
																																																																																																																															var text = arguments[0] || '';

																																																																																																																																		return (

																																																																																																																																						/* mozilla / dom 3.0 */
																																																																																																																																										('selectionStart' in e && function() {
																																																																																																																																															e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length);
																																																																																																																																																				return this;
																																																																																																																																																								}) ||

																																																																																																																																																												/* exploder */
																																																																																																																																																																(document.selection && function() {
																																																																																																																																																																					e.focus();
																																																																																																																																																																										document.selection.createRange().text = text;
																																																																																																																																																																															return this;
																																																																																																																																																																																			}) ||

																																																																																																																																																																																							/* browser not supported */
																																																																																																																																																																																											function() {
																																																																																																																																																																																																e.value += text;
																																																																																																																																																																																																					return this;
																																																																																																																																																																																																									}

																																																																																																																																																																																																												)();

																																																																																																																																																																																																														}

																																																																																																																																																																																																															};

																																																																																																																																																																																																																jQuery.each(fieldSelection, function(i) { jQuery.fn[i] = this; });

																																																																																																																																																																																																																})();

