/*******************************************************************************
 *                               util.js                                       *
 *******************************************************************************
 * js工具库，存放JS常用函数                                                       *
 * 本文件也是正则表达式运用的例子                                                   *
 *******************************************************************************/
 /******************************************************************************
  *  表单提交数据验证数组
  *  4个数组分别表示在form提交页面时需要的设置的属性，系统自动根据用户设置的属性判断是否 *
  *   为空，是否超过设定的长度、是否满足要求（例如：数字输入要求、日期输入要求等）       * *  is_colName 列名称
  *  is_colContent 字符串型 列中文释义,该字段主要是出现错误提示用户
  *  is_colSize  字符串型 列长度，如果不设列长度，不作长度判断值为0或空
  *  is_colType  字符串型 列类型,主要有：NUMBER、INT、DATE、STRING
  *  is_null     布尔型 是否判断为空 true或false
  *****************************************************************************/
 var  is_colName = new Array()
 var  is_colContent = new Array()
 var  is_colSize = new Array()
 var  is_colType = new Array()
 var  is_null = new Array()
 /*FORM的名称 本字段需要用户开始设定，默认为formMain*/
 var  is_formName="formMain"
//检查是否为任意数（实数）
function isNumeric(strNumber) 
{
	var newPar=/^(-|\+)?\d+(\.\d+)?$/
	return newPar.test(strNumber)   
 }
 //检查是否为正数
function isUnsignedNumeric(strNumber) 
{
	var newPar=/^\d+(\.\d+)?$/
	return newPar.test(strNumber)
 }
 //检查是否为整数
 function isInteger(strInteger) 
{
	var newPar=/^(-|\+)?\d+$/
	return newPar.test(strInteger)
}
 //检查是否为正整数
function isUnsignedInteger(strInteger) 
{
	var newPar=/^\d+$/
	return newPar.test(strInteger)
}
//检查是否是日期
function isDate(as_str)
{
	//日期格式判断
	var newPar = /^\d{4}(\.|-|\/)\d{1,2}(\.|-|\/)\d{1,2}/
	if (!newPar.test(as_str)) 
	{
		alert("非法的日期格式，正确的日期格式是：YYYY-MM-DD,YYYY.MM.DD,YYYY/MM/DD")
		return false
	}
	/*分别取出年、月、日*/
	newPar = /(\.|-|\/)/g
	var arr,ls_year,ls_month,ls_day
	ls_year = as_str.substr(0,4)
	arr = as_str.substr(5)
	var arr1 = newPar.exec(arr)
	ls_month = arr.substr(0,arr1.index)
	ls_day = arr.substr(arr1.index+1)
    if (ls_month<1||ls_month > 12)
    {
		alert("月份在01-12之间")
		return false
    }
	var m_day = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
	/*闰年判断*/
	if (divide(parseInt(ls_year),100))
    {
		if (divide(parseInt(ls_year),400))
		{
			m_day[1] = 29
		}
    }
	else
	{
		if (divide(parseInt(ls_year),4))
		{
			m_day[1] = 29
		}
	}
    
	if (ls_day<1||parseInt(ls_day) > m_day[parseInt(ls_month) - 1])
	{
		alert(ls_year+"年"+ls_month+"月没有"+ls_day+"日，请你重新输入！")
		return false
	}
	return true
}
//去掉字符串前后空格
function trim(as_str)
{
	str = as_str.replace(/^\s*/g,"")
	str = str.replace(/\s*$/g,"")
    return str
}
//数字保留小数位数
function round(as_num,as_digit)
{
	/*as_num必须是一个实数*/
	if (!isNumeric(as_num)) return
	/*as_digit必须是一个正整数*/
    if (!isUnsignedInteger(as_digit)) return
	return (as_num).toFixed(as_digit)  
}
/*判断一个数是否能被另一个数整数*/
function divide(as_sou,as_des)
{
	if (!isInteger(as_sou)) return
	if (!isInteger(as_des)) return
	if (round(Math.round(as_sou/as_des),2)==round(as_sou/as_des,2))
	{
		return true
	}
	else
	{
		return false
	}
}
/*设置form名称*/
function setFormName(as_form)
{
	is_formName = as_form
}
/*设置form需要验证的数据*/
function setCheckCol(as_colName,as_colContent,as_colSize,as_colType,as_null)
{
	var ls_length = is_colName.length
	if (trim(as_colName)==""||as_colName==null) return
	is_colName[ls_length] = as_colName  /*列名*/
	is_colContent[ls_length] = as_colContent /*列释义*/
	is_colSize[ls_length] = as_colSize    /*列长度,长度主要针对STRING类型*/
	is_colType[ls_length]=as_colType      /*列类型*/
	is_null[ls_length] = as_null          /*是否为空判断*/
}
/*form数据验证函数*/
function dataCheck()
{
	/*根据is_colname数组的长度对数据进行判断*/
    /*开始循环*/
	for (var i=0;i<is_colName.length ;i++ )
	{
		var ls_value = eval(is_formName+"."+is_colName[i]+".value")
		switch (is_colType[i])
		{
			case "STRING":
			{
				if (ls_value.length > is_colSize[i]&&is_colSize[i] > 0&&is_colSize[i]!=null)
				{
					alert(is_colContent[i]+"输入字符过多！只能输入"+is_colSize[i]+"个字符！")
					eval(is_formName+"."+is_colName[i]).focus()
					return false
				}
				if (is_null[i])
				{
					if (ls_value==""||ls_value==null)
					{
						alert(is_colContent[i]+"不能为空！")
						eval(is_formName+"."+is_colName[i]).focus()
						return false
					}
				}
				break
			}
			case "NUMBER":
			{
			    if (trim(ls_value)!=null&&trim(ls_value)!=""&&!isNumeric(ls_value)) 
				{
					alert(is_colContent[i]+"字段只能输入数字，你输入了非法字符！")
					eval(is_formName+"."+is_colName[i]).focus()
					return false
				}
				if (is_null[i])
				{
					if (ls_value==""||ls_value==null)
					{
						alert(is_colContent[i]+"不能为空！")
						eval(is_formName+"."+is_colName[i]).focus()
						return false
					}
				}
				break
			}
			case "DATE":
			{
			    if (trim(ls_value)!=null&&trim(ls_value)!=""&&!isDate(ls_value))
			    {
					eval(is_formName+"."+is_colName[i]).focus()
					return false
			    }
				if (is_null[i])
				{
					if (ls_value==""||ls_value==null)
					{
						alert(is_colContent[i]+"不能为空！")
						eval(is_formName+"."+is_colName[i]).focus()
						return false
					}
				}
				break
			}
			case "INT":
			{
				if (trim(ls_value)!=null&&trim(ls_value)!=""&&!isInteger(ls_value)) 
				{
					alert(is_colContent[i]+"字段只能是整数，你输入了非法字符！")
					eval(is_formName+"."+is_colName[i]).focus()
					return false
				}
				if (is_null[i])
				{
					if (ls_value==""||ls_value==null)
					{
						alert(is_colContent[i]+"不能为空！")
						eval(is_formName+"."+is_colName[i]).focus()
						return false
					}
				}
				break
			}
			default:
				return true
		}
		
	}
	return true
}


