// 2008-2-15 追加
// "All genes"を選択しているかどうか
var isAllGenesSelected = 0;

var legendType = {
    1: '#Temporal',
    2: '#Spatial',
    3: '#Brain',
    4: '#specificity'
};
    
// 凡例を別ウィンドウで表示する
function openLegendWindow(menu){

    var page = legendType[menu] || "";
    
	var wd = 600;
	var ht = 750;
	var lt = screen.availWidth - wd - 30;
	var tp = 30;

	var limitWidth  = screen.availWidth  - 50;
	var limitHeight = screen.availHeight - 50;
	if (wd > limitWidth) {
		wd = limitWidth;
	}
	if (ht > limitHeight) {
		ht = limitHeight;
	}

    var newWin = window.open("Legend.jsp" + page, "Legend", 
				"scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
	newWin.moveTo(lt, tp);
	newWin.focus();
}

// スペクトル画面を別ウィンドウで表示する
function openSpectrogram(id, array){
	
	var wd = 860;
	var ht = 800;

	var limitWidth  = screen.availWidth  - 20;
	var limitHeight = screen.availHeight - 20;
	if (wd > limitWidth) {
		wd = limitWidth;
	}
	if (ht > limitHeight) {
		ht = limitHeight;
	}

	var lt = (screen.availWidth  - wd) / 2;
	var tp = (screen.availHeight - ht) / 2;

	var url = "Spectrogram.do?categoryId=" + id + "&arrayType=" + array;
	var newWin = window.open(url, "spectrogram" + id + "_" + array, "scrollbars=yes, resizable=yes, width=" + wd + ",height=" + ht);
	newWin.moveTo(lt, tp);
	newWin.focus();
}

// 画像を拡大表示する
// 第1引数と第2引数はImageViewServletの引数に対応
// 第3引数：画像タイトル
// 2005-3-14 修正 window name "enlarge" -> image
function enlarge (page, image, title, width) {
    width = width || 460;
    window.open("Enlarge.do?title=" + title + "&page=" + page + "&image=" + image,
                "_blank",
                "scrollbars=yes, resizable=yes, menubar=no, width=" + width + " , height=420")
          .focus();
}



// Graphical search 内でクリックされた箇所の名称を、テキストボックスに記載する
// 2008-2-15 "Selected cerebellar genes"が選択されている場合のみ実行するように修正
function displayTerm(term, area) {
	// "Selected cerebellar genes"が選択されている場合のみ実行
	if (isAllGenesSelected == 0) {
		switch (area) {
			case 1 :
				document.SearchForm.searchSpatial.value = term;
				break;
			case 2 :
				document.SearchForm.searchTemporal.value = term;
				break;
			case 3 :
				document.SearchForm.searchBrainDistribution.value = term;
				break;
			case 4 :
				document.SearchForm.searchBrainSpecificity.value = term;
				break;
			default :
				// alert("エラーが発生しました。form : " + form);
		}
	}
}

function pushSearch(form, page){
    form.action = page + ".do";
    form.submit();
}


function referWindowInfo(viewmode) {
    var wd, ht, winName;
    
	switch (viewmode) {
		case 1 :
			wd = 660;
			ht = 700;
			winName = "cdIdInfo";
			break;
		case 2 :
			wd = 780;
			ht = 700;
			winName = "Info";
			break;
		case 3 :
			wd = 850;
			ht = 500;
			winName = "categoryInfo";
			break;
		case 4 :
			wd = 600;
			ht = 700;
			winName = "detailRefInfo";
			break;
		case 5 :
			wd = 660;
			ht = 700;
			winName = "cdIdInfoGeneList";
			break;        
		default :
			wd = screen.availWidth  * 4 / 5;
			ht = screen.availHeight * 4 / 5;
			winName = "default";
			break;        
	}
    
    var limitWidth  = screen.availWidth  - 50;
	var limitHeight = screen.availHeight - 50;
	if (wd > limitWidth) {
		wd = limitWidth;
	}
	if (ht > limitHeight) {
		ht = limitHeight;
	}

    var lt = (screen.availWidth  - wd) / 2;
	var tp = (screen.availHeight - ht) / 2;
    
    return {
        wd: wd,
        ht: ht,
        winName: winName,
        lt: lt,
        tp: tp
    };
}
    
// 参照系の画面を表示する。
// この関数を使用して開いたウィンドウは、ルート画面の子のウィンドウとなる。
function openReferWindow(URL, cdId, ViewMode){

    var winInfo = referWindowInfo(ViewMode);
	var wd      = winInfo.wd;
	var ht      = winInfo.ht;
	var winName = winInfo.winName;
    var lt      = winInfo.lt;
    var tp      = winInfo.tp;

	var rootWindow = getRootWindow(window, cdId);
	
	if (rootWindow != null) {
		// 外部アクセスの場合、元のCD gene information画面を更新する。
		var extRootName = "CDT_INFO_EXTERNAL_ROOT" + cdId;
		if (rootWindow.name == extRootName 
				&& winName == "cdIdInfo") {
			winName = "CDT_INFO_EXTERNAL_ROOT";
			
			newWin = rootWindow.open(URL + "?cdid=" + cdId + "&from=External", winName + cdId, 
					"scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
		} else {	
			newWin = rootWindow.open(URL + "?cdid=" + cdId, winName + cdId, 
					"scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
		}
		
		newWin.moveTo(lt, tp);
		newWin.focus();
	} else {
		// Gene Category Graph用のROOTウィンドウを検索
		var rootOriginalWindow = getRootWindowForOriginal(window);

		if (rootOriginalWindow != null) {
			newWin = rootOriginalWindow.open(URL + "?cdid=" + cdId, winName + cdId, 
					"scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
		} else {
			window.alert("Parent Window was already closed.");
		}
	}
}

// 参照系の画面を表示する。
// 外部リンクより参照した場合は、この関数を使用する。
function openReferWindowFromExternalSite(URL, cdId, ViewMode, geneId){

    var rootWindow;
    var winInfo = referWindowInfo(ViewMode);
	var wd      = winInfo.wd;
	var ht      = winInfo.ht;
	var winName = winInfo.winName;
    var lt      = winInfo.lt;
    var tp      = winInfo.tp;

    var cleanCdId = cdId;    
    var match = cdId.match(/CD\d{5}/);
    if (!!match) {
        cleanCdId = match[0];
    }
    
	if (winName == "cdIdInfoGeneList") {
		rootWindow = getRootGeneHitListWindow(window, geneId);
	}
	else {
	    rootWindow = getRootCdtInfoWindow(window, cleanCdId);
	}

    if (winName === 'cdIdInfoGeneList') {
        winName = 'CDT_INFO_EXTERNAL_ROOT';
    }

	if (rootWindow != null) {
		// 外部アクセスの場合、元のCD gene information画面を更新する。	
		newWin = rootWindow.open(URL + "?cdid=" + cdId,
                                 winName + cleanCdId, 
                                 "scrollbars=yes,resizable=yes,menubar=no,statusbar=yes,width=" + wd + ",height=" + ht);
		newWin.moveTo(lt, tp);
		newWin.focus();
		
	} else {
		window.alert("Parent CD INFO Window was already closed.");
	}
}

// 子の画面からCDTルート画面のwindowオブジェクトを取得する
// ※CDTルート画面はウインドウ名は"CDT_ROOT"、子画面も常に名前がついている
// ※CD gene information画面は"CDT_INFO_EXTERNAL_ROOT" + cdid
function getRootWindow (wnd, cdid) {
	var extRootName = "CDT_INFO_EXTERNAL_ROOT" + cdid;
	var extRootName2 = "CDT_GENE_HIT_EXTERNAL_ROOT" + cdid;

	try {
		if (wnd.name != "CDT_ROOT" 
			&& wnd.name != extRootName 
			&& wnd.name != extRootName2) {
			if (wnd.opener != null) {
				if (wnd.opener.closed) {
					return null;
				} else {
					return getRootWindow(wnd.opener, cdid);
				}
			} else {
				return null;
			}
		}
	} catch (ex) {
		return null;
	}
	return wnd;
}

// 子の画面からCDTルート画面のwindowオブジェクトを取得する
// ※CD gene information画面は"CDT_INFO_EXTERNAL_ROOT" + cdid、子画面も常に名前がついている
function getRootCdtInfoWindow (wnd, cdid) {
	var extRootName = "CDT_INFO_EXTERNAL_ROOT" + cdid;
	if (wnd.name != extRootName) {
		if (wnd.opener != null) {
			if (wnd.opener.closed) {
				return null;
			} else {
				return getRootWindow(wnd.opener, cdid);
			}
		} else {
			return null;
		}
	}
	return wnd;
}

// 2008-3-11 add
// 子の画面からCDTルート画面のwindowオブジェクトを取得する
// ※Gene Hit List画面は"CDT_GENE_HIT_EXTERNAL_ROOT" + cdid、子画面も常に名前がついている
function getRootGeneHitListWindow (wnd, geneid) {
	var extRootName = "CDT_GENE_HIT_EXTERNAL_ROOT" + geneid;
	
	if (wnd.name != extRootName) {
		if (wnd.opener != null) {
			if (wnd.opener.closed) {
				return null;
			} else {
				return getRootWindow(wnd.opener, geneid);
			}
		} else {
			return null;
		}
	}
	return wnd;
}

// 子の画面からCDTルート画面のwindowオブジェクトを取得する
// ＊CDTルート画面はウインドウ名は"CDT_ROOT"、子画面も常に名前がついている
// ＊CD gene information画面は"CDT_INFO_EXTERNAL_ROOT" + cdid
// Gene Category Graph用が外部Webサイトより表示された場合の対応
function getRootWindowForOriginal(wnd) {
	var extRootName = "CDT_INFO_EXTERNAL_ROOT";

	try {
		if (wnd.name.indexOf(extRootName) < 0) {
			if (wnd.opener != null) {
				if (wnd.opener.closed) {
					return null;
				} else {
					return getRootWindowForOriginal(wnd.opener);
				}
			} else {
				return null;
			}
		}
	} catch (ex) {
		return null;
	}
	return wnd;
}

//子ウィンドウからCDTルート画面を変更する
//CDTルート画面が存在しない場合は、自身のウィンドウを変更する
function loadToOpener (page, cdid) {
	
	var rootWindow = getRootWindow(window, cdid);
	if (rootWindow != null) {
		rootWindow.location.href=page;
		rootWindow.focus();
		
	} else {
		// Gene Category Graph用のROOTウィンドウを検索
		var rootOriginalWindow = getRootWindowForOriginal(window);

		if (rootOriginalWindow != null) {
			rootOriginalWindow.location.href=page;
			rootOriginalWindow.focus();
		} else {
			window.alert("Parent Window was already closed.");
		}
	}
}

// エラー系の画面でWindowの最終処理をする。
// 子ウィンドウで呼ばれたときは、CDTルート画面にフォーカスを当て、
// 子ウィンドウを閉じる。
// CDTルート画面から呼ばれたときは、CDTルート画面にフロント画面を描画する。
function finalizeWindow () {
	var rootWindow = getRootWindow(window);
	if (rootWindow != null) {
		if (rootWindow == window) {
			window.location.href = "./";
			
		} else {
			window.opener.focus();
			window.close();
		}
	} else {
		// window.alert("Parent Window was already closed.");
		// そのままウィンドウを閉じるように修正
		window.close();
	}
}

// 2008-3-11 add
// エラー画面で表示するボタン名を設定する。
function getErrorButtonName() {
	var rootWindow = getRootWindow(window);
	if (rootWindow != null) {
		if (rootWindow == window) {
			document.error.foward.value = "Top";
		} else {
			document.error.foward.value = "Close";
		}
	} else {
		document.error.foward.value = "Close";
	}
}

// 画像を別ウィンドウで開く ver.2 (About CDT用）
function largeImageViewer() {
	window.open("Fig3.jsp", "", "width=480,height=730,menubar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes");
}


///////////////////////////////////////////////
//	2004-12-24 追加
//  サブウィンドウを表示する、
//      引数、URL
//      返り値、なし
///////////////////////////////////////////////
function display(url){
	var wd = 550;
        var ht = 600;
        var lt = screen.availWidth - wd -30;
        var tp = 30;

        var limitWidth  = screen.availWidth  - 50;
        var limitHeight = screen.availHeight - 50;
        if (wd > limitWidth) {
                wd = limitWidth;
        }
        if (ht > limitHeight) {
                ht = limitHeight;
        }

        newWin = window.open(url, "Whats_New", "scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
        newWin.moveTo(lt, tp);
        newWin.focus();
}

// 2005-2-15 追加 ISHMarkerGenes画像を表示する
function showISHMarkerGenes() {
	window.open("ISHMarkerGenes.jsp", "ISHMargerGenes", "width=700,height=650,menubar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes");
}

// 2005-2-15 追加 MouseBrains画像を表示する
function showMouseBrains() {
	window.open("MouseBrains.jsp", "MouseBrains", "width=650,height=550,menubar=no,toolbar=no,status=no,scrollbars=yes,resizable=yes");
}


// 2005-2-15 追加 Staining Abbreviationを表示する
function openStainingAbbr(){
    _openAbbrWindow(650, 500, "ReferStainingAbbr.do");
}

// 2005-3-11 追加 ISH Abbreviationを表示する
function openISHAbbr(){
    _openAbbrWindow(500, 750, "ReferISHAbbr.do");
}

function _openAbbrWindow (wd, ht, url) {
	var lt = screen.availWidth - wd - 30;
	var tp = 30;

	var limitWidth  = screen.availWidth  - 50;
	var limitHeight = screen.availHeight - 50;
	if (wd > limitWidth) {
		wd = limitWidth;
	}
	if (ht > limitHeight) {
		ht = limitHeight;
	}

	var newWin = window.open(url,
                             "SubRegionAbbreviation",
                             "scrollbars=yes, resizable=yes, width=" + wd + ",height=" + ht);
	newWin.moveTo(lt, tp);
	newWin.focus();
}

//////////////////////////////////////////////////////////////////////////////////
// 2005-3-10 追加
// Developmental Mouse Brain Atlas用のウィンドウを開く
// この関数を使用して開いたウィンドウは、ルート画面の子のウィンドウとなる。
//////////////////////////////////////////////////////////////////////////////////
function openDevelopmentalBrain(URL, DaId, Stage){

	var wd = 500;
	var ht = 650;
	var winName = DaId + Stage;
	
	var lt = (screen.availWidth  - wd) / 2;
	var tp = (screen.availHeight - ht) / 2;

	var rootWindow = getRootWindow(window);
	if (rootWindow != null) {
		newWin = rootWindow.open(URL + "?daId=" + DaId + "&stage=" + Stage, winName,"scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
		newWin.moveTo(lt, tp);
		newWin.focus();
		
	} else {
		window.alert("Parent Window was already closed.");
	}
}

// 印刷用画面を表示する
// 第1引数：アクションフォーム
// 2006-1-27 新規追加
function showPrintWindow (address, winName) {
	var rootWindow = getRootWindow(window);
	
	if (rootWindow != null) {
		myWin = rootWindow.open(address, winName, "scrollbars=yes, status=yes, resizable=yes, menubar=yes, width=850, height=500");
		myWin.focus();
	} else {
		window.alert("Parent Window was already closed.");
	}
}

///////////////////////////////////////////////
// Show "New" icon certain period
// 2006-12-21 add
///////////////////////////////////////////////
function newMark(y, m, d) {
	oldDay = new Date(y + "/" + m + "/" + d);
	newDay = new Date();
	var showDay = 30;
	
	n = (newDay - oldDay) / (1000*60*60*24);
	if (n < showDay) {
		document.write("<img src=\"images/new.gif\" alt=\"new\">");
	}
}

// // 処理実行の確認を行う
// function confirmDeleteMyList(form, page, action_name) {
// 	msg = "Do you delete all records on My List?";
// 	flg = confirm(msg);

// 	if (flg) {
// 		form.action = page + ".do?action=" + action_name;
// 		form.submit();
// 	}
// }

///////////////////////////////////////////////
//	2007-3-12 追加
//  詳細情報のサブウィンドウを表示する
//      引数、URL
//      返り値、なし
///////////////////////////////////////////////
function display_detail(url){
		var wd = 550;
        var ht = 600;
        var lt = screen.availWidth - wd -30;
        var tp = 30;

        var limitWidth  = screen.availWidth  - 50;
        var limitHeight = screen.availHeight - 50;
        if (wd > limitWidth) {
                wd = limitWidth;
        }
        if (ht > limitHeight) {
                ht = limitHeight;
        }

        newWin = window.open(url, "detail_info", "scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
        newWin.moveTo(lt, tp);
        newWin.focus();
}

///////////////////////////////////////////////
//	2008-1-23 追加
//  詳細情報画面から、CD gene information画面を表示する。
//      引数、URL
//      返り値、なし
///////////////////////////////////////////////
function displayCdInfoFromDetailView(url) {
		var wd = 660;
        var ht = 700;
      	var lt = screen.availWidth - wd -30;
        var tp = 30;

        var limitWidth  = screen.availWidth  - 50;
        var limitHeight = screen.availHeight - 50;
        if (wd > limitWidth) {
                wd = limitWidth;
        }
        if (ht > limitHeight) {
                ht = limitHeight;
        }

        newWin = window.open(url, "cd_info_from_detail", "scrollbars=yes, resizable=yes, menubar=no, width=" + wd + ", height=" + ht);
        newWin.moveTo(lt, tp);
        newWin.focus();
}

