///////////////////////////////////////////////////////////////////////////////
//
//
//
//
//
//
//
//
//
//
///////////////////////////////////////////////////////////////////////////////

//クラス生成
var ca = new cajax();
var	vstack = new Array();

//=======================================================================
//
//
//
//
//
//=======================================================================
function CALIB()
{
	
	if (document.layers) 				N4 = 1;
	else if (document.all) 				IE = 1;
	else if (document.getElementById) 	GK = 1;
	
	return this;
}

/********************************************************/
//ウィンドウオープン
/********************************************************/
CALIB.prototype.openwnd = function(div_name)
{
	objDiv = div_get_object(div_name);	
	objDiv.style.display = "block";
}

/********************************************************/
//ウィンドウクローズ
/********************************************************/
CALIB.prototype.closewnd = function(div_name)
{
	objDiv = div_get_object(div_name);	
	objDiv.style.display = "none";
}

/********************************************************/
//ウィンドウオープン、クローズ
/********************************************************/
CALIB.prototype.open_closewnd = function(div_name)
{
	objDiv = div_get_object(div_name);

	if(objDiv.style.display)
	{
		if(objDiv.style.display == "none")
			{objDiv.style.display = "block";}
		else
			{objDiv.style.display = "none";}
	}
	else
	{
		if(objDiv.style.visibility == "hidden")
			{objDiv.style.visibility = "visible";}
		else
			{objDiv.style.visibility = "hidden";}
	}
}

/********************************************************/
//ウインドウ消去
/********************************************************/
CALIB.prototype.erase = function(div_name)
{
	if(div_name.length > 0)
	{
		objDiv = div_get_object(div_name);
		objDiv.innerHTML = '';
	}
}

/********************************************************/
//ログイン
/********************************************************/
CALIB.prototype.login = function(loginname,password)
{
	var rtn="";
	var dat = new Object(); // Objectの生成 
	if(loginname != null)	{dat["login_name"] = loginname;}
	if(password != null)	{dat["passwd"] = password;}

	rtn = ca.call('login','',dat);

	if(rtn)	{}
	else	{alert('ＩＤまたはパスワードが違います。');}
	
}

/********************************************************/
//ログアウト
/********************************************************/
CALIB.prototype.logout = function()
{
	var strmsg;
	
	strmsg  = "ログアウトします。\n";
	strmsg += "よろしいですか？";
		
	myRtn = confirm(strmsg);
	if(myRtn)
	{
		ca.call('logout');
		location.reload();
	}
}

/********************************************************/
//アンロード
/********************************************************/
CALIB.prototype.unload = function()
{
	rtn = ca.call('unload');
}

/********************************************************/
//テキスト一致検査
/********************************************************/
CALIB.prototype.text_comp = function(div_name,str1,str2,rtn_str)
{
	var err=false;
	
	if(str1 != str2)
	{
		err = true;
	}

	if(div_name)
	{
		objDiv = div_get_object(div_name);
		
		if(err)
		{
			if(rtn_str)	{objDiv.innerHTML = rtn_str;}
			else		{objDiv.innerHTML = "一致しません。";}
		}
		else
		{
			objDiv.innerHTML = "";
		}
	}
	
	if(err)	return false;
	else	return true;
}



/********************************************************/
//呼び出し
/********************************************************/
CALIB.prototype.call = function(div_name,str_action,str_exec,options)
{
	if(div_name.length > 0)
	{
		objDiv = div_get_object(div_name);
		objDiv.innerHTML = ca.call(str_action,str_exec,options);
	}
	else
	{
		ca.call(str_action,str_exec,options);
	}
}

/********************************************************/
//呼び出し、フォームデータあり
/********************************************************/
CALIB.prototype.call_form = function(div_name,str_action,str_exec,options,f_obj)
{
	var dat = new Object(); // Objectの生成 
	var rtn="";
	var errflag=false;

	dat = this.get_form_data(f_obj);

	if(div_name.length > 0)
	{
		objDiv = div_get_object(div_name);
		objDiv.innerHTML = ca.call(str_action,str_exec,options,dat);
	}
	else
	{
		ca.call(str_action,str_exec,options,dat);
	}

}

/********************************************************/
// システムのデータをJavascript側へ転送スタックデータに入る
/********************************************************/
CALIB.prototype.sys2ajax = function(str_action,str_exec,options)
{
	var objRtn = ca.call(str_action,str_exec,options);
	//alert(objRtn);
	objRtn = eval(objRtn);
	//var objRtn = eval(ca.call(str_action,str_exec,options));

	//alert(objRtn);
	
	var i=0,j=0;
	for(i=0;i<objRtn.length;i++)
	{
		if(!!objRtn[i])	{vstack[j] = objRtn[i]; j++;}
	}

}
/********************************************************/
//一時保存
/********************************************************/
CALIB.prototype.set_stack = function(key,f_obj)
{
	vstack[key] = this.get_form_data(f_obj);
}

/********************************************************/
//一時保存読み取り
/********************************************************/
CALIB.prototype.get_stack = function(key)
{
	return vstack[key];
}

/********************************************************/
//一時保存フォーム再セット
/********************************************************/
CALIB.prototype.bak_stack = function(key,f_obj,f_obj_key)
{

	var obj_keys = f_obj_key.split(",");
	var obj = this.get_stack(key);
	
	if (!!obj && !!obj_keys)
	{
		for(i=0;i<obj_keys.length;i++)
		{
			f_obj[obj_keys[i]].value ="";
			
			//alert(obj[obj_keys[i]]);
			
			if(!!obj[obj_keys[i]])	
			{
				//alert(obj_keys[i]);
				if(obj_keys[i] == 'fckeditor')
				{
					//alert('AAAA');
					content = FCKeditorAPI.GetInstance('fckeditor').SetHTML(obj[obj_keys[i]]);
				}
				else
				{
					f_obj[obj_keys[i]].value = obj[obj_keys[i]];
				}
			}
		}
	}
	else
	{
		//画面クリア処理
		for(i=0;i<obj_keys.length;i++)
		{
			if(!!f_obj[obj_keys[i]])
			{
				if(obj_keys[i] == 'fckeditor')
				{
					content = FCKeditorAPI.GetInstance('fckeditor').SetHTML('');
				}
				else
				{
					f_obj[obj_keys[i]].value ="";
				}
			}
		}
	}		
}

/********************************************************/
//一時保存クリア
/********************************************************/
CALIB.prototype.cls_stack = function()
{
	//vstack = new Object();
	vstack = new Array();
}

/********************************************************/
//保存、削除
/********************************************************/
CALIB.prototype.save = function(div_name,str_action,str_exec,options,f_obj,check_options)
{
	//var dat = new Object(); // Objectの生成
	var dat = new Array();
	var rtn="";
	var errflag=false;
	var aryFlag = true;

	if(!!vstack)
	{
		dat[0] = this.get_form_data(f_obj);
		
		var i=0,j=0;
		for(i=0;i<vstack.length;i++)
		{
			if(!!vstack[i])	{dat[j+1] = vstack[i]; j++;}
		}
		//スタックされたデータがない場合は単体挿入
		if(j==0)	{dat = dat[0];aryFlag=false;}
	}

	//return;

	//================	
	//check value
	//================	
	//注意：PEARライブラリ HTML_AJAXのバージョンが 0.5.0以外だとca.checkが
	//はじめに実行された後、このforループから抜けてしまう。もしくは非同期な為
	//結果を待たずしてforループから抜けてしまう。
	//ca.checkの実行のみ同期する処理を入れるかしなければならない。
	//値を配列で渡す
	errflag = false;
	if(aryFlag)
	{
		//alert(dat[0]);
		rtn = ca.check_all(str_action,str_exec,options,dat[0]);
		if(rtn.length > 0)	{alert(rtn);　errflag=true;}
		
	}
	else
	{
		rtn = ca.check_all(str_action,str_exec,options,dat);
		if(rtn.length > 0)	{alert(rtn);　errflag=true;}
	}
	
	if(!errflag)
	{
		if(confirm('実行します。よろしいですか？'))
		{
			if(div_name.length > 0)
			{
				objDiv = div_get_object(div_name);
				objDiv.innerHTML = ca.call(str_action,str_exec,options,dat);
			}
			else
			{
				ca.call(str_action,str_exec,options,dat);
			}
			
			this.cls_stack();
		}
	}
}

/********************************************************/
//値の確認　admin,
/********************************************************/
//CALIB.prototype.check = function(div_name,str_action,str_field,str_value,options)
CALIB.prototype.check = function(div_name,str_action,str_exec,options,str_field,str_value,f_obj)
{
	var rtn = "";

	//rtn = ca.check(str_action,str_field,str_value,options);
	rtn = ca.check(str_action,str_exec,options,str_field,str_value,f_obj);
	if(div_name.length > 0)
	{
		objDiv = div_get_object(div_name);
		objDiv.innerHTML = rtn;
	}
	else
	{	
		if(rtn.length > 0)	alert(rtn);
	}

}

/********************************************************/
//フォームデータ取得
/********************************************************/
CALIB.prototype.get_form_data = function(f_obj)
{
	var dat = new Object(); // Objectの生成 
	var content="";
	var tmp="";
	var tmpObj = new Object();
	var k=0;
	var rtn="";
	var errflag=false;

	//データセット
	for(i=0;i<f_obj.length;i++)
	{
		if(f_obj[i].name == "fckeditor")
		{
			content = FCKeditorAPI.GetInstance('fckeditor').GetXHTML();
			dat[f_obj[i].name] = content;
		}
		else
		{
			if(f_obj[i].type == "select-multiple")
			{
				k = 0;
				for (j=0; j<f_obj[i].options.length; j++) 
				{
			    	if (f_obj[i].options[j].selected) 
			    	{
						tmpObj[k] = f_obj[i].options[j].value;
						k++;
					}
            	}

				dat[f_obj[i].name] = tmpObj;
			}
			else if(f_obj[i].type == "checkbox")
			{
				if(!dat[f_obj[i].name])
				{
					dat[f_obj[i].name] = "";
					k=0;
					tmpObj = new Object();
				}
				
				if(f_obj[i].checked)
				{
					tmpObj[k] = f_obj[i].value;
					dat[f_obj[i].name] = tmpObj;
					k++;
				}
					
			}
			else if(f_obj[i].type == "radio")
			{
				/*
				if(!dat[f_obj[i].name])
				{
					dat[f_obj[i].name] = "";
					k=0;
					tmpObj = new Object();
				}
				*/
				if(f_obj[i].checked)
				{
					dat[f_obj[i].name] = f_obj[i].value;
				}
			}
			else
			{
				dat[f_obj[i].name] = f_obj[i].value;
			}
		}
	}	
	return dat;
}



/********************************************************/
//DIVの切り替え
/********************************************************/
CALIB.prototype.change_div = function(div_name,flag,width,height)
{
	objDiv = div_get_object(div_name);
	div_visible(objDiv,flag);

	if(flag == true)
	{
		if(width != "")		objDiv.style.width = width + 'px';
		if(height != "")	objDiv.style.height = height + 'px';
	}
	else
	{
		objDiv.style.width = '1px';
		objDiv.style.height = '1px';
	}


}
