/**
 * @(#)RidMIT.java
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 *
 * RID-3 : ライセンスチェック
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2001/10/23
 */
package jp.co.nri.rid;

import java.io.*;

import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;

import java.awt.event.ActionEvent;

import java.net.InetAddress;

import java.text.SimpleDateFormat;
import java.text.ParseException;

import java.util.Date;
import java.util.Calendar;
import java.util.Locale;

import javax.swing.Action;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import jp.co.iti.fagot.ZApp;

import jp.co.iti.fagot.ui.UDialog;

import jp.co.iti.fagot.util.ZResource;
import jp.co.iti.fagot.util.ZDebug;

import jp.co.nri.Ridual;

import jp.co.nri.rid.rhedgehog.RHog;

/**
 * ライセンスチェック
 * デコードされる可能性があるので、ライセンス関連のクラスだとわからないように
 * 名前を変えておく
 */
public class RidMIT {
	/**
	 * バージョン情報
	 */
	public final static int    mVerMajor = 1;
	public final static int    mVerMinor = 0;
	public final static int    mBuild    = 43;
	
	/**
	 * トライアル版最大保存ページ数
	 */
	public final static int TCOUNT= 22;
	
	/**
	 * ライセンス有効期限
	 */
/*
	private final static int year  = 2003;
	private final static int month = 9;		// 0〜11
	private final static int day   = 1;
*/
	
	
	/**
	 * ライセンスのチェック
	 */
/*
	static private Calendar getLimit() {
	Calendar limit = Calendar.getInstance();
	limit.set( year,month,day,23,59,59 );
	return limit;
	}
*/
	
	/**
	 * ライセンスのチェック
	 */
/*	
	static public boolean checkMIT() {
	boolean bRet = false;
	int status = checkDetailMIT();
	if ( status == 0 ) {
		bRet = true;
*/
/*
	// 有効期限以降は立ち上がらなくするので、ここでは不要
	} else if ( status == 2 ) {
		Calendar today = Calendar.getInstance();
		Calendar limit = getLimit();
		if ( limit.after( today ) ) {
			bRet = true;
		}
*/
/*
	}
	return bRet;
	}
*/
	/**
	 * @return -3:起動前 -2:trial -1:ライセンス異常 0:無制限 0<:ページ数
	 */
	static public int checkMIT() {
//		checkDetailMIT();
		Ridual app = (Ridual)ZApp.getTheApp();
		if (app == null) return -3;	// アプリケーション起動前はとりあえず
		
		ZResource res = app.getResource();
		String name	= res.getString("license.name");
		String mail	= res.getString("license.mail");
		
		if((null == name) || (null == mail))				return -2;
		if((0 >= name.length()) || (0 >= mail.length()))	return -2;
		
		String dir = res.getString("app.install.path") +
						File.separator +
						res.getString("app.class.dir");
		
		RHog dec = new RHog();
		String fname = new String(new byte[]{ 'r', 'l', 'm' });
		try{
			if( !dec.load(new File(dir, fname)) )	return -1;
			
			if( (null != dec.target) && (0 < dec.target.length())){
				if(Integer.parseInt(dec.target) != mBuild)	return -2;
			}
			
			if( (null != dec.limit) && (0 < dec.limit.length())){
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
				sdf.setLenient( false );
				Calendar limit = Calendar.getInstance();
				limit.setTime(sdf.parse(dec.limit));
				limit.add(Calendar.DATE, 1);
				if ( !limit.after(Calendar.getInstance()) ) return -2;
			}
			
			if(!name.equals(dec.name))	return -1;
			if(!mail.equals(dec.mail))	return -1;
			
			return Integer.parseInt(dec.pages);
		}
		catch(IOException e){			return -2; }
		catch(NumberFormatException e){	return -1; }
		catch(ParseException e){		return -1; }
	}
	
	/**
	 * ライセンスのチェック
	 * 有効期限があるかどうかチェックする
	 * @return 無制限の時 0, 制限付の時 1
	 */
//	static public int checkDetailMIT() {
/*
	static private void checkDetailMIT() {

	// 有効期限チェック
	Calendar today = Calendar.getInstance();
	Calendar limit = getLimit();
	if ( !limit.after( today ) ) {
		String szMsg = "試用期限を超過しました";

		// リソースファイル読み込み前なので言語対応
		String localeSuffix = Locale.getDefault().getLanguage();
		if ( !localeSuffix.equals("ja") ) {
			szMsg = "Evaluation period is expired";
		}

		System.err.println(szMsg+"...");
		// エラーメッセージ表示
        JOptionPane.showMessageDialog(null, szMsg, "Ridual", JOptionPane.ERROR_MESSAGE);
		System.exit(0);
	}
*/	
/*
	Ridual app = (Ridual)ZApp.getTheApp();
	if ( app == null ) {
		// アプリケーション起動前はとりあえず
		return 0;
	}

	String szKey = app.getResource().getString("license.key");

	if ( szKey!=null && szKey.equals("MIT") ) {
		// 無制限
		return 0;
	}
	return 1;
*/
//	}
}
