﻿/*注意事项
 如果JS中包含中文字符
 保存时选择为Unicode(UTF_8)编码格式
*/



//删除字符串中的空格和(&nbsp;)标记
function KillSpace(x){
	while((x.length>0) && (x.charAt(0)==' '))
		x = x.substring(1,x.length);
	while((x.length>0) && (x.charAt(x.length-1)==' '))
		x = x.substring(0,x.length-1);
	return x.replace(/&nbsp;/g,"");
}
   
//去掉字符串两端的空格
String.prototype.Trim   =   function()   
{   
		return   this.replace(/(^\s*)|(\s*$)/g,"");   
}  

//得到当前的日期
function getNowDate ()
{
	var d = new Date() ;
	var arM = ["01","02","03","04","05","06","07","08","09","10","11","12"];
	var arD = ["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"] ;
	var nowDate = d.getYear() + "-" + arM[d.getMonth()] + "-" + arD[(d.getDate()-1)] ;
	return nowDate;
}

//检测身份证号码
function IdCard (tmpIdCard)
{
	tmpIdCard = KillSpace(tmpIdCard);
	var reg = /^([1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}|[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4})$/g;
	if( tmpIdCard != "" && reg.exec(tmpIdCard) == null)
	{
		return false;
	}
	return true;
}

//检测电子邮件格式
function isEmail(EmailStr)
{
	EmailStr = KillSpace(EmailStr);
	var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/g;
	if( EmailStr != "" && reg.exec(EmailStr) == null)
	{
		return false;
	}
	return true;
}

//检测日期
function isDateTime (tmpDate)
{
	tmpDate = KillSpace(tmpDate);
	var reg = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/g;
	//var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/g;
	//var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/g;
	if( tmpDate != "" && reg.exec(tmpDate) == null)
	{
		return false;
	}
	return true;
}

//检测金额
function isPrice (tmpPrice)
{
	tmpPrice = KillSpace(tmpPrice) ;
	var reg = /^\d+(\.\d+)?$/g ;
	if( tmpPrice != "" && reg.exec(tmpPrice) == null)
	{
		return false;
	}
	return true;
}

//年龄(为两位数的正整数)
function isAge	(tmpAge)
{
	tmpAge = KillSpace(tmpAge) ;
	var reg = /^[0-9]{1}\d?$/g ;
	if( tmpAge != "" && reg.exec(tmpAge) == null)
	{
		return false;
	}
	return true;
}

//检测邮政编码
function isPost	(tmpPost)
{
	tmpPost = KillSpace(tmpPost) ;
	var reg = /^\d{6}$/g ;
	if( tmpPost != "" && reg.exec(tmpPost) == null)
	{
		return false;
	}
	return true;
}

//把(####-#-#)转换成(####-##-##)
toDate =function(obj)
{
	var newDate = ""
	var strYear = "0000" + obj.substring(0,obj.indexOf("-"));
	var strMonth = "00" + obj.substring(obj.indexOf("-")+1,obj.lastIndexOf("-"));
	var strDate = "00" + obj.substring(obj.lastIndexOf("-")+1,obj.length);
	
	newDate = strYear.substring(strYear.length-4,strYear.length) + "-" + 
				strMonth.substring(strMonth.length-2,strMonth.length) + "-" +
				strDate.substring(strDate.length-2,strDate.length)
	return newDate
} 

// 检查日期是否有效
// 日期参数格式如下:
// isDate(dd,mm,ccyy)
// isDate(dd,mm)
// isDate(dd)
// 注意：月份参数必须在1和12之间，年份为ccyy格式
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function isDate (checkDate) 
{
	var strDate=new Array();
	strDate=checkDate.split("-");
	if (strDate.length<3)
	{
		return false;
	}
	var year=strDate[0];
	var month=strDate[1];
	var day=strDate[2];
	
	var today = new Date();
	year = ((!year) ? y2k(today.getYear()):year);
	month = ((!month) ? today.getMonth():month-1);
	if (!day) return false
	var test = new Date(year,month,day);
	if ( (y2k(test.getYear()) == year) &&
		(month == test.getMonth()) &&
		(day == test.getDate()) )
		return true;
	else
		return false ;
}

//检查字符串是否是一个合法的日期
function DateCheckString (szDate)
{
  var nLimite, szYear,szMonth,szDay
  var fcompart,scompart  
  szDate = KillSpace(szDate)
  
  if (szDate.length>10 || szDate.length<8) return false
  fcompart =szDate.indexOf("-")
  szYear = szDate.substring(0, fcompart)
  if (szYear.length != 4) return false
  if (!Check(szYear)) return false

  if ((szYear-0)<1900 || (szYear-0)>2079) return false
  
  scompart = szDate.indexOf("-",fcompart+1)  
  szMonth = szDate.substring(fcompart+1,scompart)

  if (szMonth.length>2) return false

  if (!Check(szMonth))  return false
  if (szMonth.charAt(0)=="0")  szMonth=szMonth.substring(1,2)

  if ((szMonth-0)<0 || (szMonth-0)>12) return false
  
  szDay = szDate.substring(scompart+1,szDate.length)
  if (szDay.length>2) return false
  if (! Check(szDay)) return false
  if (szDay.charAt(0)=="0") szDay=szDay.substring(1,2)
  if ((szDay-0)<1 || (szDay-0)>31)  return false
   
  switch(szMonth-0){
      case 1: nLimite = 31
              break
     case  3: nLimite = 31
              break
     case  4: nLimite = 30
              break
     case  5: nLimite = 31
              break
     case  6: nLimite = 30
              break
     case  7: nLimite = 31
              break
     case  8: nLimite = 31
              break
     case  9: nLimite = 30
               break
     case  10: nLimite = 31
               break
     case  11: nLimite = 30
               break
     case  12: nLimite = 31
               break
     case  2: if ((((szYear % 4) == 0 && (szYear % 100)!=0)) || 
                  (((szYear % 100) == 0 && (szYear % 400) == 0))) 
                       nLimite = 29
             else nLimite = 28
             break
               
     }                          
    if (szDay-0>nLimite) return false     
    return true
}



//检查字符串日期是否大于的当前日期   
//使用此函数前请先使用 DateCheckString 来判断日期合法性
function IfNewerDate(szDate)
{
    var nLimite, szYear,szMonth,szDay
    var fcompart,scompart
    var dateD, dateNow
    
    szDate = KillSpace(szDate)
  
    fcompart =szDate.indexOf("-")
    szYear = szDate.substring(0, fcompart)
  
    scompart = szDate.indexOf("-",fcompart+1)  
    szMonth = szDate.substring(fcompart+1,scompart)

    szDay = szDate.substring(scompart+1,szDate.length)
    
    //alert(szYear+" "+szMonth+" "+szDay)

    dateD = new Date(szYear,szMonth-1,szDay)  //javascript中的月份是从0到11
    dateNow = new Date()
    
    if (dateD.getTime() > dateNow.getTime())
    {
        return true
    }
    else
    {
        return false
    }
}



//检查字符串日期A是否大于日期B 
//使用此函数前请先使用 DateCheckString 来判断日期合法性
function IfAIsEarlyerThanB(strA,strB)
{
    var strYearA,strMonthA,strDayA
    var strYearB,strMonthB,strDayB
    var fcompartA,scompartA
    var fcompartB,scompartB
        
    strA = KillSpace(strA)
    strB = KillSpace(strB)
  
    fcompartA =strA.indexOf("-")
    strYearA = strA.substring(0, fcompartA)

    fcompartB =strB.indexOf("-")
    strYearB = strB.substring(0, fcompartB)
  
    scompartA = strA.indexOf("-",fcompartA+1)  
    strMonthA = strA.substring(fcompartA+1,scompartA)

    scompartB = strB.indexOf("-",fcompartB+1)  
    strMonthB = strB.substring(fcompartB+1,scompartB)

    strDayA = strA.substring(scompartA+1,strA.length)
    strDayB = strB.substring(scompartB+1,strB.length)
    
    if(parseInt(strYearA) > parseInt(strYearB))
    {
        return true;
    }
    else if(parseInt(strMonthA) > parseInt(strMonthB))
    {
        return true;
    }
    else if(parseInt(strDayA) > parseInt(strDayB))
    {
        return true;
    }
    else
    {
        return false;
    }
}


function Check(lpszStr) //检查字符串是否由数值构成
 {
 
     var nLen=lpszStr.length
     
     if (lpszStr=="")
     {
		return false
     }
     for (var nLoop=0;nLoop<nLen;nLoop++)
        if ((lpszStr.charAt(nLoop)>='0') && (lpszStr.charAt(nLoop)<='9')) continue
        else break

    if (nLoop>=nLen)
       return true 
    else
      return false 
 }


//检查字符串是否是有效的数值
function IsNumeric(lpstr)
{
 var s=KillSpace(lpstr)
 var nLen=s.length
   for (var nLoop=0;nLoop<nLen;nLoop++)
      if ((s.charAt(nLoop)>='0') && (s.charAt(nLoop)<='9')) continue
      else      
        if (s.charAt(nLoop)=='.') continue
	  else 
	    if(nLoop==0 && s.charAt(nLoop)=='-') continue
       else break
 
   if (nLoop>=nLen && nLen>0)
      return true 
   else
      return false 
  
}

//检查是否是正确的电话号码  谢吉康 2004-09-06
function IsPhoneNumber(lpstr){
	var s=KillSpace(lpstr)
	var nLen=s.length	
	for (var nLoop=0;nLoop<nLen;nLoop++){		
		if((s.charAt(nLoop)>='0')&&(s.charAt(nLoop)<='9')){			
			continue;
		}else{						
			if((s.charAt(nLoop)=='-')||(s.charAt(nLoop)=='－')||(s.charAt(nLoop)=='(')||(s.charAt(nLoop)=='（')||(s.charAt(nLoop)==')')||(s.charAt(nLoop)=='）')||(s.charAt(nLoop)=='/')||(s.charAt(nLoop)=='/')||(s.charAt(nLoop)==',')||(s.charAt(nLoop)=='，')){
				continue;				
			}else{
				return false;
				break;
			}			
		}
	}	
	
	if(nLoop>=nLen&&nLen>0){
		return true;
	}else{
		return false;
	}	
}


// 把字符串转化为URL标准
function URLCode(szStr)
{
var iLen      // 字串长度
var cChr      // 处理字符
var iLoop     // 循环
var szDec=""  // 目的字串

iLen=szStr.length
for (iLoop=0;iLoop<iLen;iLoop++)
{
   cChr=szStr.charAt(iLoop)
   switch(cChr){
   case '&' : szDec+="~"
              break
   case ' ' : szDec+="+"
              break
   case "'" : szDec+="%27"
              break
   case '%' : szDec+="%25"
              break
   case '#' : szDec+="%23"
              break              
   default : szDec+=cChr
              break
   }
}
return szDec
}


// 数值四舍五入
function GetRound(nNum,pre)
{
	if (IsNumeric(nNum))
	{
		return Math.round((nNum*Math.pow(10,pre)))/(Math.pow(10,pre)) 
	}
	else
	{
		return 0
	}
}


function chkNonChar(obj){
	/***************************************************************
	程序编写：Roamer Wu
	编写时间：2003-09-29
	函数功能：检查输入文字是否包含有本系统限制的非法字符。
	函数参数：obj为要检查的文本框"input type=text"名或文本域"textarea"名。
	函数变量：strNonChar为非法字符集，如果要添加或删除定义的非法字符请处理此变量。
	***************************************************************/
	
	var strInput;
	var strNonChar = new Array();
	
	strInput = obj.value;
	
	//本系统非法字符集，要允许加用以下字符，请在前加上“//”
	strNonChar[0] = "\'";		//禁用'
	strNonChar[1] = "\"";		//禁用"
	strNonChar[2] = "\\";		//禁用\
	strNonChar[3] = "~";		//禁用~
	strNonChar[4] = "#";		//禁用#
	strNonChar[5] = "$";		//禁用$
	strNonChar[6] = "%";		//禁用%
	strNonChar[7] = "^";		//禁用^
	strNonChar[8] = "&";		//禁用&
	strNonChar[9] = "*";		//禁用*
	strNonChar[10] = "<";		//禁用<
	strNonChar[11] = ">";		//禁用>
	strNonChar[12] = "/";		//禁用/
	strNonChar[13] = "?";		//禁用?
	strNonChar[14] = "|";		//禁用|
	strNonChar[15] = "+";		//禁用+
	strNonChar[16] = "`";		//禁用`
	strNonChar[17] = "×";		//禁用×
	strNonChar[18] = "[";		//禁用[
	strNonChar[19] = "]";		//禁用]
	
	if (strInput == '') return true;

	//在输入的参数中，查找是否有系统定义非法字符
	for (var i = 0;i < strNonChar.length; i++){
		if ( strInput.indexOf(strNonChar[i]) > -1 ) {
			alert('【系统提示】\n\n输入的文字中含有本系统所不允许的非法字符“' + strNonChar[i] + '” ！\n\n请重新输入或换用别的字符替代。')
			obj.focus();
			obj.select();
			return false;
		}
	}
	return true;
}

function chkOneArray( varray ) {
	//检查一个数组是否是唯一元素组成(没有重复元素)
	//Roamer Wu 2004-03-03
	//参数：varray数组对象， 返回："" 或 重复的值 。
	//主要用于录入序列号时的检查
	
	var n = varray.length;
	for ( var i = 0 ; i < n ; i ++){
		for ( var j = ( i + 1 ); j < n ; j ++ ) {
			if ( varray[j] == varray[i] )
				return varray[i];
		}
	}

	return "";
}

function chkTowArray( obj1, obj2 ){
	//检查两个数组间，是否有重复
	//Roamer Wu 200-03-03
	//参数：两个数组；返回："" 或 重复的值 。
	//主要用于单据中序列号返回时，行与行之间检查
	
	var n = obj1.length;
	var m = obj2.length;
	
	for ( var i = 0; i < n; i ++){
		for ( var j = 0; j < m ; j ++ ){
			if ( obj1[i] == obj2[j] )
				return obj1[i];
		}
	}
	
	return "";
}

//设置Cookie
function  setCookie(name,value)   
{   
      var Minute = 30;   //此cookie将被保存30分钟   
      var exp = new Date(); //new Date("December 31, 9998");   
      exp.setTime(exp.getTime() + Minute*60*1000);   
      document.cookie = name + "="+escape(value) + ";expires=" + exp.toGMTString();   
} 

function getCookie(name)   
{   
    var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));   
    if(arr != null) return unescape(arr[2]); return null;   
}   
function delCookie(name)   
{   
    var exp = new Date();   
    exp.setTime(exp.getTime() - 1);   
    var cval=getCookie(name);   
    if(cval != null) document.cookie= name +"="+cval+";expires="+exp.toGMTString();   
}   
String.prototype.get = function(name)   
{   
    var reg = new RegExp("(^|&|\\?)"+ name +"=([^&]*)(&|$)"),r;   
    if (r=this.match(reg)) return unescape(r[2]); return null;   
}


