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

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

wzs.Tools.nl2br = function(ch) {
	ch = ch.replace(/\r\n/g,"\r") ;
	ch = ch.replace(/\r/g,"\n") ;
	ch = ch.replace(/\n/g,"<br />") ;
	return ch ;
};

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 != 9 && 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 += "・Please input " + name + "\n";
		}
	}
	if (length_min == 0) {
		if (val.length > length_max) {
			ret += "・" + name + " is under" + length_max + " characters. \n";
		}
	} else {
		if ((val.length < length_min) || (val.length > length_max)) {
			ret += "・" + name + " is between " + length_min + " and " + length_max + " characters\n";
		}
	}
	if (asciionly) {
		if (!wzs.Tools.isASCii(val)) {
			ret += "・Please input " + name + " in Hankaku character.\n";
		}
	}
	if (!wzs.Tools.isOKChar(val)) {
		ret += "・'<' cannot be used for " + 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 "・Invalid " + name + "\n";
		}
	}
	return "";
};


/*************************************************************************************************************************
**
** requestAjax  ajax リクエストを送る jquery を利用
**
*************************************************************************************************************************/
wzs.requestAjax = function(params, url, func, type) {
	Ext.Ajax.request({ 
		url: url,
		method: "POST", 
		params: params, 
        	success: function (response, request) {
			func(response.responseText);
		},
		failure: function (response, request) {
			func(response.responseText);
    		}
	}); 
	return false;
};


