function ltrim(s){
    return s.replace( /^\s*/, "");
}
//去右空格;
function rtrim(s){
    return s.replace( /\s*$/, "");
}
//去左右空格;
function trim(s){
    return rtrim(ltrim(s));
}
//检验空值
function check_empty(value)
{
    value = trim(value);
    if(value == '') return true ;
    else return false;
}

//检验非法字符
function check_value(value) 
{
    var patrn="[&\\'<>;\"]+";
    return (new RegExp(patrn)).test(value);
}

// 判断是否为有效会员号，会员号为数字
function isCustomerId(id)
{
    var pattern = "^[0-9]+([0-9]*)$";
    return ((new RegExp(pattern)).test(id));
}

// 判断是否为有效的电话号码，只能包含数字和-
function isTelephone(tel)
{
    if (tel.length > 17)
    {
	return false;
    }
    var pattern = "^[0-9][0-9-]*[0-9]$";
    return ((new RegExp(pattern)).test(tel));
}

// 判断是否为有效的email地址
function isEmail(email)
{	
    var pattern = "^[a-zA-Z0-9]+[a-zA-Z0-9_-]*(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9]+[a-zA-Z0-9_-]*(\.[a-zA-Z0-9_-]+)*(\.[a-zA-Z]{2,4})$";
    return ((new RegExp(pattern)).test(email));
}

// 判断是否为有效的IP地址
function isIP4(ip) {
    var sub = new String("0|[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]");
    var pattern = "^(" + sub + ")\.((" + sub + ")\.){2}(" + sub + ")$";
    return (new RegExp(pattern)).test(ip);
}

//--multi domain?  0-no, 1-yes
function checkDoubleStr(domain)
{
    var if_double=0;
    var len = domain.length;

    for (var i=0; i<len; i++)
    {
        c = domain.charCodeAt(i);

        if (c>0x7f) {
            if_double=1;
            break;
        }
    }

    return if_double;
}

//--get domain's length & ascii string    
//-- utf-8 => 1-3bytes
//-- c>0xffff: javascript not support
function mbStringLength(s) {
    var totalLength = 0;
    var i;
    var charCode;
    var c;
    var subascii = "";

    for (i=0; i<s.length; i++)  {       
        charCode = s.substring(i, i+1);
        c = charCode.charCodeAt(0);
        //alert(charCode+" "+c);

        if (c <= 0x007f) {
            totalLength = totalLength + 1;
            subascii = subascii+""+charCode;
        } else if ((0x0080 <= c) && (c < 0x07ff)) {
            totalLength += 2;
        } else if ((0x0800 <= c) && (c <= 0xffff)) {
            totalLength += 3;
        }
    }

    //alert("length="+totalLength+"  sub="+subascii);
    return [totalLength, subascii];

}

//--for en domain & multi domain
function checkDomain(domain)
{
    var pattern = /^[0-9a-zA-Z]+[0-9a-zA-Z\.-]*(\.[0-9a-zA-Z]{2,4})$/;
    var pattern1 = /[\-]{2}|[\-][\.]|[\.][\-]|[\.]{2}|^[\-\.]|[\-\.]$/;  //wrong format: --, -., .-, .., ^-, ^., -$, .$
    var pattern2 = /[^0-9a-zA-Z\.-]/;

    domain = trim(domain);

    var arrLen = mbStringLength(domain);
    var len = arrLen[0];
    var sub = arrLen[1];

    if (len > 67) return false;

    if (pattern1.test(domain)) return false;

    if (checkDoubleStr(domain)) {
	//TODO multi domain 
        if (pattern2.test(sub) || !/\./.test(sub))   return false;
    }
    else {   //en domain 
        if (!pattern.test(domain))   return false;
    }

    return true;
}

