<!--
/*
このファイルの中身は、NTT オープンソースライセンス　バージョン 1.0（「本
契約」という）の適用を受けます。
本契約を遵守しない限り、このファイルを使用してはなりません。
本契約のコピーは、次のＵＲＬから入手できます。
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

本契約に基づき頒布されるソフトウェアは、現状のまま、明示又は黙示のあらゆ
る種類の保証なしで、頒布されます。本契約に基づく権利及び制限を律する特定
の文言については、本契約を参照してください。

「オリジナルコード」は、 NTT Cyber Space Laboratories Code です。 
「オリジナルコード」の「初期開発者」は、日本電信電話株式会社です。  
日本電信電話株式会社により創作された部分は、Copyright (C) 2004 
日本電信電話株式会社 です。
全ての権利が留保されます。 
「コントリビュータ」：_____________________________________ 


The contents of this file are subject to the NTT Opensource License
Version 1.0 (the License); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

Software distributed under the License is distributed on an AS IS
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is NTT Cyber Space Laboratories Code .

The Initial Developer of the Original Code is NIPPON TELEGRAPH AND 
TELEPHONE CORPORATION.
Portions created by the NIPPON TELEGRAPH AND TELEPHONE CORPORATION 
are Copyright (C) 2004 NIPPON TELEGRAPH AND TELEPHONE CORPORATION. 
All Rights Reserved.

Contributor(s) ______________________________________.
*/
//-->

//
//	LMSUI
//	変更履歴
//		2004.02.01	新規作成
//

/**
 * 初期化を行う。本メソッドはボタン、もしくは目次作成の(xslが出力した)htmlの
 * body#onloadから呼び出される。
 */

var next_url;
function LMSUI_NavInitialize()
{
	next_url = "";
	// 呼び出し元の画面名を取得する
	var	selfFrameName = LMSUI_NavGetSelfFrameName();

	// メインのフレームを取得する
	var	mainFrame = LMSUI_NavGetMainFrame();

	// 呼び出し元がボタンフレームだった場合
	if (selfFrameName == "Button") {

		// 初期化処理(前半)を行う
		LMSUI_NavInitializePre();

		// 目次フレームが可視状態の場合は
		if (LMSUI_NavIsVisibleContentsMenu()) {
			// 目次フレームのURLを「目次作成」に設定する
			LMSUI_NavGetContentsMenuFrame().document.location.href = mainFrame.g_engineURL + "?action_id=scorm.makeContentsMenu";
		}
		// 目次フレームが不可視状態の場合は
		else {
			// SCOのURLが有効な場合は
		}

		// 目次ポップアップが作成済みで
		if (mainFrame.parent.g_contentsMenuPopupWindow != null) {
			// 閉じられていない場合は
			if (!mainFrame.parent.g_contentsMenuPopupWindow.closed) {
				// reloadを行い、目次の更新を行う
				mainFrame.parent.g_contentsMenuPopupWindow.document.location.href = mainFrame.g_engineURL + "?action_id=scorm.makeContentsMenu";
			}
		}

		// 初期化処理(後半)を行う
		LMSUI_NavInitializePost();
	}
	// 呼び出し元が目次フレーム(目次ポップアップ)だった場合
	else if (selfFrameName == "ContentsMenu") {
		// 初期化処理(前半)を行う
		LMSUI_NavInitializePre();

		// 自分自身がポップアップでない場合(目次フレームの場合)
		if (!LMSUI_NavIsPopup()) {
			// SCOのURLが有効な場合は
			if (mainFrame.g_SCOURL != null) {
				// SCO画面をSCOのURLに設定する
				next_url = mainFrame.g_SCOURL;
				LMSUI_NavGetSCOFrame().location.href = next_url;
			}
		}

		// 初期化処理(後半)を行う
		LMSUI_NavInitializePost();
	}
}

function LMSUI_LagNuv(){
	if(next_url != ""){
		// URL解析その１ プロトコル解析
		// URL解析その２ プロトコル解析
		var buf = next_url.split("//");
		if(buf.length == 3){
			next_url = "/" + buf[2];
		}
		LMSUI_NavGetSCOFrame().document.location.href = next_url;
	}else if(parent.ContentsMenu.next_url != ""){
		next_url = parent.ContentsMenu.next_url;
		var buf = next_url.split("//");
		if(buf.length == 3){
			next_url = "/" + buf[2];
		}
		LMSUI_NavGetSCOFrame().document.location.href = next_url;
	}
}


/**
 * 終期化を行う。本メソッドはボタン、もしくは目次作成の(xslが出力した)htmlの
 * body#onunloadから呼び出される。
 */
function LMSUI_NavTerminate()
{
	// 呼び出し元の画面名を取得する
	var	selfFrameName = LMSUI_NavGetSelfFrameName();

	// 呼び出し元がボタンフレームだった場合
	if (selfFrameName == "Button") {
		// 終期化処理(前半)を行う
		LMSUI_NavTerminatePre();
		// 終期化処理(後半)を行う
		LMSUI_NavTerminatePost();
	}
	// 呼び出し元が目次フレーム(目次ポップアップ)だった場合
	else if (selfFrameName == "ContentsMenu") {
		// 終期化処理(前半)を行う
		LMSUI_NavTerminatePre();
		// 終期化処理(後半)を行う
		LMSUI_NavTerminatePost();
	}
}

/** ボタン2重押下防止 */
var	g_buttonPushed = false;

/**
 * ボタン及び目次選択時の画面遷移処理を行う
 *
 * @param	command		コマンドを指定する
 * @param	activityID	アクティビティIDを指定する。本パラメータはcommandが"Choice"の時のみ指定する。
 */
function LMSUI_NavNavigate(command, activityID)
{
	// 既にボタンもしくは目次が選択済みの場合
	if (LMSUI_NavGetButtonFrame().g_buttonPushed) {
		return;
	}

	// ボタン押下済み
	LMSUI_NavGetButtonFrame().g_buttonPushed = true;

	// SCOからのナビゲーションを無効に設定する
	LMSUI_NavGetMainFrame().parent.frames.API_1484_11._setIgnoreSCONavigation(true);

	// SCOのフレームを取得する
	var SCOFrame = LMSUI_NavGetSCOFrame();

	// SCOフレームのbody#unloadを発生させる
	SCOFrame.document.open();
	SCOFrame.document.close();

	// mainフレームへ設定する次のナビゲーションコマンドのscriptを作成する
	var script = "setMainLocation('" + command + "', ";

	var script2 = "setMainLocation('SuspendAll',null);";

	// コマンドが"Choice"だった場合は、
	if (command == "Choice") {
		// "ActivityID"パラメータに指定されたActivityIDを設定する
		script += "'" + activityID + "'";
	}
	else {
		script += "null";
	}

	script += ");";

	// SCOフレームの(body#onunloadで発生した)Terminate関数が終了するのを待機する
	LMSUI_NavGetMainFrame().parent.frames.API_1484_11._waitForFinish(script,script2);
}

/**
 * "Previous"ボタン押下処理
 */
function LMSUI_NavPrevious()
{
	// ボタンフレームから呼ばれていたら
	var	selfFrameName = LMSUI_NavGetSelfFrameName();
	if (selfFrameName == "Button") {
		document.open();
		document.close();
	}

	LMSUI_NavNavigate("Previous", null);
}

/**
 * "Continue"ボタン押下処理
 */
function LMSUI_NavContinue()
{
	// ボタンフレームから呼ばれていたら
	var	selfFrameName = LMSUI_NavGetSelfFrameName();
	if (selfFrameName == "Button") {
		document.open();
		document.close();
	}
	LMSUI_NavNavigate("Continue", null);
}

/**
 * "Exit"ボタン押下処理
 */
function LMSUI_NavExit()
{
	LMSUI_NavNavigate("Exit", null);
}

/**
 * "ExitAll"ボタン押下処理
 */
function LMSUI_NavExitAll()
{
	LMSUI_NavNavigate("ExitAll", null);
}

/**
 * "SuspendAll"ボタン押下処理
 */
function LMSUI_NavSuspendAll()
{
	LMSUI_NavGetMainFrame().parent.frames.API_1484_11.navSusFlag = true;
	LMSUI_NavNavigate("SuspendAll", null);
}

/**
 * "Choice"ボタン押下処理
 *
 * @param	activityID	アクティビティIDを指定する
 */
function LMSUI_NavChoice(activityID)
{
	LMSUI_NavNavigate("Choice", activityID);
}

/**
 * ポップアップウィンドウを作成する
 *
 * @param	url			ポップアップウィンドウのURLを指定する
 * @param	name		ポップアップウィンドウの名称を指定する
 * @param	features	ウィンドウのスタイルを指定する。nullを指定した場合はデフォルトのスタイルを使用する。
 * @return	作成したポップアップウィンドウのウィンドウハンドルを返却する
 */
function LMSUI_NavOpenWindow(url, name, features)
{
	// メインのフレームを取得する
	var	mainFrame = LMSUI_NavGetMainFrame();

	// ウィンドウのスタイルが指定されていない場合は
	if (features == null) {
		// デフォルトのウィンドウスタイルを設定する
		features = mainFrame.g_popupWindowFeatures;
	}

	// ポップアップウィンドウを作成する
	return mainFrame.openWindow(url, name, features);
}

/**
 * 目次ポップアップウィンドウ作成処理
 *
 * @param	features	ウィンドウのスタイルを指定する。nullを指定した場合はデフォルトのスタイルを使用する。
 * @return	作成した目次ポップアップウィンドウのウィンドウハンドルを返却する
 */
function LMSUI_NavOpenContentsMenuWindow(features)
{
	// メインのフレームを取得する
	var	mainFrame = LMSUI_NavGetMainFrame();

	// 目次ポップアップのURLを作成する
	var	url = mainFrame.g_engineURL + "?action_id=scorm.makeContentsMenu";

	// ウィンドウのスタイルが指定されていない場合は
	if (features == null) {
		// デフォルトのウィンドウスタイルを設定する
		features = mainFrame.g_contentsMenuWindowFeatures;
	}

	// 目次ポップアップウィンドウを作成する
	var	popup = mainFrame.openWindow(url, "LMSUI_PopupContentsMenu", features);

	// 目次ポップアップウィンドウのウィンドウハンドルを設定する
	mainFrame.parent.g_contentsMenuPopupWindow = popup;

	// 作成した目次ポップアップウィンドウのウィンドウハンドルを返却する
	return popup;
}

/**
 * メイン画面のフレームオブジェクトを取得する
 */
function LMSUI_NavGetMainFrame()
{
	// 自分自身がポップアップウィンドウの場合は
	if (LMSUI_NavIsPopup()) {
		// opener(=メイン画面のフレームオブジェクト)を返却する
		return opener;
	}

	// 自分自身がポップアップウィンドウでない場合は、親を返却する
	return parent;
}

/**
 * ボタンフレームを取得する
 */
function LMSUI_NavGetButtonFrame()
{
	return LMSUI_NavGetMainFrame().frames.Button;
}

/**
 * 目次フレームを取得する
 */
function LMSUI_NavGetContentsMenuFrame()
{
	return LMSUI_NavGetMainFrame().frames.ContentsMenu;
}

/**
 * SCOフレームを取得する
 */
function LMSUI_NavGetSCOFrame()
{
	return LMSUI_NavGetMainFrame().frames.SCO;
}

/**
 * 自分自身のフレーム名称を取得する
 */
function LMSUI_NavGetSelfFrameName()
{
	return document.body.getAttribute("_lmsname");
}

/**
 * 自分自身がポップアップウィンドウかどうかを調べる
 */
function LMSUI_NavIsPopup()
{
	// openerが存在しない場合
	if ((opener == null) || (typeof(opener) == "undefined")) {
		return false;
	}

	// openerの名称が"main"でない場合
	if (opener.document.body.getAttribute("name") != "main") {
		return false;
	}

	return true;
}

/**
 * ボタンフレームの可視状態を取得する
 */
function LMSUI_NavIsVisibleButtons()
{
	return !eval(LMSUI_NavGetMainFrame().document.getElementById("_lmsframename.Button").getAttribute("_lmshidden"));
}

/**
 * 目次フレームの可視状態を取得する
 */
function LMSUI_NavIsVisibleContentsMenu()
{
	return !eval(LMSUI_NavGetMainFrame().document.getElementById("_lmsframename.ContentsMenu").getAttribute("_lmshidden"));
}
