﻿//入力チェック関数

//メールアドレスチェック関数
function validateEmail(inputField,helpText) {
var oRegex = new RegExp
	oRegex.pattern = ("^[\w\.\/\_\-\+]+@[\w\.-]+\.\w{2,}$");
	
	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^[\w\.\/\_\-\+]+@[\w\.-]+\.\w{2,}$/,inputField.value,helpText,"メールアドレスを入力してください。(例:pickup@estate.room)");
	}else{
		return validateRegEx2(/^[\w\.\/\_\-\+]+@[\w\.-]+\.\w{2,}$/,inputField.value);
	}
}

//郵便番号チェック関数
function validatePostCode(inputField,helpText) {
var oRegex = new RegExp("^\d{3}-\d{4}$");
	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^\d{3}-\d{4}$/,inputField.value,helpText,"郵便番号の入力形式を確認してください。(例:123-4567)");
	}else{
		return validateRegEx2(/^\d{3}-\d{4}$/,inputField.value);
	}
}

//電話番号チェック関数
function validateTel(inputField,helpText) {
var oRegex = new RegExp("^\d{2,5}-\d{1,4}-\d{4}$");
	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^\d{2,5}-\d{1,4}-\d{4}$/,inputField.value,helpText,"電話番号の入力形式を確認してください。(例:03-3491-9249)");
	}else{
		return validateRegEx2(/^\d{2,5}-\d{1,4}-\d{4}$/,inputField.value);
	}
}

//担当者ｶﾅチェック関数
function validateKana(inputField,helpText) {
var oRegex = new RegExp("^[｡-ﾟ]{1,}$");
	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^[｡-ﾟ]{1,}$/,inputField.value,helpText,"半角カタカナを入力してください。半角スペースは使用できません(例:ﾋﾟｯｸｱｯﾌﾟ)");
	}else{
		return validateRegEx2(/^[｡-ﾟ]{1,}$/,inputField.value);
	}
}

//FAX番号チェック関数
function validateFax(inputField,helpText) {
var oRegex = new RegExp("^\d{2,5}-\d{1,4}-\d{4}$");
	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^\d{2,5}-\d{1,4}-\d{4}$/,inputField.value,helpText,"FAX番号の入力形式を確認してください。(例:03-3491-9249)");
	}else{
		return validateRegEx2(/^\d{2,5}-\d{1,4}-\d{4}$/,inputField.value);
	}
}

//パスワードチェック関数
function validatePassWord(inputField,helpText) {
	if (!validateNonEmpty(inputField,helpText))
		return false;
	
	return validateRegEx(/^\w{4,10}$/,inputField.value,helpText,"パスワードは4文字以上10文字以下の半角英数字で入力してください。");
}

//整数チェック関数
function validateInt(inputField,helpText) {
var oRegex = new RegExp("^[0-9]{1,}$");

	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		return validateRegEx(/^[0-9]{1,}$/,inputField.value,helpText,"半角数字で整数を入力してください。");
	}else{
		return validateRegEx2(/^[0-9]{1,}$/,inputField.value);
	}
}

//浮動小数点チェック関数
function validateDecimal(inputField, helpText) {

	if (inputField.value.length == 0) {
		replaceNodeText(helpText,"");
		return true;
	}
	if (validateRegEx((/^\d{1,3}$/),inputField.value,helpText,"半角数字で整数部３桁以下、小数部１桁以下の半角数字を入力してください。") || validateRegEx((/^\d{1,3}\.{1}\d{1}$/),inputField.value,helpText,"整数部３桁以下、小数部１桁以下の半角数字を入力してください。"))
		return true;
	else
		return false;
}

//半角英数チェック
function validateHanCheck(inputField, helpText) {

	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		if (validateRegEx(/\w/,inputField.value,helpText,"半角数字で入力してください。"))
			return true;
		else
			return false;
	}else{
		return validateRegEx2(/\w/,inputField.value);
	}
}

//日付チェック関数
function validateDate(inputField,helpText) {
	var vYear = "";
	var vMonth = "";
	var vDay ="";
	
var oRegex = new RegExp("^\d{2,5}-\d{1,4}-\d{4}$");

	if (arguments.length==2){
		if (inputField.value.length == 0) {
			replaceNodeText(helpText,"");
			return true;
		}
		if (!validateRegEx((/^\d{4}\/\d{2}\/\d{2}$/),inputField.value,helpText,"日付は 'yyyy/mm/dd' の形式で入力してください。(例:2001/04/02)"))
			return false;
		
		vYear = inputField.value.substr(0, 4);
	    var vMonth = inputField.value.substr(5, 2) - 1; //Javascriptは、0-11で表現
	    var vDay = inputField.value.substr(8, 2) - 0;
	    // 月,日の妥当性チェック
	    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
	        var vDt = new Date(vYear, vMonth, vDay);
	        if(isNaN(vDt)){
				replaceNodeText(helpText,"日付が正しくありません。");
	            return false;
			}else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
				replaceNodeText(helpText,"");
				return true;
	        }else{
				replaceNodeText(helpText,"日付が正しくありません。");
	            return false;
	        }
	    }else{
			replaceNodeText(helpText,"日付が正しくありません。");
	        return false;
	    }
	}else{
		if (!validateRegEx2((/^\d{4}\/\d{2}\/\d{2}$/),inputField.value))
			return false;

		vYear = inputField.value.substr(0, 4);
	    var vMonth = inputField.value.substr(5, 2) - 1; //Javascriptは、0-11で表現
	    var vDay = inputField.value.substr(8, 2) - 0;
	    // 月,日の妥当性チェック
	    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
	        var vDt = new Date(vYear, vMonth, vDay);
	        if(isNaN(vDt)){
				return false;
			}else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
				return true;
	        }else{
				return false;
	        }
	    }else{
	        return false;
	    }
	}
}

//正規表現チェック関数
//regex:正規表現
//inputStr:チェックするテキスト
//helpText:ヘルプメッセージの親ノード
//helpMessage:ヘルプメッセージ
function validateRegEx(regex,inputStr,helpText,helpMessage) {
	if (!inputStr.match(regex)) {
		if (helpText != null)
			replaceNodeText(helpText,helpMessage);
		return false;
	} else {
		if (helpText != null)
			replaceNodeText(helpText,"");
		return true;
	}
}

//値が入力されたかチェックする
//inputField:チェックするテキストの入力フィールド
//helpText:ヘルプメッセージの親ノード
function validateNonEmpty(inputField,helpText) {
	if (inputField.value.length == 0) {
		if (helpText != null)
			replaceNodeText(helpText,"値を入力してください。");
		return false;
	} else {
		if (helpText != null)
			replaceNodeText(helpText,"");
		return true;
	}
}

//あるノード中のテキストノードを変更する
//node:ノード
//newText:変更後のテキストノード
function replaceNodeText(node,newText) {
	while (node.firstChild)
		node.removeChild(node.firstChild);
	node.appendChild(document.createTextNode(newText));
}

function validateRegEx2(regex,inputStr) {

	if (!inputStr.match(regex)) {
		return false;
	} else {
		return true;
	}
}

/********************************************************************************/
// 入力値が全角文字かチェックする
//
// Input Param    : psStr = チェック対象文字列
/********************************************************************************/
function validateZenCheck(psStr,helpText) {

	if (arguments.length==2){
		if (psStr.value.length != validateConvWide(psStr.value,2).length) {
			replaceNodeText(helpText,"全角文字で入力して下さい。");
			return false;
		}else{
			replaceNodeText(helpText,"");
		}
	}else{
		if (psStr.length != validateConvWide(psStr,2).length) {
			return false;
		}
	}
	return true;
}

/********************************************************************************/
// 入力値が全角カナ文字かチェックする
//
// Input Param    : psStr = チェック対象文字列
/********************************************************************************/
function validateZenKnCheck(psStr) {

	if (validateConvWide(psStr,3).length != 0) {
		return false;
	}
	return true;
}

/********************************************************************************/
// 全角半角変換
//
// Input Param    : psInp         = 変換文字列
//                  piType        = 0:半角→全角 1:全角→半角 2:半角削除 3:全角カナ削除
/********************************************************************************/
function validateConvWide(psInp,piType){
var sConv=psInp;
var i;

		//検索文字列を変換するための変換文字列配列
var sHanKana = new Array("ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ","ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ",
	"ﾂﾞ","ﾃﾞ","ﾄﾞ","ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ","ｦ","ｧ",
	"ｨ","ｩ","ｪ","ｫ","ｬ","ｭ","ｮ","ｯ","ｰ","ｱ","ｲ","ｳ","ｴ","ｵ","ｶ","ｷ","ｸ","ｹ",
	"ｺ","ｻ","ｼ","ｽ","ｾ","ｿ","ﾀ","ﾁ","ﾂ","ﾃ","ﾄ","ﾅ","ﾆ","ﾇ","ﾈ","ﾉ","ﾊ","ﾋ",
	"ﾌ","ﾍ","ﾎ","ﾏ","ﾐ","ﾑ","ﾒ","ﾓ","ﾔ","ﾕ","ﾖ","ﾗ","ﾘ","ﾙ","ﾚ","ﾛ","ﾜ","ﾝ");
var sZenKana = new Array("ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ",
	"ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ","ヲ","ァ",
	"ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ","ー","ア","イ","ウ","エ","オ","カ",
	"キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ",
	"ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ",
	"ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ン");

var sHanAlpha = 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 sZenAlpha = new Array("０","１","２","３","４","５","６","７","８","９"
	,"Ａ","Ｂ","Ｃ","Ｄ","Ｅ","Ｆ","Ｇ","Ｈ","Ｉ","Ｊ","Ｋ","Ｌ","Ｍ","Ｎ","Ｏ"
	,"Ｐ","Ｑ","Ｒ","Ｓ","Ｔ","Ｕ","Ｖ","Ｗ","Ｘ","Ｙ","Ｚ"
	,"ａ","ｂ","ｃ","ｄ","ｅ","ｆ","ｇ","ｈ","ｉ","ｊ","ｋ","ｌ","ｍ","ｎ","ｏ"
	,"ｐ","ｑ","ｒ","ｓ","ｔ","ｕ","ｖ","ｗ","ｘ","ｙ","ｚ"
	,"　","！","”","＃","＄","％","＆","’","（","）","＊","＋","，","－","．","／"
	,"：","；","＜","＝","＞","？","＠"
	,"［","￥","］","＾","＿","　","‘","｛","｜","｝","～","。","「","」","、","・");

	switch (piType){
		case 0:
			for (i=0;i<sHanKana.length;i++){
				sConv=sConv.split(sHanKana[i]).join(sZenKana[i]); 
			}
			for (i=0;i<sHanAlpha.length;i++){
				sConv=sConv.split(sHanAlpha[i]).join(sZenAlpha[i]); 
			}
			break;
		case 1:
			for (i=0;i<sHanKana.length;i++){
				sConv=sConv.split(sZenKana[i]).join(sHanKana[i]); 
			}
			for (i=0;i<sHanAlpha.length;i++){
				sConv=sConv.split(sZenAlpha[i]).join(sHanAlpha[i]); 
			}
			break;
		case 2:
			for (i=0;i<sHanKana.length;i++){
				sConv=sConv.split(sHanKana[i]).join(""); 
			}
			for (i=0;i<sHanAlpha.length;i++){
				sConv=sConv.split(sHanAlpha[i]).join(""); 
			}
			break;
		case 3:
			for (i=0;i<sZenKana.length;i++){
				sConv=sConv.split(sZenKana[i]).join(""); 
			}
			sConv = sConv.replace(/　/g,"");
			break;
	}

	return sConv;
}
