if(typeof wzs == "undefined"){
	wzs = {};
}

/***********************************************************
** wzs.fckeditor を利用する場合、インスタンスを保持
************************************************************/
this.FCKeditor_OnComplete = function(editor) {
	wzs.fckeditor = editor;
};

/*************************************************************************************************************************
**
** requestAjax  ajax リクエストを送る jquery を利用
**
*************************************************************************************************************************/
wzs.requestAjax = function(param, url, func, type) {
	$.ajax({
		url: url,
		cache: true,
		type: "POST",
		dataType: type,
		data: param,
        	success: function (response) {
			func(response);
		},
        	error: function () {
			func();
    		}
	});
	return false;
};


/***********************************************************
** 汎用関数群 Tools を設定
************************************************************/
wzs.Tools = function() {};

wzs.Tools.escapehtml = function(ch) {
	ch = ch.replace(/&/g,"&amp;") ;
	ch = ch.replace(/"/g,"&quot;") ;
	ch = ch.replace(/'/g,"&#039;") ;
	ch = ch.replace(/</g,"&lt;") ;
	ch = ch.replace(/>/g,"&gt;") ;
	return ch ;
};

/*************************************************************************************************************************
**
** isDate 正規表現による書式チェック
**
*************************************************************************************************************************/
wzs.Tools.isDate = function(datestr) {
	if(!datestr.match(/^\d{4}-\d{2}-\d{2}$/)){
		return false;
	}
	var vYear = datestr.substr(6, 4) - 0;
	var vMonth = datestr.substr(3, 2) - 1; // Javascriptは、0-11で表現
	var vDay = datestr.substr(0, 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;
	}
};

/*************************************************************************************************************************
**
** isASCii 半角かどうかをチェック
**
*************************************************************************************************************************/
wzs.Tools.isASCii = function(val) {
	for(var i=0 ; i<val.length; i++){
		var code=val.charCodeAt(i);
		if (code<32 || code>127) {
			return false;
		}
	}
	return true;
};

/*************************************************************************************************************************
**
** isOKChar  ajax リクエストで送れる文字列かどうかをチェック < が NG
**
*************************************************************************************************************************/
wzs.Tools.isOKChar = function(val) {
	for(var i=0 ; i<val.length; i++){
		var code=val.charCodeAt(i);
		// if (code == 92 || code== 39 || code== 34) { // \'" -> NG
		if (code == 60) { // < -> NG
			return false;
		}
	}
	return true;
};

/*************************************************************************************************************************
**
** isSpaceCharOnly  空白文字のみかをチェック 
**
*************************************************************************************************************************/
wzs.Tools.isSpaceCharOnly = function(val) {
	for(var i=0 ; i<val.length; i++){
		var code=val.charCodeAt(i);
		if (code != 32 && code != 12288 && code != 09 && code != 10 && code != 13) { // TAB, NL, CR
			return false;
		}
	}
	return true;
};

/*************************************************************************************************************************
**
** isValidEmail  emailアドレスとして有効化かをチェック
**
*************************************************************************************************************************/
wzs.Tools.isValidEmail = function(val) {
	if(val.match(/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i)) {
		return true;
	}
	return false;
};

/*************************************************************************************************************************
**
** check_anitem  １項目が有効かをチェック
**
*************************************************************************************************************************/
wzs.Tools.check_anitem = function(val, name, mandatory, length_min, length_max, asciionly) {
	var ret = "";
	if (mandatory) {
		if (wzs.Tools.isSpaceCharOnly(val)) {
			ret += "・" + name + "を入力してください。\n";
		}
	}
	if (length_min == 0) {
		if (val.length > length_max) {
			ret += "・" + name + "が長すぎます。" + length_max + " 文字以内にしてください。\n";
		}
	} else {
		if ((val.length < length_min) || (val.length > length_max)) {
			ret += "・" + name + "は " + length_min + "文字以上 " + length_max + " 文字以下にしてください。\n";
		}
	}
	if (asciionly) {
		if (!wzs.Tools.isASCii(val)) {
			ret += "・" + name + "は半角で入力してください。\n";
		}
	}
	if (!wzs.Tools.isOKChar(val)) {
		ret += "・" + name + "には半角の < は使用できません。\n";
	}
	return ret;
};

/*************************************************************************************************************************
**
** check_anitem  email １項目が有効かをチェック
**
*************************************************************************************************************************/
wzs.Tools.check_email = function(val, name, mandatory, length_min, length_max, asciionly) {
	var errmsg = wzs.Tools.check_anitem(val, name, mandatory, length_min, length_max, asciionly);
	if (errmsg != "") {
		return errmsg;
	}
	if (val != "") {
		if (!wzs.Tools.isValidEmail(val)) {
			return "・" + name + "が不正です。\n";
		}
	}
	return "";
};

