function select_all(id)
{
	var t = id && id != "undefined" ? $("#"+id+" input[type*=checkbox]") : $("input[type*=checkbox]");
	t.each(function(){$(this).attr("checked",true);});
}

function select_none(id)
{
	var t = id && id != "undefined" ? $("#"+id+" input[type*=checkbox]") : $("input[type*=checkbox]");
	t.each(function(){$(this).attr("checked",false);});
}

function select_anti(id)
{
	var t = id && id != "undefined" ? $("#"+id+" input[type*=checkbox]") : $("input[type*=checkbox]");
	t.each(function(){if($(this).attr("checked") == true){$(this).attr("checked",false);}else{$(this).attr("checked",true);}});
}

/** 
* 得到中英文字符长 
* @param {} str 
* @return {} 
*/  
function LengthB(str){  
	var p1 = new RegExp('%u..', 'g')  
	var p2 = new RegExp('%.', 'g')  
	return escape(str).replace(p1, '').replace(p2, '').length  
}  

/** 
* 过滤所有空格字符 
* @param {Object} str 
*/  
function jsTrim(str){  
	str += "";  
	while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000'))  
		str = str.substring(1, str.length);  
	while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000'))  
		str = str.substring(0, str.length - 1);  
	return str;  
}  

/** 
* 过滤中间字符串和多个空格 
* @param {Object} inputString 
*/  
function trim(inputString){  
	if (typeof inputString != "string") {  
		return inputString;  
	}  
	var retValue = inputString;  
	var ch = retValue.substring(0, 1);  
	while (ch == " ") {  
		//检查字符串开始部分的空格  
		retValue = retValue.substring(1, retValue.length);  
		ch = retValue.substring(0, 1);  
	}  
	ch = retValue.substring(retValue.length - 1, retValue.length);  
	while (ch == " ") {  
		//检查字符串结束部分的空格  
		retValue = retValue.substring(0, retValue.length - 1);  
		ch = retValue.substring(retValue.length - 1, retValue.length);  
	}  
	while (retValue.indexOf(" ") != -1) {  
		//将文字中间多个相连的空格变为一个空格  
		retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length);  
	}  
	return retValue;  
}  

/** 
* 过滤字符串,指定过滤内容，如果内容为空，则默认过滤 '~!@#$%^&*()-+." 
* @param {Object} str 
* @param {Object} filterStr 
* 
* @return 包含过滤内容，返回True,否则返回false; 
*/  
function FilterStr(str, filterStr){  
	filterStr = filterStr == "" ? "'~!@#$%^&*()-+.\"" : filterStr  
	var ch;  
	var i;  
	var temp;  
	var error = false;//当包含非法字符时，返回True  
	for (i = 0; i <= (filterStr.length - 1); i++) {  
		ch = filterStr.charAt(i);  
		temp = str.indexOf(ch);  
		if (temp != -1) {  
			error = true;  
			break;  
		}  
	}  
return error;  
}  

/** 
* 过滤指定内容字符串 
* @param {Object} str　检查字符串 
* @param {Object} filterStr　过滤字符串，内容为空，则默认过滤 '~!@#$%^&*()-+." 
* @param {Object} alertStr　弹出对话内容 
* @param {Object} idStr　出错返回出错字段ID 
*/  
function ISFilterStr(str, filterStr, alertStr, idStr){  
	alertStr = "对不起,您输入的 " + alertStr + " 不允包含 " + filterStr + " 非法字符";  
	if (FilterStr(str, filterStr))  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 检查是否为网址 
* @param {} str_url 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>网址返回false; 
*/  
function IsURL(str_url, alertStr, idStr){// 验证url  

	alertStr = alertStr + " 格式不正确!";  
	var strRegex = "^((https|http|ftp|rtsp|mms)?://)" +  
	"?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@  
	+  
	"(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184  
	+  
	"|" // 允许IP和DOMAIN（域名）  
	+  
	"([0-9a-z_!~*'()-]+\.)*" // 域名- www.  
	+  
	"([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名  
	+  
	"[a-z]{2,6})" // first level domain- .com or .museum  
	+  
	"(:[0-9]{1,4})?" // 端口- :80  
	+  
	"((/?)|" // a slash isn't required if there is no file name  
	+  
	"(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";  
	var re = new RegExp(strRegex);  
	if (!re.test(str_url))  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 检查是否为电子邮件 
* @param {} str 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>电子邮件返回false; 
*/  
function IsEmail(str, alertStr, idStr){  
	alertStr = alertStr + " 格式不正确!";  
	var re = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;  
	if (!re.test(str)) this.AlertAndRFalse(alertStr, idStr); return false;  
}  

/** 
* 检查是否为数字 
* @param {} str 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>数字返回false; 
*/  
function IsNum(str, alertStr, idStr){  
	alertStr = alertStr + " 应该由数字组成!";  
	var re = /^[\d]+$/  
	if (!re.test(str))  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 检查数值是否在给定范围以内<br> 
* @param {} str_num 
* @param {} moreLen     应该大于或者等于的数值 
* @param {} lessLen    应该小于或者等于的数值 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>小于最小数值或者大于最大数值</b>数字返回false; 
*/  
function IsRangeNum(str_num, moreLen, lessLen, alertStr, idStr){  
	IsNum(str_num, alertStr, idStr);  
	if (moreLen != "") {  
		alertStr = alertStr + " 数值不能小于 " + moreLen;  
		if (str_num < moreLen)  this.AlertAndRFalse(alertStr, idStr);  
	}  
	if (lessLen != "") {  
		alertStr = alertStr + " 数值不能大于 " + lessLen;  
		if (str_num > lessLen) this.AlertAndRFalse(alertStr, idStr);  
	}  
	if (moreLen == "" && lessLen == "")  
	this.AlertAndRFalse("没有定义最大最小长度!", idStr);  
}  

/** 
* 检查是否为合格字符串(不区分大小写)<br> 
* 长度在6至20位,并且是由a-z0-9_组成的字符串 
* @param {} str    检查的字符串 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>不是</b>"长度在6至20位且由a-z0-9_"组成返回false; 
*/  
function IsLicit(str, alertStr, idStr){  
	alertStr = "对不起," + alertStr + " 不能为空并且只能由 0到9 a到z 下划线 的6到20位组成! ";  
	var re = /^[_0-9a-zA-Z]{6,20}$/  
	if (!re.test(str))  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 检查二个字符串是否相等 
* @param {} str1    第一个字符串 
* @param {} str2    第二个字符串 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} 字符串不相等返回false; 
*/  
function IsStrEquals(str1, str2, alertStr, idStr){  
	alertStr = "二次 " + alertStr + " 不一致!";  
	if (str1 != str2)  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 检查字符串是否在给定长度范围以内(中文字符以2个字节计算)<br> 
* 
* @param {} str 检查的字符 
* @param {} moreLen     应该大于或者等于的长度 
* @param {} lessLen    应该小于或者等于的长度 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>小于最小长度或者大于最大长度</b>数字返回false; 
*/  
function IsRange(str, moreLen, lessLen, alertStr, idStr){  
	var strLen = LengthB(str);  
	if (moreLen != "") { 
		alertStr = alertStr + " 应该大于或等于 " + moreLen + " 个字节长度!";  
		if (strLen < moreLen)  
		this.AlertAndRFalse(alertStr, idStr);  
	}  
	if (lessLen != "") {  
		alertStr = alertStr + " 应该小于或等于 " + lessLen + " 个字节长度!";  
		if (strLen > lessLen)  
		this.AlertAndRFalse(alertStr, idStr);  
	}  
	if (moreLen == "" && lessLen == "")  
	this.AlertAndRFalse("没有定义最大最小长度!", idStr);  
}  

/** 
* 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br> 
* @param {} str    字符串 
* @param {} lessLen    小于或等于长度 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>大于给定长度</b>数字返回false; 
*/  
function IsLess(str, lessLen, alertStr, idStr){  
	IsRange(str, "", lessLen, alertStr, idStr);  
}  

/** 
* 检查字符不为空 
* @param {} str 
* @param {} alertStr    弹出字段内容 
* @param {} idStr    光标定位的字段ID<b>只能接收ID</b> 
* @return {Boolean} <b>字符为空</b>返回false; 
*/  
function IsEmpty(str, alertStr, idStr){  
	alertStr = alertStr + " 不能为空!";  
	if (str == "")  
	this.AlertAndRFalse(alertStr, idStr);  
}  

/** 
* 弹出警示框,并定位到出错字段上 
* @param {} alertStr    弹出警告框内容 
* @param {} idStr        返回字段焦点 
* @return {Boolean}    返回false 
*/  
function AlertAndRFalse(alertStr, idStr){  
	alert(alertStr);  
	document.getElementById(idStr).focus();  
	throw "valueErr";  
	return false;
} 
/** 
* 检查是否为电话或手机 
* @param {} obj  
* @return {Boolean} <b>不是</b>电话或手机返回false; 
*/  
function IsTelephone(obj)// 正则判断
{ 
	//var pattern=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/; 
	var pattern=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{11}$)/; 
	if(pattern.test(obj)) 
	{ 
		return true; 
	} 
	else 
	{ 
		return false; 
	} 
} 
function checkForm() {  
	try 
	{  
		var title = trim(document.getElementById('title'));        //文章标题  
		
		IsEmpty(title,"文章标题","title");//不可为空  
		IsLess(title,100,"文章标题","title");//标题应少于100个字符长  
		
		ISFilterStr(title, "~`!@#$%^&*()-=_+[]{}|\\;':\",./<>?", "文章标题","title")//标题不允许包含这些非法字符  
	} 
	catch(err) 
	{  
		if(err == "valueErr")  
		return false;  
	}  
} 

