

function isFax(str)
{
	if (str.length == 0) return true;
	return /^\+\d{2,3}\.\d{7,15}$/.test(str);	
}

function isMobile(str)
{
	if (str.length == 0) return true;
	return /^\d{10,15}/.test(mobile);
}


function isPhone(phone)
{
	return /^\+\d{2,3}\.\d{7,15}$/.test(phone);
}

function isZipcode(code)
{
	return /^\d{6}$/.test(code);
}


function isBirthday(birthday)
{
	return (/^(19|20)\d{2}-[0|1]\d-[0-2]\d$/.test(birthday) || /^(19|20)\d{2}-[0|1]\d-3[0-1]$/.test(birthday));
}

function isIdentity(num)
{
	return /^\d{15,25}$/.test(num);
}

function isUser(str)
{
	return /^[a-zA-Z][a-zA-Z0-9_\-]{5,19}$/.test(str);
}

function isEn(str)
{
	return /^[a-zA-Z0-9_\-\.\(\)\/\,\ ]{1,}$/.test(str);
}

function isDomain(str)
{
	str = str.toLowerCase();
	if (/^[a-z0-9A-Z\-]{1,45}\.(com|net|org|info|cn|biz|name|mobi){1}$/.test(str)) {
		if (str.substr(0, 4) != 'xn--') return str.substr(str.indexOf(".")+1);
	}

	if (/^[a-z0-9\\-]{1,64}\.([a-z]{1,5}\.cn)$/.test(str)) {
		if (str.substr(0, 4) != 'xn--') return "cn";
	}

	var part = str.split(".");
	if (part.length == 2) {
		if (/^(中国|网络|公司|cn|xn--fiqs8s|xn--55qx5d|xn--io0a7i)$/.test(part[1])) return 'cn_zh';
		if (part[1] == 'com') return 'com_zh';
		if (part[1] == 'net') return 'net_zh';
	}
	return false;
}

function checkeNO(NO){
	var str=NO;
	 //在JavaScript中，正则表达式只能使用"/"开头和结束，不能使用双引号
	var Expression=/^\d{17}[\d|X]|^\d{15}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
		return true;
	}else{
		return false;
	}
}

function isIdentity_new(num)
{
	if(num==""){
		alert("请输入身份证号码!");return false;
	}
	if(!checkeNO(num)){
		alert("您输入的身份证号码不正确!");return false;
	}
	return true;
}

function validation_filter_id_card(id_card) {
	if(id_card.length == 18){
		return idcard_checksum18(id_card);
	}else if(id_card.length == 15){
		id_card = idcard_15to18(id_card);
		return idcard_checksum18(id_card);
	}else{
		return false;
	}
} // GB 11643-1999 

function idcard_verify_number(idcard_base) {
	if (idcard_base.length != 17) {
		return false;
	} // 
	var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 
	var verify_number_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
	var checksum = 0;
	for (i = 0; i < idcard_base.length; i++) {
		checksum += idcard_base.substr(i, 1) * factor[i];
	}
	var mod = checksum % 11;
	var verify_number = verify_number_list[mod];
	return verify_number;
} // 1518 

function idcard_15to18(idcard) {
	if (idcard.length != 15) {
		return false;
	} else { // 996 997 998 999 
		last_3num=idcard.substr(12, 3);
		if (last_3num == '996' || last_3num =='997' || last_3num =='998' || last_3num =='999') {
			idcard = idcard.substr(0, 6)+'18'+idcard.substr(6, 9);
		} else {
			idcard = idcard.substr(0, 6)+'19'+idcard.substr(6, 9);
		}
	}
	idcard = idcard+idcard_verify_number(idcard);
	return idcard;
} // 18 

function idcard_checksum18(idcard) {
	if (idcard.length != 18) {
		return false;
	}
	var idcard_base = idcard.substr(0, 17);
	if (idcard_verify_number(idcard_base) != idcard.substr(17, 1).toLocaleUpperCase()) {
		return false;
	} else {
		return true;
	}
}
String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g,"");}

function isAccount(str)
{
	return /^[a-zA-Z]{1}[a-zA-Z0-9_\-]{5,19}$/.test(str);
}

function isAccountPwd(str)
{
	return /^\S{10,64}$/.test(str);
	/*var pwd = str;
	var reg1 = /[a-zA-Z]/;
	var reg2 = /[0-9]/;
	var reg3 = /[~!@#$%^&\*()_\+\|\{\}\:\"\<\>\?]/;
	var pass = true;
	if(reg1.test(pwd)==false) {
		pass = false;
	}
	if(reg2.test(pwd)==false) {
		pass = false;
	}
	if(reg3.test(pwd)==false) {
		pass = false;
	}
	if(pwd.length<10) {
		pass = false;
	}
	if(!pass) {
		return false;
	}
	return true;*/
}
function isPwd(str)
{
	return /^\S{6,16}$/.test(str);
}

function isCc(str)
{
	return /^[a-z]{2}$/.test(str);
}

function isOrg(str)
{
	return /^[a-zA-Z0-9_\-\.\(\)\/\,\ ]{1,128}$/.test(str);
}

function isContact(str)
{
	return /^[a-zA-Z0-9\ \.]{1,64}$/.test(str);
}

function isStreet(str)
{
	return /^.{1,128}$/.test(str);
}

function isOrgCn(str)
{
	str = str.trim();
	var len = str.length;
	return (len > 0 && len < 64);
}

function isContactCn(str)
{
	str = str.trim();
	var len = str.length;
	return (len > 0 && len < 32);
}

function isStreetCn(str)
{
	str = str.trim();
	var len = str.length;
	return (len > 0 && len < 64);
}

function isSp(str)
{
	if (/^[a-zA-Z]{2,32}$/.test(str)) return true;
	var ss = str.split("-");
	return /^[a-zA-Z]{2,32}$/.test(ss[1]);
}

function isCity(str)
{
	if (/^[a-zA-Z]{2,32}$/.test(str)) return true;
	var ss = str.split("-");
	return /^[a-zA-Z]{2,32}$/.test(ss[1]);
}

function isPc(str)
{	
	if(str!='')
		return true;
	return false;
	//return /^\d{6}$/.test(str);
}

function isEmail(str)
{
	return /^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/.test(str);
}

function isVoice(str)
{
	if(str!='')
		return true;
	return false;
	//return /^\+\d{2,3}\.\d{7,15}$/.test(str);	
}

function isFax(str)
{
	//if (str.length == 0) return true;
	return /^\+\d{2,3}\.\d{7,15}$/.test(str);	
}

function isMobile(str)
{
	if (str.length == 0) return true;
	return /^\d{10,15}/.test(mobile);
}


function isPhone(phone)
{
	return /^\+\d{2,3}\.\d{7,15}$/.test(phone);
}

function isZipcode(code)
{
	return /^\d{6}$/.test(code);
}


function isBirthday(birthday)
{
	return (/^(19|20)\d{2}-[0|1]\d-[0-2]\d$/.test(birthday) || /^(19|20)\d{2}-[0|1]\d-3[0-1]$/.test(birthday));
}

function isIdentity(num)
{
	return /^\d{15,25}$/.test(num);
}

function isUser(str)
{
	return /^[a-zA-Z][a-zA-Z0-9_\-]{5,19}$/.test(str);
}

function isEn(str)
{
	return /^[a-zA-Z0-9_\-\.\(\)\/\,\ ]{1,}$/.test(str);
}

function isDomain(str)
{
	str = str.toLowerCase();
	if (/^[a-z0-9A-Z\-]{1,45}\.(com|net|org|info|cn|biz|name|mobi){1}$/.test(str)) {
		if (str.substr(0, 4) != 'xn--') return str.substr(str.indexOf(".")+1);
	}

	if (/^[a-z0-9\\-]{1,64}\.([a-z]{1,5}\.cn)$/.test(str)) {
		if (str.substr(0, 4) != 'xn--') return "cn";
	}

	var part = str.split(".");
	if (part.length == 2) {
		if (/^(中国|网络|公司|cn|xn--fiqs8s|xn--55qx5d|xn--io0a7i)$/.test(part[1])) return 'cn_zh';
		if (part[1] == 'com') return 'com_zh';
		if (part[1] == 'net') return 'net_zh';
	}
	return false;
}

function checkeNO(NO){
	var str=NO;
	 //在JavaScript中，正则表达式只能使用"/"开头和结束，不能使用双引号
	var Expression=/^\d{17}[\d|X]|^\d{15}$/; 
	var objExp=new RegExp(Expression);
	if(objExp.test(str)==true){
		return true;
	}else{
		return false;
	}
}

function isIdentity_new(num)
{
	if(num==""){
		alert("请输入身份证号码!");return false;
	}
	if(!checkeNO(num)){
		alert("您输入的身份证号码不正确!");return false;
	}
	return true;
}

function validation_filter_id_card(id_card) {
	if(id_card.length == 18){
		return idcard_checksum18(id_card);
	}else if(id_card.length == 15){
		id_card = idcard_15to18(id_card);
		return idcard_checksum18(id_card);
	}else{
		return false;
	}
} // GB 11643-1999 

function idcard_verify_number(idcard_base) {
	if (idcard_base.length != 17) {
		return false;
	} // 
	var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 
	var verify_number_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
	var checksum = 0;
	for (i = 0; i < idcard_base.length; i++) {
		checksum += idcard_base.substr(i, 1) * factor[i];
	}
	var mod = checksum % 11;
	var verify_number = verify_number_list[mod];
	return verify_number;
} // 1518 

function idcard_15to18(idcard) {
	if (idcard.length != 15) {
		return false;
	} else { // 996 997 998 999 
		last_3num=idcard.substr(12, 3);
		if (last_3num == '996' || last_3num =='997' || last_3num =='998' || last_3num =='999') {
			idcard = idcard.substr(0, 6)+'18'+idcard.substr(6, 9);
		} else {
			idcard = idcard.substr(0, 6)+'19'+idcard.substr(6, 9);
		}
	}
	idcard = idcard+idcard_verify_number(idcard);
	return idcard;
} // 18 

function idcard_checksum18(idcard) {
	if (idcard.length != 18) {
		return false;
	}
	var idcard_base = idcard.substr(0, 17);
	if (idcard_verify_number(idcard_base) != idcard.substr(17, 1).toLocaleUpperCase()) {
		return false;
	} else {
		return true;
	}
}
