/***********************************
* JSP页面输入有效性校验
* author: 王荣辉
* create date: 2006-08-19
* update date: 2006-08-19
* update content: 此文件在原先使用文件checkvalue.jsp基础上，结合原先的使用经验做了如下改进
* 		1 增加函数CheckSpecChar(FormName)，直接校验整个form的所有输入控件是否包含非法字符。
* 		2 函数CheckInputValue原先传入参数输入框内容，改为输入框对象名称，这样一旦校验不通过，光标可以定位到对象。
* 		3 优化日期校验，原先对日期格式只校验输入字符，没有校验长度以及yyyy-mm-dd格式中年月日各自是否满足要求。
* 		4 优化Email格式校验
*		5 原先输入框允许为空，同时如果输入内容有最短长度限制时候，无法校验，现已修改，能够支持。
*
* 		增加系数Rate类型，不能大于1
* 		增加时间Time类型，24h:mi格式
*********************************/

//判断Form中所有对象的值中是否有特殊字符
 function CheckSpecChar(FormName){
	//传入参数为form的名称
	bString = "'<>\""; //非法字符集
	for (var ObjID=0; ObjID < FormName.elements.length; ObjID++) {
		for(i = 0; i < FormName.elements[ObjID].value.length; i ++){
			if (bString.indexOf(FormName.elements[ObjID].value.substring(i,i+1)) >= 0){
				alert('输入的内容不能包含非法字符:' + bString);
				FormName.elements[ObjID].focus();
				return false;
                        }
		}
	}
	return true;
}

//校验不合格后，光标自动定位到不符合格式要求的控件中
function CheckInputValue(input_desc,//输入框内容的中文名称
                         ObjName ,//输入框对象名称
                          is_empty,//false-不可以为空;true-可以为空
                          input_type,//输入框内容类型
                          input_minlength,//输入框内容的最小长度
                          input_maxlength//输入框内容的最长长度
                          ){

	//不能为空
	if(!is_empty && CheckIsNull(ObjName.value)){
		alert(input_desc + "不能为空!");
    		ObjName.focus();
    		return false;
	}
 	if(is_empty && CheckIsNull(ObjName.value)){
    		return true;
	}
 	//输入框内容的最小长度限制，并且输入框不为空，（剔除输入框为空的情况）
  	if(input_minlength != 0 && ObjName.value.length < input_minlength && ObjName.value.length > 0){
    		alert(input_desc + "长度不能低于" + input_minlength + "个字符!");
		ObjName.focus();
    		return false;
	}

  	if(input_maxlength != 0 && ObjName.value.length > input_maxlength ){
    		alert(input_desc + "长度不能超过" + input_maxlength + "个字符!");
		ObjName.focus();
    		return false;
        }

	/***************
	* 统一调用函数CheckSpecChar(FormName)，整个form一次检查
        * ***************/
	/*
  	 if(input_type == "String"){
    		if(!CheckString(ObjName.value)){
      			alert(input_desc + "不能包含<、>、'、\"、/、\\");
                        ObjName.focus();
      			return false;
    		}
  	}*/
	 if(input_type == "StringNoError"){
    		if(!CheckStringNoError(ObjName.value)){
      			alert(input_desc + "不能包含<、>、'、\"、/、\\");
                        ObjName.focus();
      			return false;
    		}
  	}

	if(input_type == "StringNoSpace"){
    		if(!CheckStringNoSpace(ObjName.value)){
      			alert(input_desc + "不能包含空格!");
			ObjName.focus();
      			return false;
    		}
  	}

	if(input_type == "StringNo6up"){
    		if(!CheckStringNo6up(ObjName.value)){
      			alert(input_desc + "不能包含\^!");
			ObjName.focus();
      			return false;
    		}
  	}

	if(input_type == "StringNofg"){
    		if(!CheckStringNofg(ObjName.value)){
      			alert(input_desc + "不能包含※!");
			ObjName.focus();
      			return false;
    		}
  	}

	if(input_type == "StringNoPercent"){
    		if(!CheckStringNoPercent(ObjName.value)){
      			alert(input_desc + "不能包含%!");
			ObjName.focus();
      			return false;
		}
	}

	if(input_type == "StringNoSpacePercent"){
		if(!CheckStringNoSpacePercent(ObjName.value)){
			alert(input_desc + "不能包含空格和%!");
			ObjName.focus();
      			return false;
		}
	}

	if(input_type == "Number"){
		if(!CheckNumber(ObjName.value)){
			alert(input_desc + "是数字，只能全部由数字组成!");
			ObjName.focus();
			return false;
		}
	}
	
	if(input_type == "Number24"){
		if(!CheckNumber24(ObjName.value)){
			alert(input_desc + "，只能在1-24之间!");
			ObjName.focus();
			return false;
		}
	}

	if(input_type == "Telephone"){
		if(!CheckTelephone(ObjName.value)){
			//alert(input_desc + "是电话号码数字、-组成!");
			alert(input_desc + "只能由数字、-组成!");
			ObjName.focus();
      			return false;
		}
	}

	if(input_type == "Money"){
		if(!CheckMoney(ObjName.value)){
			alert(input_desc + "是金额，由数字、.组成!");
			ObjName.focus();
			return false;
		}
	}
	if(input_type == "Rate"){
		if(!CheckRate(ObjName.value)){
			alert(input_desc + "是系数，不能大于1!");
			ObjName.focus();
			return false;
		}
	}
	if(input_type == "Time"){
		if(!CheckTime(ObjName.value)){
			alert(input_desc + "是时间，格式如下24h:mi!");
			ObjName.focus();
			return false;
		}
	}
	if(input_type == "Time2"){
		if(!CheckTime2(ObjName.value)){
			alert(input_desc + "是时间，格式如下24h:mi:ss!");
			ObjName.focus();
			return false;
		}
	}
	if(input_type == "Date"){
		if(!CheckDate(ObjName,input_desc)){
			return false;
		}
	}
	if(input_type == "Month"){
		if(!CheckMonth(ObjName.value)){
			alert(input_desc + "是月份，格式如下yyyy-MM!");
			ObjName.focus();
			return false;
		}
	}
	if(input_type == "Email"){
		if(!CheckEmail(ObjName.value)){
			alert(input_desc + "是Email，必须符合格式要求!");
			ObjName.focus();
			return false;
		}
	}

	if(input_type == "Password"){
		if(!CheckPassword(ObjName.value)){
			alert(input_desc + "只能包含数字和字母!");
			ObjName.focus();
			return false;
		}
	}

	if(input_type == "Letter"){
      		if(!CheckLetter(ObjName.value)){
        		alert(input_desc + "必须是字母!");
			ObjName.focus();
        		return false;
      		}
	}

	if(input_type == "UpLetter"){
        	if(!CheckUpLetter(ObjName.value)){
          		alert(input_desc + "必须是大写字母!");
			ObjName.focus();
          		return false;
        	}
  	}

  	if(input_type == "LowLetter"){
          	if(!CheckLowLetter(ObjName.value)){
            		alert(input_desc + "必须是小写字母!");
			ObjName.focus();
            		return false;
          	}
  	}

	if(input_type == "Chinese"){
      		if(!CheckChinese(ObjName.value)){
        		alert(input_desc + "必须是全部为中文!");
			ObjName.focus();
        		return false;
      		}
	}
	if(input_type == "NoChinese"){
      		if(!CheckNoChinese(ObjName.value)){
        		alert(input_desc + "不能包含中文!");
			ObjName.focus();
        		return false;
      		}
	}
  return true;
}
 
//判断控件中字符串是否为空
//By ChengWei 2007-12-12
function CheckIsNull(str) {
	if (str.Trim().length == 0) {
     		return true;  //空值
	}
	return false; //不为空
}
//判断是否没有包含空格
function CheckStringNoSpace(str){
	var i;
  	for (i = 0; i < str.length; i++){
    		if (str.charAt(i) == " "){
      			return false;
    		}
  	}
  	return true;
}
//判断是否没有包含"/"，"\"
function CheckStringNoError(str){
	//传入参数为form的名称
	bString = "'<>\"\\/"; //非法字符集

        for(i = 0; i < str.length; i ++){
                if (bString.indexOf(str.substring(i,i+1)) >= 0){
                        return false;
                }
        }
	return true;
}
//判断是否没有包含%
function CheckStringNoPercent(str){
	var i;
	for (i = 0; i < str.length; i++){
		if (str.charAt(i) == "%"){
			return false;
		}
	}
	return true;
}

//判断是否没有包含\^
function CheckStringNo6up(str){
	var i;
	for (i = 0; i < str.length; i++){
		if (str.charAt(i) == "\^"){
			return false;
		}
	}
	return true;
}

//判断是否没有包含\*
function CheckStringNofg(str){
	var i;
	for (i = 0; i < str.length; i++){
		if (str.charAt(i) == "※"){
			return false;
		}
	}
	return true;
}

//判断是否没有空格和%
function CheckStringNoSpacePercent(str){
	var i;
	for (i = 0; i < str.length; i++){
    		if (str.charAt(i) == " " || str.charAt(i) == "%"){
      			return false;
		}
	}
	return true;
}
//检验是否为数字（整型）
function CheckNumber(str){
	var i;
	//alert(parseInt(str));
	for (i = 0; i < str.length; i++){
		if (str.charAt(i) < "0" || str.charAt(i) > "9"){
			return false;
		}
	}
	return true;
}

//检验24小时范围
function CheckNumber24(str){
	var i;
	//alert(parseInt(str));
	for (i = 0; i < str.length; i++){
		if (str.charAt(i) < "0" || str.charAt(i) > "9"){
			return false;
		}
	}
	if(parseInt(str)<1||parseInt(str)>24){
		return false;
	}
	return true;
}

//判断是否符合电话号码，Telephone,由数字和－组成
function CheckTelephone(str){
	var i
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"){
			return false;
		}
	}
	return true;
}
//检验是否为金额（浮点）
function CheckMoney(str){
	var i;
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
			return false;
		}
	}
	return true;
}
//检验是否为系数，小于等于1
function CheckRate(str){
	var i;
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "."){
			return false;
		}
	}
	if (parseFloat(str) >1 ){
                return false;
        }
	return true;
}

//检验是否为时间，格式24h:mi
function CheckTime(str){
	var i;
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
			return false;
		}
	}
	if (str.length != 5)
		return false;
	if (str.substring(2,3) != ":" ) {
		return false;
	}
	ls_hour = str.substring(0,2);
	ls_min = str.substring(3,5);

	if (parseFloat(ls_hour) > 23  ){
		return false;
	}
	if (parseFloat(ls_min) > 59){
		return false;
	}
	return true;
}
//检验是否为时间，格式24h:mi:ss
function CheckTime2(str){
	var i;
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != ":"){
			return false;
		}
	}
	if (str.length != 8)
		return false;
	if (str.substring(2,3) != ":" ) {
		return false;
	}
	if (str.substring(5,6) != ":" ) {
		return false;
	}
	ls_hour = str.substring(0,2);
	ls_min = str.substring(3,5);
	ls_ss = str.substring(6,8);

	if (parseFloat(ls_hour) > 23  ){
		return false;
	}
	if (parseFloat(ls_min) > 59){
		return false;
	}
	if (parseFloat(ls_ss) > 59){
		return false;
	}
	return true;
}
//检验是否为月份，格式yyyy-MM
function CheckMonth(str){
	var i;
	for (i = 0; i < str.length; i++){
		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && str.charAt(i) != "-"){
			return false;
		}
	}
	if (str.length != 7)
		return false;
	if (str.substring(4,5) != "-" ) {
		return false;
	}
	ls_year = str.substring(0,4);
	ls_month = str.substring(5,7);

	if (parseFloat(ls_year) < 1900  ){
		return false;
	}
	if (parseFloat(ls_month) > 12){
		return false;
	}
	return true;
}

//判断控件中输入是否都为yyyy-mm-dd格式的日期，
function CheckDate(ObjName,ObjDesc) {

	var ln =  ObjName.value.length;
	//空值看作符合格式要求
	if (ln == 0 ) {
		return true;
	}
	if  (ln != 10) {
		alert( ObjDesc + "只能输入如下日期格式yyyy-mm-dd！");
		ObjName.focus();
		return false;
	}
	bString = "0123456789-";
	for(i = 0; i < ObjName.value.length; i ++){
		if (bString.indexOf(ObjName.value.substring(i,i+1)) == -1) {
			alert(ObjDesc + "日期格式只能输入数字和-!");
			ObjName.focus();
     			return false;
                }
	}

	var ls_year, ls_date, ls_month;

	if (ObjName.value.substring(4,5) != "-" || ObjName.value.substring(7,8) != "-")	{
		alert(ObjDesc + "只能输入如下日期格式yyyy-mm-dd！");
		ObjName.focus();
		return false;
	}
	ls_year = ObjName.value.substring(0,4);
	ls_month = ObjName.value.substring(5,7);
	ls_date = ObjName.value.substring(8,10);

	if (parseFloat(ls_year) > 2100 || parseFloat(ls_year) < 1900){
		alert( ObjDesc + "年份不对！");
		ObjName.focus();
		return false;
	}
	if (parseFloat(ls_month) > 12 || parseFloat(ls_year) < 1){
		alert(ObjDesc + "月份不对！");
		return false;
	}
	if (parseFloat(ls_date) > 31 || parseFloat(ls_date) < 1){
		alert(ObjDesc + "日期不对！");
		ObjName.focus();
		return false;
	}
	return true;
}
//判断是否符合Password格式，字母和数字组合
function CheckPassword(str){
	var i
  	for (i = 0; i < str.length; i++){
    		if ((str.charAt(i) < "0" || str.charAt(i) > "9") && (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
      			return false;
    		}
  	}
  	return true;
}
//判断是否都是字母
function CheckLetter(str){
	var i
  	for (i = 0; i < str.length; i++){
    		if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") && (str.charAt(i) < "a" || str.charAt(i) > "z")){
      			return false;
    		}
  	}
  	return true;
}
//判断是否都是大写字母
function CheckUpLetter(str){
	var i
  	for (i = 0; i < str.length; i++){
    		if ( (str.charAt(i) < "A" || str.charAt(i) > "Z") ){
      			return false;
    		}
  	}
  	return true;
}
//判断是否都是小写字母
function CheckLowLetter(str){
	var i
  	for (i = 0; i < str.length; i++){
    		if (  (str.charAt(i) < "a" || str.charAt(i) > "z")){
      			return false;
    		}
  	}
  	return true;
}

//判断是否为全部中文,当然在其他语言的系统中，如果是日文、韩文也可能，
function CheckChinese(str){
	var i ;
	for (var i=0;i<str.length;i++){
    		if (parseInt(str.charCodeAt(i)) <= 256){
        		return false;
    		}
  	}
  	return true;
}
//判断是否没有中文
function CheckNoChinese(str){
	var i ;
	for (var i=0;i<str.length;i++){
    		if (parseInt(str.charCodeAt(i)) > 256){
        		return false;
    		}
  	}
  	return true;
}

//判断是否符合Email的格式，包含@和. , @在.之前，
function CheckEmail(str){
	var index_i;
	var index_j;
  	if(str.length > 0){
		index_i = str.lastIndexOf("@");

    		if(( index_i < 1) ){
			return false;
    		}
		index_j = str.indexOf(".", index_i);
		if(( index_j < 1) ){
			return false;
    		}

  	}
  	return true;
}

//去空格函数
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, "");
}

//****************************************************************
// Description: str 为输入字符串，
// iType为类型，分别为0 - 去除前后空格; 1 - 去前导空格; 2 - 去尾部空格
//****************************************************************
function cTrim(str,iType){
	var sTmpStr = ' ';
	var i = -1;

	if(iType == 0 || iType == 1){
		while(sTmpStr == ' '){
			++i;
			sTmpStr = str.substr(i,1);
		}
		str = str.substring(i);
	}

	if(iType == 0 || iType == 2){
		sTmpStr = ' ';
		i = str.length;
		while(sTmpStr == ' '){
			--i;
			sTmpStr = str.substr(i,1);
		}
		str = str.substring(0,i+1);
	}
	return str;
}

function isblank(s)
{
  var j=0;
  for(var i = 0;i < s.length;i++) {
    var c = s.charAt(i);
    if ((c != '') && (c != '\n') && (c != '\t') && (c != ' ')) return false;
    if (c == ' ')
    {
      j++;
    }
  }
  if (j == s.length)    //全部是空格
  {
   return true;
  }
  else
  {
    return false;
  }
}

function isvalid(s)
{
  var j=0;
  for(var i = 0;i < s.length;i++) {
    var c = s.charAt(i);
    if ((c == '<') || (c == '>') || (c == '\\') || (c == '/') || (c == '+') || (c == '\'')) return false;
  }
  return true;
}

function isNum(s)
{
  for(var i = 0;i < s.length;i++) {
    var v = parseFloat(s.charAt(i));
    if (isNaN(v)) return false;
  }
  return true;
}

//拼音,数字,|组成
function CheckInputStringExt1(inputDesc,obj,isEmpty,minLength,maxLength){
	var value = obj.value.Trim();
	var str = /^[a-zA-Z\d|]*?$/;
	if(!isEmpty && value.length > 0){
		alert(inputDesc + "不能为空!");
		obj.focus();
		return false;
	}
	if(!str.exec(value)){
		alert(inputDesc + "只能包含数字,字母和\"|\"!");
		obj.focus();
		return false;
	}
	if(value.length > maxLength){
		alert(inputDesc + "长度不能超过" + maxLength + "个字符!");
		obj.focus();
		return false;
	}
	return true;
} 


