﻿// 表单提交之前，在页面上判断输入的合法性（必填MUST、数字isNumeric、日期isDate isDetailDate等等）。
var isLeapYear = false;
var isSmallMonth = false;
function checkForm(formObj){
    for (i=0;i<formObj.length;i++)	{ 
        objTgt = formObj[i];
        // 对于所有 Text 输入框中的值进行去空操作。
        if(objTgt.type=="text")objTgt.value=objTgt.value.trim();

        if (objTgt.getAttribute("MUST")==1&&objTgt.value==''){
            if (objTgt.disabled==true){
                return true;
            }else{
                if(objTgt.title!=""){
                    errAlert ("必填项 ["+objTgt.title+"] 未填写 !","为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的 ["+objTgt.title+"] 这一项。","重新填写 ["+objTgt.title+"] 这一项。");
                }else{
                    errAlert("必填项未填写 !","为了保证数据的完整性，系统要求某些值必须填写，\n现在您没有填写其中的某几项。","返回重新填写。");
                }

                focusItem(objTgt);
                return false;
            }
        }

        if(objTgt.value!=''){
            if (objTgt.isNumeric==1){
                if (isNaN(objTgt.value)){
                    if(objTgt.title!=""){
                        errAlert ("["+objTgt.title+"] 项中应该填写数字 !","为了保证数据的准确性，系统要求某些值必须填写数字，\n现在您在 ["+objTgt.title+"] 项中没有填写数字。","重新填写 ["+objTgt.title+"] 这一项。");
                    }else{
                        errAlert ("应该填写数字 !","为了保证数据的准确性，系统要求某些值必须填写数字，\n现在您在某几项中没有填写数字。","重新填写。");
                    }

                    focusItem(objTgt);
                    return false;
                }

                var objTgtValue=new Number(objTgt.value);
                var maxV=objTgt.maxValue;
                var minV=objTgt.minValue;

                if(objTgt.isPow==1){
                    if (Math.abs(objTgtValue)>=Math.pow(10,maxV)||Math.abs(objTgtValue)<Math.pow(10,(minV-1))){
                        errAlert ("所填数字超出规定范围!");

                        focusItem(objTgt);
                        return false;
                    }
                }else{
                    if(objTgtValue.valueOf()>maxV||objTgtValue.valueOf()<minV){
                        errAlert ("所填数字超出规定范围!");

                        focusItem(objTgt);
                        return false;
                    }
                }
            }
            //判断文本框所输入的字符是否需要规范，即只能输入英文字符a-z,A-Z数字0-9以及下划线！
            if(objTgt.isCriterion==1){
                r2 = new RegExp('[^A-Za-z0-9_]','');
                if(objTgt.value.search(r2) >= 0) {
                    if(objTgt.title!=""){
                        errAlert("["+objTgt.title+"]项只能输入英文字符a-z,A-Z数字0-9以及下划线！");
                    }else{
                        errAlert("只能输入英文字符a-z,A-Z数字0-9以及下划线！");
                    }
                    focusItem(objTgt);
                    return false;
                }
            }
            //判断文本框所输入的是否是mail地址！
            if(objTgt.isMail==1){
                r1='@';
                r2 = new RegExp('[^A-Za-z0-9_.@]','');
                if(objTgt.value.search(r1)<0||objTgt.value.search(r2) >= 0) {
                    errAlert("电子邮件地址错误！请重新填写！");
                    focusItem(objTgt);
                    return false;
                }
            }
            //判断文本框所输入的是否身份证！
            if(objTgt.isIDCard==1){
                var birth;
                if(objTgt.value.length==15){
                    if(isNaN(objTgt.value)){
                        errAlert("身份证号错误！请重新填写！");
                        focusItem(objTgt);
                        return false;
                    }else{
                        IDYear = judgeLeapYear("19"+objTgt.value.substr(6,2));
                        birth = objTgt.value.substr(8,2);
                        if(birth>12||birth<01){
                            errAlert("身份证号错误！请重新填写！");
                            focusItem(objTgt);
                            return false;
                        }
                        IDMonth = judgeSmallMonth(birth);
                        birth = objTgt.value.substr(10,2);
                        if(birth<01||(!IDMonth&&birth>31)||(IDMonth&&birth>30)||(IDYear&&objTgt.value.substr(8,2)==02&&birth>29)||(!IDYear&&objTgt.value.substr(8,2)==02&&birth>28)){
                            errAlert("身份证号错误！请重新填写！");
                            focusItem(objTgt);
                            return false;
                        }
                    }
                }else if(objTgt.value.length==18){
                    r2 = new RegExp('[^0-9Xx]','');
                    if(isNaN(objTgt.value.substr(0,17))||objTgt.value.substr(17,1).search(r2) >= 0){
                        errAlert("身份证号错误！请重新填写！");
                        focusItem(objTgt);
                        return false;
                    }else{
                        birth = objTgt.value.substr(6,4);
                        if(birth>2050||birth<1900){
                            errAlert("身份证号错误！请重新填写！");
                            focusItem(objTgt);
                            return false;
                        }
                        IDYear = judgeLeapYear(birth);
                        birth = objTgt.value.substr(10,2);
                        if(birth>12||birth<01){
                            errAlert("身份证号错误！请重新填写！");
                            focusItem(objTgt);
                            return false;
                        }
                        IDMonth = judgeSmallMonth(birth);
                        birth = objTgt.value.substr(12,2);
                        if(birth<01||(!IDMonth&&birth>31)||(IDMonth&&birth>30)||(IDYear&&objTgt.value.substr(10,2)==02&&birth>29)||(!IDYear&&objTgt.value.substr(10,2)==02&&birth>28)){
                            errAlert("身份证号错误！请重新填写！");
                            focusItem(objTgt);
                            return false;
                        }
                    }
                }else{
                    errAlert("身份证号只能是15位或者18位！请重新填写！");
                    focusItem(objTgt);
                    return false;
                }
            }
            //判断文本框或文本域可以输入的最大,小字符数
            if(objTgt.maxlength!=null&&objTgt.maxlength!=""){
                if (objTgt.value.length>objTgt.maxlength){
                    errAlert ("["+objTgt.title+"]项所输入的最大字符数超出规定范围:"+objTgt.maxlength);
                    focusItem(objTgt);
                    return false;
                }
            }

            if(objTgt.minlength!=null&&objTgt.minlength!=""){
                if (objTgt.value.length<objTgt.minlength){
                    errAlert ("["+objTgt.title+"]项所输入的最小字符数超出规定范围:"+objTgt.minlength);
                    focusItem(objTgt);
                    return false;
                }
            }

            //长度必须是设定的长度 mustLength
            if(objTgt.mustLength!=null&&objTgt.mustLength!=""){
                if(objTgt.value!=""){
                    if(objTgt.value.length!=objTgt.mustLength){
                        errAlert ("["+objTgt.title+"]项的长度只能是:"+objTgt.mustLength);
                        focusItem(objTgt);
                        return false;
                    }
                }
            }

            //判断文本框可以输入的设定字符数
            if(objTgt.isSetLength==1){
                var start=0;
                var end=0;
                var result=false;
                while(objTgt.setLength.indexOf("位",start)>0){
                    end=objTgt.setLength.indexOf("位",start);
                    if(objTgt.value.length==objTgt.setLength.substring(start,end)){
                        result=true;
                        break;
                    }
                    start=end+1;
                }
                if(result==false){
                    if(objTgt.title!=""){
                        errAlert ("["+objTgt.title+"]项所输入的字符数只能为："+objTgt.setLength+"！");
                    }else{
                        errAlert ("所输入的字符数只能为："+objTgt.setLength+"！");
                    }
                    focusItem(objTgt);
                    return false;
                }
            }
            if (objTgt.isMDate==1){
                if(isMDate(objTgt)==false){
                    return false;
                }
            }else if (objTgt.isDate==1){
                if(isDate(objTgt)==false){
                    return false;
                }
            }else if(objTgt.isDetailDate==1){
                if(isDetailDate(objTgt)==false){
                    return false;
                }
            }
        }
    }
    return true;
}

// 判断是否是完整日期。(比如：2004-1-1 10:24:25)
function isDetailDate(objTgt){
    var inDate=objTgt.value.trim();
    inDate	= dealSpecNum(inDate);//处理特殊的数字字符
    for(var index=0;index<2;index++){//必须处理2遍，因为replace每次找到第一个匹配的修改，然后马上中止替换
        inDate	=	inDate.replace('－','-');
        inDate	=	inDate.replace('—','-');
        inDate	=	inDate.replace('、','-');
        inDate	=	inDate.replace('/','-');
        inDate	=	inDate.replace('.','-');
        inDate	=	inDate.replace(',','-');
        inDate	=	inDate.replace('，','-');
        inDate	=	inDate.replace('：',':');
        inDate	=	inDate.replace('时',':');
        inDate	=	inDate.replace('分',':');
        inDate	=	inDate.replace('秒',' ');
    }
    inDate = inDate.trim();

    if(inDate.length<19){
        errAlert("您输入的不是一个完整的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD HH:MM:SS 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");
        focusItem(objTgt);
        return false;
    }

    if(inDate.indexOf(" ")==-1){
        errAlert("您输入的不是一个完整的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD HH:MM:SS 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");
        focusItem(objTgt);
        return false;
    }

    var dateDt = inDate.substring(0,inDate.indexOf(" "));//得到年月日比如：2004-01-01
    dateDt = dateDt.trim();

    /////////////////////
    if (dateDt.length>=6 && dateDt.length<=10 && dateDt.indexOf("-")!=-1 && dateDt.indexOf("-")!=dateDt.lastIndexOf("-") && dateDt.substring(dateDt.indexOf("-")+1,dateDt.lastIndexOf("-")).indexOf("-")==-1){
        var inYear=parseInt(dateDt.substring(0,dateDt.indexOf("-")));
        var inMonth=dateDt.substring(dateDt.indexOf("-")+1,dateDt.lastIndexOf("-"));
        if (inMonth.substring(0,1)=="0" && inMonth.length>1)
            inMonth=inMonth.substring(1,inMonth.length);
        if(isNaN(inMonth)){
            errAlert("月份必须是数字！您输入的["+inMonth+"]不满足条件");
            focusItem(objTgt);
            return false;
        }
        inMonth=parseInt(inMonth);
        var inDay=dateDt.substring(dateDt.lastIndexOf("-")+1);
        if (inDay.substring(0,1)=="0" && inDay.length>1)
            inDay=inDay.substring(1,inDay.length);
        if(isNaN(inDay)){
            errAlert("日期必须是数字！您输入的["+inDay+"]不满足条件！");
            focusItem(objTgt);
            return false;
        }
        inDay=parseInt(inDay);

        if (inYear && !(isNaN(inYear)) && inYear.toString().length==4){
            var year=inYear;
            isLeapYear=judgeLeapYear(inYear);
        }else if(inYear.toString().length!=4){
            errAlert("对不起，系统需要四位年 !","为了保证日期存储的准确性，系统要求所有的日期输入都使用四位数字表示年份，\n可是您在 ["+objTgt.title+"] 项中没有使用四位年输入。","重新输入 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }else{
            errAlert("年份填写有误 !","","");
            focusItem(objTgt);
            return false;
        }

        if (inMonth && !(isNaN(inMonth)) && inMonth<=12 && inMonth >=1){
            var month=inMonth;
            isSmallMonth=judgeSmallMonth(inMonth);
        }else{
            errAlert("月份填写有误 !","表示月份的数字必须处于1到12之间，可是您在 ["+objTgt.title+"] 项中填写的 "+inMonth+" 显然不在这个范围内。","重新填写 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }

        if (inDay && !(isNaN(inDay)) && inDay>=1 && (month==2?(isLeapYear?inDay<=29:inDay<=28):(isSmallMonth?inDay<=30:inDay<=31))){
            var day=inDay;
        }else{
            errAlert("日期填写有误 !","表示日期的数字必须处于1到31之间，而且必须满足闰年和大小月规则，\n可是您在 ["+objTgt.title+"] 项中填写的 "+inDay+" 显然不满足要求。","重新填写 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }

        var inputDate=new Date();
        if (!(Date.parse(month + "-" + day + "-" + year))){
            errAlert("日期填写有误 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD HH:MM:SS 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

            focusItem(objTgt);
            return false;
        }

    }else{
        errAlert("您输入的不是一个完整的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD HH:MM:SS 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

        focusItem(objTgt);
        return false;
    }


    for(var i=0;i<dateDt.length;i++){
        if((dateDt.charAt(i)<'0'||dateDt.charAt(i)>'9')&&dateDt.charAt(i)!='-'){
            errAlert("您输入的不是一个有效的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD HH:MM:SS 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }
    }
    ///////////////////////////////////////
    var timeStr = inDate.substring(inDate.indexOf(" ")+1);//得到时间字符串比如： 10:24:25(但是前面可能有空格)
    timeStr.trim();
    if(timeStr.indexOf(":")==-1){
        timeStr += "00:00";
    }else if(timeStr.indexOf(":")==timeStr.lastIndexOf(":")){
        timeStr += ":00";
    }else if(timeStr.lastIndexOf(":")==timeStr.length-1){
        timeStr += "00";
    }
    var hour = timeStr.substring(0,timeStr.indexOf(":"));
    var minute = timeStr.substring(timeStr.indexOf(":")+1,timeStr.lastIndexOf(":"));
    var second = timeStr.substring(timeStr.lastIndexOf(":")+1);
    if(isNaN(hour)||isNaN(minute)||isNaN(second)){
        errAlert("时分秒必须是数字!");
        focusItem(objTgt);
        return false;
    }
    if(eval(hour)>=24){
        errAlert("时间填写有误。时钟不能超过24小时 !");
        focusItem(objTgt);
        return false;
    }
    if(eval(minute)>=60){
        errAlert("时间填写有误。分钟不能超过60分 !");
        focusItem(objTgt);
        return false;
    }
    if(eval(second)>=60){
        errAlert("时间填写有误。秒钟不能超过60秒 !");
        focusItem(objTgt);
        return false;
    }

    objTgt.value	= inDate;
}


// 判断是否是日期。(比如：2004-1-1)
function isDate(objTgt){
    var inDate=objTgt.value.trim();

    inDate	= dealSpecNum(inDate);//处理特殊的数字字符
    for(var index=0;index<2;index++){//必须处理2遍，因为replace每次找到第一个匹配的修改，然后马上中止替换
        inDate	=	inDate.replace('－','-');
        inDate	=	inDate.replace('—','-');
        inDate	=	inDate.replace('、','-');
        inDate	=	inDate.replace('/','-');
        inDate	=	inDate.replace('.','-');
        inDate	=	inDate.replace(',','-');
        inDate	=	inDate.replace('，','-');
        inDate	=	inDate.replace(' ','-');
        inDate	=	inDate.replace('　','-');
    }

    inDate	=	inDate.replace('年','-');
    inDate	=	inDate.replace('月','-');
    inDate	=	inDate.replace('日',' ');
    inDate	=	inDate.trim();

    if (inDate.length>=6 && inDate.length<=10 && inDate.indexOf("-")!=-1 && inDate.indexOf("-")!=inDate.lastIndexOf("-") && inDate.substring(inDate.indexOf("-")+1,inDate.lastIndexOf("-")).indexOf("-")==-1){
        var inYear=parseInt(inDate.substring(0,inDate.indexOf("-")));
        var inMonth=inDate.substring(inDate.indexOf("-")+1,inDate.lastIndexOf("-"));
        if (inMonth.substring(0,1)=="0" && inMonth.length>1)
            inMonth=inMonth.substring(1,inMonth.length);
        if(isNaN(inMonth)){
            errAlert("月份必须是数字！您输入的["+inMonth+"]不满足条件");
            focusItem(objTgt);
            return false;
        }
        inMonth=parseInt(inMonth);
        var inDay=inDate.substring(inDate.lastIndexOf("-")+1);
        if (inDay.substring(0,1)=="0" && inDay.length>1)
            inDay=inDay.substring(1,inDay.length);
        if(isNaN(inDay)){
            errAlert("日期必须是数字！您输入的["+inDay+"]不满足条件！");
            focusItem(objTgt);
            return false;
        }
        inDay=parseInt(inDay);

        if (inYear && !(isNaN(inYear)) && inYear.toString().length==4){
            var year=inYear;
            isLeapYear=judgeLeapYear(inYear);
        }else if(inYear.toString().length!=4){
            errAlert("对不起，系统需要四位年 !","为了保证日期存储的准确性，系统要求所有的日期输入都使用四位数字表示年份，\n可是您在 ["+objTgt.title+"] 项中没有使用四位年输入。","重新输入 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }else{
            errAlert("年份填写有误 !","","");
            focusItem(objTgt);
            return false;
        }

        if (inMonth && !(isNaN(inMonth)) && inMonth<=12 && inMonth >=1){
            var month=inMonth;
            isSmallMonth=judgeSmallMonth(inMonth);
        }else{
            errAlert("月份填写有误 !","表示月份的数字必须处于1到12之间，可是您在 ["+objTgt.title+"] 项中填写的 "+inMonth+" 显然不在这个范围内。","重新填写 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }

        if (inDay && !(isNaN(inDay)) && inDay>=1 && (month==2?(isLeapYear?inDay<=29:inDay<=28):(isSmallMonth?inDay<=30:inDay<=31))){
            var day=inDay;
        }else{
            errAlert("日期填写有误 !","表示日期的数字必须处于1到31之间，而且必须满足闰年和大小月规则，\n可是您在 ["+objTgt.title+"] 项中填写的 "+inDay+" 显然不满足要求。","重新填写 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }

        var inputDate=new Date();
        if (!(Date.parse(month + "-" + day + "-" + year))){
            errAlert("日期填写有误 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

            focusItem(objTgt);
            return false;
        }

    }else{
        errAlert("您输入的不是一个完整的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

        focusItem(objTgt);
        return false;
    }


    for(var i=0;i<inDate.length;i++){
        if((inDate.charAt(i)<'0'||inDate.charAt(i)>'9')&&inDate.charAt(i)!='-'){
            errAlert("您输入的不是一个有效的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }
    }

    objTgt.value	= inDate;
}


// 判断是否是日期，并且日期格式是否为YYYY-MM。
function isMDate(objTgt){
    var inDate=objTgt.value.trim();
    inDate	= dealSpecNum(inDate);//处理特殊的数字字符
    for(var index=0;index<2;index++){//必须处理2遍，因为replace每次找到第一个匹配的修改，然后马上中止替换
        inDate	=	inDate.replace('－','-');
        inDate	=	inDate.replace('—','-');
        inDate	=	inDate.replace('、','-');
        inDate	=	inDate.replace('/','-');
        inDate	=	inDate.replace('.','-');
        inDate	=	inDate.replace(',','-');
        inDate	=	inDate.replace('，','-');
        inDate	=	inDate.replace(' ','-');
        inDate	=	inDate.replace('　','-');
    }

    inDate	=	inDate.replace('年','-');
    inDate	=	inDate.replace('月',' ');
    inDate	=	inDate.trim();
    if (inDate.length>=6 && inDate.length<=7 && inDate.indexOf("-")!=-1 && inDate.indexOf("-")==inDate.lastIndexOf("-")){
        var inYear=parseInt(inDate.substring(0,inDate.indexOf("-")));
        var inMonth=inDate.substring(inDate.indexOf("-")+1);
        if (inMonth.substring(0,1)=="0" && inMonth.length>1)
            inMonth=inMonth.substring(1,inMonth.length);
        inMonth=parseInt(inMonth);

        if (inYear && !(isNaN(inYear)) && inYear.toString().length==4){
            isLeapYear=judgeLeapYear(inYear);
        }else if(inYear.toString().length!=4){
            errAlert("对不起，系统需要四位年 !","为了保证日期存储的准确性，系统要求所有的日期输入都使用四位数字表示年份，\n可是您在 ["+objTgt.title+"] 项中没有使用四位年输入。","重新输入 ["+objTgt.title+"] 这一项。");

            focusItem(objTgt);
            return false;
        }else{
            errAlert("年份填写有误 !","","");

            focusItem(objTgt);
            return false;
        }
        if (inMonth && !(isNaN(inMonth)) && inMonth<=12 && inMonth >=1){
            isSmallMonth=judgeSmallMonth(inMonth);
        }else{
            errAlert("月份填写有误 !","表示月份的数字必须处于1到12之间，可是您在 ["+objTgt.title+"] 项中填写的 "+inMonth+" 显然不在这个范围内。","重新填写 ["+objTgt.title+"] 这一项。");

            focusItem(objTgt);
            return false;
        }
    }else{
        errAlert("您输入的不是一个系统要求的日期值 !","为了保证日期存储的准确性，系统要求该处的日期输入都按照 YYYY-MM 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");

        focusItem(objTgt);
        return false;
    }


    for(var i=0;i<inDate.length;i++){
        if((inDate.charAt(i)<'0'||inDate.charAt(i)>'9')&&inDate.charAt(i)!='-'){
            errAlert("您输入的不是一个有效的日期值 !","为了保证日期存储的准确性，系统要求所有的日期输入都按照 YYYY-MM-DD 的格式输入，\n可是您在 ["+objTgt.title+"] 项中的输入值 ["+objTgt.value+"] 不满足输入要求。","重新输入 ["+objTgt.title+"] 这一项。");
            focusItem(objTgt);
            return false;
        }
    }
    objTgt.value	= inDate;
}

// 判断闰年。
function judgeLeapYear(yearStr){
    if(!(isNaN(yearStr)) && yearStr.toString().length==4 && (yearStr%100==0?yearStr%400==0:yearStr%4==0))
        return true;
    return false;
}

// 判断小月。
function judgeSmallMonth(monthStr){
    if(monthStr==4||monthStr==6||monthStr==9||monthStr==11)
        return true;
    return false;
}

// 是否整数。
function isInt(objNumber){
    if(!isNaN(objNumber)){
        if(Math.round(objNumber)==objNumber){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

// 使INPUT对象获取焦点。
function focusItem(objTgt){
    //objTgt.select();
    if(objTgt.style.display=="")
        objTgt.focus();
}

// 判断页面是否修改过。
// 传入要判断页面的对象 -- eForm。
// 返回值：
// true -- 曾经修改过
// false -- 没有修改过
function isModified(eForm){
    var iNumElems = eForm.elements.length;
    for (var i=0;i<iNumElems;i++){
        var eElem = eForm.elements[i];
        // 输入框是否修改。
        if ("text" == eElem.type || "TEXTAREA" == eElem.tagName){
            if (eElem.value != eElem.defaultValue) return true;
        }
        // checkBox和radioBox是否修改。
        else if ("checkbox" == eElem.type || "radio" == eElem.type){
            if (eElem.checked != eElem.defaultChecked) return true;
        }
        // select是否修改。
        else if ("SELECT" == eElem.tagName){
            var cOpts = eElem.options;
            var iNumOpts = cOpts.length;
            for (var j=0;j<iNumOpts;j++){
                var eOpt = cOpts[j];
                if (eOpt.selected != eOpt.defaultSelected) return true;
            }
        }
    }
    return false;
}





// trim()方法。
String.prototype.trim = function(){
    // 用正则表达式将前后空格用空字符串替代。
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

//处理特殊的数字：０１２３４５６７８９
function dealSpecNum(str){
    var rtnstr	= "";
    for(var i=0;i<str.length;i++){
        if(str.charAt(i)=='０')		rtnstr	+= '0';
        else if(str.charAt(i)=='１')	rtnstr	+= '1';
        else if(str.charAt(i)=='２')	rtnstr	+= '2';
        else if(str.charAt(i)=='３')	rtnstr	+= '3';
        else if(str.charAt(i)=='４')	rtnstr	+= '4';
        else if(str.charAt(i)=='５')	rtnstr	+= '5';
        else if(str.charAt(i)=='６')	rtnstr	+= '6';
        else if(str.charAt(i)=='７')	rtnstr	+= '7';
        else if(str.charAt(i)=='８')	rtnstr	+= '8';
        else if(str.charAt(i)=='９')	rtnstr	+= '9';
        else				rtnstr	+= str.charAt(i);
    }
    return rtnstr;
}

/**
 *错误信息
 */
function errAlert(errContent,errReason,errSolve){
    var errAlertString="";
    if(errContent!=""&&errContent!="undefined"){
        errAlertString="错误：\n"+errContent+"\n";
        /*
		if(errReason!=null&&errReason!="")
			errAlertString+="\n错误原因：\n"+errReason;

		if(errSolve!=null&&errSolve!="")
			errAlertString+="\n解决方法：\n"+errSolve;

		errAlertString+="\n";*/

        alert(errAlertString);

    }else{
        alert("调试期间错误 !\n\n错误内容为空 !");
    }
}


// 警告信息。
function warnAlert(warnContent){
    var warnAlertString="";

    if(warnContent!=""){
        warnAlertString="警告：\n"+warnContent+"\n";

        alert(warnAlertString);

    }else{
        alert("警告内容为空!");
    }
}

//////////////////////////////////////////////////////////////////////////////////
var bg_class = "";
function mouseOnTr(Obj) {
    bg_class = Obj.className;
    Obj.className = "tronmouse";
}
function mouseOverTr(Obj) {
    Obj.className = bg_class;
}


//比较字符串日期dt1，dt2，如果相等返回0，如果dt1在dt2之前则返回1，否则返回-1
//举例：compareDate("2003-6-1","2003-5-1") 是 1
//	compareDate("2003-05-01","2003-5-1") 是 0
//compareDate("2003-05-01 10:51:55","2003-5-1 10:51:52") 是 -1
//	compareDate("2003-03-01","2003-5-1") 是 －1
//
//如果 dt1在dt2 之后，那么 =1
function compareDate(dt1,dt2){
   try{
    var tm1 = parseDate(dt1).getTime();
    var tm2 = parseDate(dt2).getTime();
    if((tm1-tm2)>0) return 1;
    else if((tm1-tm2)==0) return 0;
    else if((tm1-tm2)<0) return -1;
 }catch(e){
    return -1;//出错
 }
}


//根据输入的日期字符串，比如“2003－1－1”，返回他的日期表示
//第一个参数是日期字符串，第二个是分隔符，是“/”，“－”,还是"."等等
function parseDate(){
    var splitChar	= "";
    if(arguments[1]==null||arguments[1]=="")splitChar	= "-";
    else	splitChar	= arguments[1];
    var dtFull	= arguments[0];
    var dt = "";
    var dt2 = "";
    if(dtFull.indexOf(" ")!=-1){
        dt = dtFull.substring(0,dtFull.indexOf(" "));
        dt2 = dtFull.substring(dtFull.indexOf(" ")+1);
    }else{
        dt = dtFull;
    }
    var year	= dt.substring(0,dt.indexOf(splitChar));
    var month	= dt.substring(dt.indexOf(splitChar)+splitChar.length,dt.lastIndexOf(splitChar));
    var day		= dt.substring(dt.lastIndexOf(splitChar)+splitChar.length);

    var hour = 0;
    var minutes = 0;
    var second = 0;
    splitChar = ":";
    if(dt2!=""){
        hour = dt2.substring(0,dt2.indexOf(splitChar));
        minutes = dt2.substring(dt2.indexOf(splitChar)+splitChar.length,dt2.lastIndexOf(splitChar));
        second = dt2.substring(dt2.lastIndexOf(splitChar)+splitChar.length);
    }


    return new Date(year,eval(month)-1,day,hour,minutes,second);
}



//控制只能数字（包括浮点数） 调用形式 ： <input onkeydown="onlyNumber(this);">
function onlyNumber(obj){
    if(event.keyCode!=190){
        if(!(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39))
            if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
                event.returnValue=false;
    }else{
        if(obj!=null){
            if((obj.value.indexOf(".")!=-1||obj.value.indexOf("。")!=-1)&&(event.keyCode==190))
                event.returnValue=false;
        }
    }
}

//只能输入整数数字  调用形式 ：<input onkeydown="onlyIntNum();">
function onlyIntNum(){
    if(!(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39))
        if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
            event.returnValue=false;
}

/*
*    formatNum(Dight,How):数值格式化函数，Dight要
*    格式化的  数字，How要保留的小数位数。
*    Example :  formatNum(1.126123,2)  = 1.13
*/
function formatNum(dight,how)
{
    dight  =  Math.round  (dight*Math.pow(10,how))/Math.pow(10,how);
    return  dight;
}

/**
 * 显示/影藏区块
 */
function showHiddenExplain(spanObj,expObjName,showVl,hiddenVl){
    if(showVl==""){
        showVl = "＋说明";
    }
    if(hiddenVl==""){
        hiddenVl = "－隐藏";
    }
    if(expObjName.style.display=="none"){
        spanObj.innerHTML = hiddenVl;
        expObjName.style.display = "";
    }else{
        spanObj.innerHTML = showVl;
        expObjName.style.display = "none";
    }
}
/*
   *  方法:Array.remove(dx)
   *  功能:删除数组元素.
   *  参数:dx删除元素的下标.
   *  返回:在原数组上修改数组
   */
//经常用的是通过遍历,重构数组.
  Array.prototype.remove=function(dx){
    if(isNaN(dx)||dx>this.length){return false;}
    for(var i=0,n=0;i<this.length;i++)
    {
        if(this[i]!=this[dx])
        {
            this[n++]=this[i]
        }
    }
    this.length-=1
  }

  /*
   *  如果数组1 array1： 0-10,10-20,20-30
   *      数组2 array2：0-15,15-20,25-30
   *
   *      那么： array1.add(0,array2[0]) 则使得 arr1为：0-25,10-20,20-30
   *
   *    @param i  :在数组的第几个节点进行替换
   *    @param vl：追加的值
   *    @param split： 分隔符  ，不填用 - 代替
   */
  Array.prototype.addVl = function(i,vl,split){
    if(split==null||split==""){
        split = "-";
    }
    var el = this[i];
    var details1 = el.split(split);
    var details2 = vl.split(split);
    this[i] = (parseInt(details1[0])+parseInt(details2[0]))+"-"+(parseInt(details1[1])+parseInt(details2[1]));
}

///////////////////////////////////////////////////
//全选,全不选功能 (和相似的名称CHECKBOX)
function checkLikeBox(checkName,obj){
var a = document.all.tags("input");
  if (a!=null){
      for (i=0; i<a.length; i++) {
        if (a(i).type=="checkbox"&&a(i).name.indexOf(checkName)!=-1&&!a(i).disabled){
             a(i).checked = obj.checked;
        }
      }
    }
}

/*截图第一张图片*/
function firstImg(infoStr,contextPath){
     var contentHtml = infoStr;
     if(!contentHtml) return ""; //如果为空则直接返回
       var re = /<img[^>]*src\s*=\s*('|")?([^'">]*)(\1|\s+|\/)([^>])*>/ig;   // 创建正则表达式模式。
       var arr; 
       while ((arr = re.exec(contentHtml)) != null){
         if(arr[2]!=null&&arr[2]!=""&&arr[2].indexOf("/xheditor_emot/")==-1&&arr[2].indexOf("/xheditor/img/")==-1)
          return arr[2];
       }
       return "";
  }

  //检测是否为有效的ISBN
  function isValidISBN (value) {
         // summary: Vadlidate ISBN-10 or ISBN-13 based on the length of value
         // returns: Boolean
        var len, sum, weight; 
        if(typeof value!='string'){
            value = String(value);
        }
        value = value.replace(/[- ]/g,''); //ignore dashes and whitespaces
        len = value.length;
        sum = 0;
        if(len == 10) {
                weight = 10;                  // ISBN-10 validation algorithm
                 for(var i = 0; i< 9; i++) {
                        sum += parseInt(value.charAt(i)) * weight;
                         weight --;
                 }
                 var t = value.charAt(9).toUpperCase();
                 sum += t == 'X' ? 10 : parseInt(t);
                 return sum % 11 == 0;
         } else if(len == 13) {
                weight = -1;                  for(var i=0; i< len; i++) {
                         sum += parseInt(value.charAt(i)) * (2 + weight);
                        weight *= -1;
                 }
                 return sum % 10 == 0;
         } else {
                 return false;
         }
  }

  /*
   *禁止输入特殊字符
   **/
  //使用方法：<input type="text" onblur="forbidCharacter(this,'<>《》');">
function forbidCharacter(obj,character){
    var patrn=eval("/[\""+character+"]/");
    if (patrn.exec(obj.value)){
            alert("抱歉，不能输入如下字符："+character);
            obj.focus();
            return;
    }
}
