(function($){
	
	$.fn.autoruby = function(rubyField, config){
		config = $.extend({
			convFlag : 1      //モードフラグ ひらがな→0　カタカナ→1
		}, config);
		
		var $this = this,
		    $target = $(rubyField);
		
		var baseVal = "",
		    timer = false;
		
		function setRuby(){
			var newVal = $this.val();
			
			if(baseVal == newVal) return;
			if(newVal == ""){
				$target.val("");
				baseval = "";
				return;
			}
			
			var addVal = newVal;
			for(var i = baseVal.length; i >= 0; i--){
				if (newVal.substr(0,i) == baseVal.substr(0,i)) {
					addVal = newVal.substr(i);
					break;
				}
			}
			baseVal = newVal;
			var addruby = addVal.replace(/[^ 　ぁあ-んァー]/g, "");
			if (addruby == "") return;
			if(config.convFlag) addruby = convKana(addruby);
			$target.val($target.val() + addruby);
		}
		
		function loopTimer(){
			setRuby();
			timer = setTimeout(loopTimer,30);
		}
		
		function convKana(val){
			var c,
			    a = [];
			
			for(var i = val.length - 1; 0 <= i; i--){
				c = val.charCodeAt(i);
				a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c;
			}
			return String.fromCharCode.apply(null, a);
		}
		
		loopTimer();
		return $this.keyup(setRuby);
	};
	
})(jQuery);
