<!--
/**************************************************************************

	File:			CommonFunc.js
   
	Description:	Common function implementation for e-SelfTest using
					JavaScript.
	Copyright:		Copyright (C) 2004 SEIKO EPSON Corp.
	Author:			N.Takahama
	Date:			2004/10/18
	LastModified:	

**************************************************************************/

/**************************************************************************
	global constant definitions
**************************************************************************/
var module;
window.onload = window_OnLoad;

/**************************************************************************
	ウインドウ初期化時の処理
**************************************************************************/
function window_OnLoad()
{
	// 環境チェック
	if (EnvCheck() == 0)
	{
		// ページにより処理を変更
		var strFileName = document.URL;
		var strSplitter = "\\";

		if (strFileName.indexOf("http://") != -1)
		{
			// HTTPプロトコルのため、"/"で分割
			strSplitter = "/";
		}

		var strPage = strFileName.substring(strFileName.lastIndexOf(strSplitter) + 1, strFileName.length);

		if ( strPage != "FAQPart.html" )
		{
			// ActiveXオブジェクト初期化
			module = new ActiveXObject("ESTPTest.PtrTest");
		}

		switch (strPage)
		{
			case "NozzleCheckLoading.html":
			case "CleaningLoading.html":
			case "SelfTestLoading.html":
			{
				// ローディングページ
				// テスト種別を取得
				var strTest = strPage.substring(0, strPage.indexOf("Loading.html"));

				// ページ情報を書き込む
				WritePageInfo("Function", strTest);
				WritePageInfo("PageStatus", "Loading");
				WritePageInfo("Menu", "Part");
				WritePageInfo("NozzleCheckStatus", "None");

				location.href = "./CheckPrinterName.html";
				break;
			}
			case "CheckPrinterName.html":
			{
				// 機種名チェック
				CheckPrinterName();
				break;
			}
		}
	}
}

/**************************************************************************
	プリンタ機種チェック
**************************************************************************/
function CheckPrinterName()
{
	// プリンタジョブチェック
	// プリンタにジョブが存在する場合は、ビジー表示をする
	if (ESTCheckPrinterJobs() == 1)
	{
		return 0;
	}

	// プリンタ機種取得
	var PrinterModelName = module.ESTPrinterModelNameCheck();
	WritePageInfo("Printer", PrinterModelName);
//alert(PrinterModelName);

	// 機種名取得できない場合は通信エラー
	if( PrinterModelName == "" ) {
		location.href = "./ComError.html";
		return 0;
	}

	var iCount=0;
	var strPrinterKeyName;
	var strSupportedPrinterName;
	var bIsSupportedPrinter = false;
	while( 1 ) {

		iCount++;

		// 対象機種はDATファイルから取得
		strPrinterKeyName = "SupportedPrinterName" + String(iCount);
		strSupportedPrinterName = module.getESTMessage(strPrinterKeyName);

		if( strSupportedPrinterName == "" )
			continue;
			
		if( strSupportedPrinterName == PrinterModelName ) {
			bIsSupportedPrinter = true;
			break;
		}

		if( strSupportedPrinterName == "END" )
			break;
	}

	if( bIsSupportedPrinter ) {
		// 機種別フォルダの初期チェックページへ
		location.href = "./" + GetModelFolderName() + "/BeforeTest.html";
	}
	else {
		// テスト対象外プリンタ処理
		location.href = "./PrinterCaution.html";
	}

	return 0;
}

/**************************************************************************
	ページデータ設定（簡易Cookie実現）
**************************************************************************/
function WritePageInfo(strEntry, strValue)
{
	module.WritePageInfo(strEntry, strValue);
}

/**************************************************************************
	ページデータ取得（簡易Cookie実現）
**************************************************************************/
function GetPageInfo(strEntry)
{
	var strValue = module.GetPageInfo(strEntry);
	return strValue;
}

/**************************************************************************
	プリンタジョブチェック
**************************************************************************/
function ESTCheckPrinterJobs()
{
	var PrinterJobs = 0;
	PrinterJobs = module.ESTCheckPrinterJobs();

	if (PrinterJobs != 0)
	{
		// ジョブが存在する場合はビジーページへ
		location.href = "./StatusBusy.html";
		return 1;
	}

	return 0;
}

/**************************************************************************
	機種別フォルダ名取得関数
**************************************************************************/
function GetModelFolderName()
{
	var strFolderName = GetPageInfo("Printer");
	var arrayName = strFolderName.split(" ");
	strFolderName = "";
	for(var i=0; i<arrayName.length; i++) {
		strFolderName += arrayName[i];
	}
	return strFolderName;
}

/**************************************************************************
	ユーザー環境チェック
**************************************************************************/
function EnvCheck()
{
	var Caution; // 0 = OK, 1 = Browser, 2 = OS
	var BrowserVersion;

	Caution = 0;
	BrowserVersion = navigator.appVersion;

	// OSチェック
	if (navigator.platform != "Win32")
	{
		// Windowsでない環境ではNG（Mac, UNIX等がこちらに該当）
		Caution = 2;
	}
	else
	{
		// NT環境はNG（NT4.0、Win2K、XP がこちらに該当）
		if (BrowserVersion.indexOf("Windows NT") != -1)
		{
			// Windows2000は非対応
//			if (BrowserVersion.indexOf("Windows NT 5") == -1)
			if (BrowserVersion.indexOf("Windows NT 5.1") == -1)
			{
				// XP 以外はエラーとする。
				Caution = 2;
			}
		}
	}

	// OSチェックがOKの時だけ、ブラウザチェックをする
	if (Caution == 0)
	{
		// ブラウザチェック
		var BrowserName;

		BrowserName = navigator.appName;

		if (BrowserName.charAt(0) == "N") // Netscape
		{
			Caution = 1;
		}
		else if (BrowserName.charAt(0) == "M") // Internet Explorer
		{
			if ((BrowserVersion.charAt(0) == 2) || (BrowserVersion.charAt(0) == 3))
			{
				// 3.x以下は不可
				Caution = 1;
			}
			else
			{
				if (BrowserVersion.indexOf("MSIE 4") != -1)
				{
					if ((BrowserVersion.indexOf("MSIE 4.01") == -1) && (BrowserVersion.indexOf("MSIE 4.02") == -1))
					{
						// 4.00は不可
						Caution = 1;
					}
				}
			}
		}
		else
		{
			// ブラウザ不明
			Caution = 1;
		}
	}

	// チェック結果に応じてページを移動
	switch (Caution)
	{
		case 1: // Browser NG
		{
			location.href = "./BrowserCaution.html";
			break;
		}
		case 2: // OS NG
		{
			location.href = "./OSCaution.html";
			break;
		}
		default: break;
	}

	return Caution;
}

//-->

