
/////////////////////////
///// カルテからの継承値 ///

function _noa(){
    // noa() と window.top.noa がバッティングするので _noa() を使う
    if (window.opener && (window.opener.name == "noa")){
        return window.opener;
    } else if (window.opener && (window.opener.name == "tools")){
        return window.opener.top.noa;
    } else if (window.top && window.top.noa){
        return window.top.noa;
    } else {
        //alert("ERROR *** archiveer.js: window.opener としての NOA が見つかりません");
        return null;
    }
}

var _patientId;
function patientId(){
    return (_noa()) ? _noa().patient_id() : null;
}

function patientName(){
    return (_noa()) ? _noa().patientKanjiName() : null;
}

///// カルテからの継承値 ///
/////////////////////////

///////////////////////////////////
/// localStorage による処理 /////////

var _largeSize = 250;
var _middleSize = 80;
var _smallSize = 30;

function setThumbnailSize(elm){
    // サムネイル・サイズを変更
    if (elm.value == "大")
        window.localStorage["pictureThumbNailSize"] = _largeSize;
    else if (elm.value == "中")
        window.localStorage["pictureThumbNailSize"] = _middleSize;
    else
        window.localStorage["pictureThumbNailSize"] = _smallSize;
    
    // サムネイルを再表示
    getImages();
}

function thumbNailSize(){
    // サムネイル・サイズを返す
    var size = window.localStorage["pictureThumbNailSize"];
    return (size) ? size : _middleSize;
}

function thumbNailSizeName(){
    // サムネイル・サイズの名前を返す
    var size = thumbNailSize() * 1;
    switch(size){
        case _largeSize: return "大";
        case _smallSize: return "小";
        default: return "中";
    }
}

/// localStorage による処理 /////////
///////////////////////////////////



///////////////////////////
/// Ajax による処理 /////////

function gotImages(){
	if ((xmlHttpObject.readyState == 4) && (xmlHttpObject.status == 200)){
		var value = xmlHttpObject.responseText;
		//alert("gotImages ===\n"+value);//##
        
		var array = value.split("<SEPARATOR>");
		if (array.length > 1){
            var obj = JSON.parse(array[1]);
            
            showIconsVertical(obj.path, obj.files);
        }
		hideMessage("_message");
	} else
		showMessage("_message", "サーバで処理中です ...");
}
function getImages(){
    // 画像ファイルのリストをサーバへリクエスト
	xmlHttpObject = createXMLHttpRequest(gotImages);
	if (xmlHttpObject){
        // encodeURI は '&' をエンコードしてくれないのでこちら側でエンコード
        // ### send() に与える文字列:st 全体をエンコードしては駄目 ###
        var st = "key=GET_DIRECTORY";
        st += "&container=" + patientId();
        
        xmlHttpObject.open("POST", "pictServer.php", true);
        xmlHttpObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		//alert("getImages ====\n"+st); //##
        xmlHttpObject.send(st);
	}
}

function removeImage(path, filename){
    // filename を削除
    if (! confirm(filename + "　の画像を削除します")){
        return;
    }
    
	xmlHttpObject = createXMLHttpRequest(gotImages);
	if (xmlHttpObject){
        // encodeURI は '&' をエンコードしてくれないのでこちら側でエンコード
        // ### send() に与える文字列:st 全体をエンコードしては駄目 ###
        var st = "key=REMOVE_IMAGE";
        st += "&container=" + patientId();
        st += "&value=" + path + "/" + filename;
        
        xmlHttpObject.open("POST", "pictServer.php", true);
        xmlHttpObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		//alert("removeImage ====\n"+st); //##
        xmlHttpObject.send(st);
	}
}

/// Ajax による処理 /////////
///////////////////////////


function showIconsVertical(path, files){
	// 添付ファイルをサムネールとして縦横表示
	var div = document.getElementById("thumbNailGallery");
	div.innerHTML = "";
    div.setAttribute("onclick", "toggleFormArea()");
    var ul = newUL(div, "");
    ul.style.paddingLeft = "0";
    ul.style.marginTop = "5px";
    ul.style.marginLeft = "3px";
	
	// image ファイル名の配列を生成
	//var path = "/NOA_ARCHIVE/"+patientId()+"/";
	var filename;
	for (num in files){
		filename = files[num];
		if (filename.charAt(0) == ".") continue;

        // image のクリックで別パネルに image 表示
        makeImagePane(ul, path, filename);
	}
}

function makeImagePane(ul, path, file){
    // path からイメージを生成し elm へ表示
    var url = path + "/" + file;
    var sfx = suffix(file);
    var height = thumbNailSize();
    
    if ((sfx == "pdf") || (sfx == "PDF")){
        var img = "<IMG SRC=pdf.jpg HEIGHT=" + height + ">";
    } else if (isImageFile(url)){
        var img = "<IMG SRC="+url+" HEIGHT=" + height + ">";
    } else if (isMovieFile(url)){
        var img = "<IMG SRC=movie.jpg HEIGHT=" + height + ">";
    } else if (sfx == "zip"){
        var img = "<IMG SRC=zip.png HEIGHT=" + height + ">";
    } else if (sfx == "txt"){
        var img = "<IMG SRC=text.png HEIGHT=" + height + ">";
    } else {
        var img = "<IMG SRC=file.png HEIGHT=" + height + ">";
    }
    
    // === サムネイルを表示 ========================
    var li = newLI(ul, "");
    li.style.listStyle = "none";
    var sp = newSPAN(li, "");
    sp.innerHTML = img;
    sp.setAttribute("onclick", "showContents('"+url+"')");
    sp.setAttribute("class", "thumb-nail"); 

    // カルテに埋め込むためのタグを生成
    //var path = "/NOA_ARCHIVE/"+patientId()+"/";
    var tag = "<IMG:" + url + ">";
    li.addEventListener("dragstart",
                        function(ev) {
                        var dt = ev.dataTransfer;
                        dt.setData("text/plain", tag);
                        return true;
                        },
                        false);
    
    // === 画像削除アイコンとファイル名を表示 ==========
    if (height * 1 > 90){
        var dv = newDIV(li, "");
        var sp = newSPAN(dv, "");
        sp.style.paddingLeft = "5px";
    } else { // サムネイルが小さい場合はファイル名を同じ行に表示
        var dv = li;
        var sp = newSPAN(li, "");
        sp.style.paddingLeft = "5px";
    }
    // イメージを削除ボタン
    var img = newIMAGE(sp, "", "./remove-field.png", "");
    img.setAttribute("onclick", "removeImage('"+path +"','"+file+"')");
    img.style.height = "12px";
    // ファイル名
    var sp = newSPAN(dv, "");
    sp.style.paddingLeft = "5px";
    sp.innerHTML = file;
    sp.style.fontSize = "9pt";
}

function showContents(url){
	// url 内容を別ウインドーに表示
	var sfx = suffix(url);
	if (sfx == "zip"){
		if (!confirm("この圧縮ファイルを、ダウンロード・フォルダーへ解凍しますか")) return;
    }

	window.open(url, url, "width=600,height=600");
}

function file_append(){
	// ファイル選択ボタンを増やす
	var dv = document.getElementById("file");
	var ub = newUploadBUTTON(dv, "", "files[]");
	newBR(dv);
}

function upload(){
    // form を submit
    var submitButton = document.getElementById("uploadForm");
    submitButton.submit();
    
    setTimeout(getImages, 3000);
}

function pictureHelp(){
    // ヘルプを開く
	window.open("./pictureHelp.html","Help"
				,"width=450,height=700,scrollbars=yes,resizable=yes");
}

function closePicture(){
	var elm = document.getElementById("base");
	elm.innerHTML = "";
}

function toggleFormArea(){
    // 読込操作エリアをトグル式に開閉
	var title = document.getElementById("formAreaTitle");
	var elm = document.getElementById("formArea");
    var status = (elm.style.display == "none") ? true : false;
    
    if (status){
		title.style.display = "none";
		elm.style.display = "block"; // 表示する
    } else {
		title.style.display = "block"; // 表示する
		elm.style.display = "none";
    }
}

function initPicture(){
	// テンプレートで FRONT のヘッダー部分を生成
	var elm = document.getElementById("base");
	elm.innerHTML = "";
    
    // ===== HEADER ===================
    var div = newDIV(elm, "title-bar");
	var tbl = newTABLE(div, "base-table");
	tbl.style.fontSize = "10pt";
	var tr = newTR(tbl, "", "");
    tr.setAttribute("class", "header");
    // === LEFT SIDE ===
    var td = newTD(tr, "left-side", "");
    // CLOSE ボタン
    var sp = newSPAN(td, "");
    sp.style.paddingRight = "5px";
    var im = newIMAGE(sp, "", "./close.png", "close");
	im.setAttribute("onclick", "closePicture()");
	im.style.height = "13px";
	im.style.verticalAlign = "middle";
	// カルテID・氏名
    var sp = newSPAN(td, "patientIdArea");
    sp.innerHTML = patientId();
    sp.style.paddingRight = "10px";
    var sp = newSPAN(td, "");
    sp.innerHTML = patientName();
    // === RIGHT SIDE ===
	var td = newTD(tr, "right-side", "");
    // === サムネイル・サイズ変更 ===
    var sp = newSPAN(td, "");
    sp.style.fontSize = "9pt";
    sp.innerHTML = "サムネイル";
    // popup
    var sp = newSPAN(td, "");
    sp.style.paddingRIght = "5px";
    var array = ["大","中","小"];
    var pm = makePopupMenu(sp, "", array, thumbNailSizeName());
    pm.setAttribute("onchange", "setThumbnailSize(this)");
	// ヘルプ・ボタン
	var im = newIMAGE(td, "", "./Help.png", "?");
	im.setAttribute("onclick", "pictureHelp()");
	im.style.height = "18px";
	im.style.verticalAlign = "middle";
    
    // ===== CONTENTS ===================
    // --- 画像読込バーを生成
    var div = newDIV(elm, "formAreaTitle");
    div.setAttribute("onclick", "toggleFormArea()");
    //    div.style.display = "none";
    var dv = newDIV(div, "");
    dv.innerHTML = "画像読込をする";
	dv.setAttribute("class", "left-bar");
    var dv = newDIV(div, "");
    dv.innerHTML = version();
	dv.setAttribute("class", "right-bar");
    var dv = newDIV(div, "");
	dv.setAttribute("class", "clear-bar");
    
    // --- ギャラリーを生成
    var div = newDIV(elm, "formArea");
    if (patientId()){
        var dv = newDIV(div, "");
        
        // === FORM を生成 =============================
        var fm = newFORM(dv, "pictServer.php"); // submit で起動される URL
        fm.setAttribute("id", "uploadForm");
        // ### iframe を使うにはここがキモ ###
        fm.setAttribute("target", "iframeElement"); // iframe を指定
        
        // === ファイル選択ボタン ========================
        var dv = newDIV(fm, "file");
        var bt = newUploadBUTTON(dv, "imageFile", "files[]");
        // more FILES
        var dv = newDIV(fm, "");
        var a = newA(dv, "ファイルをもうひとつ選択", "#", "");
        a.setAttribute("onclick", "file_append()");
        a.style.fontSize = "9pt";

        // === 転送データのコンテナー =====================
        var filename = todayAndTimeId();
        // key
        var fd = newFIELD(fm, "key", "", "", "SAVE_IMAGE");
        fd.setAttribute("NAME", "key"); // form で送られるパラメータ
        fd.setAttribute("type", "hidden");
        // patientId
        var fd = newFIELD(fm, "container", "", "", patientId());
        fd.setAttribute("NAME", "container"); // form で送られるパラメータ
        fd.setAttribute("type", "hidden");
        // imageId
        var fd = newFIELD(fm, "imageId", "", "", filename);
        fd.setAttribute("NAME", "imageId"); // form で送られるパラメータ
        fd.setAttribute("type", "hidden");
        
        // === アップロード・ボタン =======================
        // ### iframe を使うにはここがキモ ###
        // form を見せない形で処理するため submit-button 機能を別に作成
        var dv = newDIV(div, "");
        var bt = newBUTTON(dv, "", "画像読込み");
        bt.setAttribute("onclick", "upload()");
        
        // === 画像リクエスト・ボタン =====================
        var bt = newBUTTON(dv, "", "画像表示");
        bt.setAttribute("onclick", "getImages()");
        
        // === データ戻り先として iframe を作成 ===========
        // ### iframe を使うにはここがキモ ###
        var dv = newDIV(div, "");
		dv.style.display = "none"; // 表示しない
        var fr = newIFRAME(dv, "iframeElement");
    } else {
        var dv = newDIV(div, "");
        dv.innerHTML = "カルテを開いてからやり直してください";
        dv.style.color = "#b86125";
        return;
    }

    // === 画像表示エリア ===============
    var div = newDIV(elm, "thumbNailGallery");
    div.style.border = "thin solid #ccc";

    // 画像ギャラリーを表示
    getImages();
}

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


