﻿/*
表单过滤
==================================================================

字符串操作

Trim(string):去除字符串两边的空格

==================================================================

*/



/*

==================================================================

LTrim(string):去除左边的空格

==================================================================

*/

function LTrim(str)

{

    var whitespace = new String(" \t\n\r");

    var s = new String(str);



    if (whitespace.indexOf(s.charAt(0)) != -1)

    {

        var j=0, i = s.length;

        while (j < i && whitespace.indexOf(s.charAt(j)) != -1)

        {

            j++;

        }

        s = s.substring(j, i);

    }

    return s;

}



/*

==================================================================

RTrim(string):去除右边的空格

==================================================================

*/

function RTrim(str)

{

    var whitespace = new String(" \t\n\r");

    var s = new String(str);



    if (whitespace.indexOf(s.charAt(s.length-1)) != -1)

    {

        var i = s.length - 1;

        while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)

        {

            i--;

        }

        s = s.substring(0, i+1);

    }

    return s;

}



/*

==================================================================

Trim(string):去除前后空格

==================================================================

*/

function Trim(str)

{

    return RTrim(LTrim(str));

}







/*

================================================================================

XMLEncode(string):对字符串进行XML编码

================================================================================

*/

function XMLEncode(str)

{

       str=Trim(str);

       str=str.replace("&","&amp;");

       str=str.replace("<","&lt;");

       str=str.replace(">","&gt;");

       str=str.replace("'","&apos;");

       str=str.replace("\"","&quot;");

       return str;

}



/*

================================================================================

验证类函数

================================================================================

*/



function IsEmpty(obj, objName)

{

    obj=document.getElementsByName(obj).item(0);

    if(Trim(obj.value)=="")

    {

        alert(objName + "字段不能为空");

        if(obj.disabled==false && obj.readOnly==false)

        {

            obj.focus();
        }

        return true;
    }

    return false;
}

//判断是否为数字，整数、浮点数都可
function IsNaN(obj, objName)

{

    obj=document.getElementsByName(obj).item(0);

    if(isNaN(Trim(obj.value)))

    {

        alert(objName + "字段必须为数字");
        obj.value = "";
        if(obj.disabled==false && obj.readOnly==false)

        {

            obj.focus();
        }

        return true;
    }

    return false;
}

//判断是否为正数数字，整数、浮点数都可
function IsPlus0(obj, objName)

{

    obj=document.getElementsByName(obj).item(0);

    if(isNaN(Trim(obj.value))||parseFloat(Trim(obj.value))<0)

    {

        alert(objName + "字段必须为正数");
        obj.value = "";

        if(obj.disabled==false && obj.readOnly==false)

        {

            obj.focus();
        }

        return true;
    }

    return false;
}

//判断是否为正数数字，整数、浮点数都可
function IsPlus(obj, objName, limit)

{

    obj=document.getElementsByName(obj).item(0);

    if(isNaN(Trim(obj.value))||parseFloat(Trim(obj.value))<=parseInt(limit))

    {

        alert(objName + "字段必须为大于"+limit+"的正数");
        obj.value = "";

        if(obj.disabled==false && obj.readOnly==false)

        {

            obj.focus();
        }

        return true;
    }

    return false;
}

//判断是否为负数数字，整数、浮点数都可
function IsNegative(obj, objName)

{

    obj=document.getElementsByName(obj).item(0);

    if(isNaN(Trim(obj.value))||parseFloat(Trim(obj.value))>=0)

    {

        alert(objName + "字段必须为负数");
        obj.value = "";

        if(obj.disabled==false && obj.readOnly==false)

        {

            obj.focus();
        }

        return true;
    }

    return false;
}

/*

IsInt(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)

功能：判断是否为整数、正整数、负整数、正整数+0、负整数+0

*/

function IsInt(objStr,sign,zero)

{

    var reg;

    var bolzero;



    if(Trim(objStr)=="")

    {

        return false;

    }

    else

    {

        objStr=objStr.toString();

    }



    if((sign==null)||(Trim(sign)==""))

    {

        sign="+-";

    }



    if((zero==null)||(Trim(zero)==""))

    {

        bolzero=false;

    }

    else

    {

        zero=zero.toString();

        if(zero=="0")

        {

            bolzero=true;

        }

        else

        {

            alert("检查是否包含0参数，只可为(空、0)");

        }

    }



    switch(sign)

    {

        case "+-":

            //整数

            reg=/(^-?|^\+?)\d+$/;

            break;

        case "+":

            if(!bolzero)

            {

                //正整数

                reg=/^\+?[0-9]*[1-9][0-9]*$/;

            }

            else

            {

                //正整数+0

                //reg=/^\+?\d+$/;

                reg=/^\+?[0-9]*[0-9][0-9]*$/;

            }

            break;

        case "-":

            if(!bolzero)

            {

                //负整数

                reg=/^-[0-9]*[1-9][0-9]*$/;

            }

            else

            {

                //负整数+0

                //reg=/^-\d+$/;

                reg=/^-[0-9]*[0-9][0-9]*$/;

            }

            break;

        default:

            alert("检查符号参数，只可为(空、+、-)");

            return false;

            break;

    }



    var r=objStr.match(reg);

    if(r==null)

    {

        return false;

    }

    else

    {

        return true;

    }

}



/*

IsFloat(string,string,int or string):(测试字符串,+ or - or empty,empty or 0)

功能：判断是否为浮点数、正浮点数、负浮点数、正浮点数+0、负浮点数+0

*/

function IsFloat(objStr,sign,zero)

{

    var reg;

    var bolzero;



    if(Trim(objStr)=="")

    {

        return false;

    }

    else

    {

        objStr=objStr.toString();

    }



    if((sign==null)||(Trim(sign)==""))

    {

        sign="+-";

    }



    if((zero==null)||(Trim(zero)==""))

    {

        bolzero=false;

    }

    else

    {

        zero=zero.toString();

        if(zero=="0")

        {

            bolzero=true;

        }

        else

        {

            alert("检查是否包含0参数，只可为(空、0)");

        }

    }



    switch(sign)

    {

        case "+-":

            //浮点数

            reg=/^((-?|\+?)\d+)(\.\d+)?$/;

            break;

        case "+":

            if(!bolzero)

            {

                //正浮点数

                reg=/^\+?(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;

            }

            else

            {

                //正浮点数+0

                reg=/^\+?\d+(\.\d+)?$/;

            }

            break;

        case "-":

            if(!bolzero)

            {

                //负浮点数

                reg=/^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;

            }

            else

            {

                //负浮点数+0

                reg=/^((-\d+(\.\d+)?)|(0+(\.0+)?))$/;

            }

            break;

        default:

            alert("检查符号参数，只可为(空、+、-)");

            return false;

            break;

    }



    var r=objStr.match(reg);

    if(r==null)

    {

        return false;

    }

    else

    {

        return true;

    }

}

/*
校验日期的合法性,当通过时返回对应的日期对象
*/
function checkDate(dateStr){
	// 定义日期格式的正则表达式
	var reg = /^(\d{4,4})\-(\d{1,2})\-(\d{1,2})$/;

	// 尝试匹配
	var r = dateStr.match(reg);

	if(r == null) {
		// 未匹配成功
		return null;
	}

	// 设置月份,范围为 0 - 11,因此这里要减1
	r[2] = r[2] - 1;

	// 根据匹配的年,月,日构造日期对象
	var d = new Date(r[1], r[2], r[3]);

	// 将此日期对象的年,月,日与原值对照,若有不匹配的即说明不是正确的日期格式.
	if (d.getFullYear() != r[1]) return null;
	if (d.getMonth() != r[2]) return null;
	if (d.getDate() != r[3]) return null;
	return d;
}

//判断输入的是不是合法的字符的函数
	function isEnKong(argValue)
		{
			var flag1=false;
			var compStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _-1234567890.,&";
			var length2=argValue.length;
			for (var iIndex=0;iIndex<length2;iIndex++)
				{
					var temp1=compStr.indexOf(argValue.charAt(iIndex));
					if(temp1==-1)
						{
							flag1=false;
							break;
						}
					else
						{
							flag1=true;
						}
				}
			return flag1;
		}
/*
function emailCheck(strEmail) {
 if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
  return false;
 else
  return true;
}
*/
/*判断Email是否合法的函数*/
function emailCheck(emailStr)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|cn)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var emailPat=/^(.+)@(.+)$/;
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null)
	{
		alert("邮件地址错误！ (请检查@ 和 .)");
		return true;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)
	{
		if (user.charCodeAt(i)>127)
		{
			alert("邮件包含非法字符！");
			return true;
		}
	}
	for (i=0; i<domain.length; i++)
	{
		if (domain.charCodeAt(i)>127)
		{
			alert("域名包含非法字符！");
			return true;
		}
	}
	if (user.match(userPat)==null)
	{
		alert("用户名不存在！");
		return true;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null)
	{
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255)
			{
				alert("IP地址不正确！");
				return true;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++)
	{
		if (domArr[i].search(atomPat)==-1)
		{
			alert("您输入的邮件域名不正确！");
			return true;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
	{
		alert("邮件地址必须是已知域名或是两个字母 " + "国家.");
		return true;
	}
	if (len<2)
	{
		alert("这个邮件地址没有主机名！");
		return true;
	}
	return false;
}

function isEnKongPWD(argValue)
		{
			var flag1=false;
			var compStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-1234567890";//()=+*&^%$#@!/?<>,.[]{}";
			var length2=argValue.length;
			for (var iIndex=0;iIndex<length2;iIndex++)
				{
					var temp1=compStr.indexOf(argValue.charAt(iIndex));
					if(temp1==-1)
						{
							flag1=false;
							break;
						}
					else
						{
							flag1=true;
						}
				}
			return flag1;
		}

	// 判断密码的有效性
	function validPass() {
		with (document.main) {
			if (!min_length(PWD.value,4)) {
				alert("密码不能少于4位!");
				PWD.focus();
				return false;
			}
			if (!isEnKongPWD(PWD.value)) {
				alert("密码含有非法字符!");
				PWD.focus();
				return false;
			}
			if (!min_length(PWDC.value,4)) {
				alert("确认密码不能少于4位!");
				PWDC.focus();
				return false;
			}
			if (!isEnKongPWD(PWDC2)) {
				alert("确认密码含有非法字符!");
				PWDC2.focus();
				return false;
			}
			if (PWD.value != PWDC.value) {
				alert("密码和确认密码不一致!");
				return false;
			}
		}
		return true;
	}


