﻿
 //检查Email是否填写正确
 function chkEmail(email)
 {
	var objEmailMsg = $('emailmsg');
	var objEmailErr = $('emailErr');
	var objEmailOK = $('emailOK');
	var objEmail = $('email');
	objEmailMsg.style.display="none";
	var arr = objEmail.value.split('.');
	if(objEmail.value.search(/^[^\s@:"'<>,&]{2,}@[^\[\.]+\.[^\[]{2,}$/gi) < 0 || objEmail.value.length>=45 || objEmail.value.indexOf("..")!=-1 || arr[arr.length-1].replace(/(^\s*)|(\s*$)/g, "")=="")
	{
		return false;
	}
	else
	{
		return true;
	}
 }
//验证日期是否正确
function FormIsdate(strDate)
{
    var strCheckDate = strDate+"";     //进一步确认哪来判断的肯定是一串字符串
         
    if(strCheckDate == "")        //空字符串,不是合法的日期字符串，返回false
    {
        return false;
    } 
    debugger;
    //判断传进来的数据是那种格式写成日期
    var intIndex = -1;         //利用正则表达式，查找字符串中是否包含某个字符，没找到为-1,否则为 （0 - String.length - 1）
    var arrDate;          //分别存储年月日
    var regExpInfo = /\./;        //正则表达式，匹配第一个出现 "."的位置
         
    //在这里，我之所以不使用replace函数把所有的"."和"/"换成"-",然后分别存储年月日，是因为用户有可能输入 2001/3-2,就判断不出它是不合法日期了
    intIndex = strCheckDate.search(regExpInfo);   //查找是否含有 "."
    if(intIndex == - 1)         //不包含  
    {
        regExpInfo = /-/;
        intIndex = strCheckDate.search(regExpInfo);
          
        if(intIndex == -1)
        {
            regExpInfo = /\//;       //查找是否含有 "/"
            intIndex = strCheckDate.search(regExpInfo); 
           
            if(intIndex == -1)
            {
                arrDate = new Array();  //只包含年或格式为20010307
                if(strCheckDate.length==4)
                {
                    arrDate[0]=strCheckDate;
                    //window.alert(arrDate[0]);
                }
                else if(strCheckDate.length==6)
                {
                    arrDate[0]=strCheckDate.substring(0,4);
                    arrDate[1]=strCheckDate.substring(4,6);
               
                }
                else if(strCheckDate.length==8)
                {
                    arrDate[0]=strCheckDate.substring(0,4);
                    arrDate[1]=strCheckDate.substring(4,6);
                    arrDate[2]=strCheckDate.substring(6,8);
                
                }
                else
                {
                    return false;
                }
            }
            else
            {
                arrDate = strCheckDate.split("/");  //2001/3/7 型
            }
        }
        else
        {
            arrDate = strCheckDate.split("-");   //2001-3-7 型
        }
    }
    else
    {
        arrDate = strCheckDate.split(".");    //2001.3.7 型
    }
         
    if(arrDate.length > 3)        //如果分离出来的项超过3，除了年月日还有其它的，不合法日期，返回false
    {
        return false;
    }
    else if(arrDate.length > 0) 
    {
        //判断年是否合法
        if(fnIsIntNum(arrDate[0]))   //是正整数
        {
            if(parseInt(arrDate[0]) < 1 || parseInt(arrDate[0]) > 9999)  //年范围为1 - 9999
            {
                return false;
            } 
        }
        else
        {
            return false;     //年不是正整数，错误
        }
           
        //判断月是否合法
        if(arrDate.length > 1)
        {
            if(fnIsIntNum(arrDate[1]))  //是正整数
            {
                if(parseInt(arrDate[1]) < 1 || parseInt(arrDate[1]) > 12)
                {
                    return false;
                } 
            }
            else
            {
                return false;
            }
        }
        
           
        //判断日是否合法
        if(arrDate.length > 2)
        {
            var tmpDate=Trim(arrDate[2]);
            var tmpTime="";
            if(tmpDate.indexOf(" ")>0){
                aTmpDateTime=tmpDate.split(" ");
                if(aTmpDateTime.length!=2) return false;
                tmpDate=aTmpDateTime[0];
                tmpTime=aTmpDateTime[1];
                tmpTime=tmpTime.split(":");
                if(tmpTime.length!=3) return false;
                
                if(!FormIsnumeric(tmpTime[0])) return false;
                if(parseInt(tmpTime[0])<0||parseInt(tmpTime[0])>23) return false;
                
                if(!FormIsnumeric(tmpTime[1])) return false;
                if(parseInt(tmpTime[1])<0||parseInt(tmpTime[1])>59) return false;
                
                if(!FormIsnumeric(tmpTime[2])) return false;
                if(parseInt(tmpTime[2])<0||parseInt(tmpTime[2])>59) return false;
                
            }
            
            if(fnIsIntNum(tmpDate))  //是正整数
            {
                var intDayCount = fnComputerDay(parseInt(arrDate[0]),parseInt(arrDate[1]));
                if(intDayCount < parseInt(tmpDate))
                {
                    return false;
                }   
            }
            else
            {
                return false;
            }
        }
            
    }
    return true;
}



//这个可以验证15位和18位的身份证，并且包含生日和校验位的验证。   
  //如果有兴趣，还可以加上身份证所在地的验证，就是前6位有些数字合法有些数字不合法。   
    
  function isIdCardNo(num)   
  {   
  num   =   num.toUpperCase();   
  //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。   
  if   (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))   
  {   
  alert('输入的身份证号长度不对，或者号码不符合规定！\n15位号码应全为数字，18位号码末位可以为数字或X。');   
  return   false;   
  }   
  //校验位按照ISO   7064:1983.MOD   11-2的规定生成，X可以认为是数字10。   
  //下面分别分析出生日期和校验位   
  var   len,   re;   
  len   =   num.length;   
  if   (len   ==   15)   
  {   
  re   =   new   RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);   
  var   arrSplit   =   num.match(re);   
    
  //检查生日日期是否正确   
  var   dtmBirth   =   new   Date('19'   +   arrSplit[2]   +   '/'   +   arrSplit[3]   +   '/'   +   arrSplit[4]);   
  var   bGoodDay;   
  bGoodDay   =   (dtmBirth.getYear()   ==   Number(arrSplit[2]))   &&   ((dtmBirth.getMonth()   +   1)   ==   Number(arrSplit[3]))   &&   (dtmBirth.getDate()   ==   Number(arrSplit[4]));   
  if   (!bGoodDay)   
  {   
  alert('输入的身份证号里出生日期不对！');   
  return   false;   
  }   
  else   
  {   
  //将15位身份证转成18位   
  //校验位按照ISO   7064:1983.MOD   11-2的规定生成，X可以认为是数字10。   
  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');   
  var   nTemp   =   0,   i;   
  num   =   num.substr(0,   6)   +   '19'   +   num.substr(6,   num.length   -   6);   
  for(i   =   0;   i   <   17;   i   ++)   
  {   
  nTemp   +=   num.substr(i,   1)   *   arrInt[i];   
  }   
  num   +=   arrCh[nTemp   %   11];   
  return   num;   
  }   
  }   
  if   (len   ==   18)   
  {   
  re   =   new   RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);   
  var   arrSplit   =   num.match(re);   
    
  //检查生日日期是否正确   
  var   dtmBirth   =   new   Date(arrSplit[2]   +   "/"   +   arrSplit[3]   +   "/"   +   arrSplit[4]);   
  var   bGoodDay;   
  bGoodDay   =   (dtmBirth.getFullYear()   ==   Number(arrSplit[2]))   &&   ((dtmBirth.getMonth()   +   1)   ==   Number(arrSplit[3]))   &&   (dtmBirth.getDate()   ==   Number(arrSplit[4]));   
  if   (!bGoodDay)   
  {   
  alert(dtmBirth.getYear());   
  alert(arrSplit[2]);   
  alert('输入的身份证号里出生日期不对！');   
  return   false;   
  }   
  else   
  {   
  //检验18位身份证的校验码是否正确。   
  //校验位按照ISO   7064:1983.MOD   11-2的规定生成，X可以认为是数字10。   
  var   valnum;   
  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');   
  var   nTemp   =   0,   i;   
  for(i   =   0;   i   <   17;   i   ++)   
  {   
  nTemp   +=   num.substr(i,   1)   *   arrInt[i];   
  }   
  valnum   =   arrCh[nTemp   %   11];   
  if   (valnum   !=   num.substr(17,   1))   
  {   
  alert('18位身份证的校验码不正确！应该为：'   +   valnum);   
  return   false;   
  }   
  return   num;   
  }   
  }   
  return   false;   
  }   


//从右往左去空格   
  function   rtrim(stringObj)   
  {   
  while   (stringObj.charCodeAt(stringObj.length   -   1)   ==   32)   
  {   
  stringObj   =   stringObj.substring(0,stringObj.length   -   1);   
  }   
  return   stringObj;   
  }   
  //从左往右去空格   
  function   ltrim(stringObj)   
  {   
  while   (stringObj.charCodeAt(0)   ==   32)   
  {   
  stringObj   =   stringObj.substring(1,stringObj.length);   
  }   
  return   stringObj;   
  }   
  //去字符串左右两边的空格(中间的空格不能去)   
  function   trim(stringObj)   
  {   
  return(ltrim(rtrim(stringObj)));   
  }

  //验证电话号码是否填写正确
function chkTel(tel)
{
	if(tel.value=='')
	{
		$('TelErr').style.display="none";
		$('TelOK').style.display="none";
	}
	else
	{
		if(tel.value != '' && tel.value.search(/^\+?[0-9]+\-?[0-9]+$/gi) < 0)
		{
			$('TelErr').style.display="block";
			$('TelOK').style.display="none";
		}
		else
		{
			$('TelErr').style.display="none";
			$('TelOK').style.display="block";
		}
	}
}

//验证QQ是否填写正确
function chkQQ(qq)
{
	if(qq.value=='')
	{
		$('QQErr').style.display="none";
		$('QQOK').style.display="none";
	}
	else
	{
		if (qq.value != '' && (qq.value.length<5 || qq.value.length>15 || isNaN(qq.value)))
		{
			$('QQErr').style.display="block";
			$('QQOK').style.display="none";
		}
		else
		{
			$('QQErr').style.display="none";
			$('QQOK').style.display="block";
		}
	}	
}
//验证MSN
function chkMSN(msn)
{
	if(msn.value=='')
	{
		$('MSNErr').style.display="none";
		$('MSNOK').style.display="none";
	}
	else
	{
		if ((msn.value != '' && msn.value.search(/^[^\s@:"'<>,&]{2,}@[^\[\.]+\.[^\[]{2,}$/gi) < 0) || msn.value.length>=35)
		{
			$('MSNErr').style.display="block";
			$('MSNOK').style.display="none";
		}
		else
		{
			$('MSNErr').style.display="none";
			$('MSNOK').style.display="block";
		}
	}
}


function chkName(keyword)
{
	var f = document.forms[0];
	var lenName = len(f.name.value.trim());
	if (f.name.value.trim() != f.name.value || lenName < 3 || lenName > limit)
	{
		alert('会员名只能由3到' + limit + '个英文和数字或2到' + limit/2 + '个中文组成，不能含空格或特殊符号');
		f.name.focus();
		return false;
	}
	if (foundSpecialChars(f.name.value))
	{
		alert('会员名不能包含特殊符号');
		f.name.focus();
		return false;
	}
	if (isRefuse(f.name.value,keyword))
	{
		alert('会员名不合法，不能使用如下类型的名称 '+keyword);
		f.name.focus();
		return false;
	}
	if (isBadWord(f.name.value))
	{
		alert('严禁使用不文明字词 !');
		f.name.focus();
		return false;
	}
	if(ShowMess(o)==false)
	{
		return false;
	}
	
//	$('result').className = 't2';
//	$('result').innerHTML = '正在检测会员名合法性...';
//	$('user_chkname').src = 'user_chkname.aspx?name=' + f.name.value;
	
}


function chkReg()
{
	var obj = document.getElementById('keyword');
	var f = document.forms[0];
	var lenName=len(f.name.value.trim());
	if (f.name.value.trim() != f.name.value || lenName<3 || lenName>limit)
	{
		alert('会员名只能由3到' + limit + '个英文和数字或2到' + limit/2 + '个中文组成，不能含空格或特殊符号');
		f.name.focus();
		return false;
	}
	if (foundSpecialChars(f.name.value))
	{
		alert('会员名不得包含特殊符号');
		f.name.focus();
		return false;
	}
	if (isRefuse(f.name.value,obj.value))
	{
		alert('会员名不合法，不能使用如下类型的名称 '+obj.value);
		f.name.focus();
		return false;
	}
	if (isBadWord(f.name.value))
	{
		alert('严禁使用不文明字词 !');
		f.name.focus();
		return false;
	}
	if (f.password.value == '' || f.password.value.trim() != f.password.value || f.password.value.length < 6 || f.password.value.length > 20)
	{
		alert('密码不得为空或包含空格，长度6-20');
		f.password.focus();
		return false;
	}
	if (f.password.value != f.chkpwd.value)
	{
		alert('两次密码填写不一致');
		f.password.focus();
		return false;
	}
	if(f.question.value.replace(/(^s*)|(s*$)/g, "")=="")
	{
		alert("请填写密码提示问题");
		f.question.focus();
		return false;
	}
	if(f.answer.value.replace(/(^s*)|(s*$)/g, "")=="")
	{
		alert("请填写问题答案");
		f.answer.focus();
		return false;
	}
	if (f.email.value.search(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/gi) < 0)
	{
		alert('请正确填写你的邮件地址');
		f.email.focus();
		return false;
	}
	if (f.email.value.length>=45)
	{
		alert('请正确填写你的邮件地址');
		f.email.focus();
		return false;
	}
	if (f.verification)
	{
		if (!f.verification.disabled && f.verification.value.length != 4)
		{
			alert('请正确输入验证码');
			f.verification.focus();
			return false;
		}
	}
	if (f.truename.value != '' && len(f.truename.value) > 9)
	{
		alert('真实姓名长度不能超过4个汉字或9个字母');
		f.truename.focus();
		return false;
	}
	if (f.homepage.value != '' && f.homepage.value != 'http://' && !chkUrl(f.homepage.value))
	{
		alert('你填写了个人主页，但格式有错误');
		f.homepage.focus();
		return false;
	}
	if (f.telephone.value != '' && f.telephone.value.search(/^\+?[0-9]+\-?[0-9]+$/gi) < 0)
	{
		alert('电话号码不正确，如果不想公开的话，该项可保留空白');
		f.telephone.focus();
		return false;
	}
	if (f.mobile.value != '' && f.mobile.value.search(/^(13\d{9}|15[3|8|9]\d{8})$/gi) < 0)
	{
		alert('手机号码不正确，如果不想公开的话，该项可保留空白');
		f.mobile.focus();
		return false;
	}
	if (f.qq.value != '' && (f.qq.value.length<5 || f.qq.value.length>15 || isNaN(f.qq.value)))
	{
		alert('qq号不正确，qq号只能是一个5到15位的数字');
		f.qq.focus();
		return false;
	}
	if (f.msn.value != '' && f.msn.value.search(/^[^\s@:"'<>,&]{2,}@[^\[\.]+\.[^\[]{2,}$/gi) < 0)
	{
		alert('msn填写错误');
		f.msn.focus();
		return false;
	}
	if (f.msn.value.length>=35)
	{
		alert('msn填写错误');
		f.msn.focus();
		return false;
	}
	if (len(f.signature.value)>100)
	{
		alert('个人签名长度必须在100字节以内 (100个字母或数字或50个汉字)');
		f.signature.focus();
		return false;
	}
	if (f.face.value != '' && f.face.value.substr(0,9).toLowerCase() != "templates/"+getCookie(getCookie('app_prefix') + 'tplname')+"/skins/" + getCookie(getCookie('app_prefix') + 'tplskin') + "/userface/" && f.face.value.toLowerCase() != 'http://')
	{
		fileExt=f.face.value.substr(f.face.value.lastIndexOf('.')+1).toLowerCase();
		if (fileExt != 'jpg' && fileExt != 'gif' && fileExt != 'png' && fileExt != 'jpeg' && fileExt != 'jpe')
		{
			alert('自定义头像地址只能是GIF,JPG,PNG格式');
			f.face.focus();
			return false;
		}
		if (isNaN(f.facewidth.value) || isNaN(f.faceheight.value))
		{
			alert('头像宽，高只能是数字');
			f.facewidth.focus();
			return false;
		}
		if (parseInt(f.facewidth.value,10)<20 || parseInt(f.facewidth.value,10)>140 || parseInt(f.faceheight.value,10)<20 || parseInt(f.faceheight.value,10)>160)
		{
			alert('你填写的头像宽或高超过限制');
			f.facewidth.focus();
			return false;
		}
	}
	return true;
}
//相当物trim函数	
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}

//得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1

s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")


//利用正则表达式限制网页表单里的文本框输入内容：

///用正则表达式限制只能输入中文：onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

//用正则表达式限制只能输入全角字符： onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

//用正则表达式限制只能输入数字：onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

//用正则表达式限制只能输入数字和英文：onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 

//加了一个验证中文的函数
//如下：
function isChn(str){
      var reg = /^[u4E00-u9FA5]/;
      if(!reg.test(str)){
       return false;
      }
      return true;
}
function isfilepath(str)
{
    var reg=/^[a-zA-Z]:(\\[^\\/:"<>\|]+)+$/;
    if(!reg.test(str))
    {
        return false;
    }
    return true;
}
