/**
 * Title: 
 * Description: 有效性检验的JavaScript脚本
 * Copyright: Copyright (c) 2004
 * Company: 深圳太极软件公司
 * @author 陈伟佳 李文彬
 * 增加自动验证纠正功能	
 * @version 1.0
 */
function checkDate(obj)
{

	var riqi = new Date;
	var year = riqi.getFullYear();    // 获取年
	var month = riqi.getMonth() + 1;    // 获取月
	var date = riqi.getDate();    // 获取日
	if(month<10){
		month="0"+month;
	}
	if(date<10){
			date="0"+date;
	}
	var todate = year+'-'+month+'-'+date;

		
	// '^\d{4}-\d{1,2}-\d{1,2}$'
	var split = '-';
	var cobj = obj.value;
	if(cobj.length==8){
		cobj = cobj.substring(0,4)+'-'+cobj.substring(4,6)+'-'+cobj.substring(6,8);
	}else if(cobj.length==6){
		cobj = '20'+cobj.substring(0,2)+'-'+cobj.substring(2,4)+'-'+cobj.substring(4,6);
	}else if(cobj.length==4){
		cobj = year+'-'+cobj.substring(0,2)+'-'+cobj.substring(2,4);
	}
	
	var str = cobj;
	var re = '[0-9]{4}' +split+ '[0-9]{1,2}' +split+ '[0-9]{1,2}';
	var r = str.match(re);
	var state = 0;
	var maxDays = 31;
	// alert(str + ' , ' + r);
	if (r==null)
	{
		alert('请输入有效的日期，例如：2008'+split+'08'+split+'08。');
		obj.value = todate;
		state = -1;
	}
	else
	{
                var s=str.split(split);
                if (s[1] > 12 || s[1] < 1)
                {
                	alert('请输入有效的月份，月份只能在 1 至 12 之间。');
			state = -1;
                }
                // 每个月的最大日数不一样

		if (s[1]==4 || s[1]==6 || s[1]==9 || s[1]==11) maxDays = 30;
		else if (s[1]==2) {
			if (s[0] % 4 > 0) maxDays = 28;
			else if (s[0] % 100 == 0 && s[0] % 400 > 0) maxDays = 28;
			else maxDays = 29;
		}
		else maxDays = 31;

                if (s[2]>maxDays || s[2]<1)
		{
			alert('请输入有效的日，'+s[0]+'年'+s[1]+'月份的日只能在 1 至 '+maxDays+' 之间。');
			state = -1;
		}
	}
	if (state == -1)
	{
		obj.focus();
		obj.select();
		return false;
	}
	if(str.length>0){
		obj.value = cobj;
	}
	return true;	
}

/**
 * 检查 obj 是否时间类型
 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 * split obj 的时间字符串使用哪种分隔符，一般是 '-'
 */
function checkDateMsg(obj, message, split)
{
	// '^\d{4}-\d{1,2}-\d{1,2}$'
	var str = obj.value;
	var re = '[0-9]{4}' +split+ '[0-9]{1,2}' +split+ '[0-9]{1,2}';
	var r = str.match(re);
	var state = 0;
	var maxDays = 31;
	// alert(str + ' , ' + r);
	if (r==null)
	{
		alert(message + '请输入有效的日期，例如：2004'+split+'01'+split+'23。');
		state = -1;
	}
	else
	{
                var s=str.split(split);
                if (s[1] > 12 || s[1] < 1)
                {
                	alert(message + '请输入有效的月份，月份只能在 1 至 12 之间。');
			state = -1;
                }
                // 每个月的最大日数不一样

		if (s[1]==4 || s[1]==6 || s[1]==9 || s[1]==11) maxDays = 30;
		else if (s[1]==2) {
			if (s[0] % 4 > 0) maxDays = 28;
			else if (s[0] % 100 == 0 && s[0] % 400 > 0) maxDays = 28;
			else maxDays = 29;
		}
		else maxDays = 31;

                if (s[2]>maxDays || s[2]<1)
		{
			alert(message + '请输入有效的日，'+s[0]+'年'+s[1]+'月份的日只能在 1 至 '+maxDays+' 之间。');
			state = -1;
		}
	}
	if (state == -1)
	{
		obj.focus();
		obj.select();
		return false;
	}
	return true;	
}

/**
 * 检查 obj 是否有输入值

 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 */
function existString(obj, message)
{
	if (obj.value == null || obj.value.length < 1)
	{
		alert('请输入' + message + '。');  // 请输入：。

		obj.select();
		return false;
	}
		
	return true;
}
/**
 * 检查 obj 有没有超过最长长度

 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 * maxLength 最长长度

 */
function maxLength(obj, message, maxLength)
{
	if (obj.value == null) {
		return true;
	}	
	if (obj.value.length > maxLength){
	  alert(message + '超过最大长度' + maxLength + '，请重新输入。');
		obj.select();
		return false;
	}
	return true;
}
/**
 * 检查 obj 是否有输入值，有没有超过最长长度

 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 * maxLength 最长长度

 */
function maxStringLength(obj, message, maxLength)
{
	if (obj.value == null || obj.value.length < 1)
	{
		alert('请输入' + message + '。');  // 请输入：。

		obj.select();
		return false;
	}	
	if (obj.value.length > maxLength){
	  alert(message + '超过最大长度' + maxLength + '，请重新输入。');
		obj.select();
		return false;
	}
	return true;
}

/**
 * 检查 obj 是否有输入值，有没有超过最长长度

 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 * maxLength 最长长度

 */
function maxLength(obj, message, maxLength)
{
	if (obj.value == null || obj.value.length < 1)
	{
		return true;
	}	
	if (obj.value.length > maxLength){
	  alert(message + '超过最大长度' + maxLength + '，请重新输入。');
		obj.select();
		return false;
	}
	return true;
}
/**
 * 检查 obj 是否有输入值，是否足够最短长度，有没有超过最长长度

 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 * minLength 最短长度

 * maxLength 最长长度

 */
function existStringLength(obj, message, minLength, maxLength)
{
	if (obj.value == null || obj.value.length < 1)
	{
		alert('\u8bf7\u8f93\u5165\uff1a' + message + '\u3002');  // 请输入：。

		obj.select();
		return false;
	}	
	if (obj.value.length < minLength){
	  alert(message + '不足最小长度' + minLength + '，请重新输入。'); 
		obj.select();
		return false;
	}
	if (obj.value.length > maxLength){
	  alert(message + '超过最大长度' + maxLength + '，请重新输入。');
		obj.select();
		return false;
	}
	return true;
}
/**
 * 检查 obj 是否有选择
 * obj 被检查的对象
 * falseValue 失败时的值

 * message obj 的中文意思，用于提示
 */
function checkSelect(obj, flaseValue, message)
{
	if (obj.value == flaseValue)
	{
		alert('请选择：' + message + '。');
		obj.focus();
		return false;
	}
	
	return true;
}
/**
 * 检查 obj 是否有选择(特指radio单选框)
 * obj 被检查的对象
 * message obj 的中文意思，用于提示
 */
function checkRadioSelect(obj,  message)
{

flag=0;
for(i=0;i<obj.length;i++)
  {
    if(obj[i].checked)
	  {
            flag=1;
	  }
  }
if(flag==0)
  {
        alert("请选择"+message);
        return false;
  }
	return true;

}
/**
 * 检查 obj 是否是字符和数字
 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 */
function checkCharAndNum(obj, name)
{
	var str = obj.value;
	var re = '[^a-zA-Z0-9]{1,}';
	var r = str.match(re);	
	//alert("r = " + r + " , " + str);
	if (r!=null)
	{
		alert(name + '只接受字母a-z A-Z 和数字 0-9，不能包含其它字符。');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}
/**
 * 检查 obj 是否是 EMAIL 地址
 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 * isMust表示Email地址是否可以为空,如果是0为可以为空，如果是1为不能为空

 */
function checkEMail(obj, name, isMust)
{
	var str = obj.value;
	if (str == null)
	  str = "";
	  
	if (isMust == 1){
		if (str.length < 1){
		  alert('请输入' + name + '。');  // 请输入：。

			obj.select();
			return false;
		}
	  }
	if (str.length > 0){
		var r1 = str.match('\\.+');	
		var r2 = str.match('\\@+');	
		if (r1 != null && r2 != null)
		{
		  return true;
		}
		else
		{
			alert(name + ' Email地址必须包括 . 和 @。');
			obj.focus();
			obj.select();
			return false;
		}
		}
	return true;
}
/**
  检查 obj 是否是 EMAIL 地址,obj 被检查的对象
  regular expression
*/
function regcheckemail(obj)
{
	var str=obj.value;
    var pat = /^[a-zA-Z0-9_]+@([a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,3}$/;
	if(pat.test(str))
	{
		return true;
	}
	else {
		alert( ' Email地址格式不正确。');
		obj.focus();
		obj.select();
		return false;
	}
}
/**
 * 检查 obj 是否是电话号码

 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 */
function checkTel(obj, name)
{
	var str = obj.value;
	var re = '[^0-9-]{1,}';
	var r = str.match(re);	
	if (r!=null)
	{
		alert(name + '只接受数字 0-9 和 -，不能包含其它字符。');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}
/**
 * 检查 obj 是否是数字
 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 */
function checkNum(obj, name)
{
	var str = obj.value;
	var re = '^(-{0,1}|\\+{0,1})[0-9]+(\\.{0,1}[0-9]*)$';
	var r = str.match(re);	
	if (r==null)
	{
		alert(name + ' 请输入有效的数字，只接受数字 0-9 和 + - . ，不能包含其它字符。');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}

/**
 * 检查 obj 是否是数字（可以带小数并且只能是不带符号的正数字）
 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 */
function checkDouble(obj, name)
{
	var str = obj.value;
	if(str!=""){
		var re = '^([0-9])|(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$';
		var r = str.match(re);	
		if (r==null)
		{
			alert(name + ' 请输入有效的数字，只接受数字,包含小数,但是只能是不带符号的数字.');
			obj.focus();
			obj.select();
			return false;
		}
	}else{
		alert(name + '不能为空，但可以为 0 ');
	}
	return true;
}

/**
 * 检查 obj 是否是数字,
 * obj 被检查的对象
 * name obj 的中文意思，用于提示
 */
function checkNumber(obj, name)
{
	if (obj.value == null) {
		return true;
	}
	var str = obj.value;
	var re = '[^0-9.]{1,}';
	var r = str.match(re);	
	if (r!=null)
	{
		alert(name + '只接受数字 0-9 ，不能包含其它字符。');
		obj.focus();
		obj.select();
		return false;
	}
	return true;
}
/**
 * 将数字格式化成小数点后两位（调用本方法前请保证 pObj 是数值）
 * pObj 被格式化的对象

 */
function changeToFloat(pObj)
{
	var temp = trim(pObj.value); 
	var temp1 = "";
	var temp2 = "";
	if (!isEmpty(temp)){
		if(temp.indexOf("-")==0) {
			temp = temp.substring(1);
			temp1 = "-";
		}
	  temp = ""+Math.round(temp*100);
	  temp2 = temp.substring(0,temp.length-2);
	  if(temp2 ==null || temp2==""){
	   	if(temp.length==1){
	   		temp = "0.0" + temp.substring(temp.length-2);
	    }
	   	else{
	   	  temp = "0."+temp.substring(temp.length-2);
	   	}
	  }
	  else{
	    temp = temp2+"."+temp.substring(temp.length-2);
	  }
	  pObj.value = temp1+temp; 
  }   
}

/**
 * 去空格

 * pObj 被格式化的对象

 */
function trim(data)
{
 	return data.replace(/(^\s*)|(\s*$)/g, "");
}

