////////// Constant Declare Definition ///////////////////
	RET_PCX_SUCCESS			= 0;
	RET_PCX_EVENT_SUCCESS	= 1;
	RET_PCX_ACK				= 2;
	RET_PCX_NAK				= 3;
	RET_PCX_RESPONSE		= 10;
	RET_PCX_READY			= 11;
	RET_PCX_BUSY			= 12;
	RET_PCX_CANCELED		= 20;
	RET_PCX_FAILURE			= 30;
	RET_PCX_ERR_PARAM		= 100;
	RET_PCX_ERR_PORT		= 101;
	RET_PCX_ERR_RES_TIMEOUT	= 110;
	RET_PCX_ERR_CTS_TIMEOUT	= 111;
	RET_PCX_ERR_DSR_TIMEOUT	= 112;
	RET_PCX_ERR_BUSY_TIMEOUT= 113;
	RET_PCX_ERR_BCC_RETRY	= 120;
	RET_PCX_ERR_BUFFEROVER	= 130;
	RET_PCX_ERR_BUSY		= 140;
	RET_PCX_ERR_COMM_WRITE	= 200;
	RET_PCX_ERR_COMM_READ	= 201;
///////////////////////////////////////////////////////////
////////// Event Constant Definition //////////////////////
	EVT_PCX_RELEASE				= 0x00000000;
	EVT_PCX_RXCHAR				= 0x00000001;
	EVT_PCX_TXEMPTY				= 0x00000002;
	EVT_PCX_ERR_BUFFER_OVERFLOW	= 0x00000004;
	EVT_PCX_CTS					= 0x00000008;
	EVT_PCX_DSR					= 0x00000010;
	EVT_PCX_RLSD				= 0x00000020;
	EVT_PCX_BREAK				= 0x00000040;
	EVT_PCX_RING				= 0x00000100;
	EVT_PCX_ERR_FRAME			= 0x00000200;
	EVT_PCX_ERR_OVERRUN			= 0x00000400;
	EVT_PCX_ERR_PARITY			= 0x00000800;
	EVT_PCX_ALL					= 0x0000FFFF;
///////////////////////////////////////////////////////////

var Rtn			= 0	;
var i			= 0	;
var ActFlag		= 0 ;	// 0=新規発行_CI 1=更新処理_CI 
var ResEvtFlag	= -1;	

var PageMode = 0;	// 0:ｲﾒｰｼﾞ  1:ﾃｷｽﾄ
var ImgMode = 0;	// 0:ﾊﾟﾀｰﾝ1 1:ﾊﾟﾀｰﾝ2
var timeID = setTimeout("",1);

//----- PRINT+
var Bangou='';
var Namae='';
var Hakkoubi='';
var Riyoubi='';
var Kaisu='';
var KonakiP='';
var RuikeiP='';
//----- PRINT+

//----- DATE+
var today;
var year;
var month;
var date;
//----- DATE+

function PortSet(){
	with (PCCAx) {
		PortNo 		= 4;
		BaudRate	= 9600;
		DataBit		= '8';
		Parity		= 'E';
		DSRCheck 	= true;
		CTSCheck 	= true;
		AutoHandshake = true;
	}
}

function SetComInf(){
	pn = document.getElementById("PortNo").value;
	br = document.getElementById("boundRate").value;
	pt = document.getElementById("Parity").value;
	db = document.getElementById("DataBit").value;
	window.opener.PCCAx.PortNo = pn;
	window.opener.PCCAx.BaudRate = br;
	window.opener.PCCAx.Parity = pt;
	window.opener.PCCAx.DataBit = db;
	window.close();
}

function GetPortName(){
	document.write(window.opener.PCCAx.GetPortNames);
}

function Version(){
	document.write(window.opener.PCCAx.Version);
}

function ComEventSet(Code){
	with (PCCAx) {
		if (Code == 0){
			EventMask = EVT_PCX_RELEASE;
		}else if (Code == 1){
			EventMask = EVT_PCX_BREAK;
		}else if (Code == 2){
			EventMask = EVT_PCX_DSR + EVT_PCX_BREAK;
		}
	}
}

function StartProc(){
	today = new Date();			// 日付データ取得
	year = today.getYear();		// 年
	month = LRAscFill(''+(today.getMonth()+1),0x30,2,1);	// 月
	date = LRAscFill(''+today.getDate(),0x30,2,1);		// 日

	//alert('DATE = '+ year + '/' + month + '/' + date);
	parent.SubMain.document.FrontPage_Form1.TxtRiyoubi.value = year + '/' + month + '/' + date;
}

function Cleaning(){
	if (OpenPort() == true){
		with (PCCAx) {
			if (CRW_Initial() == true) {
				ActFlag = 2;
				ResponseTimer = 3000;
				SendData = 'HC';
				Rtn = pcxSendCommandRR( 2, 0);
				if (Rtn != RET_PCX_EVENT_SUCCESS) {
					window.status = 'HCコマンド送信エラー';
					alert('HCコマンド送信エラー');
					ClosePort();
				} else {
					window.status = 'クリーニング カードを挿入して下さい';
				}
			}else{
				ClosePort();
				if (Rtn == RET_PCX_ERR_DSR_TIMEOUT){alert('カードリーダーの電源が切れています！');}
			}
		} // with(PCCAx)
	}else{
		//alert('InFlag=' + InFlag);
		//alert('InOutFlag=' + InOutFlag);	// +kanazumi
		window.status = 'ポートオープンエラー（ＣＯＭ設定を見直してください！）';
		alert('ポートオープンエラー\nＣＯＭ設定を見直してください！');
		window.status = '';
	}
}

//----- PRINT+
//
// イメージ印刷処理
//
function print(){
	with (parent.SubMain.document.FrontPage_Form1) {
		Bangou		= TxtKanin.value;		// 会員番号設定
		Namae		= TxtName.value			// 氏名設定
		Hakkoubi	= TxtHakkoubi.value		// 発行日設定
		Riyoubi		= TxtRiyoubi.value		// 利用日設定
		Kaisu		= TxtRiyouKaisu.value	// 利用回数設定
		KonakiP		= TxtKonkaiPoint.value	// 今回ポイント設定
		RuikeiP		= TxtRuikeiPoint.value	// 累計ポイント設定
	}
	PCCAx.SendData = 'PC';
	Rtn = PCCAx.pcxSendCommandRR( 0, 10000);

	window.open("print.htm","PRINT","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=330,height=270");
}

//
// 印刷データ受信状況チェック処理(機器での印刷データ取り込み状況 'B'チェック)
//
function PrintCheck(){
		window.status = 'データ転送中';
		//alert('プリントチェック');
		Rtn = PCCAx.pcxReceiveResponse( 0, 1000);
		//alert('Rtn = ' + Rtn + '\n'+ 'PCCAx.PollCmdComSts = '+PCCAx.PollCmdComSts+'\n'+'substrB(PCCAx.PollCmdComSts,1,1) = ' + substrB(PCCAx.PollCmdComSts,1,1));
		if ((Rtn==RET_PCX_READY) && (substrB(PCCAx.PollCmdComSts,1,1) == 'B')) {
			//alert('Rtn='+Rtn+'\nsubstrB(PCCAx.PollCmdComSts,1,1)='+substrB(PCCAx.PollCmdComSts,1,1)+'\nPCCAx.PollCmdComSts='+PCCAx.PollCmdComSts);
			clearTimeout(timeID);
			timeID = setTimeout("CardPrint()", 1);
		}else if ((Rtn==RET_PCX_READY) || (Rtn==RET_PCX_BUSY)) {
			clearTimeout(timeID);
			timeID = setTimeout("PrintCheck()", 1);
		}else{
			//alert('Rtn='+Rtn);
			alert('エラーが発生しました。設定を確認して再度プリントを行ってください。');
			window.status = ' ';
			PCCAx.SendData = 'CO';
			Rtn = PCCAx.pcxSendCommandRR( 1, 10000);
		}
}

//
// イメージ印刷実行
//
function CardPrint(){

	clearTimeout(timeID);

	//alert('印刷');
	if(FormSubM.MediaKindTxtBox.value == '8'){
		window.status = '印刷中(\'PP\')';
		PCCAx.SendData = 'PP='+ FormSubM.MediaKindTxtBox.value;
	}else{
		window.status = '印刷中(\'PR\')';
		PCCAx.SendData = 'PR='+ FormSubM.MediaKindTxtBox.value;
	}
	//alert('PR SendData = '+PCCAx.SendData);
	Rtn = PCCAx.pcxSendCommandRR( 1, 10000);
	//alert('PR Rtn = '+Rtn);
	if (Rtn != RET_PCX_RESPONSE){
		//alert('PR Rtn = '+ Rtn + 'ComSts = '+PCCAx.PollCmdComSts+' Err=' + PCCAx.PollCmdErr);
		alert('エラーが発生しました。設定を確認して再度プリントを行ってください。');
		window.status = ' ';
		PCCAx.SendData = 'CO';
		Rtn = PCCAx.pcxSendCommandRR( 1, 10000);
		return;
	}

	if((PageMode == 0)&&(ImgMode==1)){
		PaperOut(0);
	}else{
		window.status = '磁気ベリファイ(\'VR\')';
		PCCAx.SendData = 'VR';
		Rtn = PCCAx.pcxSendCommandRR( 1, 10000);			// 0ms -> 10000ms kanazumi
		if (Rtn == RET_PCX_RESPONSE && PCCAx.PollCmdErr == '90'){
			PaperOut(0);
		}
	}

	window.status = ' ';
}
//----- PRINT+

function OpenPort(){
	with (PCCAx) {
		if (Claimed == false){
			Rtn = pcxOpenPort();
			if (Rtn != RET_PCX_SUCCESS){
				APIReturnCode(Rtn);
				return false;
			}
			
		}
	}
	ComEventSet(2);
	return true;
}

function ClosePort(){
	var Rt;
	Rt = PCCAx.pcxClosePort() ;
}

function CRW_Initial(){
	with (PCCAx) {
		ResponseTimer = 3000;
		while (1) {
			Rtn = pcxReceiveResponse(0,5000);
			//alert('pcxReceiveResponse = ' + Rtn);
			if (Rtn == RET_PCX_READY) {
				//alert('PollCmdComSts.charAt(0) = ' + PollCmdComSts.charAt(0));
				switch(PollCmdComSts.charAt(0)){
					case '0':
						switch(PollCmdComSts.charAt(1)){
							case '4':
								window.status = 'カード抜き取り待ち [カード抜き取ってください！]';
								alert('カード抜き取り待ち\nカード抜き取ってください！');
								break;
							case '6':
								window.status = '搬送路カバーオープン [カバーを閉じてください！]';
								alert('搬送路カバーオープン\nカバーを閉じてください！');
								break;
							default:
								SendData = 'MS:R5W5H7C7Z1N0X0Y6K0F1M2';
								Rtn = pcxSendCommandRR( 1, 3000);
								//alert('pcxSendCommandRR(MS:)=' + Rtn);
								return true;
						}
						window.status = '';
						break;
					case '2':	// パワーアップ
						SendData = 'PA';
						Rtn = pcxSendCommandRR( 1, 3000);
						//alert('pcxSendCommandRR(PA) = ' + Rtn);
						if (Rtn != RET_PCX_RESPONSE || PollCmdErr != '90') {
							APIReturnCode(Rtn);
							return false
						}
						break;
					case '3':
						alert('サーマル高温エラー');
						break;
					case '4':
						alert('ジャムエラー\nカードを取り除いてください！');
						break;
					case '5':
						alert('メカエラー');
						break;
					case '6':
						alert('ハードエラー');
						break;
					case 'A':
						window.status = '印刷データ受信中';
						return true;
					case 'B':
						window.status = '印刷データ受信済';
						return true;
					default:
				}
			}else if (Rtn == RET_PCX_BUSY) {  // ビジーレスポンス
				SendData = 'CL';
				Rtn = pcxSendCommandRR( 1, 3000);
			}else{
				APIReturnCode(Rtn);
				return false;
			}
		}
	}
}

function PaperIN(InOutFlag){
	if(((PageMode == 0)&&(ImgMode==1))&&(InOutFlag==0)){
			window.status='イメージ印刷画面です。画面を切り替えてください！';
			alert('イメージ印刷画面です。画面を切り替えてください！');
			window.status=' ';
			return false;
	}
	if (OpenPort() == true){
		with (PCCAx) {
			//alert('InOutFlag=' + InOutFlag);
			if (CRW_Initial() == true) {
				//alert('CRW_Initial = true');
				ActFlag = InOutFlag;
				ResponseTimer = 3000;
				SendData = 'CI';
				Rtn = pcxSendCommandRR( 2, 0);
				//alert('pcxSendCommandRR(\"CI\"_Event)=\"' + Rtn + '\"');
				if (Rtn != RET_PCX_EVENT_SUCCESS) {
					window.status = 'CIコマンド送信エラー';
					alert('CIコマンド送信エラー');
					ClosePort();
				} else {
					window.status = 'カードを挿入して下さい';
				}
			}else{
				ClosePort();
				if (Rtn == RET_PCX_ERR_DSR_TIMEOUT){alert('カードリーダーの電源が切れています！');}
				//alert('CRW_Initial = false');
			}
		}
	}else{
		//alert('InFlag=' + InFlag);
		//alert('InOutFlag=' + InOutFlag);	// +kanazumi
		window.status = 'ポートオープンエラー（ＣＯＭ設定を見直してください！）';
		alert('ポートオープンエラー\nＣＯＭ設定を見直してください！');
		window.status = '';
	}
}

function PaperOut(COFlag){
	if (OpenPort() == true){
		with (PCCAx) {
			if (CRW_Initial() == true) {
				if (COFlag == 0 ) {
					ResponseTimer = 10000;
					Rtn = pcxReceiveResponse( 0, 0);
					SendData = 'CL';
					Rtn = pcxSendCommandRR( 1, 10000);
					if (Rtn == RET_PCX_ERR_BUSY) {
						//alert('CancelFlag=true');
						CancelFlag = true;
					} else {
						COut();
					}
				}
			}else{
				ClosePort();
				if (Rtn == RET_PCX_ERR_DSR_TIMEOUT){alert('カードリーダーの電源が切れています！');}
			}
		}
	}else{
		ClosePort();
		window.status = 'ポートオープンエラー（ＣＯＭ設定を見直してください！）';
		alert('ポートオープンエラー\nＣＯＭ設定を見直してください！');
		window.status = ' ';
	}
	ClosePort();
}

function COut(){
	with (PCCAx) {
		SendData = 'CO';
		Rtn = pcxSendCommandRR( 1, 10000);
		window.status = 'カード排出';
		if (Rtn != RET_PCX_RESPONSE) {
			APIReturnCode(Rtn);
			ClosePort();
			alert('カード排出エラー');
		}
		if (GTFlag == 1){ 
			// alert(TimeWatch(1,1));
			FormSubM.ProcessTime.value = TimeWatch(1,1) + ' 秒'
		}
		while(1){
			Rtn = pcxReceiveResponse( 0, 0);
			if (Rtn==RET_PCX_READY && (substrB(PCCAx.PollCmdComSts,2,1) == '4') && PollCmdSen=='10') {
				window.status = 'カードを抜き取ってください';
				//setTimeout("IEDisp('')", 500);
			}else{
				window.status = ' ';
				break;
			}
		}
	}
}

function UpDateData(){
	var Work = '';
	
	with(PCCAx){
//		window.status = 'ポイント累計計算';
//		PtCalc();
		window.status = '印刷データ転送(\'PD\')';
		PDMake();
		window.status = '磁気データ転送(\'WD\')';	// 'PD' -> 'WD' kanazumi
		WDMake();
		window.status = '磁気ライト(\'WN\')';
		SendData = 'WN';
		Rtn = pcxSendCommandRR( 1, 10000);			// 0ms -> 5000ms kanazumi
		if(PageMode == 1){
			window.status = '印字(\'PR\')';
			SendData = 'PR='+ FormSubM.MediaKindTxtBox.value;
			//alert('SendData = '+ SendData);
			Rtn = pcxSendCommandRR( 1, 10000);			// 0ms -> 10000ms kanazumi
			window.status = '磁気ベリファイ(\'VR\')';
			SendData = 'VR';
			Rtn = pcxSendCommandRR( 1, 10000);			// 0ms -> 10000ms kanazumi
		}
		if (Rtn == RET_PCX_RESPONSE && PollCmdErr == '90'){
			if(PageMode == 1){
				PaperOut(0);
			}else{
				print();	// PRINT+ 印刷
			}
		} else {
			window.status = '磁気エラー発生(\'' + PollCmdErr + '\')';
			SendData = 'CL';
			Rtn = pcxSendCommandRR( 1, 10000);		// 0ms -> 10000ms kanazumi

			SendData = 'PC';
			Rtn = pcxSendCommandRR( 1, 10000);		// 0ms -> 10000ms kanazumi

			// 1トラックALL'FF'
			SendData = 'MS:H7C7Z1';
			Rtn = pcxSendCommandRR( 1, 10000);

			SendData = 'WD:1/' + CharFill(0x46,138);
			Rtn = pcxSendCommandRR( 1, 10000);
			//alert('Rtn=' + Rtn + '\n' +'Track1=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));

			// 2トラックALL'FF'
			SendData = 'WD:2/' + '201' + FRTrim(FormSubM.MediaKindTxtBox.value) + CharFill(0x46,6) + '0' + CharFill(0x46,128);
			//alert('SendData = '+ SendData);
			Rtn = pcxSendCommandRR( 1, 10000);
			//alert('Rtn=' + Rtn + '\n' +'Track2=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));

			// 3トラックALL'FF'
			SendData = 'WD:3/' + CharFill(0x46,138);
			Rtn = pcxSendCommandRR( 1, 10000);
			//alert('Rtn=' + Rtn + '\n' +'Track3=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));

			// メッセージ設定
			SendData = 'PD:0/50/150/' + JaESC + 'e21カード磁気エラー';
			Rtn = pcxSendCommandRR( 1, 10000);

			// 磁気ﾃﾞｰﾀ書込み
			SendData = 'WN';
			Rtn = pcxSendCommandRR( 1, 10000);

			// 印字
			if(FRTrim(FormSubM.MediaKindTxtBox.value) == '8'){
				window.status = '印字(\'PP\')';
				SendData = 'PP=' + FRTrim(FormSubM.MediaKindTxtBox.value);
			}else{
				window.status = '印字(\'PR\')';
				SendData = 'PR=' + FRTrim(FormSubM.MediaKindTxtBox.value);
			}
			Rtn = pcxSendCommandRR( 1, 10000);

			// カード排出
			PaperOut(0);
		}
	}
}

function SyokikaMagData(Track){
	var Work = '';
	Work = '' + Track
	Work = 'WD:' + Work + '/'
	switch(Track){
		case 1: 
		case 3:
			Work = Work + CharFill(0x46,138);
			return Work;
			break;
		case 2:
			Work = Work + '01' + FRTrim(FormSubM.MediaKindTxtBox.value) + CharFill(0x46,6) + '0' + CharFill(0x46,128);
			return Work;
			break;
		default:
			return 'ERROR';
	}
}

function SyokikaCardMake(){
	var WinStsMsg = 'カード初期化中';

	with(PCCAx){
		// 1Track Data
		window.status = WinStsMsg + '(\'1Tr Data Set\')';
		SendData = SyokikaMagData(1);
		Rtn = pcxSendCommandRR( 1, 10000);
		//alert('Rtn=' + Rtn + '\n' +'Track1=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));
		
		// 2Track Data
		window.status = WinStsMsg + '(\'2Tr Data Set\')';
		SendData = SyokikaMagData(2);
		Rtn = pcxSendCommandRR( 1, 10000);
		//alert('Rtn=' + Rtn + '\n' +'Track2=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));
		
		// 3Track Data
		window.status = WinStsMsg + '(\'3Tr Data Set\')';
		SendData = SyokikaMagData(3);
		Rtn = pcxSendCommandRR( 1, 10000);
		//alert('Rtn=' + Rtn + '\n' +'Track3=' + SendData + '\n' + 'SendDataLength=' + getByteCount(SendData));
		
		// PR Data Clear
		window.status = WinStsMsg + '(\'Print Data Clear\')';
		SendData = 'PC';
		Rtn = pcxSendCommandRR( 1, 10000);
		
		// Initialize Message Set
		window.status = WinStsMsg + '(\'Print Data Set\')';
		SendData = 'PD:0/50/150/' + JaESC + 'e21初期化カード';
		Rtn = pcxSendCommandRR( 1, 10000);
		
		// Magnetic Write Command
		window.status = WinStsMsg + '(\'Magnetic Write Command\')';
		SendData = 'WN';
		Rtn = pcxSendCommandRR( 1, 10000);
		
		// Print Command
		window.status = WinStsMsg + '(\'Printting Command\')';
		if(FRTrim(FormSubM.MediaKindTxtBox.value) == '8'){
			SendData = 'PP=' + FRTrim(FormSubM.MediaKindTxtBox.value);
		}else{
			SendData = 'PR=' + FRTrim(FormSubM.MediaKindTxtBox.value);
		}
		Rtn = pcxSendCommandRR( 1, 10000);
		
		// Magnetec Command
		window.status = WinStsMsg + '(\'Magnetic verify Command\')';
		SendData = 'VR';
		Rtn = pcxSendCommandRR( 1, 10000);
		//alert('Rtn=' + Rtn + '\n' + 'PollCmdErr=' + PollCmdErr);
		if (Rtn == RET_PCX_RESPONSE && PollCmdErr == '90') {
			// Card Output
			PaperOut(0);
		} else {
			// PR Data Clear
			window.status = WinStsMsg + '(\'Print Data Clear\')';
			SendData = 'PC';
			Rtn = pcxSendCommandRR( 1, 10000);
			// メッセージ設定
			SendData = 'PD:0/50/150/' + JaESC + 'e21カード磁気エラー';
			Rtn = pcxSendCommandRR( 1, 10000);
			// Print Command
			window.status = WinStsMsg + '(\'Printting Card Output Command\')';
			SendData = 'PO=' + FRTrim(FormSubM.MediaKindTxtBox.value);
			Rtn = pcxSendCommandRR( 1, 10000);
		}
	}
}

function NewMediaRD(){		// ActFlag = 0
	with(PCCAx){
		//alert('PollCmdErr= ' + PollCmdErr );
		//if (PollCmdErr == '40') {
			SendData = 'RC';
			Rtn = pcxSendCommandRR( 1, 3000);
			if (Rtn == RET_PCX_RESPONSE && PollCmdErr == '90') {
				//alert('Rtn=\"' + Rtn + '\" // PollCmdErr=\"' + PollCmdErr + '\"  //  PollCmdResData.substr=\"' + PollCmdResData.substr(2,2) + '\"' );
				if (PollCmdResData.substring(2,2) == '46') {
					PaperOut(0);
					window.status='生カードです。エンコードしたカードを入れてください！';
					alert('生カードです\nエンコードしたカードを入れてください！');
				}else if (PollCmdResData.substr(2,2) == '90') {
					SendData = 'DT:2';
					Rtn = pcxSendCommandRR( 1, 3000);
					//alert(PollCmdResData);
					//alert('Rtn=\"' + Rtn + '\" // PollCmdResData.substr(0,3)=\"' + PollCmdResData.substr(0,3) + '\"  //  PollCmdResData.substr(4,3)=\"' + PollCmdResData.substr(4,3) + '\"' );
					if (Rtn==RET_PCX_RESPONSE && PollCmdResData.substr(0,3)=='201' && PollCmdResData.substr(4,3)=='FFF'){
						//エンコード済みカードチェックＯＫ
						//alert(PollCmdResData.substr(2,1));
						FormSubM.MediaKindTxtBox.value = PollCmdResData.substr(3,1);
						if (confirm("新規発券を行います。")){
							//はい、が選択されたときの処理を記述します
							window.status = 'ポイント累計計算';
							PtCalc();		// ポイント計算
							UpDateData();	// 発券
							ActFlag = 9;	// 初期化
						} else {
							//キャンセル、が選択されたときの処理を記述します
//							document.write("[キャンセル]が選択されました");
							alert('[キャンセル]が選択されました');
							PaperOut(0);
							return;
						}
					} else if (Rtn==RET_PCX_RESPONSE && PollCmdResData.substr(0,3)=='230' && PollCmdResData.substr(4,3)=='AAA'){
						FormSubM.MediaKindTxtBox.value = PollCmdResData.substr(3,1);
						if (confirm("このカードはポイントが残っています。\nカードを初期化しますか？")){
							//はい、が選択されたときの処理を記述します	
							SyokikaCardMake();
							ActFlag = 9;	// 初期化
						} else {
							//キャンセル、が選択されたときの処理を記述します
//							document.write("[キャンセル]が選択されました");
							alert('[キャンセル]が選択されました');
							PaperOut(0);
							return;
						}
					} else {
						window.status='磁気データ不一致';
							PaperOut(0);
						alert('磁気データ不一致');
						return;
					}
				} else {
					window.status='磁気データ不一致';
					PaperOut(0);
					alert('磁気データ不一致');
					return;
				}
			} else {
				window.status='カード磁気データなし';
				PaperOut(0);
				alert('カード磁気データなし');
				return;
			}
		//}
	}
	window.status='';
}

function MediaRD(){		// ActFlag = 1
	with(PCCAx){
		if (PollCmdErr == '90') {
			SendData = 'RC';
			Rtn = pcxSendCommandRR( 1, 3000);
			// alert('Rtn(RC)= '+Rtn+'  PollCmdErr= '+PollCmdErr);
			if (Rtn == RET_PCX_RESPONSE && PollCmdErr == '90') {
				// alert('Rtn=\"' + Rtn + '\" // PollCmdErr=\"' + PollCmdErr + '\"  //  PollCmdResData.substr=\"' + PollCmdResData.substr(2,2) + '\"' );
				if (PollCmdResData.substring(2,2) == '46') {
					PaperOut(0);
					window.status='生カードです。エンコードしたカードを入れてください！';
					alert('生カードです\nエンコードしたカードを入れてください！');
				}else if (PollCmdResData.substr(2,2) == '90') {
					SendData = 'DT:2';
					Rtn = pcxSendCommandRR( 1, 3000);
					// alert(PollCmdResData + '\n' + 'Rtn=\"' + Rtn + '\" // PollCmdResData.substr(1,2)=\"' + PollCmdResData.substr(1,2) + '\"  //  PollCmdResData.substr(4,3)=\"' + PollCmdResData.substr(4,3) + '\"' );
					if (Rtn==RET_PCX_RESPONSE && PollCmdResData.substr(1,2)=='30' && PollCmdResData.substr(4,3)=='AAA'){
						// alert(PollCmdResData.substr(2,1));
						FormSubM.MediaKindTxtBox.value = PollCmdResData.substr(3,1)
						if((PageMode == 0)&&(ImgMode==1)){
							PCCAx.SendData = 'PC';
							Rtn = PCCAx.pcxSendCommandRR( 0, 10000);
							window.open("print2.htm","PRINT","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=330,height=270");
						}else{
							DTMake();							// 磁気ﾃﾞｰﾀ読込み
							window.status = 'ポイント累計計算';
							PtCalc();							// ポイント累計計算
							setTimeout("UpDateData()", 1);		// 発券
						}
						ActFlag = 9;						// 初期化
					}else if (Rtn==RET_PCX_RESPONSE && PollCmdResData.substr(1,2)=='01' && PollCmdResData.substr(4,3)=='FFF'){
						
						window.status='エラーカードです。新規発券したカードを入れてください！';
						alert('エラーカードです\n新規発券したカードを入れてください！');

						// Card Output
						SendData = 'CO';
						Rtn = pcxSendCommandRR( 1, 10000);

						ActFlag = 9;						// 初期化
					}
				}
			} else {
				window.status='カード磁気データなし';
				PaperOut(0);
			}
		} else {
			PaperOut(0);
			window.status='エラーカードです。新規発券したカードを入れてください！';
			alert('エラーカードです\n新規発券したカードを入れてください！');
		}
	}
}

//--------- 利用回数・累計ポイント計算(ここから)
function PtCalc(){
	var Work ='';	// 
	var rb ='';	// 
	var rp ='';	// 
	var rk ='';	// 

	with (parent.SubMain.document.FrontPage_Form1) {

		//-----  磁気情報読込み -----
		// ポーリング実行
		Rtn = PCCAx.pcxReceiveResponse(0, 3000);
		APIReturnCode(Rtn)

		// 'DT'コマンド実行(ﾄﾗｯｸ1)
		PCCAx.SendData = 'DT:1';
		Rtn = PCCAx.pcxSendCommandRR(1, 3000);
		APIReturnCode(Rtn)

		Tr1 = PCCAx.PollCmdResData;

		// ポーリング実行
		Rtn = PCCAx.pcxReceiveResponse(0, 3000);
		APIReturnCode(Rtn)

		// 'DT'コマンド実行(ﾄﾗｯｸ3)
		PCCAx.SendData = 'DT:3';
		Rtn = PCCAx.pcxSendCommandRR(1, 3000);
		APIReturnCode(Rtn)

		Tr3 = PCCAx.PollCmdResData;

		// トラック１情報抜き取り
		rb = FRTrim(PCCAx.pcxCharAscHConv(1,substrB(Tr1,90,40)));	// 利用日抜き出し

		// トラック３情報抜き取り
		rp = FRTrim(PCCAx.pcxCharAscHConv(1,substrB(Tr3,56,14)));	// 今回処理後の累計ポイント抜き出し
		rk = FRTrim(PCCAx.pcxCharAscHConv(1,substrB(Tr3,70,4)));	// 来店回数抜き出し

		//-----  来店回数計算 -----
		if(FRTrim(TxtRiyoubi.value) === rb){
			RiyouKaisu = parseInt(TxtRiyouKaisu.value);
			RiyouKaisu = RiyouKaisu + 1;
			if(RiyouKaisu > 99){
				RiyouKaisu = 99;
			}
			TxtRiyouKaisu.value = LRZroFill(RiyouKaisu.toString(),2,1);
		}

		//-----  累計計算 -----
		RuikeiPoint = parseInt(TxtRuikeiPoint.value);
		KonkaiPoint = parseInt(TxtKonkaiPoint.value);
		RuikeiPoint += KonkaiPoint;
		if(RuikeiPoint > 9999){
			RuikeiPoint = 9999;
		}
		str = RuikeiPoint.toString();
		TxtRuikeiPoint.value = str;
	}
}



//--------- 利用回数・累計ポイント計算(ここまで)

////////////////////////////////////////////////////////////////////////////////////
function APIReturnCode(lRtn){
	var Work = '';
	switch(lRtn){
		case RET_PCX_SUCCESS:
			Work = 'RET_PCX_SUCCESS';
			break;
		case RET_PCX_EVENT_SUCCESS:
			Work = 'RET_PCX_EVENT_SUCCESS';
			break;
		case RET_PCX_ACK:
			Work = 'RET_PCX_ACK';
			break;
		case RET_PCX_NAK:
			Work = 'RET_PCX_NAK';
			break;
		case RET_PCX_RESPONSE:
			Work = 'RET_PCX_RESPONSE';
			break;
		case RET_PCX_READY:
			Work = 'RET_PCX_READY';
			break;
		case RET_PCX_BUSY:
			Work = 'RET_PCX_BUSY';
			break;
		case RET_PCX_CANCELED:
			Work = 'RET_PCX_CANCELED';
			break;
		case RET_PCX_FAILURE:
			Work = 'RET_PCX_FAILURE';
			break;
		case RET_PCX_ERR_PARAM:
			Work = 'RET_PCX_ERR_PARAM';
			break;
		case RET_PCX_ERR_PORT:
			Work = 'RET_PCX_ERR_PORT';
			break;
		case RET_PCX_ERR_RES_TIMEOUT:
			Work = 'RET_PCX_ERR_RES_TIMEOUT';
			break;
		case RET_PCX_ERR_CTS_TIMEOUT:
			Work = 'RET_PCX_ERR_CTS_TIMEOUT';
			break;
		case RET_PCX_ERR_DSR_TIMEOUT:
			Work = 'RET_PCX_ERR_DSR_TIMEOUT';
			break;
		case RET_PCX_ERR_BUSY_TIMEOUT:
			Work = 'RET_PCX_ERR_BUSY_TIMEOUT';
			break;
		case RET_PCX_ERR_BCC_RETRY:
			Work = 'RET_PCX_ERR_BCC_RETRY';
			break;
		case RET_PCX_ERR_BUFFEROVER:
			Work = 'RET_PCX_ERR_BUFFEROVER';
			break;
		case RET_PCX_ERR_BUSY:
			Work = 'RET_PCX_ERR_BUSY';
			break;
		case RET_PCX_ERR_COMM_WRITE:
			Work = 'RET_PCX_ERR_COMM_WRITE';
			break;
		case RET_PCX_ERR_COMM_READ:
			Work = 'RET_PCX_ERR_COMM_READ';
			break;
	}
	window.status = 'API Return Code( ' + Work + ' )'
	// alert('APIReturnCode( ' + Work + ' )');
}

function ComEvent(lEvent){
	var MsgWork='';
	switch(lEvent)
	{	case EVT_PCX_RXCHAR:
			MsgWork = 'EVT_PCX_RXCHAR';
			break;
		case EVT_PCX_TXEMPTY:
			MsgWork = 'EVT_PCX_TXEMPTY';
			break;
		case EVT_PCX_ERR_BUFFER_OVERFLOW:
			MsgWork = 'EVT_PCX_ERR_BUFFER_OVERFLOW';
			break;
		case EVT_PCX_CTS:
			MsgWork = 'EVT_PCX_CTS';
			break;
		case EVT_PCX_DSR:
			ClosePort()
			MsgWork = 'カードリーダーの電源が切断されました';
			break;
		case EVT_PCX_RLSD:
			MsgWork = 'EVT_PCX_RLSD';
			break;
		case EVT_PCX_BREAK:
			ClosePort()
			MsgWork = 'USBケーブルが切断された可能性があります\nUSBケーブルを確認してください\n\n[ Event = EVT_PCX_BREAK ]';
			break;
		case EVT_PCX_RING:
			MsgWork = 'EVT_PCX_RING';
			break;
		case EVT_PCX_ERR_FRAME:
			MsgWork = 'EVT_PCX_ERR_FRAME';
			break;
		case EVT_PCX_ERR_OVERRUN:
			MsgWork = 'EVT_PCX_ERR_OVERRUN';
			break;
		case EVT_PCX_ERR_PARITY:
			MsgWork = 'EVT_PCX_ERR_PARITY';
			break;
	}
	window.status = MsgWork;
	alert(MsgWork);
	window.status = '';
}

function pollResponseEvent(lResponseCode){
	ResponseTimer = 3000;
	with (PCCAx){
		//alert('Event_lResponseCode=\"' + lResponseCode + '\"' );
		switch (lResponseCode){
			case RET_PCX_RESPONSE:
				TimeWatch(0,0);
				switch (ActFlag){
					case 0:
						NewMediaRD();
						break;
					case 1:
						MediaRD();
						break;
					case 2:
						while(1){
							Rtn = pcxReceiveResponse( 0, 0);
							if (Rtn==RET_PCX_READY && (substrB(PCCAx.PollCmdComSts,2,1) == '4') && PollCmdSen=='10') {
								window.status = 'カードを抜き取ってください';
								//setTimeout("IEDisp('')", 500);
							}else{
								window.status = ' ';
								break;
							}
						}
						ClosePort();
						break;
					default:
				}
				break;
			case RET_PCX_CANCELED:
				SendData = 'CL';
				Rtn = pcxSendCommandRR( 1, 3000);
				COut();
				//alert('RET_PCX_CANCELED');
				break;
			case RET_PCX_ERR_BUSY_TIMEOUT:
				if (PollCmdComSts == 'CI'){
					SendData = 'CL';
					Rtn = pcxSendCommandRR( 1, 3000);
					ClosePort();
				}
				break;
			case RET_PCX_ERR_RES_TIMEOUT:
			case RET_PCX_ERR_PARAM:
			case RET_PCX_ERR_PORT:
			case RET_PCX_ERR_CTS_TIMEOUT:
			case RET_PCX_ERR_DSR_TIMEOUT:
			case RET_PCX_ERR_BCC_RETRY:
			case RET_PCX_ERR_BUSY:
			case RET_PCX_ERR_COMM_WRITE:
			case RET_PCX_ERR_COMM_READ:
				ClosePort();
				APIReturnCode(lResponseCode);
				break;
			default:
		}
	}
}
