﻿// JavaScript library ，用于校验表单数据
// 唐志坚 提供
// 高学军 整理修改于 2002.12.26 ，添加了注释，修正了一些BUG，删除了没用的代码，并增加了几个function
// 简要目录：
// 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


//判断文本域是否填写，Filed:文本域名称，title:文本域标题
function checkNull(Filed,title) {
	str = Filed.value + "";
	if (trim(str) == "" || str == "0") {
		alert(title + "必须填写！");
		Filed.focus();
		return false;
	}
	return true;
}
function trim( instr )
{
    instr = instr + " ";
    var first_space
    var last_space;
    var ret;

    first_space=0;
    while( instr.charAt( first_space ) == " " ) {
      first_space ++;
    }

    last_space = instr.length;
    while( instr.charAt( last_space - 1 ) == " " ) {
      last_space --;
    }

    if(first_space==instr.length)
	    return "";

    ret = instr.substring( first_space, last_space );
    return( ret );    
}

//是否 null 或者 空
function isEmpty(s)
{
    return ((s == null) || (s.length == 0) )
}

//1.是否为空或全是空字符
function isWhitespace(s)

{
    var i;
    var whitespace = new String(" \t\n\r");
    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(st)
{
    var i;
    var s = st.value;
    var seenDecimalPoint = false;
    if (isEmpty(s))
        if (isFloat.arguments.length == 1) return defaultEmptyOK;
        else return (isFloat.arguments[1] == true);
    if (s == ".") {
        alert("请填写数字！");
        st.value="";
        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)) 
        {
            alert("请填写数字！");
            st.value="";
            return false;
        }
    }
    var strs = new Array();
    strs = s.split(".")
    if(strs.length>1){
        if(strs[1].length>4){
            alert("小数位不能大于4位！");
            st.value="";
            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(s, format) {
    var str = s.value;
    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(s) {
    str = s.value;
    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.value, "0123456789-()+") != ""){
       alert("电话输入错误！");
       s.value = "";
       return false;
    }
    return true;
}

//11.邮政编码
function isPostCode(s) {
    if(isInteger(s.value) && s.value.length == 6){
        return true;
    }else{
        alert("邮政编码输入错误！");
        s.value = "";
        return false;
    }
}

//是否只包含合法的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(st)
{
    var s = st.value;
    if (isEmpty(s))
        if (isEmail.arguments.length == 1) return defaultEmptyOK;
        else return (isEmail.arguments[1] == true);

    if (isWhitespace(s)){
        alert("邮箱输入错误！");
        st.value = "";
        return false;
    }
    if (!isvalidEmailChar(s)){
        alert("邮箱输入错误！");
        st.value = "";
        return false;
    }
    atOffset = s.lastIndexOf('@');

    if (atOffset < 1){
        alert("邮箱输入错误！");
        st.value = "";
        return false;
    }
    else {
        dotOffset = s.indexOf('.', atOffset);

        if (dotOffset < atOffset + 2 ||
            dotOffset > s.length - 2) {
            alert("邮箱输入错误！");
            st.value = "";
            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;
}

//////信用卡号码（注意，原程序为美国使用，未修改）

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 checkCheckBox(checkBoxName) {
    if (!checkBoxName) {
        alert("还没有记录！");
        return false;
    }
    var length = checkBoxName.length;
    if (length == undefined) {
        if (checkBoxName.checked)
            length = 1;
        else {
            length = 0;
            alert("请选一条记录！");
            return false;
        }
    }
    //alert(length);
    return true;
}


//复选框全选或全不选selectFlag:true:全选；false:全不选
function doSelectAll(checkBoxName, selectFlag) {
    var length = getCheckBoxLength(checkBoxName);
    //如果是单个复选框
    if (length == 1) {
        checkBoxName.checked = selectFlag;
        return;
    }
    for (var i = 0; i < length; i++) {
        checkBoxName[i].checked = selectFlag;
    }
}

//得到复选框的个数
function getCheckBoxLength(checkBoxName) {
    if (!checkBoxName) {
        return 0;
    }

    var length = checkBoxName.length;
    if (length == undefined) {
        length = 1;
    }
    //alert(length);
    return length;
}

//保留两位小数（四舍五入）
function formateDecimal(value, i) {
    if (i == 2) j = 100;
    if (i == 4) j = 10000;
    value = value * j;
    value = Math.round(value);
    value = value / j;
    return value;
}

function IsURL(st) {
    var str_url = st.value;
    if(str_url==null || str_url==""){
       return true; 
    }
    var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
            + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
            + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
            + "|" // 允许IP和DOMAIN（域名）
            + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
            + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
            + "[a-z]{2,6})" // first level domain- .com or .museum
            + "(:[0-9]{1,4})?" // 端口- :80
            + "((/?)|" // a slash isn't required if there is no file name
            + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
    var re = new RegExp(strRegex);
    //re.test()
    if (re.test(str_url)) {
        return true;
    } else {
        alert("网址输入错误！");
        st.value = "";
        return false;
    }
}
