
/////////////////////////////////////////////
///// NOA からの継承値 /////////////////////////

// NOA 組込みの場合は patientId() などを直接取得できるが
// 外付けツールにも出来るようあえて以下の仕組みを使う

function owner(){
    return parent().owner();
}

function patientId(){
    return parent().patientId();
}

function patientKanjiName(){
    return parent().patientKanjiName();
}

function currentDate(){
    return parent().currentDate();
}

function timeLimit(){
    return parent().timeLimit();
}

function isReadOnly(){
    return parent().isReadOnly();
}

function layouts(){
    return parent().layoutForMode(_basic_);
}

function cellForTag(tag){
    return parent().cellForTag(tag);
}

function setValueForTag(tag, dateTime, value){
    return parent().setValueForTag(tag, dateTime, value);
}
function valueForTag(tag){
    return parent().valueForTag(tag);
}

function setGroupEditorOpen(status){
    parent().setGroupEditorOpen(status);
}

function groupEditorOpen(){
    // グループ・メニューのサブ・エディターが開いていれば true を返す
    return parent().groupEditorOpen();
}

function removeCheck(){
    // 編集可・不可のボタンを操作
    parent().removeCheck();
}

function openChart(){
    parent().openChart(patientId());
}

function customJump(tag, layoutObj){
    // ### カスタマイズしたジャンプ -- for ohashi ###
    var age = ageAtDate(parent().birthDate(), parent().currentDate());

    if ((age < 50) && (layoutObj.tag == "UniversalSection.menopause")){
        // 50才以下なら閉経をスルーして最終月経へジャンプ
        return nextTag(layoutObj.tag);
    } else if ((age > 50) && (layoutObj.tag == "UniversalSection.menstrualCycle")){
        // 50才以上なら最終月経をスルーして月経血へジャンプ
        return nextTag(layoutObj.tag);
    } else {
        return layoutObj.tag;
    }
}

function nextTag(tag){
    // NOA 本文内における tag の次の tag を返す：basic ページでは basicPage.js で定義
    var found = false;
    var array = parent().layoutForMode(_basic_);
    for (num in array){
        var layoutObj = array[num];
        if (layoutObj.hitAndRun * 1) continue; // 非表示セルをスキップ
        
        if (found){
            if (owner() == "ohashi")
                return customJump(tag, layoutObj);
            
            return layoutObj.tag;
        }
        if (layoutObj.tag == tag) found = true;
    }
    return null;
}

function setCurrentTag(tag){
    parent().setCurrentTag(tag);
}
function currentTag(){
    return parent().currentTag();
}

///// NOA からの継承値 /////////////////////////
//////////////////////////////////////////////

function cellType(){
    // _mainPane:0 _toolPane:1
    return _toolPane;
}

function scrollEditor(dateTIme, tag){
    // cellEditor を見える位置にスクロール
    var elm = valueElementForTag(dateTIme, tag);
    var pos = getPosition(elm);
    window.scroll(0, pos.y - 100);
}

function openInsurance(){
    // 保険情報編集ツールを開く
    openTool("insurance.php");
}

function gotPage(answer){
    // BasicPage のデータを受取り dataCenter へ記憶
    //_initDebug(true); //##
    _debug("== showContents == "); //##
    var obj = JSON.parse(answer);
    // nameSection は GET_PAGES でも取得しているが currentDate() のレコードで上書き
    parent().setNameObj(obj.nameSection);
    parent().setAddressObj(obj.addressSection);
    parent().setBasicObj(obj.basicSection);
    parent().setMaritalObj(obj.maritalSection);
    parent().setUniversalObj(obj.universalSection);
    
    var elm = document.getElementById("contentArea");
    elm.innerHTML = "";
    
    // 受診年月日を強制的に表示
    var tbl = newTABLE(elm, "/base-table");
    var tr = newTR(tbl, "", "");
    var td = newTD(tr, "/cellLabel", "受診日"); // LABEL
    var td = newTD(tr, "/cellValue", currentDate()); // VALUE
    
    if (layouts()){
        for (num in layouts()){
            var cell = layouts()[num];
            _debug("=== "+cell.label+" ==="); //##
            
            if ((cell.hitAndRun * 1) == 0){ // 非表示セルではない
                openCell(elm, cell, currentDate(), true);
            }
        }
    }
    
    // === problemList を表示 ============
    showProblemList("problemListArea", "expand"); // problemList.js

    // 保険者番号が空欄なら保険情報編集ツールを開く
    if (openInsPage() * 1 > 0){
        var obj = valueForTag("HealthInsurance.ownerNumber");
        if (!obj.value || (trim(obj.value).length == 0)) 
            openInsurance();
    }
}

function initBasicPage(){
    // 基本情報ページを初期化
    //_initDebug(true); //##
    _debug("== initBasicPage"); //##
    
    var tools = window.top.tools;
    var elm = tools.document.getElementById("base");
    elm.innerHTML = "";
    
    // === problemList area ============
    var div = newDIV(elm, "problemListArea");

    // HEADER ==========================
    var div = newDIV(elm, "/tool-header");
    div.style.padding = "5px 0";
    // --- LEFT SIDE ---
    var dv = newDIV(div, "/left-side");
    var dv = newDIV(div, "/title-label");
    dv.innerHTML = "基本情報";
    var dv = newDIV(div, "/greenButton");
    dv.innerHTML = "保険情報";
    dv.setAttribute("onclick", "openInsurance()");
    // --- RIGHT SIDE ---
	var dv = newDIV(div, "/right-side");
    dv.style.width = "20px";
    // HELP ICON
	var img = newIMAGE(dv, "", "./help.png", "?");
	img.style.height = "18px";
    img.setAttribute("onclick", "openHelp('./basicPageHelp.html')");
    img.setAttribute("class", "expandIcon");
    
    // CONTENTS ==========================
    var div = newDIV(elm, "contentArea");
    div.style.border = "thin solid #ddd";
    
    // FOOTER ==========================
    var div = newDIV(elm, "/tool-footer");
    var sp = newSPAN(div, "/versionLabel");
    sp.innerHTML = version();
    
    // basicPage のデータをサーバへリクエスト
    get_page(owner(), patientId(), currentDate(), gotPage);
}

function version(){
    return "Ver.130917";
}
