﻿function checklenoftextarea(id, num,text)
{
	var obj = document.getElementById(id);
	if (obj.value.length > num)
	{
		alert('您写的"'+text+'"文字太长，请不要超过'+num+'个字符！');
		obj.focus();
		return false;
	}
	return true;
}

//分页控件校验页索引的函数
function doCheck(el, maxIndex)
{
	var r = new RegExp('^\\s*(-?\\d+)\\s*$');
	if(r.test(el.value))
	{
		var value = parseInt(RegExp.$1);
		if(value < 1 || value > maxIndex)
		{
			alert('页数超出范围！');
			el.select();
			el.focus();
			return false;
		}
		return true;
	}
	alert('页索引无效！');
	el.select();
	el.focus();
	return false;
}

//liuyq   检查一个string的长度不能超过一个值
function isOutStrLength(str, maxLength)
{	
	return trimStr(str).length > maxLength;	
}

// 获得当前日期，用于比较
function getTodayString()
{
	var d = new Date();
	return getDateString(d);
}

function getDateString(dateObj)
{
	var month = dateObj.getMonth() + 1;
	var day = dateObj.getDate();
	var monthStr = month > 9 ? month.toString() : '0' + month.toString();
	var dayStr = day > 9 ? day.toString() : '0' + day.toString();
	var result = dateObj.getYear().toString() + '-' + 
		monthStr + '-' + dayStr;
	return result;
}

// 校验是否是合法的图片文件
// Luoz：2005-5-12
function validatePicFile(obj)
{
	var reg = /\.(jpg)|(jpeg)|(png)|(gif)$/i
	reg.ignoreCase = true;
	result = reg.test(obj.value) || obj.value.length == 0;
	if(!result)
	{
		alert('图片文件只能是以下几种类型：.jpg;.jpeg;.png;.gif');
		obj.select();
		obj.focus();
	}
	return result;
}

// 检验是否合法的路径名称
// obj 文件Input元素
// isFilePath 是否是验证文件路径// true 表是验证文件路径
// false 表示验证文件夹路径// 备注：只是验证路径字符串的正确性，不保证文件或文件夹一定存在//		 如果文件路径为空，反回true
// zhangbing+
function validatePath(obj, isFilePath)
{
	obj.value = obj.value.replace(/(^\s*)|(\s*$)/g, '');
	if(obj.value == '') return true;
	
	var reg = null;
	if(isFilePath)
		// 验证文件
		reg = /^[a-z]:(\\[^\\\/:\*\?"><|]+)*\\?$/i;
	else
		 // 验证文件夹
		reg = /^[a-z]:(\\[^\\\/:\*\?"><|]+)+$/i;

	reg.ignoreCase = true;
	obj.value = obj.value.replace(/(^\s*)|(\s*$)/g, '');
	var result = reg.test(obj.value);
	if(!result)
	{
		alert('请输入合法的路径');
		obj.select();
		obj.focus();
	}
	return result;

}

/*去掉字符串首尾的空格*/
function trim(value)
{
	var reg = /(^\s*)|(\s*$)/g;
	return value.replace(reg, '');		
}
/*验证控件内容为Email*/
function validateEmail()
{
	var reg = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/g;
	var result = true;
	for(i=0;i<arguments.length;i++)
	{
		var obj = arguments[i];
		
		var strValue = trim(obj.value).replace(reg, '');
		if( strValue.length != 0 )
		{
			alert("请输入合法的 E-Mail 地址");
			obj.select();
			obj.focus();
			event.returnValue = false;
			result = false;
			break;
		}		
	}
	return result;
}
/*验证用户名*/
function validateLoginName()
{
	var reg = /^[0-9a-zA-Z]{3,30}$/g;
	var result = true;
	for(i=0;i<arguments.length;i++)
	{
		var obj = arguments[i];
		var strValue = trim(obj.value).replace(reg, '');

		if( strValue.length != 0 && strValue.indexOf('_')<0)
		{
			alert("用户名只能是长度>=3并且<=30的字母、数字,请重新输入!");
			obj.select();
			obj.focus();
			event.returnValue = false;
			result = false;
			break;
		}		
	}
	return result;
}
/*验证邮编*/
function validateZipCode()
{
	var reg = /^\d{6}$/g;
	var result = true;
	for(i=0;i<arguments.length;i++)
	{
		var obj = arguments[i];
		var strValue = trim(obj.value).replace(reg, '');
		if( strValue.length != 0 )
		{
			alert("您输入的邮政编码不正确,请重新输入!");
			obj.select();
			obj.focus();
			event.returnValue = false;
			result = false;
			break;
		}		
	}
	return result;	
}
/*验证控件内容为手机号码*/
function validateMobile()
{
	var reg = /^(0(?!0)\d{9,11}|13\d{9})$/g; // 以0开头(紧跟后面的一位不是0)，紧跟长度为9 或10的数字串，以13开头长紧跟长度为 9 的数字串
	var result = true;
	for(i=0;i<arguments.length;i++)
	{
		var obj = arguments[i];
		var strValue = trim(obj.value).replace(reg, '');
		if( strValue.length != 0 )
		{
			alert("请输入正确的手机号,小灵通用户请在前面加上区号!");
			obj.select();
			obj.focus();
			event.returnValue = false;
			result = false;
			break;
		}		
	}
	return result;
}

// 验证输入框不能为空值
function validateValue()
{
	var reg = /(^\s*)|(\s*$)/g;
	var result = true;
	for(i=0;i<arguments.length;i++)
	{
		var obj = arguments[i];
		var strValue = obj.value.replace(reg, ''); //去掉首尾空格
		if(strValue.length == 0)
		{
			alert('请输入完整信息，带(*)的为必填项');
			obj.select();
			obj.focus();
			event.returnValue = false;
			result = false;
			break;
		}
	}
	return result;
}

// 把日期字符串格式化成 yyyy-mm-dd格式 ，便于比较大小
function reFormatDateString( dateStr )
{
	var reg = /(^\s*)|(\s*$)/g;
	dateStr = dateStr.replace(reg, ''); //去掉首尾空格
	
	if(dateStr.length == 0)
		return '';
	
	var iaDate = new Array(3)
	var year, month, day

	var result = true;
	var obj;
	
	iaDate = dateStr.split("-")
	
	year = iaDate[0]
	month = iaDate[1]
	day=iaDate[2]
	
	if(year.length <= 2) year = '19' + year;
	if(month.length == 1) month = '0' + month;
	if(day.length == 1) day= '0' + day;
	return year + '-' + month + '-' + day;
}

// created by chenp, 2005.03.18
function trimStr(str) 
{
    if(str == undefined || str == null) 
        return "";
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

// created by chenp, 2005.03.18
function isEmptyStr(str) 
{
    return "" == trimStr(str);
}

// created by chenp, 2005.03.18
function isInteger(str) 
{
    if(str == undefined || str == null) 
        return false;
    str = trimStr(str);
    return str.match(/^-?[0-9]{1,9}$/) != null;
}

// created by chenp, 2005.03.18
function isReal(str) 
{
    if(str == undefined || str == null) 
        return false;
    str = trimStr(str);
    return str.match(/^-?[0-9]{1,28}(\.[0-9]*)?$/) != null;
}

// created by chenp, 2005.04.18
function isMoney(str) 
{
    if(str == undefined || str == null) 
        return false;
    str = trimStr(str);
    return str.match(/^[0-9]{1,14}(\.[0-9]*)?$/) != null;
}

//+zhans20050327:文本框中的数据不能为空的验证
function validateInputNotNull()
{
	for( var i=0;i<arguments.length;i++)
	{
		var input = arguments[i];
		var reg = /(^\s*)|(\s*$)/g;
		var trimValue = input.value.replace(reg, ''); //去掉首尾空格
		if( trimValue == "")
		{
			alert("请填写完整信息(带*的项为必填项)!");
			input.focus();
			input.select();
			event.returnValue = false;
			return false;
		}
	}
	return true;
}

//+zhans20050327:开始期数不能小于结束期数的验证
function validatePeriod(obj1,obj2)
{
	var period1 = obj1.value;
	var period2 = obj2.value;
	var result = true;
	if( period1 > period2 )
	{
		alert("结束期数应该大于等于开始期数");
		event.returnValue = false;
		result = false;
	}
	return result;
}
// 时间控件的输入内容校验// 用法： validateDate(obj0 [,obj]*)
function validateDate()
{
	var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
	var iaDate = new Array(3)
	var year, month, day

	var result = true;
	var obj;
	
	if(arguments.length > 2 || arguments.length < 1)
	{
		alert('参数个数应为1或2个');
	}
	
	for(i = 0;i < arguments.length;i++)
	{
		var dateInput = arguments[i];
		var strValue = dateInput.value;
		var reg = /(^\s*)|(\s*$)/g;
		strValue = strValue.replace(reg, ''); //去掉首尾空格
		
		dateInput.value = strValue;
		if(strValue.length == 0)
		{
			continue;
		}
		
		iaDate = dateInput.value.split("-")
		if (iaDate.length != 3 || iaDate[1].length > 2 || iaDate[2].length > 2 || iaDate[1].length < 1 || iaDate[2].length < 1)
		{
			obj = dateInput;
			result = false;
			break;
		}
		
		year = parseFloat(iaDate[0])
		month = parseFloat(iaDate[1])
		day=parseFloat(iaDate[2])

		if (year < 1900 || year > 2100)
		{
			obj = dateInput;
			result = false;
			break;
		}
		
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
		if (month < 1 || month > 12 || day < 1 || day > iaMonthDays[month - 1])
		{
			obj = dateInput;
			result = false;
			break;
		}
	}
	
	if(result == false)
	{
		alert('请按以下格式输入合法的日期:yyyy-mm-dd');
		dateInput.select();
		dateInput.focus();
		event.returnValue = false; 
	}
	else if(arguments.length == 2 )
	{
		if(reFormatDateString(arguments[1].value) < reFormatDateString(arguments[0].value) && 
			arguments[1].value.length > 0 )
		{
			alert('结束时间应该大于等于开始时间');
			arguments[0].select();
			arguments[0].focus();
			event.returnValue = false; 
			result = false;
		}
	}
	return result;
}

// cuigh, 2005.4.12, 验证是否是合法的邮编
function IsZipCodeStr(strZipCode)
{
	var reg = /^\d{6}$/;
	return reg.test(strZipCode);
}

// cuigh, 2005.4.12, 验证是否是合法的手机号码
function IsMobileStr(strMobile)
{
	var reg = /^[0|1]{1}\d{8,11}$/;
	return reg.test(strMobile);
}

// cuigh, 2005.4.12, 验证是否是合法的 EMail
function IsEmailStr(strEmail) 
{ 
	var reg = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;	//这是微软提供的,应该严密
	return reg.test(strEmail);
} 

// cuigh, 2005.4.12, 验证是否为空，如果为空则显示提示信息
function ValidateElemEmpty()
{
	for( var i=0; i<arguments.length; i++)
	{
		var elem = document.getElementById(arguments[i]);
		if (isEmptyStr(elem.value))
		{
			alert("请填写完整信息(带*的项为必填项)!");
			elem.select();
			elem.focus();
			event.returnValue = false;
			return false;
		}
	}
	return true;
}

// cuigh, 2005.4.12, 验证是否是合法的 EMail
function ValidateElemEmail(id) 
{ 
	var elem = document.getElementById(id);
	if (isEmptyStr(elem.value) || IsEmailStr(elem.value)) return true;
	else
	{
		alert("请输入合法的 E-Mail 地址");
		elem.select();
		elem.focus();
		return false;
	}
} 

// cuigh, 2005.4.12, 验证是否是合法的 ZipCode
function ValidateElemZipCode(id) 
{
	var elem = document.getElementById(id);
	var str = trimStr(elem.value);
	if (IsZipCodeStr(str)) return true;
	else
	{
		alert("请输入有效的邮政编码。");
		elem.select();
		elem.focus();
		return false;
	}
}

// cuigh, 2005.4.12, 验证是否是合法的 Mobile
function ValidateElemMobile(id) 
{
	var elem = document.getElementById(id);
	var str = trimStr(elem.value);
	if (IsMobileStr(str)) return true;
	else
	{
		alert("请输入正确的手机号,小灵通用户请在前面加上区号！");
		elem.select();
		elem.focus();
		return false;
	}
}

// cuigh, 2005.4.12, 验证是否是正整数
function ValidateElemInt(id, text) 
{
	var elem = document.getElementById(id);
	if (elem.value.match("\\D"))
	{
		alert(text + "必须为正整数！");
		elem.select();
		elem.focus();
		return false;
	}

	if (elem.value > 999999999)
	{
		alert(text + "数值过大！");
		elem.select();
		elem.focus();
		event.returnValue=false;
		return false;
	}
	
	return true;
}

// cuigh, 2005.4.12, 验证是否是整数
function ValidateInt(id, text) 
{
	var elem = document.getElementById(id);
	if (isInteger(elem.value)) return true;
	else
	{
		alert(text + "必须为整数！");
		elem.select();
		elem.focus();
		return false;
	}
}

// liuwa, 2005.4.22，验证是否为正数值
function ValidatePositive(id, text)
{
	var elem = document.getElementById(id)
	var value = elem.value;
	if (!(/^\d+(\.\d+)?$/.test(value) || trim(value) == ''))
	{
		alert(text + "必须为正数值！");
		elem.select();
		elem.focus();
		event.returnValue=false;
		return false;
	} 
	
	event.returnValue=true;
	return true;
}

// liuwa, 2005.4.22，验证是否为正数值
function ValidatePositiveDecimal(id, text)
{
	var elem = document.getElementById(id)
	var value = elem.value;
	if (!(/^\d+(\.\d+)?$/.test(value) || trim(value) == ''))
	{
		alert(text + "必须为正数值！");
		elem.select();
		elem.focus();
		event.returnValue=false;
		return false;
	} 
	
	if (value > 99999999999999)
	{
		alert(text + "数值过大！");
		elem.select();
		elem.focus();
		event.returnValue=false;
		return false;
	}
	event.returnValue=true;
	return true;
}

// caog 20050919 验证正整数

function ValidatePositiveNonZeroInteger(id, text)
{
	var elem = document.getElementById(id)
	var value = elem.value;
	if (!(/^[1-9][0-9]{0,10}$/.test(value) || trim(value) == ''))
	{
		alert(text + "必须为正整数！");
		elem.select();
		elem.focus();
		event.returnValue=false;
		return false;
	} 

	event.returnValue=true;
	return true;
}

// liuwa, 2005.7.12, 验证是否是正整数

function ValidateYear(id, text) 
{
	var elem = document.getElementById(id);
	if (elem.value.match("\\D"))
	{
		alert(text + "必须为整数！");
		elem.select();
		elem.focus();
		return false;
	}
	
	if (elem.value > 3000)
	{
		alert(text + "数值过大！");
		elem.select();
		elem.focus();
		return false;
	}
	
	return true;
}

// Liuwa, 2005.6.22, 将未填数据的input控件填上0
function FillNullToZero()
{
	for( var i=0; i<arguments.length; i++)
	{
		var Elme = document.getElementById(arguments[i])
		if (Elme.value=='')
			Elme.value = 0;
	}
}


//************************************************************************
//文件名: 	validate.js
//版  权: 	Copyright @ 200c 北京广联达慧中软件技术有限公司

//作者: 	xingyk
//日 期: 	2006年5月17日

//描 述: 	所有GEA站点的客户端输入完整性的验证方法都放在本文件中。

//           每一个具体的验证方法都至少包含一个object参数，用来指明我们要验

//           证的是哪个控件中的值

//************************************************************************
 
 /*生成全局提示信息*/
 function validateResourceConstructor()
 {
    this.notEmpty          = "# 不能为空，请重新输入";
	this.shortText         = "# 长度必须少于或等于20个字符，请重新输入";
	this.longText          = "# 长度必须少于或等于254个字符，请重新输入";
	this.year              = "合法的年份值应该在1XXX到2XXX之间，请重新输入";
	this.date              = "合法的日期格式为yyyy-mm-dd，请重新输入";
	this.loginName         = "用户名只能是长度>=2并且<=20的字母、数字、下划线的组合,请重新输入!"
	this.zipCode           = "这不是邮政编码，请重新输入";
	this.mobile            = "这不是正确的手机（小灵通）号码，请重新输入";
	this.phone             = "电话号码格式不正确，请重新输入（区号-电话号码，请用“-”相连，多个号码请用“空格”或“；”相连！）"
	this.picFileName       = "图片文件只能是以下几种类型：.jpg;.jpeg;.png;.gif，请重新输入";
	this.email             = "这不是合法的 E-Mail 地址，请重新输入";
	this.fileName          = "这不是合法的文件名，请重新输入";
	this.directoryName     = "这不是合法的目录名，请重新输入";
	this.attachFileName    = "上传附件只能是以下几种类型：.doc;.xls;.txt;.zip;.rar，请重新输入";
	this.excelFileName     = "上传附件只能是Excel文件, 请重新输入"     
	this.integer           = "# 应该是一个整数，请重新输入";
	this.positiveInteger   = "# 应该是一个正整数，请重新输入";
	this.notNegativeInteger= "# 应该是一个非负整数，请重新输入";
	this.real              = "# 应该是一个实数，请重新输入";
	this.positiveReal      = "# 应该是一个正实数，请重新输入";
	this.notNegativeReal   = "# 应该是一个非负实数，请重新输入";
	this.lt1Decimal        = "# 应该是一个小于等于1的正实数，请重新输入";
	this.money             = "钱的数额应该是一个整数位小于14位，小数位小于3位的非负实数";
 }
 
 /*生成全局正则表达式*/
 function regExpressionConstructor()
 {
	this.zipCode          = /^\d{6}$/;	
	this.picFileName      = /\.(jpg)|(jpeg)|(png)|(gif)$/i;
	this.email            = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/;
	this.loginName        = /^[0-9a-zA-Z_]{2,20}$/;
	this.fileName         = /^[a-z]:(\\[^\\\/:\*\?"><|]+)*\\?$/i;
	this.directoryName    = /^[a-z]:(\\[^\\\/:\*\?"><|]+)+$/i;
	this.attachFileName   = /\.(doc)|(xls)|(txt)|(zip)|(rar)$/i;
	this.excelFileName    = /\.(xls)$/i;  
	this.year             = /^[1-2][0-9]{3}$/;
	this.integer          = /^-?[0-9]{1,9}$/;
	this.money            = /^(0|[1-9]\d{0,13})(\.\d{0,2})?$/;
	this.positiveInteger  = /^[1-9][0-9]{0,10}$/;
	this.notNegativeInteger= /^(0|([1-9][0-9]{0,10}))$/;
	this.real             = /^-?\d{1,28}(\.\d+)?$/;
	this.positiveReal     = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/;
	this.notNegativeReal  = /^(0|(\d+(\.\d+)?))$/;
	this.lt1Decimal       = /^(([0]\.[0-9]*[1-9][0-9]*)|[1]|[1]\.[0]*)$/;
	this.phone            = /^\d{3,4}-\d{7,8}((\s|;)+\d{3,4}-\d{7,8})*$/;
	this.mobile           = /^(0[1-9]\d{8,9})|(1[3,5]\d{9})$/; //以0开头(紧跟后面的一位不是0)，
	                        //紧跟长度为9 或10的数字串，或者以13开头长紧跟长度为 9 的数字

 }
 
 var msgResource = new validateResourceConstructor();
 var regResource = new regExpressionConstructor();
 
 /* 格式化提示信息*/
 function formatMessage(input, msgStr)
 {
    var returnVal;
    var valText = input.validateText;
    if(valText == null || valText==undefined)
        valText = "";
    
    var returnVal = msgStr.replace(/#/,valText);
    return returnVal;
 }
  
 /***
  功能: 对一个表单中所有的输入控件(input)进行验证的入口点
  创建: xingyk
  参数：待验证的表单

  返回：如果验证无误，返回true;如果其中某控件验证失败，显示相应报警窗口，

        并将光标定位到那个控件所在的位置
  备注：只验证单个控件的正确性，不验证多个控件的相关正确性。

        另外，单个控件正确性验证一定要放在多个控件相关性验证之前去做！
  ***/
 function validateForm(form)
 {
    var inputs =null;
    if(form.tagName=='FORM')    
        inputs = form.elements;
    else
        inputs=form.getElementsByTagName("input");
        
    var result = true;
    
    for(var index=0; index<inputs.length; index++)
    {
        var input = inputs[index];

        if(!result) return false;
        if(input.validateType == null) continue;
        
        input.value = trimStr(input.value);
    	var arrValidateType = input.validateType.split("|");
    	
        for(i in arrValidateType)
        {
            if(!result) return false;
            
        	switch(arrValidateType[i]){
        	case "notEmpty":
        		result = validateNotEmpty(input);
        		break;
        	case "shortText":
        		result = validateShortText(input);
        		break;
        	case "longText":
        		result = validateLongText(input);
        		break;
        	case "date":
        	    result = validateDate(input);
        		break;
        	case "loginName":
        		result = regularValidate(input, msgResource.loginName, regResource.loginName);
        		break;	
        	case "email":
        		result = regularValidate(input, msgResource.email, regResource.email);
        		break;
        	case "money":
        		result = regularValidate(input, msgResource.money, regResource.money);
        		break;
        	case "zipCode":
        		result = regularValidate(input, msgResource.zipCode, regResource.zipCode);
        		break;
			case "integer":
        		result = regularValidate(input, msgResource.integer, regResource.integer);
        		break;
        	case "positiveInteger":
        		result = regularValidate(input, msgResource.positiveInteger, regResource.positiveInteger);
        		break;
        	case "notNegativeInteger":
        		result = regularValidate(input, msgResource.notNegativeInteger, regResource.notNegativeInteger);
        		break;
        	case "real":
        		result = regularValidate(input, msgResource.real, regResource.real);
        		break;
        	case "positiveReal":
        		result = regularValidate(input, msgResource.positiveReal, regResource.positiveReal);
        		break;
        	case "notNegativeReal":
        		result = regularValidate(input, msgResource.notNegativeReal, regResource.notNegativeReal);
        		break;
        	case "lt1Decimal":
        		result = regularValidate(input, msgResource.lt1Decimal, regResource.lt1Decimal);
        		break;
			case "year":
				result = regularValidate(input, msgResource.year, regResource.year);
        		break;
        	case "mobile":
        	    result = regularValidate(input, msgResource.mobile, regResource.mobile);
        		break;
        	case "phone":
        	    //yanglf060804 *1 联系电话的输入格式不需要校验
        	    result = true; //regularValidate(input, msgResource.phone, regResource.phone);
        		break;
        	case "fileName":
        	    result = regularValidate(input, msgResource.fileName, regResource.fileName);
        	    break;
        	case "picFileName":
        	    result = regularValidate(input, msgResource.picFileName, regResource.picFileName);
        	    break; 	
        	case "directoryName":
        	    result = regularValidate(input, msgResource.directoryName, regResource.directoryName);
        	    break;	        
        	case "attachFileName":
        	    result = regularValidate(input, msgResource.attachFileName, regResource.attachFileName);
        	    break;
        	case "excelFileName":
        	    result = regularValidate(input, msgResource.excelFileName, regResource.excelFileName);
        	    break;
        	    
        	}
    	}

    } 
    return result;
 }


/*
-----------------------------------------------------------------------------------------
--------------------------------------------下面是各种校验方法----------------------------
-----------------------------------------------------------------------------------------
*/


 /***
 功能：根据输入的正则表达式进行简单的验证
 创建：xingyk
 参数：(1)input待验证控件(2)msg此控件相应的报错信息(3)reg验证此控件所需的正则表达式
 备注：这里只验证控件在有值得情况下是否合乎标准，至于控件是不是允许为空（用户未进行输入）由validateNotEmpty
       来进行判定。

 ***/
 function regularValidate(input, msg, reg)
 {
    reg.lastIndex = -1;
    var result = true;
    if(input == null || input == undefined)
    {
        result = false;
    }
    else if(input.value.length>0)
    {
        result = reg.test(input.value);
    }
    
    if(!result)
    {
        alert(formatMessage(input, msg));
        input.select();
		input.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		}
    }
    
    return result;
 }

/*验证输入框不能为空值*/
function validateNotEmpty(input)
{
	var result = true;
	if(trimStr(input.value).length == 0)
	{
		alert(formatMessage(input, msgResource.notEmpty));
		input.select();
		input.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
	}	
	return result;
}

/*验证输入框长度小于20*/
function validateShortText(input)
{
	var result = validateStrLength(input.value, 0, 20);
	if(!result)
	{
		alert(formatMessage(input,msgResource.shortText));
		input.select();
		input.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
	}	
	return result;
}

/*验证输入框长度小于254*/
function validateLongText(input)
{
	var result = validateStrLength(input.value, 0, 254);
	if(!result)
	{
		alert(formatMessage(input,msgResource.longText));
		input.select();
		input.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
	}	
	return result;
}

/*验证为正确的日期格式*/
function validateDate(input)
{   
    var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
	var iaDate = new Array(3)
	var year, month, day

	var result = true;	
	var strValue = input.value;
	if(strValue.length != 0)
	{
		iaDate = strValue.split("-")
	    if (iaDate.length != 3 || iaDate[1].length > 2 || iaDate[2].length > 2 || iaDate[1].length < 1 || iaDate[2].length < 1)
	    {
		    result = false;
	    }
    	
	    year = parseInt(iaDate[0],10);
	    month = parseInt(iaDate[1],10);
	    day=parseInt(iaDate[2],10);
	    
	    if( isNaN(year) || isNaN(month) || isNaN(day))
	    {
	        result = false;
	    }

	    if (year < 1900 || year > 2100)
	    {	    
		    result = false;
	    }
    	
	    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
	    if (month < 1 || month > 12 || day < 1 || day > iaMonthDays[month - 1])
	    {
		    result = false;
	    }
	}
			
	if(result == false)
	{
		alert(msgResource.date);
		input.select();
		input.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		} 
	}
	
	return result;
}

/*验证起始日期和结束日期满足大小关系*/
/*备注：实际开发的时候，要保证这个方法是在validateDate之后被调用。*/
function validateDates(dateFrom, dateTo)
{
	var result = true;
	
	if(reFormatDateString(dateTo.value) < reFormatDateString(dateFrom.value) && 
		dateTo.value.length > 0 )
	{
		alert('结束日期应该大于等于开始日期');
		dateFrom.select();
		dateFrom.focus();
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
	}
	
	return result;
}

/*验证开始期数不能小于结束期数*/
function validatePeriods(periodFrom,periodTo)
{
	var period1 = periodFrom.value;
	var period2 = periodTo.value;
	var result = true;
	if( period1 > period2 )
	{
		alert("结束期数应该大于等于开始期数");
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
		periodFrom.select();
		periodFrom.focus();
	}
	return result;
}

/*验证最大次数不能小于最小次数*/
function validateCounts(countFrom,countTo)
{
	var period1 = parseInt(countFrom.value);
	var period2 = parseInt(countTo.value);
	var result = true;
	if( period1 > period2 )
	{
		alert("最大次数应该大于等于最小次数");
		if(event!=null)
		{
		    event.returnValue = false;
		}
		result = false;
		countFrom.select();
		countFrom.focus();
	}
	return result;
}
/*
-------------------------------------------------------------------------------------------
----------------------下面是一些公有脚本,为所有的验证方法提供公共服务----------------------
-------------------------------------------------------------------------------------------
*/

/*裁减字符串的首尾空格*/
function trimStr(str) 
{
    if(str == undefined || str == null) 
        return "";
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

/***
  功能: 确保字符串长度在某范围之内

  创建: xingyk
  参数：待验字符串，长度下限，长度上限。当上限为-1的时候，表明没有限制
  ***/
function validateStrLength(str, minLen, maxLen)
{
    if(str == undefined || str == null) 
        return false;
    var len = str.length;
    if(maxLen != -1)
    {
        return (len>=minLen)&&(len<=maxLen);
    }
    else
        return len>=minLen;
}

/*把日期字符串格式化成 yyyy-mm-dd格式 ，便于比较大小*/
function reFormatDateString( dateStr )
{	
    var dateArray = new Array(3);
	var year, month, day;
	dateStr = trimStr(dateStr);
		
	if(dateStr.length == 0)
		return '';
	
	dateArray = dateStr.split("-")	;
	year = dateArray[0];
	month = dateArray[1];
	day=dateArray[2];
	
	if(year.length <= 2) year = '19' + year;
	if(month.length == 1) month = '0' + month;
	if(day.length == 1) day= '0' + day;
	return year + '-' + month + '-' + day;
}

/*把一个date对象转变成yyyy-mm-dd的形式*/
function getDateString(dateObj)
{
	var month = dateObj.getMonth() + 1;
	var day = dateObj.getDate();
	var monthStr = month > 9 ? month.toString() : '0' + month.toString();
	var dayStr = day > 9 ? day.toString() : '0' + day.toString();
	var result = dateObj.getYear().toString() + '-' + 
		monthStr + '-' + dayStr;
	return result;
}

/*
--------------------------------------------------------------------------------------
----------------------下面的方法放在这个文件里是不合适的，暂时------------------------
--------------------------------------------------------------------------------------
*/
// Liuwa, 2005.6.22, 将未填数据的input控件填上0
function FillNullToZero()
{
	for( var i=0; i<arguments.length; i++)
	{
		var Elme = document.getElementById(arguments[i])
		if (Elme.value=='')
			Elme.value = 0;
	}
}

//分页控件校验页索引的函数
function doCheck(el, maxIndex)
{
	var r = new RegExp('^\\s*(-?\\d+)\\s*$');
	if(r.test(el.value))
	{
		var value = parseInt(RegExp.$1);
		if(value < 1 || value > maxIndex)
		{
			alert('页数超出范围！');
			el.select();
			el.focus();
			return false;
		}
		return true;
	}
	alert('页索引无效！');
	el.select();
	el.focus();
	return false;
}

// 获得当前日期，用于比较

function getTodayString()
{
	var d = new Date();
	return getDateString(d);
}