function isBlank(val)
{
	for (var i = 0; i < val.length; i++)
	{
		var test = val.charAt(i);
		if ((test != ' ') && (test != '　') && (test != '\n') && (test != '\t'))
			return false;
	}
	return true;
}

function isValidEmail(str)
{
	//var regex = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
    //return regex.test(str);
    
	if (!str) return false;
	if (isBlank(str) == true) return false;

	var at_loc = str.indexOf("@");
	var dot_loc = str.lastIndexOf(".");

	if ((at_loc == "-1") || (dot_loc == "-1") || (dot_loc < at_loc) || (dot_loc == (str.length-1)))
		return false;

	var iChars = "*|,\":<>[]{}`\';()&$#%!=?\\";
	for (var i = 0; i < str.length; i++) {
		wstr = str.charAt(i);
		if (iChars.indexOf(wstr) != -1) {
			return false;
		}
		c = escape( wstr );		if ( c.length > 3 )
		{
			alert("E-mailアドレスに全角文字が含まれています。");
			return false;
		}
	}
	return true;
}

function CheckEmail(email)
{
	var l, iFirst, iLast, i;
	// left trim
	l = email.length;
	iFirst = 0;
	for (i = 0; i < l; i++)
	{
		var ch = email.charAt(i);
		if (ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t')
			iFirst = i + 1;
		else
			break;
	}
	email = email.substring(iFirst);
	// right trim
	l = email.length;
	iLast = l;
	for (i = l - 1; i >= 0; i--)
	{
		var ch = email.charAt(i);
		if (ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t')
			iLast = i;
		else
			break;
	}
	email = email.substring(0, iLast);
	
	if (!isValidEmail(email))
		return false;

	return email;
}

function CheckDate(nYear, nMonth, nDate)
{
	if ((nMonth == 2)&&(nDate >= 29 ))
	{
		if (!(nYear % 4))
			nDate = 29;
		else
			nDate = 28;
	}
	else if ((nDate >= 31)&&((nMonth == 4)||(nMonth == 6)||(nMonth == 9)||(nMonth==11)))
	{
		nDate = 30;
	}
	return nDate;
}

function isValidColor(str)
{
	if (!str) return false;
	if (isBlank(str) == true) return false;

	if (str.charAt(0) != "#") return false;
	if (str.length != 7) return false;

	var iChars = "0123456789abcdefABCDEF";
	for (var i = 1; i < str.length; i++) {
		wstr = str.charAt(i);
		if (iChars.indexOf(wstr) == -1) {
			return false;
		}
	}
	return true;
}

/* 半角小文字英字及び数字及びハイフン、アンダーバー、カンマかをチェックする */
function IsAnks2(msg)
{
    var n = msg.length ;
    var i;

    for(i = 0; i < msg.length; i++)
    {
        if(IsAnk2(msg.charAt(i)) == false)
        {
		return false ;
        }
    }
   
    return true ;
}

/* 半角小文字英字及び数字及びハイフン、アンダーバーかをチェックする */
function IsAnk2(c) 
{
    //var ank = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ";
    var ank = "-0123456789_abcdefghijklmnopqrstuvwxyz";
    var i;

    for(i = 0; i < ank.length; i++)
    {
        if(c == ank.charAt(i))
        {
            return true ;
        }
    }
    return false ;
}

/* 半角文字かどうかチェックする */
function IsAnk(c) 
{
    var ank = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ";
    var i;

    for(i = 0; i < ank.length; i++)
    {
        if(c == ank.charAt(i))
        {
            return true ;
        }
    }
    return false ;
}

/* 文字列の長さをチェックする len 以下 */
function LengthCheck(msg, len) 
{
    var n = msg.length ;
    var i;

    for(i = 0; i < msg.length; i++)
    {
        if(IsAnk(msg.charAt(i)) == false)
        {
            n ++;
        }
    }
    if(n > len) return false ;
    else        return true ;
}

/* 日時のチェック yyyy/mm/dd hh:mm:ss の形式 */
function isValidDateTime(str)
{
	var s=str.split("/")
	if(s.length!=3)
		return false;
	var y=s[0];
	var m=s[1];
	var d=0;
	var wk1=s[2];
	if(isNaN(wk1))
	{
		var wk2=wk1.split(" ");
		if(wk2.length!=2)
			return false;
		d = wk2[0];
		var wk3 = wk2[1];
		var wk4=wk3.split(":");
		if((wk4.length!=2)&&(wk4.length!=3))
			return false;
		var t_h=wk4[0];
		var t_m=wk4[1];
		if(isNaN(t_h)||isNaN(t_m))
			return false;
		if(t_h<0||t_h>24)
			return false;
		if(t_m<0||t_m>59)
			return false;
		if(wk4.length==3)
		{
			var t_s=wk4[2];
			if(isNaN(t_s))
				return false;
			if(t_s<0||t_s>59)
				return false;
		}
	}
	else
		d = wk1;
	
	if(isNaN(y)||isNaN(m)||isNaN(d))
		return false;
	if(y.length!=4)
		return false;
	if(m<1||m>12)
		return false;
	if(d<=0 || d>30+((m==4||m==6||m==9||m==11)?0:1) || (m==2&&d>28+(((y%4==0&&y%100!=0)||y%400==0)?1:0)) )
		return false;

	return true;
}

/* URLの妥当性チェック */
function IsURLs(msg)
{
    var n = msg.length ;
    var i;

    for(i = 0; i < msg.length; i++)
    {
        if(IsURL(msg.charAt(i)) == false)
			return false;
    }
    return true;
}

/* URLに使用禁止文字がないかチェックする */
function IsURL(c) 
{
    var ank = "\\\"<>";
    var i;

    for(i = 0; i < ank.length; i++)
    {
        if(c == ank.charAt(i))
            return false;
    }
    return true;
}

function strReverse(str) {
    var s = "";
    for (var i = 0; i < str.length; i++) {
        s += str.substring(str.length - i - 1, str.length - i);
    }
    return s;
}
