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