/*
 * 案件: 国華園ECサイトリプレース(2009/12追加)
 * 処理: カタログ商品購入用商品コード入力画面
 * $Author: hira $
 * $RCSfile: code_input.js,v $
 * $Revision: 1.2 $
 * $Date: 2010/01/20 11:03:33 $
 */

// キーイベント対象外ID
var except_keys = [
      8   //  Backspace
    , 9   //  Tab
    , 16  //  Shift
    , 17  //  Ctrl
    , 18  //  Alt
    , 19  //  Pause Break
    , 20  //  Caps Lock
    , 27  //  Esc
    , 33  //  Page Up
    , 34  //  Page Down
    , 35  //  End
    , 36  //  Home
    , 37  //  Left Arrow
    , 38  //  Up Arrow
    , 39  //  Right Arrow
    , 40  //  Down Arroww
    , 45  //  Insert
    , 46  //  Delete
    , 144 //  Num Lock
    , 145 //  Scroll Lock
];
var str_except_keys = except_keys.toString();

/*
 * フォーカスを次のタブインデックスへ
 */
function focusToNext(pattern) {
    
    $(pattern).keyup(function(my_event){
        if (str_except_keys.indexOf(my_event.keyCode) == -1 &&
            $(this).val().length == $(this).attr('maxlength')) {

            var idx = $(this).attr('tabindex');
            idx++;

            var obj = $(this).parents('form:first')
            .find('input[tabindex=' + idx + ']').eq(0);

            if (obj.length == 1) {
                obj.focus();
            } else {
                $(this).parents('form:first')
                .find('input[tabindex=1]').eq(0).focus();
            }
        }
    });
}

/*
 * Enterでフォーカスを次のタブインデックスへ
 */
function focusToNextWithEnter(pattern) {
    
    $(pattern).keyup(function(my_event){
        if (my_event.keyCode == 13) {
            var idx = $(this).attr('tabindex');
            idx++;

            var obj = $(this).parents('form:first')
            .find('input[tabindex=' + idx + ']').eq(0);

            if (obj.length == 1) {
                obj.focus();
            } else {
                $(this).parents('form:first')
                .find('input[tabindex=1]').eq(0).focus();
            }
        }
    });
}

/*
 * BackSpaceでフォーカスを前のタブインデックスへ
 */
function focusToPrevWithBS(pattern) {

	if ($.browser.msie) {
        $(pattern).keydown(function(my_event){
            if (my_event.keyCode == 8 && $(this).val().length == 0) {
                var idx = $(this).attr('tabindex');
                idx--;

                var obj = $(this).parents('form:first')
                .find('input[tabindex=' + idx + ']').eq(0);

                if (obj.length == 1) {
                    obj.focus();
                    obj.val(obj.val());
                }
            } else if (my_event.keyCode == 13) {
                // ビープ音防止
                return false;
            }
        });
    } else {
        $(pattern).keypress(function(my_event){
            if (my_event.keyCode == 8 && $(this).val().length == 0) {
                var idx = $(this).attr('tabindex');
                idx--;

                var obj = $(this).parents('form:first')
                .find('input[tabindex=' + idx + ']').eq(0);

                if (obj.length == 1) {
                    obj.focus();
                }
            }
        });
    }
}

/*
 * イベント設定
 */
$(function(){

    $('form[id=form_code] input[id=code1_1]').focus();

    var parent_selector = 'form[id*=form_code]';

    focusToNext(parent_selector + ' input[name*=code1]');
    focusToNext(parent_selector + ' input[name*=code2]');
    focusToNextWithEnter(parent_selector + ' input[name*=quantity]');
    focusToPrevWithBS(parent_selector + ' input[name*=code1]');
    focusToPrevWithBS(parent_selector + ' input[name*=code2]');
    focusToPrevWithBS(parent_selector + ' input[name*=quantity]');

});
