// JavaScript library ，用于校验表单数据
// 简要目录：
// 1.是否为空或全是空字符 
// 2.字符串是否只包含0到9的数字
// 3.是否整数(允许带正负号)
// 4.是否数字
// 5.小数（m,n），忽略小数首尾的0，不允许正负号
// 6.字符串是否全是字母
// 7.字符串是否全是字母和数字
// 8.日期
// 9.居民身份证号码
// 10.电话号码
// 11.邮政编码
// 12.是否合法的email
// 13.一列checkbox中是否至少有一个checked 
// 14.一列checkbox中是否只有一个checked
// 15.一列checkbox中是否全部checked
// 16.多个下拉框不能一样
// 其它未编号的function为辅助，也可以单独使用

// 注意：除固定格式的输入项如日期，邮政编码和居民身份证号码外，其余均未判断长度和是否为空。

var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var defaultEmptyOK = true
var s = "";


//是否 null 或者 空
function isEmpty(s)
{
   return ((s == null) || (s.length == 0) )
}

//1.是否为空或全是空字符
function isWhitespace (s)

{   var i;

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}

//从s里去掉包含在bag中的字符，s="abcd" bag="ace" return "bd"
function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}
//从s里去掉不包含在bag中的字符 s="abcd" bag="ace" return "ac"
function stripCharsNotInBag (s, bag)

{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}
//从s里去掉空字符，s="ab c d " return "abcd"
function stripWhitespace (s)

{   return stripCharsInBag (s, whitespace)
}

//字符c是否在字符串s中
function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}

//去掉字符串前面的空字符
function stripInitialWhitespace (s)

{   var i = 0;

    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;

    return s.substring (i, s.length);
}
//字符是否为字母
function isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

//字符是否为0-9
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

//字符是否为字母或数字
function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}
//字符是否为数字或"-"
function isTel(c)
{   return (((c >= "0") && (c <= "9"))|| (c=="-"))
}

//2.字符串是否只包含0到9的数字
function isInteger (s)

{   var i;

    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);


    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    return true;
}


//3.是否整数(允许带正负号)
function isSignedInteger (s)

{   if (isEmpty(s))
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}

//是否为大于零的整数（允许正负号）
function isPositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isPositiveInteger.arguments.length > 1)
        secondArg = isPositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)&& ( (isEmpty(s) && secondArg)  || (parseInt (s,10) > 0) ) );
}

//是否为大于等于零的整数（允许正负号）
function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s,10) >= 0) ) );
}

//是否为小于零的整数（允许正负号）
function isNegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNegativeInteger.arguments.length > 1)
        secondArg = isNegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s,10) < 0) ) );
}

//是否为小于等于零的整数（允许正负号）
function isNonpositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonpositiveInteger.arguments.length > 1)
        secondArg = isNonpositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s,10) <= 0) ) );
}


//4.是否数字
function isFloat (s)
{   
    var i;
    var seenDecimalPoint = false;
    if (isEmpty(s))
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);
    if (s == ".") return false;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if ((c == ".") && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }
    return true;
}

//是否数字（允许正负号）
function isSignedFloat (s)

{   if (isEmpty(s))
       if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedFloat.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedFloat.arguments.length > 1)
            secondArg = isSignedFloat.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
        return (isFloat(s.substring(startPos, s.length), secondArg))
    }
}

//5.小数（m,n），忽略小数首尾的0，不允许正负号
function isDecimal(s,m,n){
	if(!isFloat(s)) return false;
	if(String(parseInt(s,10)).length > m-n) return false;
	var ss = String(parseFloat(s));
	if(ss.indexOf(".")>=0 && ss.substring( ss.indexOf(".") + 1, ss.length).length > n ) return false;
	return true;
}


//6.字符串是否全是字母
function isAlphabetic (s)
{   var i;

    if (isEmpty(s))
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is letter.
        var c = s.charAt(i);
        if (!isLetter(c))
        return false;
    }
    // All characters are letters.
    return true;
}
//7.字符串是否全是字母和数字
function isAlphanumeric (s)

{   var i;

    if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}


//8.日期，format 可设定为 "yyyy-MM-dd"（注意大小写），分隔符可变
function toValidateDate(str,format) {
	if(str.length != format.length) return false;

	var year = 2000;
	var month = 1;
	var day = 1;
	var hour = 0;
	var minute = 0;
	var second = 0;

	if(format.indexOf("yyyy") != -1) {
		if(isNaNEx(year = SearchEx(str,format,"yyyy"))) return false;
		format = format.replace(/yyyy/,year);
	}

	if(format.indexOf("MM") != -1) {
		if(isNaNEx(month = SearchEx(str,format,"MM"))) return false;
		format = format.replace(/MM/,month);
	}

	if(format.indexOf("dd") != -1) {
		if(isNaNEx(day = SearchEx(str,format,"dd"))) return false;
		format = format.replace(/dd/,day);
	}

	if(format.indexOf("HH") != -1) {
		if(isNaNEx(hour = SearchEx(str,format,"HH"))) return false;
		if(parseInt(hour,10) < 0 || parseInt(hour,10) > 23) return false;
		format = format.replace(/HH/,hour);
	}

	if(format.indexOf("mm") != -1) {
		if(isNaNEx(minute = SearchEx(str,format,"mm"))) return false;
		if(parseInt(minute,10) < 0 || parseInt(minute,10) > 59) return false;
		format = format.replace(/mm/,minute);
	}

	if(format.indexOf("ss") != -1) {
		if(isNaNEx(second = SearchEx(str,format,"ss"))) return false;
		if(parseInt(second,10) < 0 || parseInt(second,10) > 59) return false;
		format = format.replace(/ss/,second);
	}

	if(format != str) return false;

	return isValidDate(year,month,day);
}
//日期
function isNaNEx(str) {
	if(str == "") return true;
	if(isNaN(str)) return true;
	if(str.indexOf(".") != -1) return true;
	return false;
}
//日期
function SearchEx(source,pattern,str) {
	var index = pattern.indexOf(str);
	if(index == -1) return "error";
	return source.substring(index,index + str.length);
}
//日期
function isValidDate(year,month,day) {
	month = parseInt(month,10);
	day = parseInt(day,10);

	if(month < 1 || month > 12) return false;
	if(day < 1 || day > 31) return false;
	if((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) return false;
	if (month == 2) {
		var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !leap)) return false;
	}
	return true;
}


//9.居民身份证号码(15或18位，最后一位数字或字母，其余数字，生日合法)
function isResidentID (s){
	if(s.length!=15 && s.length!=18) return false;
	if(!isAlphanumeric(s)) return false;
	var birthday;
	if(s.length==18){
		if( !isInteger(s.substring(0,s.length-1)) ) return false;
		birthday = s.substring(6,14);
	}
	if(s.length==15){
		if( !isInteger(s) ) return false;
		birthday = "19"+s.substring(6,12);
	}
	if(!isValidDate(  birthday.substring(0,4), birthday.substring(4,6), birthday.substring(6,8)  )) return false;
	return true;
	
}

//字符串按格式重组(reformat("20021213","",4,"-",2,"-",2),会返回2002-12-13)
function reformat (s)

{   var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < reformat.arguments.length; i++) {
       arg = reformat.arguments[i];
       if (i % 2 == 1) resultString += arg;
       else {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    }
    return resultString;
}

//10.电话号码( 数字和+,-,() )
function isPhoneNumber(s){
	if(stripCharsInBag(s,"0123456789-()+")!="") return false;
	return true;
}

//11.邮政编码
function isPostCode(s){
	return(isInteger(s) && s.length==6);
}

//是否只包含合法的email字符
function isvalidEmailChar (s)
{   var i;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
       	return false;
		}
    }

    return true;
}

//12.是否合法的email
function isEmail (s)
{   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);

    if (isWhitespace(s)) return false;
    if (!isvalidEmailChar(s)) return false;

    atOffset = s.lastIndexOf('@');

    if ( atOffset < 1 )
        return false;
    else {
 	dotOffset = s.indexOf('.', atOffset);

      if ( dotOffset < atOffset + 2 ||
         dotOffset > s.length - 2 ) {
         return false;
      }
   }
   return true;
}



//13.一列checkbox中是否至少有一个checked，输入checkbox对象，输出 t or f
function isChecked(checkbox_name)
  {
      var items=checkbox_name.length;
      if(items>1){
         for(i=0;i<items;i++)
           {
           if(checkbox_name[i].checked==true) return true;
           }
         }       
      else 
         if(checkbox_name.checked==true) return true;      
      return false;
  }

//14.一列checkbox中是否只有一个checked，输入checkbox对象，输出 t or f  
function isCheckedOne(checkbox_name)
{
      var items=checkbox_name.length;
      var count=0;
      if(items>1){
         for(i=0;i<items;i++)
           {
           if(checkbox_name[i].checked==true) count++;
           }
         if(count==1) return true;
         else 
      	    return false;      	   
       }       
      else 
        {
         if(checkbox_name.checked==true) return true;
         else          
      	    return false;      	   
        }            
} 

//15.一列checkbox中是否全部checked，输入checkbox对象，输出 t or f
 function checkAll(checkbox_names,checkbox_select)
     {      
      var items=checkbox_names.length;
      if(items>1)
       {
        for(i=0;i<items;i++) checkbox_names[i].checked=checkbox_select.checked;      
       }
      else
       checkbox_names.checked=checkbox_select.checked;
     }   
 



//16.多个下拉框不能一样
function selectUnique(theForm)
{
  for (i=0; i<theForm.elements.length; i++) 
  {
    e = theForm.elements[i];
    if ( e.type=="select-one" && !e.isDisabled) 
    {
      for(j=0; j<theForm.elements.length; j++) 
      {
        e2 = theForm.elements[j];
        if ( e2.type=="select-one" && !e2.isDisabled)
        {
          if(e!=e2 && e.options[e.selectedIndex].value==e2.options[e2.selectedIndex].value)
          {
            e.focus();
            return false;
          }
        }
      }
    }
  }
  return true;
}
//17.是否年份
function isYear(tmp)
{
}
//18.是否月份

//////信用卡号码（注意，原程序为美国使用，未修改）

function isCreditCard(st) {
  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }

  if ((sum % 10) == 0)
    return (true);
  else
    return (false);

}


function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}


function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;

}

function isAmericanExpress(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;

}

function isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
    return isCreditCard(cc);
  return false;
}

function isCarteBlanche(cc)
{
  return isDinersClub(cc);
}


function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
    return isCreditCard(cc);
  return false;

}


function isEnRoute(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 15) &&
      ((first4digs == "2014") ||
       (first4digs == "2149")))
    return isCreditCard(cc);
  return false;
}

function isJCB(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) &&
      ((first4digs == "3088") ||
       (first4digs == "3096") ||
       (first4digs == "3112") ||
       (first4digs == "3158") ||
       (first4digs == "3337") ||
       (first4digs == "3528")))
    return isCreditCard(cc);
  return false;

}

function isAnyCard(cc)
{
  if (!isCreditCard(cc))
    return false;
  if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
      !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
    return false;
  }
  return true;

}

function isCardMatch (cardType, cardNumber)
{

	cardType = cardType.toUpperCase();
	var doesMatch = true;

	if ((cardType == "VISA") && (!isVisa(cardNumber)))
		doesMatch = false;
	if ((cardType == "MASTERCARD") && (!isMasterCard(cardNumber)))
		doesMatch = false;
	if ( ( (cardType == "AMERICANEXPRESS") || (cardType == "AMEX") )
                && (!isAmericanExpress(cardNumber))) doesMatch = false;
	if ((cardType == "DISCOVER") && (!isDiscover(cardNumber)))
		doesMatch = false;
	if ((cardType == "JCB") && (!isJCB(cardNumber)))
		doesMatch = false;
	if ((cardType == "DINERS") && (!isDinersClub(cardNumber)))
		doesMatch = false;
	if ((cardType == "CARTEBLANCHE") && (!isCarteBlanche(cardNumber)))
		doesMatch = false;
	if ((cardType == "ENROUTE") && (!isEnRoute(cardNumber)))
		doesMatch = false;
	return doesMatch;

}

function IsCC (st) {
    return isCreditCard(st);
}

function IsVisa (cc)  {
  return isVisa(cc);
}

function IsVISA (cc)  {
  return isVisa(cc);
}

function IsMasterCard (cc)  {
  return isMasterCard(cc);
}

function IsMastercard (cc)  {
  return isMasterCard(cc);
}

function IsMC (cc)  {
  return isMasterCard(cc);
}

function IsAmericanExpress (cc)  {
  return isAmericanExpress(cc);
}

function IsAmEx (cc)  {
  return isAmericanExpress(cc);
}

function IsDinersClub (cc)  {
  return isDinersClub(cc);
}

function IsDC (cc)  {
  return isDinersClub(cc);
}

function IsDiners (cc)  {
  return isDinersClub(cc);
}

function IsCarteBlanche (cc)  {
  return isCarteBlanche(cc);
}

function IsCB (cc)  {
  return isCarteBlanche(cc);
}

function IsDiscover (cc)  {
  return isDiscover(cc);
}

function IsEnRoute (cc)  {
  return isEnRoute(cc);
}

function IsenRoute (cc)  {
  return isEnRoute(cc);
}

function IsJCB (cc)  {
  return isJCB(cc);
}

function IsAnyCard(cc)  {
  return isAnyCard(cc);
}

function IsCardMatch (cardType, cardNumber)  {
  return isCardMatch (cardType, cardNumber);
}

//阿拉伯数字与中文转换
var UPPER_NUMBER= "壹贰叁肆伍陆柒捌玖零";
var UPPER_BIT = "分角圆拾佰仟万拾佰仟亿拾佰仟";

/**
 * Convert lower money to upper money(chinese)
 * Note: Max money = 1232131.123
 * @param lowerMoney
 * @return upper money
 */
function clipMoney(lowerMoney){
	var integer,deci;

    if (isFloat(lowerMoney) == false){
    	return "false";
    }

	if (lowerMoney.indexOf(".") == -1){
		integer = lowerMoney+"00";
		integer = convertLowerMoney(integer);
		if (integer == "false")
			return "false";
		if (integer.indexOf("圆") == -1)
			return integer + "圆整";
		else
			return integer;
	}else{
		integer = lowerMoney.substring(0,lowerMoney.indexOf("."))+"00";
		if (integer == "false")
			return "false";
		integer = convertLowerMoney(integer);
		if (integer.indexOf("圆") == -1)
			integer = integer + "圆零";
		deci = "0."+lowerMoney.substring(lowerMoney.indexOf(".")+1,lowerMoney.length);
		if (deci == "false")
			return "false";
		deci = convertLowerMoney(deci);
		if (deci.indexOf("分") == -1)
			return integer+deci+"整";
		return integer+deci;
	}		
}
 
function convertLowerMoney(lowerMoney,dotlength) {
    var upperMoney = "";
    
    if (lowerMoney.indexOf(".") != -1){
		lowerMoney = lowerMoney.substring(0,lowerMoney.indexOf(".")+3);
		var str = lowerMoney * 100+"";
		if (str.indexOf('.') != -1)
			str = str.substring(0,str.indexOf('.'));
	}else{
		var str = lowerMoney;
	}
    var len = str.length;

    // Check lowerMoney
    // max money: 999999999999.99
    if (len > 14) return "false";
    var j,k;
    for (var i = 1; i <= len; i++) {

        j = len - i;

        //zjzh=mid(dxnr1,2*j -1,2)
        //生成大写位，即 "仟佰拾...."
        var bit = UPPER_BIT.substring(j,j+1);
        k = parseInt(str.substring(i-1,i));
        if (k == 0)
            k = 10;
        //生成大写汉字
        var number = UPPER_NUMBER.substring(k-1,k);
        if ("零" == (number)) {
            if  ( bit == "亿" || bit == "万" )
                upperMoney = upperMoney + bit;
            else
                upperMoney = upperMoney + number;
        } else {
            upperMoney = upperMoney + number + bit;
        }
    }
    upperMoney = removeZero(upperMoney);
    upperMoney = dealYiWan(upperMoney);
    upperMoney = removeZero(upperMoney);
    if (upperMoney.substring(upperMoney.length-1,upperMoney.length)=="零")
        upperMoney = upperMoney.substring(0, upperMoney.length-1);
    return upperMoney;
}
/*

    
		upperMoney = upperMoney.substring(0,upperMoney.length-1);
*/
function removeZero(str) {
	var sb="";
    var old = "a";
    for (var i = 0; i < str.length; i++) {
        if ((str.charAt(i) == old) && (old=='零')) {
            //do nothing
        } else {
            old = str.charAt(i);
            sb = sb + old;
        }
    }
    //alert(sb);
    return sb;
}

function dealYiWan(str) {
	var sb ="";
    var old = 'a';
    for (var i = 0; i < str.length; i++) {
        if ((str.charAt(i) == '亿') && (old=='零')) {
            sb.deleteCharAt(sb.length-1);
            sb = sb + str.charAt(i)+"零";
        } else if ((str.charAt(i) == '万') && (old=='零')) {
        	sb = sb.substring(0,sb.length-1);
        	if (sb.charAt(sb.length-1) == "亿")
        		sb = sb + '零';
        	else
        		sb = sb + str.charAt(i)+'零';
        } else {
            old = str.charAt(i);
            sb = sb + old;
        }
    }
	//alert(sb);
    return sb;
}

//日期转中文
function changeDate(date,s){
	var formatType = "YYYY-MM-DD";
	var type,j,month,day,year;
	s = s+"";
	if (s != "undefined"){
		formatType = s;
	}
	if (formatType.length != date.length)
		return false;
	type = formatType.charAt(0);
	c = -1;
	for (var i = 0; i<formatType.length;i++){
		c = c + 1;
		if (type != formatType.charAt(i)){
			if (type == "M"){
				month = date.substring(i-c,i);
				c=0;
			}
			else if (type == "D"){
				day = date.substring(i-c,i);
				c=0;
			}
			else if (type == "Y"){
				year = date.substring(i-c,i);
				c=0;
			}else
				c=0;
		}else{
			if (i == formatType.length-1){
				if (type == "M")
					month = date.substring(i-c,i+1);
				if (type == "D")
					day = date.substring(i-c,i+1);
				if (type == "Y")
					year = date.substring(i-c,i+1);			
			}			
		}
		type = formatType.charAt(i);
	}
	year = figureChange(year) 
	month = figureChange(month)
	day = figureChange(day)
	return year+"年"+month+"月"+day+"日";
}

function figureChange(fig){
	var UPPER_NUMBER= "○一二三四五六七八九";
	var sb="";
	var re="";
	if (fig.length == 2){
		re = fig.charAt(0);
		if (re == "0")
			sb = ""
		else if (re == "1")
			sb = "十"
		else
			sb = UPPER_NUMBER.charAt(re)+"十";
		re = fig.charAt(1);
		if (re != "0")
			sb = sb + UPPER_NUMBER.charAt(re);
		
	}else{
		for (var i=0; i<fig.length; i++){
			sb = sb + UPPER_NUMBER.charAt(fig.charAt(i));
		}
	}
	return sb;
}

/************************************校验有效时间**************************/
function checkIsValidDate(str)
{//如果为空，则通过校验
    if(str == "")
        return true;
//    var pattern = /^((\\d{4})|(\\d{2}))-(\\d{1,2})-(\\d{1,2})$/g;
//    if(!pattern.test(str))
//        return false;
    var arrDate = str.split("-");
    if(arrDate.length>3){
      return false;
    }
//    alert(parseInt(arrDate[0],10));

    if(parseInt(arrDate[0],10) < 100){
        arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
//        alert(arrDate[0]);
    }
//    alert(arrDate[0]);
    var date =  new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
//    alert(date.getMonth());
//    alert(date.getYear(4));
    if(arrDate[0]<2000){
      var birYear = "19" + date.getYear();
//      alert(birYear);
      if(birYear == arrDate[0]
         && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
         && date.getDate() == arrDate[2])
          return true;
      else
          return false;
    }else{
      if(date.getYear() == arrDate[0]
         && date.getMonth() == (parseInt(arrDate[1],10) -1)+""
         && date.getDate() == arrDate[2])
          return true;
      else
          return false;
    }
}
/************************************校验有效时间**************************/

/************************************校验整数**************************/
function checkIsValidInt(str) {   
	var myReg = /^[0-9]*[0-9]$/;   
	if(myReg.test(str))   
	{
		return true;
	}   
	return false;   
} 
/************************************校验整数**************************/

function checkIsValidNum(str){
	var myReg = /^(-)?(\d)*(\.[(\d){2}|(\d){1}])?$/;   
	if(myReg.test(str))   
	{
		return true;
	} 
	return false;
}

/************************验证身份证号码*******************************************/
/*
 *形参：inputStr- 文本域对象
 *      objName-文本域对象对应的标签名称
 *      format- 身份证格式，共有以下几种格式：
 *              15位，18位（最后一位可能为X）
*/
function IDC_checkID(inputStr,objName,format){
                var temp;
                var year,month,day;
                if(inputStr.length != format){
                      alert(objName+"格式不对。");
                      return false;
                }
                else {
                                    
                    //检查年的格式
                    if(format==18){
                    	//alert("aaa");
                      temp=inputStr.substring(6,10);
                      year=parseInt(temp,10);
                      if(year<1900 || year>2200){
                         alert(objName+"年份应介于1900与2200之间，请重新输入！");
                         return false;
                      }
                      
                    }
                    else if(format==15){
                      temp=inputStr.substring(6,8);
                      year=parseInt(temp,10);
                      if(year<00 || year>99){
                         alert(objName+"年份应介于00与99之间，请重新输入！");
                         return false;
                      }
                    }
                    
                      
                    //检查月的格式
                    if(format==18)
                      temp=inputStr.substring(10,12);
                    else if(format==15)
                      temp=inputStr.substring(8,10);
                    
                    month=parseInt(temp,10);
                    if(month<1 ||month>12){
                        alert(objName+"月份必须介于1与12之间！");
                        return false;
                    }

                    //检查日的格式
                     if(format==18)
                       temp=inputStr.substring(12,14);
                    else if(format==15)
                      temp=inputStr.substring(10,12);
                   
                    day=parseInt(temp,10);
                    if((day==0)||(day>31)){
                            alert(objName+"日必须介于0与31之间！");
                            return false;
                    }else if(day>28 && day<31){
                            if(month==2){
                                    if(day!=29){
                                            alert(objName+year+"年"+month+"月无"+day+"日。");
                                            return false;
                                    }
                                    else {
                                            if((year%4)!=0){
                                                    alert(objName+year+"年"+month+"月无"+day+"日。");
                                                    return false;
                                             }
                                             else {
                                                    if((year%100==0)&&(year%400!=0)){
                                                           alert(objName+year+"年"+month+"月无"+day+"日。");
                                                           return false;
                                                    }
                                             }
                                    }
                            }
                    }

                    else if(day==31){
                            if((month==2)||(month==4)||(month==6)||(month==9)||(month==11)){
                                    alert(objName+month+"月无"+day+"日");
                                    return false;
                            }
                    }
               }
               
               return true;
}
/************************验证身份证号码*******************************************/

function matchCardId2BirDate(cardId, birDate)
{
  var cardIdTemp, birDateTemp;
  if (cardId.length == 18)
  {
  	 cardIdTemp = cardId.substring(6, 12);
 	 birDateTemp = birDate.substring(0, 4) + birDate.substring(5, 7) ;
 	 if (cardIdTemp != birDateTemp)
 	 {
	 	 return false;
	  }
  }
  else
  {
  	 cardIdTemp = cardId.substring(6, 10);
 	 birDateTemp = birDate.substring(2, 4) + birDate.substring(5, 7) ;;
 	 if (cardIdTemp != birDateTemp)
 	 {
	 	 return false;
 	 }
  }
  return true;
}

//身份证验证函数
function checkIdcard(idcard){ 
var Errors=new Array( 
"yes", 
"身份证号码位数不对!", 
"身份证号码出生日期超出范围或含有非法字符!", 
"身份证号码校验错误!", 
"身份证地区非法!" 
); 
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}  
var idcard,Y,JYM; 
var S,M; 
var idcard_array = new Array(); 
idcard_array = idcard.split(""); 
//地区检验 
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; 
//身份号码位数及格式检验 
switch(idcard.length){ 
case 15: 
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性 
} else { 
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性 
} 
if(ereg.test(idcard)) return Errors[0]; 
else return Errors[2]; 
break; 
case 18: 
//18位身份号码检测 
//出生日期的合法性检查  
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) 
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8])) 
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式 
} else { 
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式 
} 
if(ereg.test(idcard)){//测试出生日期的合法性 
//计算校验位 
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 
+ parseInt(idcard_array[7]) * 1  
+ parseInt(idcard_array[8]) * 6 
+ parseInt(idcard_array[9]) * 3 ; 
Y = S % 11; 
M = "F"; 
JYM = "10X98765432"; 
M = JYM.substr(Y,1);//判断校验位 
if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位 
else return Errors[3]; 
} 
else return Errors[2]; 
break; 
default: 
return Errors[1]; 
break; 
} 
}  

//方法二:
function checkId(pId){  
    var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];  
    var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];  
    var Checker = [1,9,8,7,6,5,4,3,2,1,1];  
    if(pId.length != 15 && pId.length != 18)    return "身份证号共有 15 码或18位";  
    var Ai=pId.length==18 ?  pId.substring(0,17)   :   pId.slice(0,6)+"19"+pId.slice(6,16);  
    if (!/^\d+$/.test(Ai))  return "身份证除最后一位外，必须为数字！";  
    var yyyy=Ai.slice(6,10) ,  mm=Ai.slice(10,12)-1  ,  dd=Ai.slice(12,14);  
    var d=new Date(yyyy,mm,dd) ,  now=new Date();  
     var year=d.getFullYear() ,  mon=d.getMonth() , day=d.getDate();  
    if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) return "身份证输入错误！";  
    for(var i=0,ret=0;i<17;i++)  ret+=Ai.charAt(i)*Wi[i];      
    Ai+=arrVerifyCode[ret %=11];       
    return pId.length ==18 && pId != Ai?"身份证输入错误！":Ai;          
}; 

function getInfo(id){  
    var arr=[null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古"  
             ,null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海"  
             ,"江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南"  
             ,null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃"  
             ,"青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null  
             ,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外"]  
    id=checkId(id)  
    if (isNaN(id)) return [false,"错误的身份证号码"]     
    var id=String(id),  prov=arr[id.slice(0,2)]  ,  sex=id.slice(14,17)%2?  "男" : "女"  
    //var birthday=(new Date(id.slice(6,10) , id.slice(10,12)-1 , id.slice(12,14))).toLocaleDateString()
    var birthday=id.slice(6,10)+'-'+id.slice(10,12)+'-'+id.slice(12,14);
    return [true,prov,birthday,sex]    
}  

//清空输入框中的数据
function clean(objId){
	var obj= document.getElementById(objId);
	obj.value="";
}

//判断是否是数字
function isNumbers(s){
	    
	var i;
	for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! isDigit(c) )
        return false;
    }

    return true;
}

//判断邮箱书写的正确性
function   check_mailbox(id)   
  {   
      var   m= /^\s*[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+\s*$/; 
      var n=/^\s*[\s]*\s*$/;
         if(n.test(id.value))
         {
         	  alert("不能为空!"); 
           id.focus();
      id.select();
         }
      else
      { 
       if(!m.test(id.value)&&!n.test(id.value))    
       {     alert("邮箱格式不正确!"); 
          id.focus();
          id.select(); 
       }
      }
  }
