﻿<!--by zjg
//文件使用说明：
//1。转换变量
//函数1：trimall(data){};
//    删除变量中的左右空格符；
//2。字符变量的检测
//函数2：checkstring(name, data, allowednull, maxlength){}；
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       maxlength：变量得最大长度，中文为1个字符；
//函数3：checkgbk(name, data, allowednull, maxlength){}；
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       maxlength：变量得最大长度，中文为2个字符；
//3。邮件的检测
//函数4：checkemail(name, data, allowednull){};
//      name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//4。数字的检测
//函数5：checknumber(name, data, allowednull, minnumber, maxnumber){};
//       name:变量的描述；
//       date:变量的值；
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       minnumber：变量的最小值；                
//       maxnumber：变量得最大值；
//5。金额的检测
//函数6：checkJE(name, data, allowednull, minnumber, maxnumber){};
//       name:变量的描述；
//       date:变量的值；
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       minnumber：变量的最小值；                
//       maxnumber：变量得最大值；
//6。百分数的检测
//函数7：checkPercent(name, data, allowednull){};
//       name:变量的描述；
//       date:变量的值；
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//7。时间的检测
//函数8：checkdate(name, data, allowednull, mindate){};
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//函数9：checkdatev(name, data, allowednull, mindate){};
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       mindate:变量的最少值；
//8。电话和手机，
//函数10：checkphone(name, data, allowednull, maxlength)
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       mindate:变量的最少值；
//函数10：checkmobile(name, data, allowednull, maxlength)
//       name:变量的描述；
//       date:变量的值
//       allowednull:检测的方式，true:变量可以为空;false:变量不可以为空;
//       mindate:变量的最少值；

//       
//一个普通检测字符所以某个字符集的方法如：数字，字母等
//var validDigit="填写字符集的内容";
//var x;变量
//  for (var i = 0; i <x.value.length; i++)
//{
//if (validDigit.indexOf(x.value.charAt(i)) == - 1)
//{ window.alert ("提示说明");
//   x.focus();
//   return false;
//} 
// }
//-->
var validAlpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var validDigit = "0123456789";
var validJE = "0123456789.";
var validTelephone = "0123456789-";
function trimall(data)
{
  var datastr = data;
  var leftspace = datastr.search(/\S/gi);
  if (leftspace > 0)
  {
    datastr = datastr.substr(leftspace);
  }

  leftspace = datastr.search(/\s/gi);
  var rightspace = 0;
  var endspace = 0;
  
  var leftstr = datastr;
  while (leftspace != -1) {
    rightspace = rightspace + leftspace;
    leftstr = leftstr.substr(leftspace);
    leftspace = leftstr.search(/\S/gi);
    if (leftspace != -1) {
      rightspace = rightspace + leftspace;
      leftstr = leftstr.substr(leftspace);
      leftspace = leftstr.search(/\s/gi);
      endspace = 0;
    } else {
      endspace = 1;
    }
  }

  if ((endspace != 0) && (rightspace > 0)) {
    datastr = datastr.substring(0, rightspace);
  }
  
  return datastr;
}
function checkstring(name, data, allowednull, maxlength)
{
  var datastr = data;
  var lefttrim = datastr.search(/\S/gi);
  
  if (lefttrim == -1) {
    if (allowednull) {
      return 1;
    } else {
      alert("" + name + "：不能为空");
      return -2;
    }
  }

  if (datastr.search(/[<>]/gi) != -1) {
    alert("" + name + "：包含非法字符<>");
    return -1;
  }
  
  datastr = trimall(datastr);

  if ((maxlength > 0) && (datastr.length > maxlength)) {
    alert("" + name + "：长度超过限制");
    return -3;
  }
  return 0;
}
function checkgbk(name, data, allowednull, maxlength)
{
  var datastr = data;
  var lefttrim = datastr.search(/\S/gi);
  
  if (lefttrim == -1) {
    if (allowednull) {
      return 1;
    } else {
      alert("" + name + "：不能为空");
      return -2;
    }
  }

  if (datastr.search(/[<>]/gi) != -1) {
    alert("" + name + "：包含非法字符<>");
    return -1;
  }
  
  datastr = trimall(datastr);
  var len = datastr.replace(/[^\x00-\xff]/g,'**').length;
  if ((maxlength >= 0) && (len > maxlength)) {
    alert("" + name + "：长度超过限制");
    return -3;
  }
  return 0;
}
function checkemail(name, data, allowednull)
{
  var datastr = data;
  var lefttrim = datastr.search(/\S/gi);
  
  if (lefttrim == -1) {
    if (allowednull) {
      return 1;
    } else {
      alert("" + name + "：输入一个正确的email，不要包含无效字符");
      return -1;
    }
  }

  datastr = trimall(datastr);

  var myRegExp = /[a-z0-9](([a-z0-9]|[_\-\.]([a-z0-9])*)*)@([a-z0-9]([a-z0-9]|[_\-][a-z0-9])*)((\.[a-z0-9]([a-z0-9]|[_\-][a-z0-9])*)*)/gi;
  var answerind = datastr.search(myRegExp);
  var answerarr = datastr.match(myRegExp);
  
  if (answerind == 0 && answerarr[0].length == datastr.length)
  {
    return 0;
  }
  
  alert("" + name + "：输入一个正确的email，不要包含无效字符");
  return -1;
}

function checknumber(name, data, allowednull, minnumber, maxnumber)
{
  var datastr = data;
  var lefttrim = datastr.search(/\S/gi);
  
  if (lefttrim == -1) {
    if (allowednull) {
      return 1;
    } else {
      alert("" + name + "：输入一个正确的数字");
      return -1;
    }
  }

  datastr = trimall(datastr);

  if (datastr.search(/\D/gi) != -1) {
    alert("" + name + "：输入一个正确的数字");
    return -1;
  }

  var aNum = parseInt(datastr, 10);
  if ((minnumber >= 0) && (aNum < minnumber)) {
    alert("" + name + "：超过下限(" + minnumber + ")");
    return -2;
  }
  if ((maxnumber >= 0) && (aNum > maxnumber)) {
    alert("" + name + "：超过上限(" + maxnumber + ")");
    return -3;
  }
  return 0;
}
function checkJE(name, data, allowednull, minnumber, maxnumber)
{
	var datastr = data;
	
	if(allowednull&&datastr==null) return -1;//如果该字段为不可空字段同时用户没填写则退出
	
	var lefttrim = datastr.search(/\S/gi);	
	if (lefttrim == -1) {
		if (allowednull) {
			return 1;
		} else {
			alert("" + name + "：输入正确的数字和.");
			return -1;
		}
	}
	
	datastr = trimall(datastr);
	
	if (datastr.search(/\D/gi) != -1) {
        for (var i = 0; i < datastr.length; i++)
        {
       if (validJE.indexOf(datastr.charAt(i)) == - 1)
        { 		
       alert("" + name + "：输入正确的数字和.");
        return -1;
        } 
        }
        }
	var aNum = parseInt(datastr, 10);
	if ((minnumber >= 0) && (aNum <minnumber)) {
		alert("" + name + "：超过下限(" + minnumber + ")");
		return -2;
	}
	if ((maxnumber >= 0) && (aNum >= maxnumber)) {
		alert("" + name + "：超过上限(" + maxnumber + ")");
		return -3;
	}
	return 0;
}
function checkPercent(name, data, allowednull)
{
	var datastr = data;
	var lefttrim = datastr.search(/\S/gi);	
	if(allowednull&&datastr==null) return -1;//如果该字段为不可空字段同时用户没填写则退出
	if (lefttrim == -1) {
		if (allowednull) {
			return 1;
		} else {
			alert("" + name + "：输入一个正确的百分比（只需输入数字）");
			return -1;
		}
	}
	
	datastr = trimall(datastr);
	
	if (datastr.search(/\D/gi) != -1) {
		alert("" + name + "：输入一个正确的百分比（只需输入数字）");
		return -1;
	}
	
	var aNum = parseInt(datastr, 10);
	if (aNum < 0) {
		alert("" + name + "：超过下限(0)");
		return -2;
	}
	if ((aNum > 100)) {
		alert("" + name + "：超过上限(100)");
		return -3;
	}
	return 0;
}
function checkdatev(name, data, allowednull, mindate)
{
  var datastr = data;
  var lefttrim = datastr.search(/\S/gi);
  
  if (lefttrim == -1) {
    if (allowednull) {
      return 1;
    } else {
      alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
      return -1;
    }
  }

  datastr = trimall(datastr);
  datastr = datastr.replace(/-|\./gi,"/")
  if (datastr.search(/[^0-9/\s]/gi) != -1) {
    alert("" + name + "：日期中包含非法字符,格式为2002-08-12或2002-8-12");
    return -1;
  }

  var year, month, day;
  var myRegExp = /[/]/gi;
  var answerind = -1;

  answerind = datastr.search(myRegExp);
  if (answerind <= 0) {
    alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
    return -1;
  }
  year = parseInt(datastr.substring(0,answerind),10);
  if ((year < 1910) || (year > 2100)) {
    alert("" + name + "：年份的范围在1910-2100内");
    return -1;
  }
  if (datastr.length <= answerind + 1) {
    alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
    return -1;
  }
  datastr = datastr.substr(answerind + 1);
  
  answerind = datastr.search(myRegExp);
  if (answerind <= 0) {
    alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
    return -1;
  }
  month = parseInt(datastr.substring(0,answerind),10);
  if ((month == 0) || (month > 12)) {
    alert(month);
    alert(datastr.substring(0,answerind));
    alert("" + name + "：月份的范围在1-12内");
    return -1;
  }
  if (datastr.length <= answerind + 1) {
    alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
    return -1;
  }
  datastr = datastr.substr(answerind + 1);

  answerind = datastr.search(myRegExp);
  if (answerind != -1) {
    alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
    return -1;
  }
  day = parseInt(datastr,10);

  var maxday;
  switch (month) {
  case 1  :
  case 3  :
  case 5  :
  case 7  :
  case 8  :
  case 10 :
  case 12 :
    maxday = 31;
    break;
  case 4  :
  case 6  :
  case 9  :
  case 11 :
    maxday = 30;
    break;
  default :
    maxday = 28;
    if (year % 4 == 0) {
      if (year % 100 == 0) {
      	if (year % 400 == 0) {
      	  maxday = 29;
      	}
      } else {
	maxday = 29;
      }
    }
  }
  if ((day == 0) || (day > maxday)) {
    alert("" + name + "：天数的范围在1-" + maxday + "内");
    return -1;
  }

  var m1 = mindate;
  if (m1 != "") {
    m1 = m1.replace(/-|\./gi,"/")
    if (Date.parse(m1) > Date.parse("" + year + "/" + month + "/" + day)) {
      alert("" + name + "：输入的日期小于" + m1);
      return -2;
    }
  }
  return 0;
}
function checkdate(name, data, allowednull)
{
	var datastr = data;
	var lefttrim = datastr.search(/\S/gi);
	if(allowednull&&datastr==null) return -1;//如果该字段为不可空字段同时用户没填写则退出
	if (lefttrim == -1) {
		if (allowednull) {
			return 1;
		} else {
			alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
			return -1;
		}
	}
	
	datastr = trimall(datastr);
	datastr = datastr.replace(/-|\./gi,"/")
		if (datastr.search(/[^0-9/\s]/gi) != -1) {
			alert("" + name + "：日期中包含非法字符,格式为2002-08-12或2002-8-12");
			return -1;
		}
		
		var year, month, day;
	var myRegExp = /[/]/gi;
	var answerind = -1;
	
	answerind = datastr.search(myRegExp);
	if (answerind <= 0) {
		alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
		return -1;
	}
	year = parseInt(datastr.substring(0,answerind),10);
	if ((year < 1910) || (year > 2100)) {
		alert("" + name + "：年份的范围在1910-2100内");
		return -1;
	}
	if (datastr.length <= answerind + 1) {
		alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
		return -1;
	}
	datastr = datastr.substr(answerind + 1);
	
	answerind = datastr.search(myRegExp);
	if (answerind <= 0) {
		alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
		return -1;
	}
	month = parseInt(datastr.substring(0,answerind),10);
	if ((month == 0) || (month > 12)) {
		alert(month);
		alert(datastr.substring(0,answerind));
		alert("" + name + "：月份的范围在1-12内");
		return -1;
	}
	if (datastr.length <= answerind + 1) {
		alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
		return -1;
	}
	datastr = datastr.substr(answerind + 1);
	
	answerind = datastr.search(myRegExp);
	if (answerind != -1) {
		alert("" + name + "：输入一个正确的日期,格式为2002-08-12或2002-8-12");
		return -1;
	}
	day = parseInt(datastr,10);
	
	var maxday;
	switch (month) {
	case 1  :
	case 3  :
	case 5  :
	case 7  :
	case 8  :
	case 10 :
	case 12 :
		maxday = 31;
		break;
	case 4  :
	case 6  :
	case 9  :
	case 11 :
		maxday = 30;
		break;
	default :
		maxday = 28;
		if (year % 4 == 0) {
			if (year % 100 == 0) {
				if (year % 400 == 0) {
					maxday = 29;
				}
			} else {
				maxday = 29;
			}
		}
	}
	if ((day == 0) || (day > maxday)) {
		alert("" + name + "：天数的范围在1-" + maxday + "内");
		return -1;
	}
	
	return 0;
}

function checkphone(name, data, allowednull, maxlength)
{
	var datastr = data;
	var lefttrim = datastr.search(/\S/gi);
	if(allowednull&&datastr==null) return -1;//如果该字段为不可空字段同时用户没填写则退出
	if (lefttrim == -1) {
		if (allowednull) {
			return 1;
		} else {
			alert("" + name + "：不能为空");
			return -2;
		}
	}
	
	if (datastr.search(/[<>]/gi) != -1) {
		alert("" + name + "：包含非法字符<>");
		return -1;
	}
	datastr = trimall(datastr);
	
	for (var i = 0; i < datastr.length; i++)
	{
		if (validTelephone.indexOf(datastr.charAt(i)) == - 1)
		{ 
			alert ("号码必须为数字和- ");
			return -1;
		} 
	}
	
	if ((maxlength > 0) && (datastr.length > maxlength)) {
		alert("" + name + "：长度超过限制");
		return -3;
	}
	return 0;
}

function checkmobile(name, data, allowednull, maxlength)
{
	var datastr = data;
	var lefttrim = datastr.search(/\S/gi);

	if(allowednull&&datastr==null) return -1;//如果该字段为不可空字段同时用户没填写则退出
	if (lefttrim == -1) {
	
		if (allowednull) {
			return 1;
		} else {
			alert("" + name + "：不能为空");
			return -2;
		}
	}
	
	if (datastr.search(/[<>]/gi) != -1) {
		alert("" + name + "：包含非法字符<>");
		return -1;
	}
	
	datastr = trimall(datastr);
	
	for (var i = 0; i < datastr.length; i++)
	{
		if (validTelephone.indexOf(datastr.charAt(i)) == - 1)
		{ 
			alert ("手机必须为数字和-");
			return -1;
		} 
	}
	
	if ((maxlength > 0) && (datastr.length > maxlength)) {
		alert("" + name + "：长度超过限制");
		return -3;
	}
	
	return 0;
}
