(function($){

	$.fn.alphanumeric = function(p) {

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

		return this.each
			(
				function()
				{

					if (p.nocaps) p.nchars += "ABCÇDEFGHIJKLMNOPQRSTUVWXYZ";
					if (p.allcaps) p.nchars += "abc¨çdefghijklmnopqrstuvwxyz";

					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);
			}
		);

	};

	$.fn.number = function(p) {

		var az = "abc¨çdefghijklmnopqrstuvwxyz";
		az += az.toUpperCase();

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

		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);

	};

	$.fn.validaemail = function(p) {

			var az = "";

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

			return this.each (function()
				{
					$(this).alphanumeric(p);
				}
			);

		};

		//aceita numeros e o caracter de pontuação .
		$.fn.numericPoint = function(p) {

			var az = "abc¨çdefghijklmnopqrstuvwxyz";
			az += az.toUpperCase();

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

			return this.each (function()
				{
					$(this).alphanumeric(p);
				}
			);

		};


})(jQuery);

$(window).load(function(){
    loadnumeric();
		loadnumericPoint();
});

function loadnumeric(){
  $(".numeric").numeric();
}

function loadnumericPoint(){
	  $(".numericpoint").numericPoint();
}
