﻿//UI页面JS验证函数与常用函数 王安伟  2008-07-21


//统一验证函数
function CheckRegExp(pattern, value) {
    var reg = new RegExp(pattern);
    //alert(reg);
    return reg.exec(value) != null ? true : false;
}

//去左右空格
function trim(s){
  return rtrim(ltrim(s));
}
//去左空格
function ltrim(s){
  return s.replace(/^\s*/,"");
}
//去右空格
function rtrim(s){
    return s.replace(/\s*$/,"");
}
//验证是否是空字符串
function isEmpty(s){
    s = trim(s);
    return s.length == 0;
}
//验证是否含有不安全字符 true是含有
function isUnSafe(s){
    var pattern=/[\|,<>'&]/;
    return CheckRegExp(pattern, s);
}
//验证电子邮件;
function isEmail(s){
    s = trim(s);
    var pattern = /^[_\.0-9a-z-]+@([0-9a-zv][0-9a-z-]+\.){1,4}[a-z]{2,3}$/i;
    return CheckRegExp(pattern, s);
}
//是否全为数字
function isNumber(s){
 return !isNaN(s);
}
//验证合法手机号
 function isMobile(s) { 
    var pattern =/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/
    return CheckRegExp(pattern, s);
}
//验证电话号码;010-58158863或58158863
function isPhone(s){
    s = trim(s);
    var pattern = /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/;
    return CheckRegExp(pattern, s);
}
//验证身份证
function isIDCard(s){
    s = trim(s);
    var pattern = /^\d{15}(\d{2}[xX0-9])?$/;
    return CheckRegExp(pattern, s);
}
//验证邮政编码;
function isZip(s){
    s = trim(s);
    var pattern = /^[1-9]\d{5}$/;
    return CheckRegExp(pattern, s);
}
//验证数字整型;
function isInteger(s){
    s = trim(s);
    var pattern = /^[-\+]?\d+$/;
    return CheckRegExp(pattern, s);
}
//验证是否全为大小写英文;
function isEnglish(s){
     s = trim(s);
    var pattern = /^[A-Za-z]+$/;
    return CheckRegExp(pattern, s);
}
//验证用户名;不超过8个汉字或16个字符（数字，字母和下划线） 
function isUserName(s){
     s = trim(s);
    var pattern = /[\w\u4e00-\u9fa5]{2,16}/;
     return CheckRegExp(pattern, s);
}
//验证密码;最少6个字符，不超过16个字符（数字，字母）
function isPassword(s){
    s = trim(s);
    var pattern = /^.{6,16}$/;
    return CheckRegExp(pattern, s);
}
//验证时候全为中文
function isChinese(s){
    s = trim(s);
    var pattern = /^[\u0391-\uFFE5]+$/;
    return CheckRegExp(pattern, s);
}
//验证日期逻辑
function IsRightDateLogical(D1,D2,Logic){
    var Date1 = new Date(D1.replace("-",","));
    var Date2 = new Date(D2.replace("-",","));
//    alert ("dfd");
//    if (Date1.getTime()-Date2.getTime()>0)
//    return true;
//    else
//    return false;
    
    switch(Logic)
    {
	    case ">": 
	    return Date1>Date2;
	    case "<": return Date1<Date2;
	    case ">=": return Date1>=Date2;
	    case "<=": return Date1<=Date2;
	    case "=": return (Date1>=Date2)&&(Date1<=Date2);
	    default: return false;
    }
}

function ddd()
{
//    String   startDate   =   "2003-10-12";  
//  String   endDate   =   "2004-10-12";  
//  SimpleDateFormat   dateFormat=new   SimpleDateFormat("yyyy-MM-dd");  
//  Date   a   =   dateFormat.parse(startDate);    
//  Date   b   =   dateFormat.parse(endDate);  
//   
//  if   (a.getTime()-b.getTime()>0)  
//          System.out.println("startDate   大于   endDate");  
//  else  
//          System.out.println("startDate   小于   endDate");
          
}
//验证信用卡
function IsCreditCard(s) {
	var v = "0123456789";
	var w = "";
	for (var i=0; i < s.length; i++) 
	{
		x = s.charAt(i);
		if (v.indexOf(x,0) != -1)
		w += x;
	}
	var j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7) return false;
	var k = Math.floor(j);
	var m = Math.ceil(j) - k;
	var c = 0;
	for (var q=0; q<k; q++) 
	{
		a = w.charAt(q*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (var p=0; p<k+m; p++) c += w.charAt(p*2+1-m) * 1;
	return (c%10 == 0);
}
//获取今天日期
function GetToday(){
	var d,s="";
	d= new Date();
	s +=d.getYear() +"-";
	var Mx=d.getMonth()+1;
	if(Mx>9)
	{s+=Mx +"-";}
	else
	{s+="0" +Mx +"-";}
	if(d.getDate()>9)
	{s+=d.getDate()}
	else
	{s+="0" +d.getDate()}
	return s;
}
//仅允许控件输入数字
function   OnlyNumber(e)   
          {   
          if(!(((window.event.keyCode>=48)&&(window.event.keyCode<=57))||(window.event.keyCode==13)||(window.event.keyCode==46)||(window.event.keyCode==45)))   
          {   
                window.event.keyCode=0;   
          }   
          if(e!=null){
             
          }
    } 
   
    
// 验证日期是否有效，format为格式，输入字符串YMD即可
function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) ||  (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; } 
   else  if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } 
    else  if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } 
   else   if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}


/**//**
 * 通过身份证号的得到出生日期函数
 * 参数，输入的证件号码
 * 返回  出生日期
*/
function getBirthdatByIdNo(iIdNo)
{
  var tmpStr="";
  var idDate="";
  var tmpInt=0;
  var strReturn = "";

  iIdNo = trim(iIdNo);

  if((iIdNo.length!=15) &&(iIdNo.length!=18)){
    strReturn = "输入的身份证号位数错误";
    return strReturn;
  }

  if(iIdNo.length==15){
    tmpStr=iIdNo.substring(6,12);
    tmpStr= "19" + tmpStr;
    tmpStr= tmpStr.substring(0,4) + "-" + tmpStr.substring(4,6) + "-" + tmpStr.substring(6)

    return tmpStr;
  }
  else// if(iIdNo.length==18)
  {
      tmpStr=iIdNo.substring(6,14);
      tmpStr= tmpStr.substring(0,4) + "-" + tmpStr.substring(4,6) + "-" + tmpStr.substring(6)

    return tmpStr;
  }
}

// 计算两个日期的间隔天数 
function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式 
var aDate, oDate1, oDate2, iDays 
aDate = sDate1.split("-") 
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为12-18-2002格式 
aDate = sDate2.split("-") 
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) //把相差的毫秒数转换为天数

if (IsRightDateLogical(sDate1, sDate2, '>'))
    iDays = 0 - iDays;

return iDays 
} 


//格式化日期
Date.prototype.format = function(format)   
{   
   var o = {   
     "M+" : this.getMonth()+1, //month   
     "d+" : this.getDate(),    //day   
     "h+" : this.getHours(),   //hour   
     "m+" : this.getMinutes(), //minute   
     "s+" : this.getSeconds(), //second   
     "q+" : Math.floor((this.getMonth()+3)/3), //quarter   
     "S" : this.getMilliseconds() //millisecond   
   }   
   if(/(y+)/.test(format)) format=format.replace(RegExp.$1,   
     (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
   for(var k in o)if(new RegExp("("+ k +")").test(format))   
     format = format.replace(RegExp.$1,   
       RegExp.$1.length==1 ? o[k] :    
         ("00"+ o[k]).substr((""+ o[k]).length));   
   return format;   
} 

function $SB(obj,x)
{
    if(x==1)
    {
        obj.className="ybxi";obj.style.backgroundImage="url("+_g("ImgRoot").value+"/PageImages/button_over.gif)";
    }
    else
    {
       obj.className="gbxi";obj.style.backgroundImage="url("+_g("ImgRoot").value+"/PageImages/butten.jpg)";
    }

//    if(x==1)    //mouseout
//    {
//        obj.className="gbmouseout";obj.style.background="url("+_g("ImgRoot").value+"/PageImages/button.gif)   repeat-x left top ";
//    }
//    else if(x==2)   //mouseover
//    {
//        obj.className="gbmouseover";obj.style.background="url("+_g("ImgRoot").value+"/PageImages/button_over.jpg)   repeat-x left top ";
//    }
//    else if(x==3)   //mousedown
//    {
//        obj.className="gbmousedown";obj.style.background="url("+_g("ImgRoot").value+"/PageImages/button_over.gif)  repeat-x left top  ";
//    }
//    else if(x==4)    //mouseup
//    {
//        obj.className="gbmouseup";obj.style.background="url("+_g("ImgRoot").value+"/PageImages/button.gif)  repeat-x left top ";
//    }
}

function _g(x)
{
    return document.getElementById(x);
}
