/**
 * 浏览器脚本函数列表
 * boolean isNumber(numStr)         ：判断字符串是否是数值格式
 * boolean isValidString(szStr)     ：判断字符串中是否含有非法字符"'\"><"
 * boolean isBlank(szStr)           ：判断字符串是否为空字符串（或不包含除空格外的其他字符）
 * String trim(szStr)               ：去掉字符串两端的空格
 * boolean isDateStr(ds)            ：判断字符串是否为合法的日期格式：YYYY-MM-DD HH:MM:SS
 *                                    或 YYYY-MM-DD 或 HH:MM:SS
 * boolean isDatePart(dateStr)      ：判断字符串是否为合法的日期格式：YYYY-MM-DD
 * boolean isTimePart(dateStr)      ：判断字符串是否为合法的时间格式：HH:MM:SS
 * boolean chk_email(emailAddress)  ：判断邮件地址格式是否合法
 * boolean isChinese                ：判断内容是否为中文
 * boolean isIdCardNo               ：判断身份证的合法性
 */

/***********************************************************************
 * 判断一个字符串是否是数值格式
 */
function isNumber(numStr){
  return !isNaN(numStr);
}

/***********************************************************************
 * 判断一个字符串中是否含有下列非法字符
 */
voidChar = "'\"><";

function isValidString(szStr){
  for(i = 0 ; i < voidChar.length; i ++){
    aChar = voidChar.substring(i, i + 1);
    if(szStr.indexOf(aChar) > -1){
      return false;
    }
  }
  return true;
}

/***********************************************************************
 * 判断一个字符串是否为空字符串
 */
function isBlank(szStr){
  if(szStr.length < 1){
    return true;
  }

  for(i = 0; i < szStr.length; i ++){
    if(szStr.substring(i, i + 1) != ' '){
      return false;
    }
  }
  return true;
}

/***********************************************************************
 * 去掉一个字符串两端的空格
 */
function trim(szStr)
{
    while(szStr.length > 0)
    { 
        if( szStr.substring(0, 1) == ' ')
        {
            szStr = szStr.substring(1);
        } 
        else
        {
           if( szStr.substring(szStr.length - 1, szStr.length) == ' ')
            {
                szStr = szStr.substring(0,szStr.length - 1);
            }
            else
            {
                break;
            }
        }
    }

    return szStr;
}

/***********************************************************************
 * 判断一个字符串是否为合法的日期格式：YYYY-MM-DD HH:MM:SS
 * 或 YYYY-MM-DD 或 HH:MM:SS
 */
function isDateStr(ds){
  parts = ds.split(' ');
  switch(parts.length){
    case 2:
      if(isDatePart( parts[0] ) == true && isTimePart( parts[1] )){
        return true;
      }else{
        return false;
      }
    case 1:
      aPart = parts[0];
      if(aPart.indexOf(':') > 0 ){
        return isTimePart(aPart);
      }else{
        return isDatePart(aPart);
      }
    default:
      return false;
  }
}

/***********************************************************************
 * 判断一个字符串是否为合法的日期格式：YYYY-MM-DD
 */
function isDatePart(dateStr){
  var parts;
alert(dataStr);
  if(dateStr.indexOf("-") > -1){
    parts = dateStr.split('-');
  }else if(dateStr.indexOf("/") > -1){
    parts = dateStr.split('/');
  }else{
    return false;
  }

  if(parts.length < 3){
  //日期部分不允许缺少年、月、日中的任何一项
    return false;
  }

  for(i = 0 ;i < 3; i ++){
  //如果构成日期的某个部分不是数字，则返回false
    if(isNaN(parts[i])){
      return false;
    }
  }

  y = parts[0];//年
  m = parts[1];//月
  d = parts[2];//日

  if(y <= 1800 || y > 2100){
    return false;
  }

  if(m < 1 || m > 12){
    return false;
  }

  switch(d){
    case 29:
      if(m == 2){
      //如果是2月份
        if( (y / 100) * 100 == y && (y / 400) * 400 != y){
          //如果年份能被100整除但不能被400整除 (即闰年)
        }else{
          return false;
        }
      }
      break;
    case 30:
      if(m == 2){
      //2月没有30日
        return false;
      }
      break;
    case 31:
      if(m == 2 || m == 4 || m == 6 || m == 9 || m == 11){
      //2、4、6、9、11月没有31日
        return false;
      }
      break;
    default:

  }

  return true;
}

/***********************************************************************
 * 判断一个字符串是否为合法的时间格式：HH:MM:SS
 */
function isTimePart(timeStr){
  var parts;

  parts = timeStr.split(':');

  if(parts.length < 2){
  //日期部分不允许缺少小时、分钟中的任何一项
    return false;
  }

  for(i = 0 ;i < parts.length; i ++){
  //如果构成时间的某个部分不是数字，则返回false
    if(isNaN(parts[i])){
      return false;
    }
  }

  h = parts[0];//年
  m = parts[1];//月

  if( h < 0 || h > 23){
  //限制小时的范围
    return false;
  }
  if( m < 0 || h > 59){
  //限制分钟的范围
    return false;
  }

  if(parts.length > 2){
    s = parts[2];//日

    if( s < 0 || s > 59){
    //限制秒的范围
      return false;
    }
  }

  return true;
}

//E-mail地址验证
function chk_email(email){
  invalid = "";
  if (!email){}
  //invalid = "请输入您的Email地址。";

  else 
  {

    if ( (email.indexOf("@") == -1) || (email.indexOf(".") == -1) )
    invalid += "\nEmail地址不合法。应当包含'@'和'.'；例如('.com')。请检查后再递交。";

    if (email.indexOf("your email here") > -1)
    invalid += "\n\nEmail地址不合法，请检测您的Email地址，在域名内应当包含'@'和'.'；例如('.com')。";

    if (email.indexOf("\\") > -1)
    invalid += "\n\nEmail地址不合法，含有非法字符(\\)。";

    if (email.indexOf("/") > -1)
    invalid += "\n\nEmail地址不合法，含有非法字符(/)。";

    if (email.indexOf("'") > -1)
    invalid += "\n\nEmail地址不合法，含有非法字符(')。";

    if (email.indexOf("!") > -1)
    invalid += "\n\nEmail地址不合法，含有非法字符(!)。";

    if ( (email.indexOf(",") > -1) || (email.indexOf(";") > -1) )
    invalid += "\n\n只输入一个Email地址，不要含有分号和逗号。";

    if (email.indexOf("?subject") > -1)
    invalid += "\n\n不要加入'?subject=...'。";

  }
  if (invalid == "")
  {
    return true;
  }
  else
  {
//    alert("输入的Email可能包含错误：" + invalid);
    alert(invalid);
    return false;
  }
}
//验证是否为中文
function isChinese(str)
{ 
    var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    badChar += "abcdefghijklmnopqrstuvwxyz"; 
    badChar += "0123456789"; 
    badChar += " "+"　";//半角与全角空格 
    badChar += "`~!@#$%^&()-_=+]\\\\|:;\\\\\'<,>?/";//不包含*或.的英文符号 
    if(""==str)
    { 
        return false; 
    } 
    for(var i=0;i<str.length;i++)
    { 
        var c = str.charAt(i);//字符串str中的字符 
        if(badChar.indexOf(c) > -1)
            return false; 
    } 
    return true; 
} 

//身份证合法性验证
function checkDate(date)
{
    return true;
}

function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;    
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "输入身份证号码长度不对！";
        //alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }    
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "错误的身份证号码！.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            //error = "身份证中日期信息不正确！.";
            //alert(error);
            return false;
        }        
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份证效验位错误!...正确为： " + intCheckDigit + ".";
            //alert(error);
            return false;
        }
    } 
    else{        //length is 15
        //check date
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            //alert("身份证日期信息有误！.");
            return false;
        }
    }
    //alert ("Correct.");
    return true;
}

function regInput(obj, reg, inputStr)
{
	var docSel	= document.selection.createRange()
	if (docSel.parentElement().tagName != "INPUT")	return false
	oSel = docSel.duplicate()
	oSel.text = ""
	var srcRange	= obj.createTextRange()
	oSel.setEndPoint("StartToStart", srcRange)
	var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
	return reg.test(str)
}

function keyDown(obj, e)
{
    if ( e != 8 && e != 46)
    {
        var str = obj.value;
        if (str.length == 4)
        {
            if (str >= "2100" || str <= "1800")
            {
                alert("日期年份应在1800-2100之间！"); 
            }
            else
            {
                obj.value = str + "-";
            }
        }
        if (str.length == 6)
        {
            if (str.substring(str.length-1,str.length) != "1" && str.substring(str.length-1,str.length) != "0")
            {
                obj.value = str + "-";    
            }
        }
        if (str.length == 7)
        {
            if (str.substring(str.length-2,str.length) > 12)
            {
                alert("日期月份不能大于12！");
            }
            else
            {
                if (str.substring(str.length-1,str.length) != "-")
                {
                    obj.value = str + "-";    
                }
            }
        }
    }
}
function keyUp(obj)
{
    var str;
    str = obj.value.split("-");
    if(str.length>=2)
    {
        if(str[1]>12)
        {
            alert("日期月份不能大于12！");
            obj.value = obj.value.substring(0,obj.value.length-1);
            obj.focus();
            return false;
        }
    }
    if(str.length == 3)
    {
        if(str[1]==1||str[1]==3||str[1]==5||str[1]==7||str[1]==8||str[1]==10||str[1]==12)
        {
            if(str[2]>31)
            {
                alert("大月日期天数不能大于31！");
                obj.value = obj.value.substring(0,obj.value.length-1);
                obj.focus();
                return false;
            }
        }
        else if(str[1]==4||str[1]==6||str[1]==9||str[1]==11)
        {
            if(str[2]>30)
            {
                alert("小月日期天数不能大于30！"); 
                obj.value = obj.value.substring(0,obj.value.length-1);
                obj.focus();
                return false;
            }
        }
        else if(str[1]==2)
        {
            if(((str[0] % 4)==0 && (str[0] % 100)!=0) || (str[0] % 400)==0)
            {
                if(str[2]>29)
                {
                    alert("2月份天数不能大于29！"); 
                    obj.value = obj.value.substring(0,obj.value.length-1);
                    obj.focus();
                    return false;
                }
            }
            else
            {
                if(str[2]>28)
                {
                    alert("非闰年2月份天数不能大于28！"); 
                    obj.value = obj.value.substring(0,obj.value.length-1);
                    obj.focus();
                    return false;
                }
            }
        }
    }
}
