// formエレメントを取得します
function _getFormElement( objElement ) {

    var objParent = objElement.parentNode;

    if( objParent.tagName.toUpperCase() != 'FORM' ) {

        return _getFormElement( objParent );
    } else {

        return objParent;
    }
}

// ボタンをDisableにします
function disableButton( objMine, bButton ) {

    var objForm = _getFormElement( objMine );
    if( bButton ) {

        if( objMine ) {
            objMine.disabled = "disabled";
            return true;
        }
        return false;
    } else {

        objForm.onsubmit = function() {
            if( objMine ) {
                objMine.disabled = "disabled";
                return true;
            }
            return false;
        }
    }
}

// 画像リンクボタンを無効にします。
function disableImage( strPath ) {

    var arrA = document.getElementsByTagName( 'a' );

    if( arrA.length > 0 ) {

        for( var i = 0; i < arrA.length; ++i ) {

            arrA[ i ].removeAttribute( 'href' );
        }
    }
    submitDisableAll();
    if( strPath ) {

        location.href = strPath;
    }
}

// 戻るボタン、登録ボタン兼用Disableメソッド
function submitVerify( nType, objMine ) {

    disableButton( objMine );

    if( nType == 1 ) {

        document.form1.action="./verify.html";
        document.form1.cmd.value="1";
        document.form1.submit();
    } else if( nType == 9 ) {

        document.form1.action="./";
        document.form1.cmd.value="9";
        document.form1.submit();
    }
}

// Ajaxオブジェクト取得メソッド
function getActiveXObject() {

    if( window.XMLHttpRequest ) {

        ajax = new XMLHttpRequest();

    } else if( window.ActiveXObject ) {

        try {

            ajax = new ActiveXObject( "Msxml2.XMLHTTP" );
        } catch(e) {

            ajax = new ActiveXObject( "Microsoft.XMLHTTP" );
        }
    }
    return ajax;
}

function validateDate( datestr ) {
    // 正規表現による書式チェック
    if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){
        return false;
    }
    var vYear = datestr.substr(0, 4) - 0;
    var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現
    var vDay = datestr.substr(8, 2) - 0;
    // 月,日の妥当性チェック
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
        var vDt = new Date(vYear, vMonth, vDay);
        if(isNaN(vDt)){
            return false;
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function openNewWindow( url ) {
    window.open( url );
}

// button用disableメソッド
function submitDisable( strPath, objMine, strFormName ) {

    if( objMine ) {

        disableButton( objMine, true );

        if( strFormName ) {

            var objForm = getFormElementByFormName( strFormName );
        } else {

            objForm = _getFormElement( objMine );
        }

        if( objForm ) {
            objForm.action = strPath;
            objForm.submit();
        }
    }
}
// aタグSubmitメソッド
function submitTextLink( strFormName, strPath, nCmd ) {

    // フォーム名に該当するエレメントを取得
    var objForm = getFormElementByFormName( strFormName );

    if( objForm ) {

        objForm.action = strPath;
        if( !nCmd ) {
            nCmd = '';
        }
        objForm.cmd.value = nCmd;
        objForm.submit();
    }

    // リンクを消す
    disableImage();
}

// TR行の背景色を変更します。
function onChangeBgColor( obj, col ) {

    obj.style.backgroundColor = col;
}

// リスト削除確認ダイアログメソッド
function deleteComfirm( strFormName, strMeg ) {

    if( window.confirm( strMeg ) ) {

        var objForm = getFormElementByFormName( strFormName );
        objForm.submit();
        submitDisableAll();
    }
}

// ページャー用
function submitPager( nPage, strFormName, nLimit ) {

    if( nPage !== '' ) {

        var objForm = getFormElementByFormName( strFormName );
        if( objForm ) {

            if( nLimit != null ) {

                objForm.limit.value = nLimit;
            }
            objForm.p.value = nPage;
            objForm.submit();
        }
    }
}

function getFormElementByFormName( strFormName ) {

    var arrForms = document.getElementsByTagName( 'form' );
    var objForm = new Object();
    if( arrForms.length > 0 ) {

        for( var i = 0; i < arrForms.length; ++i ) {

            if( arrForms[ i ].name === strFormName ) {

                objForm = arrForms[ i ];
            }
        }
    }
    return objForm;
}

function submitDisableAll() {
    var arrInput = document.getElementsByTagName( 'input' );
    var objForm = new Object();
    var bExist = false;
    if( arrInput.length > 0 ) {

        var arrButton = new Array();
        var j = 0;
        for( var i = 0; i < arrInput.length; ++i ) {

            if( arrInput[ i ].type === 'submit' || arrInput[ i ].type === 'button' || arrInput[ i ].type === 'image' ) {

                arrButton[ j ] = arrInput[ i ];
                bExist = true;
                ++j
            }
        }
    }
    if( bExist ) {

        for( var k = 0; k < arrButton.length; ++k ) {
            arrButton[ k ].disabled = 'disabled';
        }
    }
}

function changeType( nType ) {

    if( nType ) {

        var objTarget = document.getElementById( 'jobtype' + nType );
        var objTable = objTarget.parentNode;

        for( var i = 0; i < objTable.childNodes.length; i++ ) {

            if(
                objTable.childNodes[ i ].hasChildNodes()
            && 
                objTable.childNodes[ i ].tagName.toLowerCase() != 'select'
            ) {

                objTable.childNodes[ i ].style.display = 'none';
            }
        }

        objTarget.style.display = '';
    }
}

// 掲載カテゴリチェックボックスクリアメソッド
function clearCheck( objMine ) {

    if( objMine ) {

        var objParent = objMine.parentNode.parentNode;
        var arrDiv = _getElementsByTagName( 'div', objParent );

        for( var i = 0; i < arrDiv.length; ++i ) {

            var arrUl = _getElementsByTagName( 'ul', arrDiv[ i ] );

            for( var j = 0; j < arrUl.length; ++j ) {

                for( var k = 0; k < arrUl[ j ].childNodes.length; ++k ) {

                    if(
                        arrUl[ j ].childNodes[ k ].tagName.toLowerCase()
                    ===
                        'li'
                    ) {

                        arrUl[ j ].childNodes[ k ].firstChild.checked = '';
                    }
                }
            }
        }
    }
}

// 掲載カテゴリチェックボックスクリアメソッド
function clearCheckTable( objMine, strInputName ) {

    var arrInput = document.getElementsByTagName( 'input' );
    for( var i = 0; i < arrInput.length; ++i ) {

        if( arrInput[i].type == 'checkbox' && arrInput[i].name == strInputName ) {
            arrInput[i].checked = false;
        }
    }
}

// エレメント走査メソッド
function _getElementsByTagName( strTagName, objElement ) {

    if( strTagName && objElement ) {

        var arrElements = new Array();
        var nKey = 0;
        for( var i = 0; i < objElement.childNodes.length; ++i ) {

            if( objElement.childNodes[ i ].tagName.toLowerCase() === strTagName ) {

                 arrElements[ nKey ] = objElement.childNodes[ i ];
                 nKey++;
            }
        }
        return arrElements;
    }
}
// ButtonSubmitメソッド
function submitButton( strFormName ) {

    if( strFormName ) {

        var objForm = getFormElementByFormName( strFormName );
        if( objForm ) {

            objForm.submit();
            submitDisableAll();
        }
    }
}

// 受信・送信一覧切り替えメソッド（管理・会員）
function changeList( strViewId, strInvisibleId ) {

    if( strViewId && strInvisibleId ) {

        var objView = document.getElementById( strViewId );
        var objInvisible = document.getElementById( strInvisibleId );

        objView.style.display = 'block';
        objInvisible.style.display = 'none';
    }
}
// 確認ダイアログメソッド
function editComfirm( strFormName, strMeg ) {

    if( window.confirm( strMeg ) ) {

        var objForm = getFormElementByFormName( strFormName );
        objForm.submit();
        submitDisableAll();
    }
}

// ボタンdisable解除メソッド
function clearDisable( strId ) {

    var objElement = document.getElementById( strId );

    if( objElement.disabled ) {
        objElement.disabled = false;
    } else {
        objElement.disabled = 'disabled'
    }
}

// 件数変更メソッド
function changeLimit( strFormName, nLimit, nAll ) {

    var objForm = getFormElementByFormName( strFormName );

    objForm.limit.value = nLimit;
    objForm.all.value = nAll;
    objForm.cmd.value = 2;
    objForm.p.value = 0;

    objForm.submit();

    submitDisableAll();
}


// チェックボックス反転関数
function swapCheck( obj ) {

    if( obj.checked == false ) {
        obj.checked = true;
    } else {
        obj.checked = false;
    }
}

// 最終学歴ラジオボタンチェック外しメソッド
function outCheckAll() {

    var objDiv = document.getElementById( 'academics' );
    for( var i = 0; i < objDiv.childNodes.length; ++i ) {

        if( objDiv.childNodes[ i ].nodeType != '3' ) {

            if( objDiv.childNodes[ i ].tagName.toLowerCase() == 'input' ) {

                if( objDiv.childNodes[ i ].type == 'radio' ) {

                    objDiv.childNodes[ i ].checked = '';
                }
                if( objDiv.childNodes[ i ].type == 'text' ) {

                    objDiv.childNodes[ i ].value = '';
                }
            }
        }
    }
}

// メールマガジンテンプレート削除確認
function templateDelete( strFormName ) {

    var strMeg = "このテンプレートを削除します。\nよろしいですか？";
    if( window.confirm( strMeg ) ) {

        if( strFormName ) {
            var objForm = getFormElementByFormName( strFormName );
            document.getElementById('delflg').value='1'
            objForm.submit();
            submitDisableAll();
        }
    }
}
