/*
文件名:jquery.liu.string.js
功能说明:本js文件为jquery类库的一个插件,主要实现表单验证中的一些字符串处理功能.
作者:John Liu
编写日期:2007/12/26
*/
jQuery.extend({
ltrim:function(_str)
{
    return _str.replace(/(^\s*)/g, "");
},
rtrim:function(_str)
{
    return _str.replace(/(\s*$)/g, "");
},
lengthw:function(_str)
{
   return  _str.replace(/[^\x00-\xff]/g,"rr").length; 
},
toUpper:function(_str)
{
    return _str.toUpperCase();
},
toLower:function(_str)
{
    return _str.toLowerCase();
},
idCardUpdate:function(_str)
{ 
    var idCard18;
    var regIDCard15 = /^(\d){15}$/;
    if(regIDCard15.test(_str))
    {
        var nTemp = 0;
        var ArrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        var ArrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
        _str = _str.substr(0,6) + '1' + '9' + _str.substr(6,_str.length-6);
        for(var i=0;i<_str.length;i++)
        {
            nTemp += parseInt(_str.substr(i,1)) * ArrInt[i];
        }
        _str += ArrCh[nTemp % 11];
        idCard18 = _str;        
    }
    else
    {
        idCard18 = "#";
    }
    return idCard18;
},
isEmpty:function(_str)
{
    var tmp_str = jQuery.trim(_str);
    return tmp_str.length == 0; 
},
isChinese:function(_str)
{
    return /^[\u4E00-\u9FA5]{0,25}$/.test(_str);
},
isEmail:function(_str)
{
   return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(_str); 
},
isURL:function(_str)
{
    var regTextUrl = /^(file|http|https|ftp|mms|telnet|news|wais|mailto):\/\/(.+)$/;
    return regTextUrl.test(_str);
},
isIpAddress:function(_str)
{
    if (_str.length == 0)
        return (false);
    reVal = /^(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])$/;
    return (reVal.test (_str));    
},
isPostalCode:function(_str)
{
    var regTextPost = /^(\d){6}$/;
    return regTextPost.test(_str);
},
isIDCard:function(_str)
{
    var iSum=0;
    var info="";
    var sId;
   //var aCity={'11':'北京','12':'天津','13':'河北','14':'山西','15':'内蒙古','21':'辽宁','22':'吉林','23':'黑龙江','31':'上海','32':'江苏','33':'浙江','34':'安徽','35':'福建','36':'江西','37':'山东','41':'河南','42':'湖北','43':'湖南','44':'广东','45':'广西','46':'海南','50':'重庆','51':'四川','52':'贵州','53':'云南','54':'西藏','61':'陕西','62':'甘肃','63':'青海','64':'宁夏','65':'新疆','71':'台湾','81':'香港','82':'澳门','91':'国外'};
	var aCity={11:"11",12:"12",13:"13",14:"14",15:"15",21:"21",22:"22",23:"23",31:"31",32:"32",33:"33",34:"34",35:"35",36:"36",37:"37",41:"41",42:"42",43:"43",44:"44",45:"45",46:"46",50:"50",51:"51",52:"52",53:"53",54:"54",61:"61",62:"62",63:"63",64:"64",65:"65",71:"71",81:"81",82:"82",91:"91"};
	if(_str.length == 15)
	{
		sId = jQuery.idCardUpdate(_str);    
	}
    else
	{
        sId = _str;
    }
    if(!/^\d{17}(\d|x)$/i.test(sId))
    {
        return false;
    }
    sId=sId.replace(/x$/i,"a");
    if(aCity[parseInt(sId.substr(0,2))]==null)
    {
        return false;
    }
    var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));
    var d=new Date(sBirthday.replace(/-/g,"/"))    
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
    {
        return false;
    }
    for(var i = 17;i>=0;i--) 
    {
        iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);
    }
    if(iSum%11!=1)
    {
        return false;
    }
    return true;    
},
isPhoneCall:function(_str)
{
    return /(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^[0-9]{3,4}[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/.test(_str);
},
isMobile:function(_str)
{
    return /^0{0,1}1(3|5)[0-9]{9}$/.test(_str);
},
isValidUserName:function(_str)
{  
	if(isNaN(_str)){
		if(/^(\w|[\u4e00-\u9fa5])*$/.test(_str)){
			nLen   =   _str.length;  
			for(i=0;i<_str.length;i++)  
			if(_str.charCodeAt(i)>255)  
			nLen++;  
			if(nLen>=6&&nLen<=20){
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
  
},
isValidNickName:function(_str)
{  
	return /^.{2,20}$/.test(_str);
	
},
isValidPwdanswer:function(_str)
{  
	nLen   =   _str.length;  
	for(i=0;i<_str.length;i++)  
	if(_str.charCodeAt(i)>255)  
	nLen++;  
	if(nLen>=4&&nLen<=30){
		return true;
	}
	else
	{
		return false;
	}
	
},
isValidRealname:function(_str)
{  
	return /^.{2,10}$/.test(_str);
	
},
isDate:function(_str)
{
	var arr = new Array();
	
	if(_str.indexOf("-") != -1){
		arr = _str.toString().split("-");
	}else if(_str.indexOf("/") != -1){
		arr = _str.toString().split("/");
	}else{
		return false;
	}
	if(arr[0].length==4){
		var date = new Date(arr[0],arr[1]-1,arr[2]);
		if(date.getFullYear()==arr[0] && date.getMonth()==arr[1]-1 && date.getDate()==arr[2]){
			return true;
		}
	}
	if(arr[2].length==4){
		var date = new Date(arr[2],arr[1]-1,arr[0]);
		if(date.getFullYear()==arr[2] && date.getMonth()==arr[1]-1 && date.getDate()==arr[0]){
			return true;
		}
	}
	if(arr[2].length==4){
		var date = new Date(arr[2],arr[0]-1,arr[1]);
		if(date.getFullYear()==arr[2] && date.getMonth()==arr[0]-1 && date.getDate()==arr[1]){
			return true;
		}
	}
	
	return false;
},
isValidPass:function(_str)
{
	if(isNaN(_str)){
		return /^\w{6,20}$/.test(_str);	
	}
	else
	{
		return false;
	}
    
},
isValidNewsTitle:function(_str)
{  
	return /^.{2,30}$/.test(_str);
	
}
});
