//◆◆共通関数　◆◆
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆◆XML関係　◆◆
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆ローカルのXMLファイルを扱えるようにするためXMLのTEXTをいったん受け取りそれをDOMオブジェクトに流し込む ◆parseXml
//◇引数：xmlText　
//◇戻値：XMLDOMオブジェクト
function Gf_parseXml(xmlText) {
//	window.alert("aba");
	if (window.ActiveXObject) {
		var domDoc = new ActiveXObject('Microsoft.XMLDOM');
		domDoc.async = false;
		domDoc.loadXML(xmlText);
		return domDoc;
	} else if(window.DOMParser) {
		var domParser = new DOMParser();
		return domParser.parseFromString(xmlText, "application/xml");
	} else {
		return null;
	}
}
//◆XMLのノードのファーストノード値を取得する ◆
//◇引数：
//◇戻値：
function Gf_NodeValue(DomObj,DomIndex,TagIndex){
	var strNodeBalue = "";
	try{
		strNodeBalue = DomObj[DomIndex].getElementsByTagName(TagIndex)[0].firstChild.nodeValue + "";
	} catch(e){
		strNodeBalue = "";
	}
	return strNodeBalue
}
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆◆フォームコントロール　◆◆
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆オプションリスト ◆
//◇引数：オプションオブジェクト
function Gf_FM_C_option(ObjOption){
	this.ObjOption = ObjOption;
	return this;
}
//すべてのオプションを削除します
function Gf_FM_C_option_delAll(){
	for ( i=0 ; i <= this.ObjOption.options.length ; i++ )
	{
		this.ObjOption.options[0]=null;
	}
}
//オプションを追加します
function Gf_FM_C_option_AddOne(text,value){

	this.ObjOption.options[this.ObjOption.length] = new Option(text,value);
}
//メソッドを有効にするための初期化（ブラウザバグ対策）
new Gf_FM_C_option(0);
	//メソッド追加
	Gf_FM_C_option.prototype.delAll = Gf_FM_C_option_delAll;
	Gf_FM_C_option.prototype.AddOne = Gf_FM_C_option_AddOne;
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆◆テーブルフォームオブジェクト　表部分処理クラス　◆◆
//個々で扱うテーブルフォームIDは 表名+【C数値R数値】という命名規約で作られたテーブルフォームを対象にする
//CELL　IDはすべて表名+Cell という名前にする
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆行追加削除処理 ◆
//◇引数：最大行　最大列　テーブルのあるＤＩＶＩＤ　テーブル名　テーブルＨＴＭＬ
//◇戻値：
function Gf_TableF(MaxRow,MaxCol,DivNm,TableNm,TableStr){
	this.MaxRow = MaxRow;
	this.MaxCol = MaxCol;
	this.TableNm = TableNm;
	this.DivNm = DivNm;
	this.TableStr = TableStr;
	//分割
	var shu1= TableStr.indexOf("</tr>",0); 
	this.HeadStr = TableStr.substring(0,shu1);
	var RowStr = TableStr.substring(shu1,TableStr.length);
	this.RowStr=  RowStr.replace(/<\/table>/i, "");
	this.TableEnd = "</table>";
	this.TableCellNM = /TCell/i;
	this.TableCellNM_H = "T_";
	return this;
}
//◆ ROWとCOLを指定するとその名前を表示する
function Gf_TableF_Cell_ID(Row,Col){
	this.Row = Row;
	this.Col = Col;
	return this.TableCellNM_H + "R" + this.Row + "C" + this.Col;
}
//◆ ROWとCOLをセルIDから取得
function Gf_TableF_Cell_ID2RC(CellID){

	WkCellID = CellID;
	//セルヘッダー名を削除
	WkCellID =  WkCellID.replace(/this.TableCellNM_H/i, "");
	var numR = WkCellID.indexOf("R",0); 
	var numC = WkCellID.indexOf("C",0); 
	var Row = WkCellID.substring(numR+1,numC);
	var Col = WkCellID.substring(numC+1);
	if ((isNaN(Row)) || (isNaN(Col)))	{
		return false;
	}else{
		this.Row = Row;
		this.Col = Col;
		return true;
	};
}
//◆次のCOLへの移動
function Gf_TableF_NextCol(Col){
	if (Col > this.MaxCol){
		this.Col = this.Col+1;
	}else {
		this.Col = this.MaxCol;
	};
	if (Col < 0)
	{
		this.Col = this.MaxCol;
	}
	return this.Col;
}
//◆ MaxRow行数分のテーブルを生成して表示する
function Gf_TableF_InitDsp(){
	this.col = 0;
	var strRow;
	//行のID置換え

	var WriteHeadStr = this.HeadStr;
	var WriteRowStr = "";
	var WriteTable = "";
	
	//作成テーブルの組み合わせ

	for ( i=0 ; i <= this.MaxRow ; i++ )
	{
		WriteRowStr = this.RowStr;
		WriteRowStr= WriteRowStr.replace("Row", "Row" + i);
		for ( j=0 ; j <= this.MaxCol ; j++ )
		{
			//セルのID置換え  IDとname を置き換える必要があるため1項目2回置換えを行う。
			WriteRowStr= WriteRowStr.replace(this.TableCellNM ,this.TableCellNM_H + "R" + i +  "C" + j);
			WriteRowStr= WriteRowStr.replace(this.TableCellNM ,this.TableCellNM_H + "R" + i +  "C" + j);
		}
		WriteTable = WriteTable + WriteRowStr;
	}
	//テーブルHTML合成　ヘッダー　+　項目　+　テーブル終了タグ
	$(this.DivNm).innerHTML = WriteHeadStr + WriteTable + this.TableEnd;
	return this.MaxRow;
}
//◆現状のテーブルを保持し一行追加する
function Gf_TableF_AddRow(){
	var TempData = new Object();
	for ( i=0 ; i <= this.MaxRow ; i++ )
	{
		for ( j=0 ; j <= this.MaxCol ; j++ )
		{
			TempData[this.Cell_ID(i,j)] = $(this.Cell_ID(i,j)).value;
		}
	}
	//行を追加
	this.MaxRow++;
	this.InitDsp();
	//保存データを回復
	for ( i=0 ; i <= (this.MaxRow -1); i++ )
	{
		for ( j=0 ; j <= this.MaxCol ; j++ )
		{
			 $(this.Cell_ID(i,j)).value = TempData[this.Cell_ID(i,j)];
		}
	}
}
//◆　Gf_TableF
new Gf_TableF(0,0,"","","");
//メソッド追加
	Gf_TableF.prototype.Cell_ID = Gf_TableF_Cell_ID;
	Gf_TableF.prototype.InitDsp = Gf_TableF_InitDsp;
	Gf_TableF.prototype.AddRow = Gf_TableF_AddRow;
	Gf_TableF.prototype.Cell_ID2RC = Gf_TableF_Cell_ID2RC

//■■■■■■■■■■■■■■■■■■■■■■■■
//◆◆サイズ・位置情報関係　◆◆
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆ウィンドウの中のサイズ ◆
//◇引数：
//◇戻値：
function Gf_WindowInnerSize(){
	var Height = 0;
	var Width  = 0;

	if(window.innerHeight)
	{
		Height = window.innerHeight; // Mozilla, Opera, NN4
		Width = window.innerWidth;
	}
	else if(document.documentElement && document.documentElement.clientHeight)
	{ // 以下 IE
		Height = document.documentElement.clientHeight;
		Width = document.documentElement.clientWidth;
	}
	else if(document.body && document.body.clientHeight)
	{
		Height = document.body.clientHeight;
		Width = document.body.clientWidth;
	}
	this.Height = Height;
	this.Width = Width;
	return this;
}
//◆キーアクションを無効にする ◆
function kl_cancel(e){
        if(e.preventDefault) e.preventDefault();
//        if(!KL_IE4) return;
        e.keyCode=0;
        e.cancelBubble=true;
        e.returnValue=false;
}

//◆画像ファイルの事前読み込みに利用 ◆
function Gf_ImageBfLoad(filePath){
	this.IMG = new Image();
	this.IMG.src = filePath;
	return this;
}
//◆頭つめ  ゼロパド等◆
//◇引数：パンディング文字　　埋める文字数　　対象文字列
//◇戻値：
function GF_Pad(strPad,padLen,strVal){
	var strR = "";
	strVal = strVal+"";
	var LoopMax = padLen - strVal.length;
	for (var i=0;i<LoopMax;i++)
	{
		strR = strR + "" + strPad;
	}
	strR =  strR + "" + strVal;
	return strR;
}

//■■■■■■■■■■■■■■■■■■■■■■■■
//◆◆クッキー関係　◆◆
//■■■■■■■■■■■■■■■■■■■■■■■■
//◆クッキーセット ◆Pf_setCookie
//◇引数：【名前】【値】【有効期限（日数）】
//◇戻値：【無し】
function Pf_setCookie(name,data,days)
{ //引数でCOOKIE名、内容、期限を指定
	var d=new Date()
	d.setTime(d.getTime()+1000*60*60*24*days) //保存日数が負だと期限切れcookieを書き込む(=削除する)ことになる。
	var exp=' ; expires='+d.toGMTString() //cookieを書き込むときの期限指定文字列。
	document.cookie=name+"="+escape(data)+exp
}


//◆クッキー取得 ◆Pf_getCookie
//◇引数：【名前】
//◇戻値：【値】
function Pf_getCookie(name)
{
	var value="", search=name+"=";
	if (document.cookie.length > 0) 
	{
		var offset = document.cookie.indexOf(search);
		if (offset != -1) 
		{
			offset += search.length;
			var end = document.cookie.indexOf(";", offset);
			if (end == -1) 
			{
				end = document.cookie.length;
			}
			value = unescape(document.cookie.substring(offset, end));
		}
	}
	return value;
}
//◆クッキー削除 ◆Pf_clearCookie
//◇引数：【名前】【パス】
//◇戻値：【無し】
function Pf_clearCookie(name, path)
{
	if (Pf_getCookie(name)) 
	{

		var strCookie = "";
		strCookie += name + "=";
		strCookie += "; path=" + ((!path) ? "/" : path);
		strCookie += "; expires=" + new Date(0).toGMTString();

		document.cookie = strCookie;
	}
}
//◆
//◆テキストボックスの内容クッキーの保存する　名前：textBox.ID　値：textBox.value ◆PF_getObj_LayFom
//◇引数：【テキストボックスID】
//◇戻値：【無し】
function Pf_txtbox_to_Cookie(txtName)
{
	strValue = PF_getObj_LayFom(txtName).value;
	strName = txtName;
	strdays = 2*365; //２年間
	Pf_setCookie(strName,strValue,strdays);
}
//◆クッキーの内容をテキストボックスに保存する　◆Pf_Cookie_to_txtbox
//◇引数：【テキストボックスID】
//◇戻値：【無し】
function Pf_Cookie_to_txtbox(txtName)
{
	strValue = Pf_getCookie(txtName);
	PF_getObj_LayFom(txtName).value = strValue;
}
//◆クッキーの内容をﾃｷｽﾄIDから削除する　◆Pf_clearCookie_txtbox
//◇引数：【テキストボックスID】
//◇戻値：【無し】
function Pf_clearCookie_txtbox(txtName)
{
	Pf_clearCookie(txtName,'/');
}
//◆２日保存のクッキー名と値をセットする ◆PF_getObj_LayFom
//◇引数：【テキストボックスID】
//◇戻値：【無し】
function Pf_Set_Cookie(Name,Val)
{
	strValue = Val;
	strName = Name;
	strdays = 2; //１日
	Pf_setCookie(strName,strValue,strdays);
}
