(function($){



	$.fn.alphanumeric = function(p) { 



		p = $.extend({

			ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ",

			nchars: "",

			allow: ""

		  }, p);	



		return this.each

			(

				function() 

				{



					if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

					if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";

					

					s = p.allow.split('');

					for ( i=0;i<s.length;i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];

					p.allow = s.join('|');

					

					var reg = new RegExp(p.allow,'gi');

					var ch = p.ichars + p.nchars;

					ch = ch.replace(reg,'');



					$(this).keypress

						(

							function (e)

								{

								

									if (!e.charCode) k = String.fromCharCode(e.which);

										else k = String.fromCharCode(e.charCode);

										

									if (ch.indexOf(k) != -1) e.preventDefault();

									if (e.ctrlKey&&k=='v') e.preventDefault();

									

								}

								

						);

						

					$(this).bind('contextmenu',function () {return false});

									

				}

			);



	};



	$.fn.numeric = function(p) {

	

		var az = "abcdefghijklmnopqrstuvwxyz";

		az += az.toUpperCase();



		p = $.extend({

			nchars: az

		  }, p);	

		  	

		return this.each (function()

			{

				$(this).alphanumeric(p);

			}

		);

			

	};

	

	$.fn.alpha = function(p) {



		var nm = "1234567890";



		p = $.extend({

			nchars: nm

		  }, p);	



		return this.each (function()

			{

				$(this).alphanumeric(p);

			}

		);

			

	};	



})(jQuery);



