/* (c) 2009 fullfull
 *  http://www.fullfull.jp
 */
jQuery.scope = function(target, func){ return function() { return func.apply(target, arguments);}};

// カタカナ補完
(function($) {
    var name_space = 'autokana';
    $.fn[name_space] = function(selector) {

        var elements = this;
        var check_value = function () {
            var val = $(this).val();
            if (val == '') {
              $(selector).val('');
              return;
            }
            var rmf = $.data(this, name_space);
            var hit = [];
            $.each(val.split('').reverse(), function () {
                var c = this.charCodeAt();
                //hiragana?
                if (c < 0x3041 || c > 0x3096) return false;
                hit.push(this);
            });
            if (!hit.length) return;
            rmf.old = hit.reverse().join('');
        };

        var set_value = function () {
            var rmf = $.data(this, name_space);
            if (!rmf.old) return;
            var kana = $(selector);
            kana.val(toKatakana.apply(this, new Array(kana.val() + rmf.old)));
            rmf.old = '';
        };

        var toKatakana = function(value) {
          if (value == null || value.length == 0) {
            return "";
          }
          var a = [];
          for (var i = 0; i < value.length; i++) {
            var c = value.charCodeAt(i);
            
            if (0x3041 <= c && c <= 0x3096) { // Unicode 平仮名
              a[i] = c + 0x0060; // カタカナ
            } else {
              a[i] = c;
            }
          }
          return String.fromCharCode.apply(null, a);
        };

        elements.each(function() {
            var key_func = function (env) {
                check_value.call(this);
                if (env.keyCode != 13) return;
                set_value.call(this);
            };
            ( function (v) {
                return ([$.data(v.get(0), name_space, {}), v])[1];
            } )( $(this) )
                .keyup(key_func)
                .keydown(key_func)
                .keypress(check_value)
                .bind('text', check_value)
            ;

        });
        return this;
    };
})(jQuery);

// Date picker
jQuery(function($) {
$.datepicker.regional['ja'] = {
  closeText: '閉じる',
  prevText: '&#x3c;前',
  nextText: '次&#x3e;',
  currentText: '今日',
  monthNames: ['1月','2月','3月','4月','5月','6月',
  '7月','8月','9月','10月','11月','12月'],
  monthNamesShort: ['1月','2月','3月','4月','5月','6月',
  '7月','8月','9月','10月','11月','12月'],
  dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],
  dayNamesShort: ['日','月','火','水','木','金','土'],
  dayNamesMin: ['日','月','火','水','木','金','土'],
  dateFormat: 'yy/mm/dd', firstDay: 0,
  isRTL: false,
  showMonthAfterYear: true};
  $.datepicker.setDefaults($.datepicker.regional['ja']);
});

