//验证整数
function check_integer ( n ) { return RegExp ( "^[0-9]+$" ).test( n ); }
//验证纯字符串
function check_string ( s ) { return RegExp ( "^[a-zA-Z]+$" ).test( s ); }
//验证字符和数字的组合
function check_alfanum_string ( s ) { return RegExp ( "^[a-zA-Z0-9]+$" ).test( s ); } 
//验证日期
function check_date ( s ) { return RegExp ( "^[0-9]{4,4}.[0-9]{2,2}.[0-9]{2,2}$" ).test( s ); }
//验证时间
function check_time ( s ) { return RegExp ( "^[012][0-9]:[0-5][0-9]$" ).test( s ); }
//验证email
function check_email ( s ) { return RegExp ( "^[a-zA-Z0-9-_.]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$" ).test( s ); }
//验证电话号码
function check_phone(s) {
var reg=/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
return reg.test(s);
}
//验证邮政编码
function check_postCode(s)
{
var reg= /^([0-9]{6})$/gi
return reg.test(s);
}


//验证小数
function check_float ( n )
{
	if (n.length == 0) return false;

	var first_char = n.charAt(0);
	if (first_char != '-' && first_char != '.' &&
	    (first_char < '0' || first_char > '9')) return false;

	var dot = false;
	var digit_expected = false;
	if (first_char == '.') {
		dot = true;
		digit_expected = true;
	} else if (first_char == '-')
		digit_expected = true;

	if (digit_expected && n.length < 2) return false;

	for (var count = 1; count < n.length; count++) {
		var c = n.charAt(count);
		if (c == '.') {
			if (dot) return false;
			dot = true;
		} else if (c < '0' || c > '9')
			return false;
	}

	return true;
}
function onlyNum() 
{
  if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||event.keyCode=='0x2E'||event.keyCode=='0x8')) {
//考虑小键盘上的数字键 
    event.returnValue=false; 
  }
}
//验证ip
function checkIp(ipValue){
	var reg = /^\d{1,3}(\.\d{1,3}){3}$/;
	if(reg.test(ipValue)){
		var ary = ipValue.split('.');
		for(key in ary){
			if(parseInt(ary[key]) > 255){
				return false;
			}
		}
	}else{
		return false;
	}

}
// JavaScript Document

//functions for each particular datatype validation
function validateUsername(obj){
	var str = obj.value;
	//var patn =   /^[\u0391-\uFFE5a-zA-Z0-9][\u0391-\uFFE5\w]{2,20}$/; 
	var patn = /^[\u0391-\uFFE5a-zA-Z0-9][\u0391-\uFFE5\w]{3,40}$/; 
	if(patn.test(str)){
		 return 0;
	}
	return 1; 
}
function validatePassword(pwd){
	var patn = /.{6,20}/; 
	if(patn.test(pwd)) return 0;
	return 1; 
}
function validateSafePassword(pwd){
	var str = pwd;
	//check length and alphabet
	if(validatePassword(pwd)>0) return 1;
	//check if same as username
	if(str == document.getElementById("UserName").value) return 2;
	//check if all the characters are the same
	for(var i=0;i<str.length;i++){
		if(str.charAt(0)!=str.charAt(i)) break;
	}
	if(i == str.length) return 3;
	//check if is number sequence
	var seqStr="01234567890";
	if(seqStr.indexOf(str) != -1) return 4;
	//check if is lower alphabet sequence
	var seqStr="abcdefghijklmnopqrstuvwxyz";
	if(seqStr.indexOf(str) != -1) return 5;
	//check if is upper alphabet sequence
	var seqStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	if(seqStr.indexOf(str) != -1) return 6;
	//if validated
	return 0;
}
function validateEmail(email){
	var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	if(patn.test(email)){
		return 0;
	}else{
		return 1; //incorrect format
	}
}
function validateRealityName(realityName)
{
	var patn = /.{1,40}/; 
	if(patn.test(realityName)) return 0;
	return 1; 
}
function validateNum(obj){
var str = obj.value;	
if(str.length > 20){return 1;}
if(str.length == 0){return -1;}
return 0;
}

function validateZipCode(zipCode)
{
	var patn = /[0-9]{6}/; 
	if(patn.test(zipCode)) return 0;
	return 1; 
}

function validateCert(obj){
	var str = obj.value;
	var patn = /.{4,32}/; 
	if(patn.test(str)) return 0;
	return 1; 
}
function validateMobile(obj){
	var str = obj.value;
	var patn = /^13\d{9}$/;
	if(patn.test(str)) return 0;
	return 1; 	
}
function validateCheckCode(obj){
	var str = obj.value;
	var patn = /^[0-9]{4}$/;
	if(patn.test(str)) return 0;
	return 1;
}	
function validateMirror(obj){
	if(validateSameAs(obj)){
		var sameobj = document.getElementById(getAttrValueByName(obj,"sameas"));
		var sameobj_dt;
		if(eval(sameobj.id).d) sameobj_dt=eval(sameobj.id).d;
		else return -1;
		if(sameobj_dt != "mirror"){ //avoid a mirror type filed being another mirror type filed's mirror
			if(validateValue(sameobj) == 0)	 return 0;
			else return 2;
		}
	}
	return 1;
}
function validateSameAs(obj){
	var v1,v2;
	if(!getAttrValueByName(obj,"sameas")) return true;
	v1=obj.value;
	v2=document.getElementById(getAttrValueByName(obj,"sameas")).value;
	if(v1 == v2) return true;
	return false;
}


function checkByteLength(str,minlen,maxlen) {
	if (str == null) return false;
	var l = str.length;
	var blen = 0;
	
	for(i=0; i<l; i++) {
		if ((str.charCodeAt(i) & 0xff00) != 0) {
			blen ++;
		}
		blen ++;
	}
	
	if (blen > maxlen || blen < minlen) {
		return false;
	}
	return true;
}

function checkNotEmpty(str){
	return str.trim().length > 0;
}
function check(checkCondition,okMsg,errMsg,showType,output){
	var isValid = checkCondition;
	var msg = "";
	if(isValid){
		msg = "<font id='msg_ok' class='msg_ok'>" + okMsg + "</font>";
	}else{
		msg = "<font id='msg_err' class='msg_err'>" + errMsg + "</font>";
	}
	if(showType == 0 && msg != null){
		alert(msg);
	}else if(showType == 1){
		output.innerHTML = msg;
	}
	return isValid;
}