/**
*  ensure specified input fields will accept those predefined values
*  two configurable options
*  1. allow: only those specified within this option will be acceptable
*  2. disallow: anything (or only those specified within allow option if allow option isn't empty)
*               will be acceptable except those specified within this option
*/
jQuery.fn.inputValue = function(options)
{
  var settings = jQuery.extend({allow:'', disallow:''}, options);
  return jQuery(this).keypress
    (
      function (e)
        {
          if (!e.charCode)
            var code = String.fromCharCode(e.which);
          else
            var code = String.fromCharCode(e.charCode);
          if(code && (typeof(e.keyCode) == 'undefined' || (e.keyCode != 8 && e.keyCode != 46)))
          {
            if(settings.allow.length != 0 && settings.disallow.length != 0)
            {
              if(settings.allow.indexOf(code) == -1)
              {
                e.preventDefault();
              }else if(settings.disallow.indexOf(code) != -1)
              {
                e.preventDefault();
              }
            }else if(settings.allow.length != 0)
            {
              if(settings.allow.indexOf(code) == -1)
              {
                e.preventDefault();
              }
            }else if(settings.disallow.length != 0)
            {
              if(settings.disallow.indexOf(code) != -1)
              {
                e.preventDefault();
              }
            }
          }
          if (e.ctrlKey && code=='v')
            e.preventDefault();
          $(this).bind('contextmenu',function () {return false});
        }
    );

};
/**
*  input fields will accept valid email address
*/
jQuery.fn.inputEmail = function()
{
    return this.each (function()
      {
        jQuery(this).inputValue({allow:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@.0123456789'});
      }
    );
};
/**
*  input fields will accept digits only
*/
jQuery.fn.inputInteger = function()
{
    return this.each (function()
      {
        jQuery(this).inputValue({allow:'9876543210'});
      }
    );
};
/**
*  input fields will accept digits and dots.
*/
jQuery.fn.inputFloat = function()
{
    return this.each (function()
      {
        jQuery(this).inputValue({allow:'0123456789.'});
      }
    );
};
/**
*  input fields will accept all letters (case insensitive)
*/
jQuery.fn.inputLetter = function()
{
    return this.each (function()
      {
        jQuery(this).inputValue({allow:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'});
      }
    );
};




