//##################################################
//　関数名　：
//　処理概要：画像を読み込めたときの処理
//　引数　　：
//　戻り値　：
//##################################################
function worksForLoaded(){
	return true;
}
//##################################################
//　関数名　：
//　処理概要：画像を読み込めなかったときの処理
//　引数　　：
//　戻り値　：
//##################################################
function worksForErr(imgid){
	if(document.getElementById(imgid) != null){
		var targetNode = document.getElementById(imgid);
		targetNode.parentNode.removeChild(targetNode);
	}
}

//##################################################
//　関数名　：
//　処理概要：キーコードを取得
//　引数　　：
//　戻り値　：
//##################################################
function gfunGetKeyCode(e){
	if(document.all) {
		return event.keyCode
	} else if(document.getElementById) {
		return (e.keyCode!=0)?e.keyCode:e.charCode
	} else if(document.layers) {
		return e.which
	}
}
//##################################################
//　関数名　：
//　処理概要：
//　引数　　：
//　戻り値　：
//##################################################
function dispList(index){
	var obj = document.getElementById("list"+index);
	if(obj.style.display=="none"){
		obj.style.display="block";
	}else{
		obj.style.display="none";
	}
}
//##################################################
//　関数名　：y01submit
//　処理概要：
//　引数　　：ページ番号
//　戻り値　：なし
//##################################################
function y01submit(wd){
	var objFrm=document.frmIndex;
//	objFrm.action="index.php";
//	objFrm.method="get";
//	objFrm.submit();
	if(wd.trim()==""){
		alert("検索ワードを指定してください。");
		objFrm.wd.focus();
		objFrm.wd.select();
		return false;
	}
	location.href = "http://senegal.shikaku-research.com/"+encodeURI(wd)+"-1.html";
}

//##################################################
//　HTTP通信用、共通関数
//##################################################
function createXMLHttpRequest(cbFunc){
	var XMLhttpObject = null;
	try{
		XMLhttpObject = new XMLHttpRequest();
	}
	catch(e){
		try{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				return null;
			}
		}
	}
	if (XMLhttpObject){
		XMLhttpObject.onreadystatechange = cbFunc;
	}
	return XMLhttpObject;
}


//##################################################
//　StringクラスにTrimメソッドの追加
//##################################################
String.prototype.trim = function() {
	return this.replace(/^[ 　]+|[ 　]+$/g, '');
}
//##################################################
//　関数名　：showHide
//　処理概要：折りたたみリンク
//　引数　　：カテゴリコード
//　戻り値　：なし
//##################################################
function showHide(cateCode){
	var objID=document.getElementById("layer_"+cateCode);
	var buttonID=document.getElementById("category_"+cateCode);
	if(objID.className=='close') {
		objID.style.display='block';
		objID.className='open';
	}else{
		objID.style.display='none';
		objID.className='close';
	}
}
//##################################################
//　関数名　：chkInput
//　処理概要：資格検索画面の入力チェック
//　引数　　：なし
//　戻り値　：true/false
//##################################################
function chkInput(){
	var objfrm = document.frmSearch;
	//必須チェック
	if(chkMltRec()==false){
		alert("最低１項目は検索条件を指定してください。");
		objfrm.txtSkkNm.focus();
		objfrm.txtSkkNm.select();
		return false;
	}
	//byte数チェック
	if(getByteCount(objfrm.txtSkkNm.value) > 50){
		alert("資格名は50byte以内で指定してください。");
		objfrm.txtSkkNm.focus();
		objfrm.txtSkkNm.select();
		return false;
	}
	if(getByteCount(objfrm.txtJknSkk.value) > 50){
		alert("資格資格は50byte以内で指定してください。");
		objfrm.txtJknSkk.focus();
		objfrm.txtJknSkk.select();
		return false;
	}
	if(getByteCount(objfrm.txtGaiyo.value) > 50){
		alert("概要は50byte以内で指定してください。");
		objfrm.txtGaiyo.focus();
		objfrm.txtGaiyo.select();
		return false;
	}
	return true;
}
//##################################################
//　関数名　：chkNewRegi
//　処理概要：新規登録画面の入力チェック
//　引数　　：なし
//　戻り値　：true/false
//##################################################
function chkNewRegi(){
	var objfrm = document.frmNewRegi;
	// --- メールアドレス ---
	// byte数チェック
	if(getByteCount(objfrm.txtMail.value) > 50){
		alert("メールアドレスは50byte以内で指定してください。\n（半角英数字50文字以内）");
		objfrm.txtSkkNm.focus();
		objfrm.txtSkkNm.select();
		return false;
	}
	// メールアドレスチェック
	if(chkRegEmail(objfrm.txtMail.value)==false){
		objfrm.txtMail.focus();
		objfrm.txtMail.select();
		return false;
	}
	// --- パスワード ---
	// 必須チェック
	if(objfrm.txtPass.value.trim()==""){
		alert("パスワードを入力してください。");
		objfrm.txtPass.focus();
		objfrm.txtPass.select();
		return false;
	}
	// 半角英数字チェック
	if(chkAlphanumeric(objfrm.txtPass.value)==false){
		alert("パスワードは半角英数字のみで入力して下さい。");
		objfrm.txtPass.focus();
		objfrm.txtPass.select();
		return false;
	}
	// byte数チェック
	if(getByteCount(objfrm.txtPass.value) < 6 || getByteCount(objfrm.txtPass.value) > 10){
		alert("パスワードは6～10byteで指定してください。\n（半角英数字6～10文字）");
		objfrm.txtPass.focus();
		objfrm.txtPass.select();
		return false;
	}
	// --- ニックネーム ---
	// 必須チェック
	if(objfrm.txtUerNm.value.trim()==""){
		alert("ニックネームを入力してください。");
		objfrm.txtUerNm.focus();
		objfrm.txtUerNm.select();
		return false;
	}
	// byte数チェック
	if(getByteCount(objfrm.txtPass.value) > 20){
		alert("ニックネームは40byte以内で指定してください。\n（全角10文字以内、半角20文字以内）");
		objfrm.txtUerNm.focus();
		objfrm.txtUerNm.select();
		return false;
	}
	// --- 自己紹介 ---
	// 禁則文字チェック
//★★★
//	if(objfrm.txaSelf.value==""){
//		alert("自己紹介は・・・。");
//		objfrm.txaSelf.focus();
//		objfrm.txaSelf.select();
//		return false;
//	}
	// byte数チェック
	if(getByteCount(objfrm.txaSelf.value) > 200){
		alert("自己紹介は200byte以内で指定してください。\n（全角100文字以内、半角200文字以内）");
		objfrm.txaSelf.focus();
		objfrm.txaSelf.select();
		return false;
	}
	return true;
}
//##################################################
//　関数名　：chkMltRec
//　処理概要：資格検索画面の入力必須チェック
//　引数　　：なし
//　戻り値　：true/false
//##################################################
function chkMltRec(){
	var objfrm = document.frmSearch;
	for(var i=0; i<objfrm.length; i++){
		if(objfrm.elements[i].type=="text"){
			if(objfrm.elements[i].value.trim()!=""){
				return true;
			}
		}
		if(objfrm.elements[i].type=="select-one"){
			if(objfrm.elements[i].value!="0"){
				return true;
			}
		}
	}
	return false;
}
//##################################################
//　関数名　：getByteCount
//　処理概要：文字列のバイト数を取得する
//　引数　　：処理対象となる文字列
//　戻り値　：取得したバイト数
//##################################################
function getByteCount(value){
	var count = 0;
	for(var i=0; i<value.length; ++i){
		var sub = value.substring(i,i+1);
		//全角の場合２バイト追加
		if(checkIsZenkaku(sub)){
			count += 2;
		}else{
			count += 1;
		}
	}
	return count;
}
//##################################################
//　関数名　：checkIsZenkaku
//　処理概要：全角であるかをチェックする
//　引数　　：処理対象となる値
//　戻り値　：ture : 全角 / flase : 全角以外
//##################################################
function checkIsZenkaku(value){
	for(var i=0; i<value.length; ++i){
		var c = value.charCodeAt(i);
		// 半角カタカナは不許可
		if(c<256 || (c>=0xff61 && c <= 0xff9f)){
			return false;
		}
	}
	return true;
}
//##################################################
//　関数名　：chkRegEmail
//　処理概要：半角英文字チェック
//　引数　　：入力された文字列
//　戻り値　：true/false
//##################################################
function chkAlphanumeric(str){
	if( str.match( /[^A-Za-z0-9\s]+/ ) ) {
		return false;
	}
}
//##################################################
//　関数名　：chkRegEmail
//　処理概要：メールアドレス（E-mail）チェック
//　引数　　：入力された文字列
//　戻り値　：true/false
//##################################################
function chkRegEmail(str){
	/* @が含まれていて、最後が .(ドット)でないなら正しいとする */
	var Seiki=/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;
	/* 入力された値がパターンにマッチするか調べる */
	if(str!=""){
		if(str.match(Seiki)){
			return true;
		}else{
			alert("メールアドレスの形式が不正です");
			return false;
		}
	}else{
		alert("メールアドレスを入力してください");
		return false;
	}
}

