/*
 * KeyTrigger
 * Copyright 2011 Sangzean
 * requires jQuery 1.2.x
 
 * Version 1.2   -   Updated: Sep. 16, 2011
 
 * This Plug-In will cause a trigger event depending on your setting
 *
 * This KeyTrigger jQuery plug-in is 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.keyTrigger = function(options) {
		var defaults = { 
			setBrowser: {mozilla: true},
			eventType: "keydown",
			intervalTime: 50
		}
		var opts = $.extend(defaults, options);	
		var browser = $.uaMatch(navigator.userAgent).browser;
		
		for (k in opts.setBrowser) {
			if (browser == k && opts.setBrowser[k]) {
				return this.each(function(x) {
					var input = $(this);
					var interval = null;
					var temp = null;
					var isRun = true;
					
					input.focus(function() {
						if (!interval) watchInput();
					}).blur(function() {
						if (interval) {
							clearInterval(interval);
							interval = null;
						}
					});
					
					input.bind(opts.eventType, function(e) {
						switch(e.keyCode) {
							case 37: // left
							case 39: // right
							case 38: // up
							case 40: // down
								isRun = false;
								break;
							default:
								isRun = true;
								break;
						}
					});
					
					function watchInput()
					{
						if (temp != input.val()) {
							if (isRun) input.trigger(opts.eventType);
						}
						temp = input.val();
					
						if (interval) clearInterval(interval);
						interval = setInterval(function(){ watchInput(); }, opts.intervalTime);
					}
				});
			}
		}
	}
})(jQuery);
