/* Autotab - jQuery plugin 1.0
 * http://dev.lousyllama.com/auto-tab
 * Copyright (c) 2008 Matthew Miller
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html */
(function($) { $.fn.autotab = function(options) {
var defaults = { format: 'all', maxlength: 2147483647, uppercase: false, lowercase: false, nospace: false, target: null, previous: null
}; $.extend(defaults, options); var check_element = function(name) { var val = null; var check_id = $('#' + name)[0];
var check_name = $('input[name=' + name + ']')[0]; if(check_id != undefined) val = $(check_id); else if(check_name != undefined) val = $(check_name); return val;};
var key = function(e) {if(!e) e = window.event; return e.keyCode; }; if(typeof defaults.target == 'string')
defaults.target = check_element(defaults.target); if(typeof defaults.previous == 'string')
defaults.previous = check_element(defaults.previous);var maxlength = $(this).attr('maxlength');
if(defaults.maxlength == 2147483647 && maxlength != 2147483647)defaults.maxlength = maxlength; else if(defaults.maxlength > 0) $(this).attr('maxlength', defaults.maxlength); else defaults.target = null;
if($.browser.msie){this.keydown(function(e) {if(key(e) == 8){var val = this.value;if(val.length == 0 && defaults.previous)
defaults.previous.focus();}});}	return this.keypress(function(e) { if(key(e) == 8) {var val = this.value; if(val.length == 0 && defaults.previous) defaults.previous.focus();
}}).keyup(function(e) { var val = this.value; switch(defaults.format) { case 'text': var pattern = new RegExp('[0-9]+', 'g');
var val = val.replace(pattern, ''); break; case 'alpha': var pattern = new RegExp('[^a-zA-Z]+', 'g'); var val = val.replace(pattern, ''); break; case 'number': case 'numeric':
var pattern = new RegExp('[^0-9]+', 'g'); var val = val.replace(pattern, ''); break;case 'alphanumeric': var pattern = new RegExp('[^0-9a-zA-Z]+', 'g');
var val = val.replace(pattern, ''); break;case 'all': default:break;} if(defaults.nospace) {pattern = new RegExp('[ ]+', 'g'); val = val.replace(pattern, '');}
if(defaults.uppercase) val = val.toUpperCase(); if(defaults.lowercase) val = val.toLowerCase();
this.value = val; var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];
var string = keys.toString(); if(string.indexOf(key(e)) == -1 && val.length == defaults.maxlength && defaults.target)
defaults.target.focus();});};})(jQuery);
