

/////////////////////////////////////////////////////////////
//                Validator Functions
/////////////////////////////////////////////////////////////
function G(id){return document.getElementById(id);}

function validateValue(obj){
	//trim
	var patn = /(^\s)|(\s$)/;
	if(patn.test(obj.value))	obj.value = obj.value.trim();
	//switcher
	var errorCode = -1;
	switch(getDatatype(obj)){
		case "txtUsername":
			errorCode = validateUsername(obj);
			break;
		case "email":
			errorCode = validateEmail(obj);
			break;
		case "mobile":
			errorCode = validateMobile(obj);
			break;
		default:
			errorCode = -1;
			break;
	}
	return errorCode;
}



function getDatatype(obj){
	if(obj.id){
		if(eval(obj.id).d) return eval(obj.id).d;
	}
	return false;
}
function validatePassword(obj){
	var str = obj.value;
	var patn = /.{6,16}/;
	if(patn.test(str)) return 0;
	return 1;
}

//functions for each particular datatype validation
function validateUsername(obj){
	var str = obj.value;
	//str = quanjiao2Banjiao(str);
	//var patn =   /^[\u0391-\uFFE5a-zA-Z0-9][\u0391-\uFFE5\w]{2,20}$/;
	var patn = /^[^\s]*$/;
	if(patn.test(str)){
		if(checkByteLength(str,2,10)) return 0;
	}
	return 1;
}

function validateEmail(obj){
	var str = obj.value;
	//str = quanjiao2Banjiao(str);
	var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	//var patn = /^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]*[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{3}(\.[a-zA-Z]{2})?$/;
	if(patn.test(str)){

		return 0;
	}else{
		return 1; //incorrect format
	}
}

function EmailValidate(value){
	var str = value;
	//str = quanjiao2Banjiao(str);
	var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
	//var patn = /^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]*[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{3}(\.[a-zA-Z]{2})?$/;
	if(patn.test(str)){

		return 0;
	}else{
		return 1; //incorrect format
	}
}

function validateMobile(obj){
	var str = obj.value;
	var patn = /^13|5\d{9}$/;
	if(patn.test(str)) return 0;
	return 1;
}

function isIdCardNo(num)
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;
    // initialize

    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "输入身份证号码长度不对！";
        //frmAddUser.txtIDCard.focus();
        return false;
    }
    // check and set value

    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "错误的身份证号码！.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date

        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            //error = "身份证中日期信息不正确！.";
            //alert(error);
            return false;
        }
        // calculate the sum of the products

        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }
        // calculate the check digit

        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }
        // check last digit

        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!...正确为： " + intCheckDigit + ".";

            //alert(error);
            return false;
        }
    }
    else{        //length is 15

        //check date

        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            //alert("身份证日期信息有误！.");

            return false;
        }
    }
    //alert ("Correct.");

    return true;
}
function checkDate(date)
{
    return true;
}

function validateIDCard(obj){
	var str = obj.value;
	var patn = /^\d{15,18}$/;
	if(patn.test(str)) return 0;
	return 1;
}


function validateChinese(obj){
	var str = obj.value;
	var s;
	var ts;
	var tscode;

	for (i=0;i<str.length;i++) {

		ts=str.substring(i);
		tscode=str.charCodeAt(i);

		if ((tscode<19968)) {
			//alert("you must input chinese");
			return 1;
		}	else {
			//alert('不能输入汉字！');
			//return false;
		}
	}
	//alert('正确！');
	return 0;

}

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;
}
