String.prototype.trim=function() {return this.replace(/(^\s*)|(\s*$)/g,"");}
String.prototype.ltrim=function() {return this.replace(/(^\s*)/g,"");}
String.prototype.rtrim=function() {return this.replace(/(\s*$)/g,"");}
String.prototype.isInteger=function() {return /^(-|\+)?\d+$/.test(this);}
String.prototype.isPositiveInteger=function() {return /^\d+$/.test(this);}
String.prototype.isNegativeInteger=function() {return /^-\d+$/.test(this);}
//   date (13:04:06)
String.prototype.isTime=function() {
	var a = this.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
	if (a == null) return false;
	if (a[1]>24 || a[3]>60 || a[4]>60) return false;
	return true;
}
//   short date (13:04)
String.prototype.isShortTime=function() {
	var a = this.match(/^(\d{1,2})(:)?(\d{1,2})$/);
	if (a == null) return false;
	if (a[1]>24 || a[3]>60) return false;
	return true;
}
//   date (2003-12-05)
String.prototype.isDate=function() {
         var r = this.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]);
}
//   short date (2003-12)
String.prototype.isShortDate=function() {
         var r = this.match(/^(\d{1,4})(-|\/)(\d{1,2})$/);
         if(r==null)return false;
         var d= new Date(r[1], r[3]-1, 1);
         return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]);
}
//   date (2003-12-05 13:04:06)
String.prototype.isDateTime=function() {
        var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
        var r = this.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]);
}

String.prototype.onlyChar=function() {
	return /[^a-zA-Z]/g.test(this);
}

String.prototype.onlyCharNumber=function() {
	return /[^0-9a-zA-Z]/g.test(this);
}

//   char, number, underline dot CharNumberUnderlineDot
String.prototype.onlyCNUD=function() {
	return /^([a-zA-z_]{1})([\w]*)$/g.test(this);
}

//   mail
String.prototype.isEmail=function() {
	return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(this);
}

//zip
String.prototype.isZipCode = function()
{
return /^\d{6}$/.test(this);
}

// isMoney

function checkMoney( id,digit){   
	var regu = "^(\\d{1,8})(\\.\\d{0,"+digit+"})?$";
	var re = new RegExp(regu);
	if (!re.test($(id).value.trim())) {
		_chkMsg(id, '不是有效的金额格式或数字太大');
		return false;
	}
	return true;
}


//   hanzi
String.prototype.existChinese = function() {
	return /^[\x00-\xff]*$/.test(this);
}

//   to int
String.prototype.toInt = function() {
	return parseInt(this);
}

//   char length
String.prototype.charLen = function() {
	var length = 0;
	for (var i = 0; i < this.length; i++) {
		if (this.charCodeAt(i) > 10000) {
			length++;
		}
		length++;
	}
	return length;
}

String.prototype.isEmpty = function() {
	return this.trim().length == 0;
}

String.prototype.isNotEmpty = function() {
	return !this.isEmpty();
}


$ = function (id) {
	return document.getElementById(id);
}

// checkNull 
function checkNull( id )
{
	if ($(id).value.trim()=='') 
	{
		_chkMsg(id, '必须填写');
		return false;
	}
	return true; 
}

function checkLen(id, maxLen) {
	if ($(id).value.trim()=='') return true;
	if ($(id).value.trim().charLen() > maxLen)
	{
		_chkMsg(id, '的字符数不能大于' + maxLen + '。注意，一个汉字占用两个字符数');
		return false;
	}
	return true;
}

function checkRange(id, min, max) {
	if ($(id).value.trim()=='') return true;
	if (!checkInt(id))
	{
		return false;
	}
	var v = parseInt($(id).value.trim());
	if (v < min || v > max)
	{
		_chkMsg(id, '的大小必须介于' + min + '和' + max + '之间');
		return false;
	}
	return true;
}

function checkInt(id) {
	if ($(id).value.trim()=='') return true;
	if (! $(id).value.trim().isInteger())
	{
		_chkMsg(id, '不是有效的数字');
		return false;
	}
	return true;
}

function checkDate(id) {
	if ($(id).value.trim()=='') return true;
    var r = $(id).value.trim().match(/^(\d{1,4})(-)(\d{1,2})\2(\d{1,2})$/);
    if(r == null){
    	_chkMsg(id, '不是有效的日期格式(年-月-日)');
		return false;
    }
    var d = new Date(r[1], r[3]-1, r[4]);
    if (!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4])) {
    	_chkMsg(id, '不是有效的日期格式(年-月-日)');
		return false;
    }
    
    /*
    y = parseInt(r[1]);
    if (y < 1900 || y > 2500) {
    	_chkMsg(id, '只能输入1900-2500年的日期');
    	return false;
    }
    */

	return true;
}

function checkSpecialChar(id) {
	if (/[\\?*%]+/.test($(id).value)) {
		_chkMsg(id, '不能包含数据库特殊字符“%、*、?、\\”');
		return false;
	}
	return true;
}

function _chkMsg(id, msg) {
	var e = $(id);
	alert(e.title + msg + '！');
	
	e.select();
	//e.focus();
}

function sysmsg(msg) {
	//DWRUtil.setValue('_msg_', msg);
	if (msg.trim().length > 0) {
		alert(msg.replace(/(<!--.*-->)/gi, ""));
	}
}

String.prototype.sysmsg=function() {
	sysmsg(this);
}

function checkDateByToday(inputdate)
{
	if (inputdate.trim() == '')
	{
		return false;
	}
	if (!inputdate.trim().isDate())
	{
		return false;
	}
	
	var today = new Date();
	var strdate = inputdate.split('-');
	var year = strdate[0]; month = strdate[1]; day = strdate[2];
	var date = new Date(Number(year), Number(month) - 1, Number(day));
	if (today < date)
	{
		return false;
	}
	return true;
}

// 校验日期范围是否正确
function checkDateBound(start_date, end_date)
{
	if (start_date.trim() == '' || end_date.trim() == '')
	{
		return false;
	}
	if (!end_date.trim().isDate() || !end_date.trim().isDate())
	{
		return false;
	}
	
	var strdate1 = start_date.split('-');
	var strdate2 = end_date.split('-');
	var year1 = strdate1[0]; month1 = strdate1[1]; day1 = strdate1[2];
	var year2 = strdate2[0]; month2 = strdate2[1]; day2 = strdate2[2];
	var date1 = new Date(Number(year1), Number(month1) - 1, Number(day1));
	var date2 = new Date(Number(year2), Number(month2) - 1, Number(day2));
	if (date1 > date2)
	{
		return false;
	}
	return true;
}

function checkStrbySpesql(str)
{
	if (str.trim() == '')
	{
		return true;
	}
	
	return (str.indexOf('%') == -1
		&& str.indexOf('*') == -1
		&& str.indexOf('?') == -1
		&& str.indexOf('\\') == -1
		&& str.indexOf('_') == -1);
}

var validateRules = new Array();

// 添加验证规则
//
// vr('element_id', [
//		['func', function(){return $('element_id').value.isInteger()}, 'XX只能输入整数.'],
//		['reg', /^\d{1,4}$/, '只能输入1~4位数字']
// ]);
function vr(id, rule) {
	validateRules[id] = rule;
}

// 验证某个元素的数据
function validate(id) {
	if (validateRules[id])
	{
		for (var i = 0; i < validateRules[id].length; i++) {
			var data = validateRules[id][i];
			var type = data[0];
			var msg = data.length == 3 ? data[2] : '';
			if (type == "reg") {
				if (!data[1].test($(id).value)) {
					if (msg != '') alert(msg);
					return false;
				}
			} else if (type == "func") {
				if (!data[1]()) {
					if (msg != '') alert(msg);
					return false;
				}
			}
		}
		
	}
	return true;

}

function validateAll() {
	for (var i in validateRules) {
		if (!validate(i)) {
		  $(i).focus();
		  return false;
		}
	}
	return true;
}

// 缓存页面提示信息
var globalMsg = new Array();
function appendMsg(msg) {
	if (msg.trim().length > 0) {
		globalMsg.push(msg);
	}
}

function isIE() {
	return (navigator.userAgent.indexOf("MSIE") != -1);
}

// 全选/全不选
function selectall(form,checked)
{
  for (i=0;i<form.elements.length;i++)
  {
    if (form.elements[i].type=="checkbox")
    {
    	form.elements[i].checked = checked;
    }
  }
}

// 点击某一个checkbox
function selectedOne(form,checked)
{
	var selectcount = 0;
	var checkboxCount = 0;
	var selectAllObj;
	for (i=0;i<form.elements.length;i++)
	{
		if (form.elements[i].type=="checkbox")
		{
		    checkboxCount++;
		
			if(form.elements[i].name != "checkall" && form.elements[i].checked == checked)
			{
		    	selectcount++;
		    }
		    if(form.elements[i].name == "checkall")
		    {
		        selectAllObj = form.elements[i];
		    }
		}
	}
	if(checked)
	{
	    if(checkboxCount == selectcount+1)
	    {
	  		selectAllObj.checked = true;
	    }
	}
	else
	{
	    if(selectcount > 0)
	    {
	        selectAllObj.checked = false;
	    }
	}
}

// 校验年份字段是否为4位整数.返回true表示格式正确，返回false表示不正确.
function checkYear(year)
{
	
	if (year.trim() != '')
	{
		if (year.charLen() != 4 || !year.isInteger())
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
	
}
