////////////////////////////////////////
//ff.js
////////////////////////////////////////

//	半角／全角変換テーブル
var	HanData	= new Array(	" ","!","\"","#","$","%","&","'","(",")",
							"*","+",",","-",".","/","0","1","2","3",
							"4","5","6","7","8","9",":",";","<","=",
							">","?","@","A","B","C","D","E","F","G",
							"H","I","J","K","L","M","N","O","P","Q",
							"R","S","T","U","V","W","X","Y","Z","[",
							"\\","]","^","_","`","a","b","c","d","e",
							"f","g","h","i","j","k","l","m","n","o",
							"p","q","r","s","t","u","v","w","x","y",
							"z","{","|","}","~","ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ",
							"ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ","ﾂﾞ","ﾃﾞ","ﾄﾞ",
							"ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ",
							"｡","｢","｣","､","･","ｦ","ｧ","ｨ","ｩ","ｪ",
							"ｫ","ｬ","ｭ","ｮ","ｯ","ｰ","ｱ","ｲ","ｳ","ｴ",
							"ｵ","ｶ","ｷ","ｸ","ｹ","ｺ","ｻ","ｼ","ｽ","ｾ",
							"ｿ","ﾀ","ﾁ","ﾂ","ﾃ","ﾄ","ﾅ","ﾆ","ﾇ","ﾈ",
							"ﾉ","ﾊ","ﾋ","ﾌ","ﾍ","ﾎ","ﾏ","ﾐ","ﾑ","ﾒ",
							"ﾓ","ﾔ","ﾕ","ﾖ","ﾗ","ﾘ","ﾙ","ﾚ","ﾛ","ﾜ",
							"ﾝ","ﾞ","ﾟ");
var	ZenData	= new Array(	"　","！","”","＃","＄","％","＆","’","（","）",
							"＊","＋","，","−","．","／","０","１","２","３",
							"４","５","６","７","８","９","：","；","＜","＝",
							"＞","？","＠","Ａ","Ｂ","Ｃ","Ｄ","Ｅ","Ｆ","Ｇ",
							"Ｈ","Ｉ","Ｊ","Ｋ","Ｌ","Ｍ","Ｎ","Ｏ","Ｐ","Ｑ",
							"Ｒ","Ｓ","Ｔ","Ｕ","Ｖ","Ｗ","Ｘ","Ｙ","Ｚ","［",
							"￥","］","＾","＿","｀","ａ","ｂ","ｃ","ｄ","ｅ",
							"ｆ","ｇ","ｈ","ｉ","ｊ","ｋ","ｌ","ｍ","ｎ","ｏ",
							"ｐ","ｑ","ｒ","ｓ","ｔ","ｕ","ｖ","ｗ","ｘ","ｙ",
							"ｚ","｛","｜","｝","￣","ガ","ギ","グ","ゲ","ゴ",
							"ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド",
							"バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ",
							"。","「","」","、","・","ヲ","ァ","ィ","ゥ","ェ",
							"ォ","ャ","ュ","ョ","ッ","ー","ア","イ","ウ","エ",
							"オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ",
							"ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ",
							"ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ",
							"モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ",
							"ン","゛","゜");

var	DataMax		= 183;
var	DataKanaSt	= 95;
var	HANKAKU		= "0";
var	ZENKAKU		= "1";

var	arKeys	= new Array(50);
var	arVals	= new Array(50);
var	iKeys	= 0;

//パラメーター配列から検索
//name キー名
function	GetKeys(name){
	for(var i = 0;i<iKeys;i++){
		if(name == arKeys[i]){
			return arVals[i];
			break;
		}
	}
	return null;
}
//パラメーター配列にセット
//key キー名
//val 値
function	SetKeys(key,val){
	if(iKeys > 50){
		return false;
	}
	arKeys[iKeys]=key;
	arVals[iKeys]=val;
	iKeys++;
}

//なんちゃってパラメーターの分解
function	CGIParamSep(){
	var	urls = location.search;
	var	urla = urls.split("?");
	if (urla.length < 2){
		return false;
	}
	var	params = urla[1];
	var	parama = params.split("&");
	for(var i = 0; i < parama.length; i++) {
		var keyval = parama[i];
		var keyvala = keyval.split("=");
		if ((keyvala.length <1) || (keyvala.length >2)) {
			iErr = TRUE;
		} else if(keyvala.length==1) {
			SetKeys(keyvala[0],"");
		} else {
			SetKeys(keyvala[0],keyvala[1]);
		}
	}
	return true;
}

//	登録用関数
function ffcheck(flg){
	var	fm	= document.ff;

	var	i	= 0;
	var	input_err	= "名前がないですよ…";
	var	url	= "";
	var	chk	= "";

	url	= fm.action + "?";

	for (i = 0; i < fm.length; i++){

		//--------------------------------//
		//フラグのセット
		//--------------------------------//
		if (fm.elements[i].name	== "flg"){
			fm.elements[i].value	= flg;
		}

		//--------------------------------//
		//必須入力
		//--------------------------------//
		if (fm.elements[i].value.length	== 0){
			fm.elements[i].focus ();
			alert(input_err);
			return false;
		}

		//--------------------------------//
		//全角／半角変換
		//--------------------------------//
		fm.elements[i].value	= KanaChange("0", fm.elements[i].value);


		//--------------------------------//
		//エンコード
		//--------------------------------//
//		fm.elements[i].value	= uni_escape (fm.elements[i].value, 0);

		chk = "";
		if (i > 0){
			chk = "&";
		}

		url = url + chk + fm.elements[i].name + "=" + uni_escape (fm.elements[i].value, 0);

	}
//	fm.submit();

	location.href = url;

	return true;
}

//	登録用関数
function ffmenu(){

	var	fm	= document.menu.menu.value;
	location.href = fm;
//	fm.submit();
	return true;
}

//	半角／全角変換関数
function	KanaChange(flg, str){

	var		cRetData	= "";
	var		i			= 0;
	var		j			= 0;
	var		len			= 0;
	var		chk			= 0;
	var		cCp1		= "";
	var		cCp2		= "";

	if (flg == HANKAKU){
		cCp1	= HanData;
		cCp2	= ZenData;
	} else
	if (flg == ZENKAKU){
		cCp1	= ZenData;
		cCp2	= HanData;
	} else {
		return cRetData;
	}

	for (i = 0; i < str.length;){
		chk = 0;
		for (j = DataKanaSt; j < DataMax; j++){
			len = cCp1[j].length;
			if (str.substring(i,i+len) == cCp1[j]){
				cRetData += cCp2[j];
				chk = 1;
				break;
			}
		}
		if (chk == 0){
			len = 1;
			cRetData += str.substring(i,i+len);
		}

		i += len;
	}

	return	cRetData;
}

//エンコード
function uni_escape(en_text,opp){
/* 利用するブラウザの確認。ＩＥなら、そのままescape値をreturnさせる(ただしopp=0の時）
 oppが１の時、アスキー文字もコード化する。
 ただし、デコードの際は、このスクリプト内の関数uni_unescapeを用いてデコードすること
 文字列は、2バイトを1文字と読むことができるとする
*/

	en_output="";
	for(i=0;i<en_text.length;i++){
		S=en_text.charCodeAt(i);
		if((eval(S)<256)&&(opp!=1)){
			Z=en_text.charAt(i);
		}
		else {
			Z="%u"+S.toString(16);
		}
		en_output=en_output+Z;
	}

	return en_output;
}

//デコード
function uni_unescape(uni_text){
	TEXT = uni_text + "";

	// unescapeです。NNの場合、unicodeをunescapeで読めないので、fromCharCodeでデコード
	// 文字列中から、%を検索。その文字間の値を1０進数に変換し、デコード。
	// %ｕで区切って、配列になおし、配列の頭からデコードするのは、リソース消費が激しいので見直しました
	en_output	= "";
	COD			= 0;
	Sub_C		= "";

	for (i = 0; i <= TEXT.length; i++) {
		if ((TEXT.charAt(i) == "%") && (COD == 0)){
			COD = 1;
		}
		else if ((TEXT.charAt(i) == "%") && (COD == 1)){
			COD = 2;
		}
		if ((COD == 1) && (i == TEXT.length)){
			COD = 2;
		}
		if (COD == 0){
			Sub_C		= "";
			en_output	= en_output+TEXT.charAt(i);
		}
		if ((COD == 1) && ( Sub_C.length > 5)){
			COD = 2;
		}
		if (COD == 1){
			Sub_C	= Sub_C+TEXT.charAt(i);
		}
		if (COD == 2){
			COD = 0;
			en_output = en_output + String.fromCharCode(eval("0x"+Sub_C.substring(2,Sub_C.length)));
			Sub_C	= "";
			i = i - 1;
		}
	}

	return en_output;
}

//前ボタン
function	ChkBack(fm){

	var	ret		= "";
	var	Numflg	= 0;
	var	flg		= "";

	if (fm.flg.value == "01"){
		ret = "<BR>";
		return ret;
	}

	Numflg	= Number(fm.flg.value) - 1;
	if (Numflg < 10){
		flg = "0" + Numflg.toString();
	} else {
		flg = Numflg.toString();
	}
	ret = "<INPUT TYPE=\"button\" VALUE=\"Back←\" OnClick=\"JavaScript:ffcheck('" + flg + "');\">";
	return ret;

}

//次ボタン
function	ChkNext(fm){

	var	ret		= "";
	var	Numflg	= 0;
	var	flg		= "";

	if (Number(fm.flg.value) >= Number(fm.max.value)){
		ret = "<BR>";
		return ret;
	}

	Numflg	= Number(fm.flg.value) + 1;
	if (Numflg < 10){
		flg = "0" + Numflg.toString();
	} else {
		flg = Numflg.toString();
	}
	ret = "<INPUT TYPE=\"button\" VALUE=\"Next→\" OnClick=\"JavaScript:ffcheck('" + flg + "');\">";
	return ret;

}

//名前差し替え
function	DataReplace(data, key, name)
{
	var	org	= "";
	var rpc	= "";

	rpc = data;


	while(1){
		org = rpc;
		rpc = org.replace(key, name);

		if (org == rpc){
			break;
		}
	}

	return (rpc);
}


