// 截取字符串的开头和结尾的空格
function trim(str) {
  return str.replace(/^\s*|\s*$/g,"");
}

// 校验文本是否为空
function textIsNull(checkValue) {
  // 将文本进行trim处理
  checkValue = trim(checkValue);
  if(checkValue=="")
    return true;
    
  return false;
}

// 将字符串转化成日期,日期格式为YYYY-MM-DD
function str2Date(dateStr) {
  return new Date(dateStr.replace(/-/g, "\/"));
}

// 转换日期，转换后的格式为YYYY-MM-DD
function date2Str(theDate) {
  return theDate.getYear()+"-"+(theDate.getMonth()+1)+"-"+theDate.getDate();;
}

// 比较日期的大小,-2:日期格式错误;-1:第一个小于第二个;0:俩个相等;1:第一个大于第二个日期
function compareDate(oneDate,twoDate) {
  if( (typeof(oneDate)!="object" && oneDate.constructor != Date) ||
    (typeof(twoDate)!="object" && twoDate.constructor != Date))
  {
    return -2;
  }
  
  var millSec = oneDate.getTime() - twoDate.getTime();
  if(millSec>0)
  {
      return 1;
  }
  else if(millSec==0) 
  {
      return 0;
  }
  else
  {
      return -1;
  }
}

// email地址检查
function isValidEmail(str) {
	/**
	**		@func		是否为合法Email
	**		@param  String str
	**/
	str = trim(str);
	len = str.length;
	//没有@或者@在首尾
	if((str.indexOf('@') == -1)||(str.indexOf('@') == 0)||(str.indexOf('@') == len-1))
  	return false;
	if(str.indexOf('@') != str.lastIndexOf('@'))
  	return false;
	if(str.indexOf('.') == -1)
  	return false;
  if (str.lastIndexOf('.') == (len-1) )//'.'在最后一位
  	return false;
  for(var j=0;j<len-1;j++){//判断是否有".."或者"@."
  	if( (str.charAt(j) == '.' && str.charAt(j+1) == '.') ||( str.charAt(j) == '@' && str.charAt(j+1) == '.' ) )
    	return false;
  	}
	validstr = "1234567890abcdefghijklmnopqrstuvwxyz_-.~@$#";
  lowerstr = str.toLowerCase();
  for(i=0;i<len;i++){
  	if(validstr.indexOf(lowerstr.charAt(i)) == -1){
    	return false;
    	}
 	}
 	return true;
}

// 校验IP
function checkIP(ipAddr) {
  var ipPart = ipAddr.split(".");
  if(ipPart.length!=4) return false;
  for(num in ipPart) {
    if(isNaN(ipPart[num])) return false;
    if(ipPart[num].valueOf()<=0 || ipPart[num].valueOf() > 255) return false;
  }
  
  return true;
}

// 校验多个IP地址,各个IP以逗号分隔
function checkIPList(ipList) {
  var ipAddr_a = ipList.split(",");
  
  for(ipAddr in ipAddr_a) {
    if(!checkIP(ipAddr_a[ipAddr]))
      return false;
  }
  return true;
}

// 电话号码校验
function PhoneCheck(phoneNum) {
  var reg=/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
  if(!reg.test(phoneNum))
    return false;
  return true;
}

function isRealMoney(str){
	/**
	**		@func		是否为金额型数值 包括正值和负值
	**		@param  String str
	**/
	if (trim(str) == "") return false;
		if (isNaN(str)){
			return false;
		}
		if ( (/^[0-9.-]+$/g).test(str) == false ) {
			alert("金额数值格式异常！");
			return false;
		}
		if (str<-200000||str>200000) {
			alert("金额数值过大或过小！");
			return false;
		}
		split=str.split(".");
		if(split.length==2){
			if(split[1].length > 2 || split[1]>99){
				alert("金额数值小数点后不能多于2位！");
				return false;
			}
    }else {
			alert("金额数值格式异常！");
			return false;
		}
		return true;
}

function isMoney(str){
	/**
	**		@func		是否为金额型数值
	**		@param  String str
	**/
	if (trim(str) == "") return false;
		if (isNaN(str)){
			alert("金额数值不能为空！");
			return false;
		}
		if ( (/^[0-9.]+$/g).test(str) == false ) {
			alert("金额数值格式异常！");
			return false;
		}
		if (str<0||str>200000) {
			alert("金额数值必须介于0到200000之间！");
			return false;
		}
		split=str.split(".");
		if(split.length==2){
			if(split[1].length > 2 || split[1]>99){
				alert("金额数值小数点后不能多于2位！");
				return false;
			}
    }else if (split.length > 2){
			alert("金额数值格式异常！");
			return false;
		}
    return true;
}
function isValidPassword(str) {
	/**
	**		@func		是否为合法密码
	**		@param  String str
	**/
	if (str == null || str == "") {
		alert("密码不可以为空！");
		return false;
	}
	if (!(/^[\x00-\xff]+$/.test(str))) {
		alert("密码含有非法字符！");
		return false;
	}
	if (str.length < 4) {
		alert("请输入四位以上密码！");
		return false;
	}
	if (str.indexOf(" ") >= 0) {
		alert("密码不能含有空格！");
		return false;
	}
	var i = 0;
	var equ_cnt  = 1;
	var decr_cnt = 1;
	var incr_cnt = 1;
	var temp  = str.charAt(0);//相等
	var decr_str = str.charAt(0);//递减
	var incr_str = str.charAt(0);//递增
	var length = str.length;
	for (i = 1; i < length; i++) {
		if (temp == str.charAt(i)) {
			equ_cnt++;
		} else {break;}
	}
	if (equ_cnt == length || decr_cnt == length || incr_cnt == length) {
		alert("输入的密码太简单，请重新输入！");
		return false;
	}
	return true;
}

function isValidUserPassword(password, username){
	/**
	**		@func		是否为有效的密码
	**    需要判断是否和用户名相同
	**    或者是用户名的倒叙
	**		@param  String password密码; username用户名
	**/

	if (!com.linkage.util.isValidPassword(password)) {
	        return false;
	}

	if (username == null) {
	        username = "";
	} else {
	        username = com.linkage.util.trim(username);
	}
	var pwd_length = password.length;
	var name_length = username.length;

	var reversal_cnt = 0;
	if (pwd_length == name_length) {
	        if (password.toLowerCase() == username.toLowerCase()) {
	                alert("密码不能和名字相同！");
	                return false;
	        }
	        for (var i = 0; i < pwd_length; i++) {
	                if (password.charAt(i).toLowerCase() == username.charAt(name_length-1-i).toLowerCase()) {
	                        reversal_cnt++;
	                } else {
	                        break;
	                }
	        }
	}
	if (reversal_cnt == pwd_length) {
	        alert("密码不能是名字的倒序，请重新输入！");
	        return false;
	}
	return true;
}

// 自然正整数
function isNaturalNum(str) {
	if (isInteger(str) == false) {
		return false;
	}else if (parseInt(str) < 0) {
		return false;
	}
	return true;
}

function isInteger(str) {
	/**
	**		@func		是否为整型
	**		@param  String str
	**/
	if (/^\d+$/.test(str) == true) {
		return true;
	}
	return false;	
}

function isNumber(str) {
	/**
	**		@func		是否为单个数字符(0~9)
	**		@param  String str
	**/
	if ( (/^\d$/g).test(str) == true )  return true;
	return false;
}