//==============================================================================
//  モジュール名    windows.js
//  機能概要        ブラウザから開くウィンドウを管理する。
//  作成者          天晴）竹澤
//  作成日          2006/06/01
//  変更者      
//  最終変更日
//  変更履歴    
//==============================================================================
//==============================================================================
// コンストラクタ
//==============================================================================
function WindowManager() 
{
    WindowManager.WinList = new Array();
}

//==============================================================================
// コンストラクタ
//==============================================================================
function WMField() 
{
    WMField.id = ''                 // ID
    WMField.WinForm = null          // 親フォーム
    WMField.InObjA = null           // 入力先オブジェクト
    WMField.InObjB = null           // 入力先オブジェクト
    WMField.ResultObjA = null       // 返却先オブジェクト
    WMField.ResultObjB = null       // 返却先オブジェクト
    WMField.ResultObjC = null       // 返却先オブジェクト
    WMField.ResultObjD = null       // 返却先オブジェクト
    WMField.WinHandle = null        // 子ウィンドウハンドラ
}

//==============================================================================
// ウィンドウをオープンする。
//==============================================================================
WindowManager.open = function open_window(objForm,
                                          objInObjA,
                                          objInObjB,
                                          objResultObjA,
                                          objResultObjB,
                                          objResultObjC,
                                          objResultObjD,
                                          strUrl,
                                          strId,
                                          strParam)
{   
    var oWin = null;                 // Windowハンドラ（オープン用）
    var oWinChk = null;              // Windowハンドラ（チェック用）
    var oWMField= null;              // Window管理フィールド
    var sQryString = '';
    
    // オープンチェック用ウィンドウインスタンス取得
    oWinChk = WindowManager.WinList[strId];
        
    // ウィンドウオープンチェック
    if (typeof(oWinChk) != 'undefined' && 
        oWinChk.closed == false) 
    {          
        // フォーカス移動
        oWinChk.focus();
        return true;
    }    
    
    // INパラメータ取得
    if (objInObjA != null) {
        var obj1 = objInObjA;
        sQryString = 'p1=' + obj1.value;
    }
    if (objInObjB != null) {
        var obj2 = objInObjB;
        sQryString = sQryString + '&p2=' + obj2.value;
    }
    if (sQryString != '') {
        strUrl = strUrl + "?" + sQryString;
    }
    
    // ウィンドウオープン
    oWin = window.open(strUrl, strId, strParam);
    if (oWin != null)
    { 
        oWMField = new WMField();
        oWMField.id = strId;
        oWMField.WinForm = objForm;
        oWMField.InObjA = objInObjA;
        oWMField.InObjB = objInObjB;
        oWMField.ResultObjA = objResultObjA;
        oWMField.ResultObjB = objResultObjB;
        oWMField.ResultObjC = objResultObjC;
        oWMField.ResultObjD = objResultObjD;
        oWMField.WinHandle = oWin;
        WindowManager.WinList[oWMField.id] = oWMField;
    } else {
        // ポップアップブロッカー対応
        alert('ポップアップブロッカーを無効にしてください。');
        //終了
        return false;
    }
    
    return true;
}

//==============================================================================
// ウィンドウをクローズする。
//==============================================================================
WindowManager.close = function close_window(oWin)
{
    if (oWin) {
        var handle = window.open('', oWin.name);
        handle.close();
    }
    return true;
}

//==============================================================================
// ウィンドウをクローズする。
//==============================================================================
WindowManager.allclose = function close_window_all()
{
    var sWin = null;
    for (sWin in WindowManager.WinList) {
        oWin = WindowManager.WinList[sWin];
        WindowManager.close(oWin.WinHandle);
    }
    return true;
}

//==============================================================================
// 親ウィンドウを取得する
//==============================================================================
WindowManager.GetForm = function get_form(strId)
{
    return WindowManager.WinList[strId].WinForm;
}

//==============================================================================
// 返却先オブジェクトを取得する。
//==============================================================================
WindowManager.GetInObjectA = function get_InobjA(strId)
{
    return WindowManager.WinList[strId].InObjA;
}
WindowManager.GetInObjectB = function get_InobjB(strId)
{
    return WindowManager.WinList[strId].InObjB;
}
WindowManager.GetResultObjectA = function get_resultobjA(strId)
{
    return WindowManager.WinList[strId].ResultObjA;
}
WindowManager.GetResultObjectB = function get_resultobjB(strId)
{
    return WindowManager.WinList[strId].ResultObjB;
}
WindowManager.GetResultObjectC = function get_resultobjC(strId)
{
    return WindowManager.WinList[strId].ResultObjC;
}
WindowManager.GetResultObjectD = function get_resultobjD(strId)
{
    return WindowManager.WinList[strId].ResultObjD;
}
//==============================================================================
// 返却先オブジェクトに設定する。
//==============================================================================
WindowManager.SetResultObject = function set_resultobj(objParentForm, strId, strValue1, strValue2, strValue3, strValue4)
{
    var formObj = null;
    var strFldName = null;
 
     if (strValue1 != null) {
        var obj1 = objParentForm.WindowManager.GetResultObjectA(strId);
        obj1.value = strValue1.value;
        obj1.selectedIndex  = strValue1.value;
    }
    if (strValue2 != null) {
        var obj2 = objParentForm.WindowManager.GetResultObjectB(strId);
        obj2.value = strValue2.value;
        obj2.selectedIndex  = strValue2.value;
    }
    if (strValue3 != null) {
        var obj3 = objParentForm.WindowManager.GetResultObjectC(strId);
        obj3.value = strValue3.value;
        obj3.selectedIndex  = strValue3.value;
    }
    if (strValue4 != null) {
        var obj4 = objParentForm.WindowManager.GetResultObjectD(strId);
        obj4.value = strValue4.value;
        obj4.selectedIndex  = strValue4.value;
    }
    
    //サブミットフラグがあったら、親画面をサブミット
    formObj = objParentForm.document.forms[0];
    for (var i=0; i<formObj.elements.length; i++) { 
        strFldName = formObj.elements[i].name;
        strFldName = strFldName.toLowerCase();
        if (strFldName.indexOf("hdnsubmitflg") > -1) {
            formObj.submit();
            break;
        }
    }

    window.close();
    
    objParentForm.focus();
}

//==============================================================================
// 戻る
//==============================================================================
WindowManager.go_back = function go_back(intBack) {
    if (intBack < -1) {
        window.history.go(intBack);
    } else {
        window.history.back();
    }
}

//==============================================================================
// 進む
//==============================================================================
WindowManager.go_forward = function go_forward(intForward) {
    if (intForward > 1) {
        window.history.go(intForward);
    } else {
        window.history.forward();
    }
}

//==============================================================================
// インスタンス生成
//==============================================================================
new WindowManager();


