

///////////////////////////////////////////

//JS正则表达式/常用规则

///////////////////////////////////////////



//----------------------------------------
//检查用户名
function checkUserid(_id, _mod)
{
    var value = document.getElementById(_id).value;

    if(isEmpty(value))
	{
        trace(" × 用户名不能为空！", _mod, _id);
        return false;
	}

	if(!isUserid(value))
	{
        trace(" × 用户名只含中文、英文、数字、下划线！", _mod, _id);
        return false;
	}

	if(isNumberStart(value))
	{
		trace(" × 用户名不能以数字开头！", _mod, _id);
        return false;
	}

	if(!isEnoughLen(value, 4))
	{
        trace(" × 用户名必须含4个以上字符！", _mod, _id);
        return false;
	}

	if(isEnoughLen(value, 16))
	{
        trace(" × 用户名太长！", _mod, _id);
        return false;
	}

	return true;
}

//检查密码
function checkPassword(_id, _mod)
{
	var value = document.getElementById(_id).value;

    if(isEmpty(value))
	{
        trace(" × 密码不能为空！", _mod, _id);
        return false;
	}

	if(!isPassword(value))
	{
        trace(" × 密码只含英文、下划线、特殊字符！", _mod, _id);
        return false;
	}

	if(!isEnoughLen(value, 6))
	{
        trace(" × 密码必须6位以上！", _mod, _id);
        return false;
	}

	return true;
}

//检查密码一直性
function checkConfirmPassword(_id1, _id2, _mod)
{
	var value1 = document.getElementById(_id1).value;
	var value2 = document.getElementById(_id2).value;

	if(!isEqual(value1, value2))
	{
        trace(" × 两次输入的密码不一致!", _mod, _id2);
        return false;
	}

	return true;
}

//检查Email
function checkMail(_id, _mod)
{
    var value = document.getElementById(_id).value;

    if(isEmpty(value))
	{
        trace(" × 邮箱不能为空！", _mod, _id);
        return false;
	}

	if(!isMail(value))
	{
        trace(" × 请按:name@yahoo.com格式输入！", _mod, _id);
        return false;
	}

	

	return true;
}

//----------------------------------------
//检查中文姓名
function checkChineseName(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 真实姓名不能为空！", _mod, _id);
        return false;
	}

	if(!isChinese(value))
	{
        trace(" × 真实姓名只能为中文！", _mod, _id);
        return false;
	}

	if(!isEnoughLen(value, 2))
	{
        trace(" × 真实姓名必须为2位以上中文字符！", _mod, _id);
        return false;
	}

	return true;
}

//检查身份证
function checkIdCardNumber(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 身份证号码不能为空！", _mod, _id);
        return false;
	}

	if(!isIdCardNumber(value))
	{
        trace(" × 请输入15位或18位的数字身份证号码！", _mod, _id);
        return false;
	}

	

	return true;
}

//检查省份
function checkProvince(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value) || value == "请选择")
	{
        trace(" × 请选择你所在省份！", _mod, _id);
        return false;
	}

	return true;
} 

//检查城市
function checkCity(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value) || value == "请选择")
	{
        trace(" × 请选择你所在城市！", _mod, _id);
        return false;
	}

	return true;
} 

//检查地址
function checkadds(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 地址不能为空！", _mod, _id);
        return false;
	}

	return true;
} 

//检查邮编
function checkPost(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 邮政编码不能为空！", _mod, _id);
        return false;
	}

	if(!isPost(value))
	{
        trace(" × 请输入6位的数字邮政编码！", _mod, _id);
        return false;
	}

	return true;
} 


//----------------------------------------
//检查手机号码
function checkMobile(_id, _mod)
{
    var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 手机号码不能为空！", _mod, _id);
        return false;
	}

	if(!isMobile(value))
	{
        trace(" × 请输入正确的手机或小灵通号码！", _mod, _id);
        return false;
	}

	return true;
}

//检查电话号码
function checkPhone(_id, _mod)
{
	var value = document.getElementById(_id).value;
    
	if(isEmpty(value))
	{
        //trace("电话号码不能为空！", _mod, _id);
        //return false;
	} 
	else
	{
		if(!isPhone(value))
		{
			trace(" × 请输入正确的电话号码！", _mod, _id);
			return false;
		}
	}

	return true;
}


//检查QQ/MSN
function checkQq(_id, _mod)
{
	var value = document.getElementById(_id).value;
    
	if(isEmpty(value))
	{
        trace("QQ号码不能为空！", _mod, _id);
        return false;
	} 
	else
	{
		if(!isQq(value))
		{
			trace(" × 请输入正确的QQ号！", _mod, _id);
			return false;
		}
	}

	return true;
}


//检查QQ/MSN
function checkQqMsn(_id, _mod)
{
	var value = document.getElementById(_id).value;
    
	if(isEmpty(value))
	{
        //trace("电话号码不能为空！", _mod, _id);
        //return false;
	} 
	else
	{
		if(!isQq(value) && !isMsn(value))
		{
			trace(" × 请输入正确的QQ号或MSN地址！", _mod, _id);
			return false;
		}
	}

	return true;
}


//----------------------------------------
//检查银行名称
function checkBankName(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value) || value == "请选择")
	{
        trace(" × 请选择银行！", _mod, _id);
        return false;
	}

	return true;
} 

//检查银行省份
function checkBankProvince(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value) || value == "请选择")
	{
        trace(" × 请选择支行所在省份！", _mod, _id);
        return false;
	}

	return true;
} 

//检查银行城市
function checkBankCity(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value) || value == "请选择")
	{
        trace(" × 请选择支行所在城市！", _mod, _id);
        return false;
	}

	return true;
} 

//检查银行地址
function checkBankadds(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 支行的名称不能为空！", _mod, _id);
        return false;
	}

	return true;
}

//检查银行帐号
function checkBankAccount(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 银行帐号不能为空！", _mod, _id);
        return false;
	}

	if(!isBankAccount(value))
	{
        trace(" × 请输入正确的银行帐号!", _mod, _id);
        return false;
	}

	return true;
}

//检查银行帐户名
function checkBankAccountName(_truenameid, _id, _mod)
{
	var truename = document.getElementById(_truenameid).value;
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 开户名不能为空！", _mod, _id);
        return false;
	}

	if(!isChinese(value))
	{
        trace(" × 开户名只能为中文！", _mod, _id);
        return false;
	}

	if(!isEqual(truename, value))
	{
        trace(" × 开户名必须与真实姓名一致！", _mod, _id);
        return false;
	}

	return true;
}


//----------------------------------------
//检查公司名称
function checkCompanyName(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 公司名称不能为空！", _mod, _id);
        return false;
	}

	return true;
}

//检查公司地址
function checkCompanyAdds(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 公司地址不能为空！", _mod, _id);
        return false;
	}

	return true;
}

//检查验证码地址
function checkVcode(_id, _mod)
{
	var value = document.getElementById(_id).value;

	if(isEmpty(value))
	{
        trace(" × 验证码不能为空！", _mod, _id);
        return false;
	}

	return true;
}



///////////////////////////////////////////
//检查用户名是否已经存在
function confirmUseridExist(_id)
{
	var value = document.getElementById(_id).value;
	window.open("register/check_exist.php?action=checkuserid&userid="+value+ "&" + Math.random(), 'iframe_check_userid');
}

//检查邮箱是否已经存在
function confirmEmailExist(_id)
{
	var value = document.getElementById(_id).value;
	window.open("register/check_exist.php?action=checkemail&email="+value+ "&" + Math.random(), 'iframe_check_email');
}

//检查身份证是否已经存在
function confirmIdCardExist(_id)
{
	var value = document.getElementById(_id).value;
	window.open("register/check_exist.php?action=checkidcard&idcard="+value+ "&" + Math.random(), 'iframe_check_idcard');
}

//检查验证码是否正确
function confirmVcode(_id)
{
	var value = document.getElementById(_id).value;
	window.open("register/check_exist.php?action=checkvcode&vcode="+value+ "&" + Math.random(), 'iframe_check_vcode');
}







///////////////////////////////////////////

//基本规则

///////////////////////////////////////////


/*
[]匹配单个字符
()匹配多个字符，还可以用来分组

“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。
“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

{n} n 是一个非负整数。匹配确定的 n 次。
{n,} n 是一个非负整数。至少匹配 n 次。
{n,m} m 和 n 均为非负整数，其中n <= m。最少匹配 n 次且最多匹配 m 次。

\s：用于匹配单个空格符，包括tab键和换行符
\S：用于匹配除单个空格符之外的所有字符
\d：用于匹配从0到9的数字
\w：用于匹配字母，数字或下划线字符
\W：用于匹配所有与\w不匹配的字符 
. ：用于匹配除换行符之外的所有字符


“^”定位符规定匹配模式必须出现在目标字符串的开头
“$”定位符规定匹配模式必须出现在目标对象的结尾
“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一
“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内，
即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。

\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和顺序
|“或”操作
*/




//通用
//----------------------------------------

//是否含特殊字符
function isNormal(_str)
{
	var reg = /^[`~!@#\$%\^\&\(\)\?\|\{\}\[\]\-\+\=\*\"\'<>\/]*$/;
	return !reg.test(_str);
}

//是否为英文字母，不区分大小写
function isLetter(_str)
{
	var reg = /^[a-zA-Z]*$/;
	return reg.test(_str);
}

//是否为英文字母和数字，不区分大小写
function isLN(_str)
{
	var reg = /^[a-zA-Z0-9]*$/;
	return reg.test(_str);
}

//是否为英文字母和数字和下划线，不区分大小写
function isLNU(_str)
{
	var reg = /^(\w)*$/;
	return reg.test(_str);
}

//是否为中文
function isChinese(_str)
{
    var reg = /^[\u4e00-\u9fa5]*$/;
	return reg.test(_str);
}

//是否为双字符的字
function isDoubleStr(_str)
{
	var reg = /^[\x00-\xff]*$/;
	return reg.test(_str);
}


//是否为中文、英文、下划线(一般用作用户名)
function isUserid(_str)
{
	var reg = /^[\w\u4e00-\u9fa5]*$/;
	return reg.test(_str);
}

//是否为英文字母、下划线、常用特殊字符(一般用作密码)
function isPassword(_str)
{
	var reg = /^[\w`~!@#\$%\^\&\(\)\?\|\{\}\[\]\-\+\=\*\"\'<>\/]*$/;
	return reg.test(_str);
}

//是否为空值
function isEmpty(_str)
{
    var str = trim(_str);
    return str.length == 0;
}

//两值是否相等
function isEqual(str1, str2)
{
    return (str1 == str2);
}


//值是否达到预定的长度
function isEnoughLen(_str, len)
{
    var str = trim(_str);
    return str.length >= len;
}


//是否以数字开头
function isNumberStart(_str)
{
    var reg = /^[\d]/;
	return reg.test(_str);
}


//是否以字母开头
function isLetterStart(_str)
{
    var reg = /^[a-zA-Z]/;
	return reg.test(_str);
}




//常用
//----------------------------------------

//是否为EMAIL
function isMail(_str){
    var str = trim(_str);
    var reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
    return reg.test(str);
}

//是否为链接
function isUrl(_str)
{
	var reg = /^(http|https):\/\/(.+)$/;
	return reg.test(_str);
}

//是否为身份证
function isIdCardNumber(_str)
{
	var reg = /^\d{15}|\d{18}$/;
    return reg.test(_str);
}

//是否为手机、小灵通号码
function isMobile(_str){
    var str = trim(_str);
    var reg = /^(\d){6,12}$/;
    return reg.test(str);
}

//是否为电话号码
function isPhone(_str)
{
	var reg = /^(\(\d+\))*(\d)+(-(\d)+)*$/;
	return reg.test(_str);
}

//是否为银行帐号
function isBankAccount(_str)
{
	var reg = /^(\d){12,19}$/;
	return reg.test(_str);
}

//是否为邮政编码
function isPost(_str)
{
	var reg = /^(\d){6}$/;
	return reg.test(_str);
} 

//检查QQ
function isQq(_str)
{
	var reg = /^(\d){3,12}$/;
	return reg.test(_str);
}

//是否为MSN
function isMsn(_str)
{
	var str = trim(_str);
    var reg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
	return reg.test(_str);
}

//是否为时间
function isTime(_str)
{
	var reg = /^(\d+):(\d{1,2}):(\d{1,2})$/;
	return reg.test(_str);
}



//替换
//----------------------------------------

//去左空格
function ltrim(_str)
{
    return _str.replace( /^\\s*/, "");
}

//去右空格
function rtrim(_str)
{
    return _str.replace( /\\s*$/, "");
}

//去左右空格
function trim(_str)
{
    return rtrim(ltrim(_str));
}




//数字相关
//----------------------------------------

//是否有效的数字
function isNumber(_str)
{
    var str = trim(_str);
    var reg = /^[0-9]/;
    return reg.test(str);
}

//是否为整数
function isInt(_str)
{
	var reg = /^(-|\+)?(\d)*$/;
	return reg.test(_str);
}

//是否为正整数
function isPosInt(_str) 
{ 
	var reg=/^\d+$/ 
	return reg.test(_str); 
}

//是否为浮点数
function isFloat(_str)
{
	var reg = /^(-)?(\d)*(\.)?(\d)*$/;
	return reg.test(_str);
}
