
/*
本页所有函数介绍：

1、去掉字符串中的空格(返回处理后的字符串)
(1)去左空格：lTrim(str)     
(2)去右空格：rTrim(str)      
(3)左右都去：str.Trim()

2、字符串判断(返回 True/False)
(1)是否为空：CheckBlank(str)
(2)是否是Int型：IsInt(str)
(3)是否是Float型：IsFloat(str)
(4)是否是日期格式：isDate(str)
(5)是否含有非法字符：checkString(str)
(6)是否是IP地址：ValidIP(str)
(7)是否是由0-9,a-z,A-Z,-, _ 和.组成的字符串：ValidString(str)
(8)是否是Email：ValidEmailChar(str)
(9)是否是邮编：ValidZipcode(str) 
(10)是否是身份证号码：ValidIdentityNO(str)
(11)是否是Url地址：ValidUrl(str)
(12)是否是电话号码/传真：CheckTel(str)
(13)是否是手机号：CheckMobile(str)
(14)判断字符长度是否越界：CheckLength(str,maxlength)
(15)判断用户名是否是由0-9,a-z,A-Z组成的字符串：ValidUserName(str)

3、对象校验(传入需校验的对象名obj、提示信息errmsg，返回 True/False)
(1)Email校验：ValidEmail(obj,errmsg)
(2)对象字符长度校验：ValidLength(obj,errmsg,maxlength)//提示后自动截取最大长度
(3)数字或价格栏位校验：ValidNum(obj,errmsg)
(4)文本或数字栏是否为空的校验：IsEmpty(obj,errmsg,debug)
(5)用户名或密码的文字栏校验：ValidateString(obj,objname,minlength)
(6)查看一系列数字/价格栏位的数字校验，这些栏位的名称应该都含有objname参数指明的字串，
单个栏位可以为空，但是所有栏位不能都为空。
CheckAllPrice(objname)

4、其他
(1)动态生成某个Select的内容：ChangeSelect(obj,locationid)
(2)将表格内容导出成Excel格式,report是该表格的id：AutomateExcel(report)
(3)计算两个日期之差（日期格式 2003-02-12）：datediff(date1,date2)

*/
///////////////////////////////////////////////////去掉字符串中的空格/////////////////////////////////////////

//去掉字串左边的空格
function lTrim(str) 
{ 
if (str.charAt(0) == " ") 
{ 
//如果字串左边第一个字符为空格 
str = str.slice(1);//将空格从字串中去掉 
//这一句也可改成 str = str.substring(1, str.length); 
str = lTrim(str); //递归调用 
} 
return str; 
} 

//去掉字串右边的空格 
function rTrim(str) 
{ 
var iLength; 

iLength = str.length; 
if (str.charAt(iLength - 1) == " ") 
{ 
//如果字串右边第一个字符为空格 
str = str.slice(0, iLength - 1);//将空格从字串中去掉 
//这一句也可改成 str = str.substring(0, iLength - 1); 
str = rTrim(str); //递归调用 
} 
return str; 
}
 
//除去多余的空格
//用法：var a=' abcde ';
//	a=a.Trim();
//返回 a='abcde'
String.prototype.Trim = function(){                                                          
     return this.replace(/(^\s*)|(\s*$)/g,"");                                                          
}
//去掉字串两边的空格 
function Trim(str) 
{ 
return lTrim(rTrim(str)); 
}

//////////////////////////////////////////////////////字符串判断//////////////////////////////////////////////////

//判断字符串是否为空
function CheckBlank(str) {
	re=/^\s*$/;
	return (re.test(str));
}

//判断字符串是否是Int型
function IsInt(str) {
	re=/^\d+$/;
	if (re.test(str)) {
		if (str.length>1) {
			if (str.substring(0,1)!="0") return true;
			else return false;
		}else return true;
	}else return false;
}

//判断字符串是否是Float型
function IsFloat(str) {
	if (CheckBlank(str)) return false;
	re=/^\d*[\.]{0,1}\d*$/;
	if (re.test(str)) {
		splitAt=str.indexOf(".");
		if (splitAt>=0) {
			firstPart=str.substring(0,splitAt);
			if (CheckBlank(firstPart) || IsInt(firstPart)) return true;
			else return false;
		}else return true;
	}else return false;
}
//判断字符串是否是日期格式
/*  函数功能：判断传入参数是否为yyyy-mm-dd或
			  yyyy/mm/dd,yyyy.mm.dd格式的正确日期
			  2001/01/2和2001-3-04也是允许的格式
			  如果是，则返回true
			  如果否，则返回false
*/
function isDate(sDate)
{
	var sDate=sDate.replace(/(^\s+|\s+$)/g,"");
	if(sDate=="")	return true;
	var s = sDate.replace(/[\d]{4,4}[\.\-\/]{1}[\d]{1,2}[\.\-\/]{1}[\d]{1,2}/g,"");
	if (s=="") //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D
	{
		sDate=sDate.replace(/\-/g,"/");
		sDate=sDate.replace(/\./g,"/");

		var t=new Date(sDate);

		var iYear=t.getYear();
		if (iYear<100) (iYear+=1900);
		var iMonth=t.getMonth()+1;
		var iDay=t.getDate();

		var ar = sDate.split(/[/]/);

		if(ar[0] != iYear || ar[1] != iMonth || ar[2] != iDay)	{
			//alert("错误的日期格式！格式为：YYYY-MM-DD或YYYY/MM/DD或YYYY.MM.DD。注意闰年。");
			return false;
		}
	}else{
		//alert("错误的日期格式！格式为：YYYY-MM-DD或YYYY/MM/DD或YYYY.MM.DD。");
		return false;
	}
	return true;
}

//判断字符串中是否含有非法字符
/*
	函数名称：checkString()
	函数功能: 不能包含&、’、”、<、>、:、;等特殊字符;
		合法字符：32（空格）、48~57（数字）、65~90（大写字符）、95（下划线）、97~122（小写字符）、>127（汉字）。
	作		者：PeopleSolution #1
	创建时间：2001/06/14
	传入参数：字符串变量
	传出结果：处理后的子串
*/
function checkString(str){
	var strChar = str;
	var isValid = true;
	for (var i = 0; i < str.length; i++){
		if ( (str.charCodeAt(i) == 32) || ((str.charCodeAt(i) >= 48) && (str.charCodeAt(i) <= 57)) || ((str.charCodeAt(i) >= 65) && (str.charCodeAt(i) <= 90)) || (str.charCodeAt(i) == 95) || ((str.charCodeAt(i) >= 97) && (str.charCodeAt(i) <= 122)) || (str.charCodeAt(i) > 127) ) {
			// do nothing
		} else {
			isValid = false;
			break;
		}
	}
	return isValid;
}

//判断是否是IP地址
function ValidIP(str)
{

   for(var i=0;i<str.length;i++)
     {
       lls=str.substring(i,i+1);
       if (!((lls>='0' && lls<='9') ||  lls=='.' ))
	  return false;
     }
	return true;
}

//判断字符串是否是由0-9,a-z,A-Z,-, _ 和.组成的字符串
function ValidString(str)
{
   for(var i=0;i<str.length;i++)
     {
       lls=str.substring(i,i+1);
       if (!( (lls>='0' && lls<='9') ||  (lls>='A' && lls<='Z') || (lls>='a' && lls<='z') || lls=='-' || lls=='_' ||  lls=='.' ))
		return false;
     }
	return true;
}

//判断字符串是否是由0-9,a-z,A-Z,组成的字符串。07－02－05日LCL添加，验证用户名是否是数字，字母。
function ValidUserName(str)
{
   for(var i=0;i<str.length;i++)
     {
       lls=str.substring(i,i+1);
       if (!( (lls>='0' && lls<='9') ||  (lls>='A' && lls<='Z') || (lls>='a' && lls<='z')))
		return false;
     }
	return true;
}

//判断字符串是否是Email
function ValidEmailChar(str)
{
    //首先判断是否有@号和.号
    var index=str.indexOf("@");
    if (str=="" || index==-1 || index==0)
	return false;

    //分隔username和hostname
	var user=str.substring(0,index);
	var host=str.substring(index+1);

    var index1=host.indexOf(".");
	len=host.length;
    if (index1==-1 || index1==0 || index1>len-3)
	return false;

       if(! ValidString(user))
	  return false;

       if(! ValidString(host))
	  return false;

       if(ValidIP(host))
	  return false;

	return true;

}

//判断字符串是否是邮编
function ValidZipcode(str) {
	var ZipRe=/^\d{6}$/;
	return ZipRe.test(str);
}

//判断字符串是否是身份证号码
function ValidIdentityNO(str) {
	var IdNoRe=/^(\d{15}|\d{17}[0-9X]{1})$/;
	var BirthStr="";
	
	if (IdNoRe.test(str)) {
		if (str.length==18) BirthStr=str.substring(6,10)+"-"+str.substring(10,12)+"-"+str.substring(12,14);
		else BirthStr="19"+str.substring(6,8)+"-"+str.substring(8,10)+"-"+str.substring(10,12);
		if (!isDate(BirthStr)) return false;
		else return true;
	}else return false;	
}

//判断字符串是否是Url地址
function ValidUrl(str) {
	var UrlRe=/^(http:\/\/){0,1}(\w+|\w+\-\w+)\.(\w+|\w+\-\w+)(\.(\w+|\w+\-\w+))*\/{0,1}$/;
	return UrlRe.test(str);
}

//判断字符串是否是电话号码/传真
 function CheckTel(Tel)
{
	var i,j,strTemp,len;
	len=Tel.length;
	if(len<8 || len>32)	return 0;
	strTemp="0123456789-()# ";
	for (i=0;i<len;i++){
		j=strTemp.indexOf(Tel.charAt(i));
		if (j==-1) return 0;
	}
	return 1;
}

//判断字符串是否是手机号
function CheckMobile(Tel)
{
	var i,j,strTemp,len;
	len=Tel.length;
	if(!(len==11 || len==12))
		return 0;
	strTemp="0123456789";
	for (i=0;i<len;i++)
	{
		j=strTemp.indexOf(Tel.charAt(i));
		if (j==-1)
			return 0;
	}
	return 1;
}

//判断字符长度是否越界
function CheckLength(str,maxlength)
{
	if(str.length>maxlength)
	{
		return true;
	}
	else
		return false;
}

/////////////////////////////////////////////////////对象校验/////////////////////////////////////////////////
//以下obj为对象名,errmsg为提示信息

//Email校验
function ValidEmail(obj,errmsg)
{
   var str = obj.value;
  if(ValidEmailChar(str))
     return true;
  else
  {
       if(errmsg) alert(errmsg);
     return false;
  }

}

//对象字符长度校验
function ValidLength(obj,errmsg,maxlength)
{
	if(obj.value.length>maxlength)
	{
		alert(errmsg);
		obj.value=obj.value.substring(0,maxlength);
		return false;
	}
	else
		return true;
}

//对象字符长度校验
function ValidTextLength(obj,errmsg,maxlength)
{
	if(obj.value.length>maxlength)
	{
		alert(errmsg);
		obj.focus();
		return false;
	}
	else
		return true;
}

//数字或价格栏位校验
function ValidNum(obj,errmsg)
{
  if(isNaN(obj.value)==true)
  {
     alert(errmsg);
     return false;
  }
  else
     return true;
}

//文本或数字栏是否为空的校验
function IsEmpty(obj,errmsg,debug)
{
	if (typeof(obj)!="object") {
		if(debug) alert("无效的对象名");
		return true;
	}

	if (obj.value=="undefined") {
		if(debug) alert("无效的对象名");
		return true;
	}

	var str = obj.value;
	if (CheckBlank(str)) {
		if(errmsg) alert(errmsg);
	   	return true;
	}

    return false;
}

//用户名或密码的文字栏校验
function ValidateString(obj,objname,minlength)
{
	errors="";
	if (IsEmpty(obj))
	{
		 errors += objname +"不能为空！\n";
         	alert(errors);
		 return false;
	}
    	str=obj.value;
    	if(str.length<minlength)
    	{
    	 	errors += objname +"不得少于"+ minlength + "位！\n";
    	 	alert(errors);
		 return false;
	}

	if (str.search(/[^A-Za-z0-9_]/)>=0) errors +=objname+ "中有非法字符！\n";
	//if (str.search(/[A-Za-z]/)<0) errors += objname + "至少要有一个英文字母！\n";
	if (errors!="")
	{
	    alert(errors);
	}

	return (errors=="");
}

//查看一系列数字/价格栏位的数字校验，这些栏位的名称应该都含有objname参数指明的字串，
//单个栏位可以为空，但是所有栏位不能都为空。
function CheckAllPrice(objname)
{
  var isnull=1;
  var iserror=0;
  for (i=0;i<=document.form1.elements.length-1;i++)
  {
    if(document.form1.elements[i].name.indexOf(objname)!=-1)
    {
       if(document.form1.elements[i].value=='');
       else
       {
          isnull=0;
          if(verifynum(document.form1.elements[i].value)==true);
          else
              iserror=1;

       }

          //alert(iserror);
    }

  }

  if(isnull==0 && iserror==0)
     return 1;
  else
     return 0;

}

/////////////////////////////////////////////////////////其他/////////////////////////////////////////////////////

//动态生成某个Select的内容
function ChangeSelect(obj,locationid)
{
	obj.length = 0;
	obj.options[0] = new Option('==请选择==','');
	for (i=0; i<subcat.length; i++)
	{
		if (subcat[i][0] == locationid)
		{obj.options[obj.length] = new Option(subcat[i][1], subcat[i][2]);}
	}
}

//将表格内容导出成Excel格式,report是该表格的id
function AutomateExcel(report)
{

      var oXL = new ActiveXObject("Excel.Application");
      oXL.Visible = true;
      var oWB = oXL.Workbooks.Add();
      var oSheet = oWB.ActiveSheet;
      //oSheet.Cells(1, 1).Value = report.rows[0].cells[0].innerText;

      for(i=0;i<report.rows.length;i++)
      {
        for(j=0;j<report.rows[i].cells.length;j++)
		oSheet.Cells(i+1,j+1).Value = report.rows[i].cells[j].innerText;
      }
}

//计算两个日期之差（日期格式 2003-02-12）
function datediff(date1,date2)
{
    //分隔开始日期年月日
    date1=date1.replace(/\//g,"-");
    date1=date1.replace(/\./g,"-");
    date2=date2.replace(/\//g,"-");
    date2=date2.replace(/\./g,"-");

    var str;
    index=date1.indexOf("-");
    year=parseInt(date1.substring(0,index));
    date1=date1.substring(index+1);
    index=date1.indexOf("-");
    str=date1.substring(0,index);
    if(str.substring(0,1)=="0") str=str.substring(1,2);
    month=parseInt(str);
    str=date1.substring(index+1);
    if(str.substring(0,1)=="0") str=str.substring(1,2);
    day=parseInt(str);

    startdate=new Date();
    startdate.setYear(year);
    startdate.setMonth(month-1);
    startdate.setDate(day);
    startdate.setDate(str);
    startdate.setMinutes(0);
    startdate.setSeconds(0);
    startdate.setMilliseconds(0);

    //分隔结束日期年月日
    index=date2.indexOf("-");
    year=parseInt(date2.substring(0,index));
    date2=date2.substring(index+1);
    index=date2.indexOf("-");
    str=date2.substring(0,index);
    if(str.substring(0,1)=="0") str=str.substring(1,2);
    month=parseInt(str);
    str=date2.substring(index+1);
    if(str.substring(0,1)=="0") str=str.substring(1,2);
    day=parseInt(str);

    enddate=new Date();
    enddate.setYear(year);
    enddate.setMonth(month-1);
    enddate.setDate(day);
    enddate.setMinutes(0);
    enddate.setSeconds(0);
    enddate.setMilliseconds(0);

    diff  = new Date();
    //diff.setTime(Math.abs(enddate.getTime() - startdate.getTime()));
    diff.setTime(enddate.getTime() - startdate.getTime());
    timediff = diff.getTime();
    days = Math.floor(timediff / (1000 * 60 * 60 * 24));

    return days;

}