<!--
///////////////////////////////////////////////////////////////////////////////
//
// 张树林 - 慧佳工作室
//
// Module Name:     validate.js
// Abstract:        校验程序
// Version:         1.1
// Date				2009-05-09
// Author:          woods·zhang
// Email:           hoojar@163.com 
// MSN:             hoojar@hotmail.com
// Website:         http://www.hoojar.com/
// Copyright 2001-2008, Hoojar studio All Rights Reserved
//
// 版权 2001-2008，慧佳工作室所有版权保护

//The software for free software, allowing use, copy, 
//modify and distribute the software and files. Any 
//use of this software must place a copy of all the 
//above copyright notice. By the software Huijia studio 
//maintenance, if you have any queries please contact us.
//Thank you. 
//
//此软件为自由软件，允许使用、拷贝、修改、分发本软件及其文档。
//任何使用此软件的地方都得出现以上版权通告所有副本。此软件由
//慧佳工作室维护，如果您有什么疑问请与我们联系。谢谢使用。
//
///////////////////////////////////////////////////////////////////////////////
//处理特殊字符
function illegalKeyword()
{
	var f, ob;
	var keyword = new Array("<", ">", "\%", "\'", "\"");
	for (var form = 0; form < document.forms.length; form++)
	{
		f = document.forms[form];
		for (var i = 0; i < f.length; i++)
		{
			ob = f[i];
			if (ob.type == "text" && ob.disabled == false)
			{
				for (j = 0; j < keyword.length; j++)
				{
					if (ob.value.indexOf(keyword[j]) != -1)
					{
						alert("在输入框聚焦处发现非法字符[" + keyword[j] + "]。");
						ob.focus();
						return false;
					}
				}
				ob.value = trim(ob.value);
			}
		}
	}
	return true;
}

//判断是否为时间字符串
function isTime(str)
{
	var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) {alert('输入的参数不是时间格式'); return false;}
	return (a[1] > 24 || a[3] > 60 || a[4] > 60) ? false : true
}

//是否为日期（YYYY-MM-DD）类型字符串
function isDate(str)
{
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if (r == null){return false;}
	var d = new Date(r[1], r[3]-1, r[4]);
	return (d.getFullYear() == r[1]&&(d.getMonth()+1) == r[3]&&d.getDate() == r[4]);
}

//判断用户给出的日期是否大于当前日期
function bigCurrentDate(str)
{
	var today = new Date();
	var tY = String(today.getFullYear());
	var tM = String(today.getMonth() + 1);
	(tM.length <= 1) ? tM = "0" + tM : tM = tM;

	var tD = String(today.getDate());
	(tD.length <= 1) ? tD = "0" + tD : tD = tD;

	var tH = String(today.getHours());
	(tH.length <= 1) ? tH = "0" + tH : tH = tH;

	var tM1 = String(today.getMinutes());
	(tM1.length <= 1) ? tM1 = "0" + tM1 : tM1 = tM1;

	var tdate = tY + "-" + tM + "-" + tD + " " + tH + ":" + tM1 + ":59";//zhuweisong 添加秒的叛断
	return (str > tdate) ? true : false;
}

//是否为时间日期类型
function isDateTime(str)
{
	var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
	var r = str.match(reg);
	if (r == null){return false;}
	var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
	return (d.getFullYear() == r[1]&&(d.getMonth()+1) == r[3]&&d.getDate() == r[4]&&d.getHours() == r[5]&&d.getMinutes() == r[6]&&d.getSeconds() == r[7]);
}

//判断是否是有效的EMAIL地址
function isEmail(v)
{
	return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(v));
}

//判断是否为有效IP地址
function isIp(s)
{
	var check = function(v)
	{
		try{return (v <= 255 && v >= 0);}catch(e){return false;}
	}
	var re = s.split(".")
	return (re.length == 4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false
}

//判断输入的是否为汉字begin
function isCharsInBag (s, bag)
{
	var i, c;
	for (i = 0; i < s.length; i++)
	{
		c = s.charAt(i);
		if (bag.indexOf(c) > -1)
		return c;
	}
	return "";
}

//判断输入的是否为汉字end
function isCn(s)
{
	var errorChar;
	var badChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789><,[]{}?/+=|\'\":;~!#$%()`";
	errorChar = isCharsInBag(s, badChar)
	return (errorChar != "") ? false : true;
}

//判断输入的字符串是不是英文begin
function isCharsInBagEn (s, bag)
{
	var i, c;
	for (i = 0; i < s.length; i++)
	{
		c = s.charAt(i);
		if (bag.indexOf(c) <0)
		return c;
	}
	return "";
}

//判断输入的字符串是不是英文end
function isEn(s)
{
	var errorChar;
	var badChar = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	errorChar = isCharsInBagEn(s, badChar)
	return (errorChar != "") ? false : true;
}

//固话，手机号码检查函数，合法返回true,反之,返回false
function isPhone(v)
{
	var pattern = /(^([0\+]\d{2,3})\d{3,4}\-\d{3,8}$)|(^([0\+]\d{2,3})\d{3,4}\d{3,8}$)|(^([0\+]\d{2,3}){0,1}13\d{9}$)|(^\d{3,4}\d{3,8}$)|(^\d{3,4}\-\d{3,8}$)/;
	return (pattern.test(v)) ? true : false;
}

//判断是否为固定电话
function isTel(v)
{
	var pattern = /(^\d{3,4},\d{7,8}(,\d{1,4})?$)|(^\d{3,4}\-\d{7,8}(\-\d{1,4})?$)|(^\d{3,4}\d{7,11}$)/;
	return (pattern.test(v)) ? true : false;
}

//判断是否为移动电话（手机）
function isMobile(v)
{
	var pattern = /^(013|015|13|15)\d{9}$/;
	return (pattern.test(v)) ? true : false;
}

//判断是否为传真号码
function isFax(v)
{
	var pattern = /(^\d{3,4},\d{7,8}(,\d{1,4})?$)|(^\d{3,4}\-\d{7,8}(\-\d{1,4})?$)|(^\d{3,4}\d{7,11}$)/;
	return (pattern.test(v)) ? true : false;
}

//判断是否为URL地址
function isUrl(v){return (new RegExp(/^https?:\/\/[a-z0-9-._)]+(:\d+)?(\/.*)?$/i).test(str));}

//检测字符串是否全为数字
function isNumber(str)
{
	var numberchars = "1234567890"; var i;
	for (i = 0; i < str.length; i++)
	{
		if (numberchars.indexOf(str.charAt(i)) == -1){return false;}
	}
	return true;
}

//判断给定字符串是否为空
function isNull(str){return (trim(str) == "") ? false : true;}

//去除字符串两边的空格
function trim(str){return str.replace(/(^\s*)|(\s*$)/g, "");}

//去除左边的空格
function lTrim(str){return str.replace(/(^\s*)/g, "");}

//去除右边的空格
function rTrim(str){return this.replace(/(\s*$)/g, "");}

//功能：两个IP地址的比较,参数：ip1,ip2为有效IP地址,返值：-1为ip1小于ip2，0为等于，1为ip1大于ip2
function ipCmp(ip1, ip2)
{
	var iip1 = String(ip1).split("."); //分解IP地址
	var iip2 = String(ip2).split("."); //分解IP地址
	var rvalue; //保存要返回的值
	var nip1, nip2;
	for (var i = 0; i < 4; i++)
	{
		nip1 = Number(iip1[i]); //把分解的IP转换成数字
		nip2 = Number(iip2[i]); //把分解的IP转换成数字
		if (nip1 == nip2)
		{
				rvalue = 0;
		}
		else if (nip1 > nip2) //ip1大于ip2
		{
			rvalue = 1;
			break;
		}
		else //IP1小于IP2
		{
			rvalue = -1;
			break;
		}
	}
	return rvalue;
}
//-->