/**
*   JavaScript 的公用代码
*   editor  : dgs
*   date    : 2003-07-10
*   version : 1.0
*/

// 增加一个名为 trim 的函数作为
// String 构造函数的原型对象的一个方法。
String.prototype.trim = function()
{
    // 用正则表达式将前后空格
    // 用空字符串替代。
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

// 调用非模式对话框，长度宽度都固定
function openDialog(sURL, vArg)
{
     showModelessDialog(sURL, vArg,
         "status: no; dialogWidth: 300px; dialogHeight: 300px; help:no; center: yes; resizable: no");
}

///////////////////////////////////////////
// 目前只用于magplus项目,暂时方法
///////////////////////////////////////////

// 显示选择字典对话框
function displayChooseDictForm(inputValue, nType, strExtraCondition)
{
    var arrResult = null;
    var strURL = AddTimeStampToURL("../FrontController?statusid=SysPubCodeCmd_main_main@DICT_TYPE=" + nType + "@CONDITION_EXTRA=" + strExtraCondition);

    arrResult = showModalDialog("public/DialogFrame.jsp?strURL=" + strURL,
        "选择字典", "dialogWidth: 500px; dialogHeight: 420px; help: no; status: no");

    if (arrResult != null) {
        inputValue.value = arrResult;
    }

    //return arrResult;

}


///////////////////////////////////////////
// 右键菜单处理
///////////////////////////////////////////


// 将右键菜单定位
function locateRightMenuPosition(docBody, eventMouse, oRightMenu)
{
    var nMenuLeft = 0;
    var nMenuTop = 0;
    if (docBody.body.scrollLeft + eventMouse.x + oRightMenu.clientWidth > docBody.body.scrollWidth) {
          nMenuLeft = docBody.body.scrollLeft + eventMouse.x - oRightMenu.clientWidth;
    } else {
          nMenuLeft = docBody.body.scrollLeft + eventMouse.x;
    }
    oRightMenu.style.left = nMenuLeft < 0 ? 5 : nMenuLeft;

    if (docBody.body.scrollTop + eventMouse.y + oRightMenu.clientHeight > docBody.body.scrollHeight) {
          nMenuTop = docBody.body.scrollTop + eventMouse.y - oRightMenu.clientHeight;
    } else {
          nMenuTop = docBody.body.scrollTop + eventMouse.y;
    }

    oRightMenu.style.top = nMenuTop < 0 ? 5 : nMenuTop;

}

























///////////////////////////////////////////
// 对checkbox进行操作
///////////////////////////////////////////

// 将全部checkbox框置成选择状态或不选择状态
function selectAllCheckbox(checkboxName, chkState, strModuleName)
{
    var arrCheckbox = document.all(checkboxName);

    if (arrCheckbox == null) { return ; }

    var checkModule = null;

    if (arrCheckbox.length == null) { // only one
          checkModule = arrCheckbox.getAttribute("MODULE_NAME");
        if (strModuleName + "" == "undefined" || (checkModule != null && checkModule == strModuleName)) {
            arrCheckbox.disabled ? false : (arrCheckbox.checked = chkState);
        }
    } else {
        for (var i = 0; i < arrCheckbox.length; i ++) {
              checkModule = arrCheckbox[i].getAttribute("MODULE_NAME");
            if (strModuleName + "" == "undefined" || (checkModule != null && checkModule == strModuleName)) {
                arrCheckbox[i].disabled ? false : (arrCheckbox[i].checked = chkState);
            }
        }
    }

}

// 取checkbox为选择状态的个数
function getNumOfSelectedCheckbox(checkboxName)
{
    var arrCheckbox = document.all(checkboxName);

    if (arrCheckbox == null) { return 0; }

    var nSum = 0;

    if (arrCheckbox.length == null) { // only one
        (arrCheckbox.checked) ? nSum ++ : 0;
    } else {
        for (var i = 0; i < arrCheckbox.length; i ++) {
            (arrCheckbox[i].checked) ? nSum ++ : 0;
        }
    }

    return nSum;
}


///////////////////////////////////////////
// 对字符串进行操作
///////////////////////////////////////////

//去除字符串头尾的空格
function Trim(str){
   if(str == null) return(null);

   //去除头上的空格
   var start = 0, end = 0;   //记录字符串的起始和结束位置
   var i = 0;
   while(i < str.length){
         //判断是否为空格
         if(str.charAt(i) == ' '){
             i++;
         }else{
           start = i;
           break;
         }
   }

   // 支除尾部空格
   i = str.length - 1;
   while(i >= 0){
         //判断是否为空格
         if(str.charAt(i) == ' ') {
             i--;
         }else{
           end = i + 1;
           break;
         }
   }

   return str.substring(start,end);
}

// 将字符串转成数组, 字符串是以 chSeperator 为分隔的
function converStrToArr(str, chSeperator)
{
    return str.split(chSeperator);
}

// 将数组拼凑成字符串, 字符串是以 chSeperator 为分隔的
function converArrToStr(Arr, chSeperator)
{
    return Arr.join(chSeperator);
}

// 替换字符，用其他字符替换给定字符串中指定字符的所有匹配项。
function replaceCharacters(conversionString, inChar, outChar)
{
  var convertedString = conversionString.split(inChar);
  convertedString = convertedString.join(outChar);
  return convertedString;
}

// 检验输入的字符串是否只包含字母数字下划线,是则返回true，否则返回false
function checkCharDigital(str)
{
    var ch = '';
    if (str != null) {
        for (var i = 0; i < str.length; i ++) {
            ch = str.charAt(i);
            if (!((ch >= '0' && ch <= '9') ||
                (ch >= 'a' && ch <= 'z') ||
                (ch >= 'A' && ch <= 'Z') ||
                (ch == '_') )) {
                return false;
            }
        }
    }

    return true;
}


// 返回字符串的长度,包括中文字符的检查,一个中文字符长度为2
function checkUnicodeStrLength(str)
{
    var iLength = 0;

    var ch = ' ';
    var i = 0;
    while (!isNaN(ch)) {
        ch = str.charCodeAt(i);

        i ++;
        iLength ++;

        if (ch >= 0x80) { iLength ++; }
    }

    return iLength - 1;
}

///////////////////////////////////////////
// 检查数字
///////////////////////////////////////////

//检查是否整数, 是整数就返回TRUE
function isNumber(value)
{
    if(Trim(value)!='' && !isNaN(value) && (value.indexOf('.') == -1)) {
        return(true);
    }

    return(false);
}

// 检查数字,包括几位的小数.
// strNum : 待检查的字符串, len : 数字的长度, 0 代表没限制, prec : 小数点的位数, -1 代表没限制, bShowMsg : 是否显示错误信息,默认为 false
// 正确返回 true, 不正确返回 false,
function checkFloatNumber(strNum, len, prec, bShowMsg, strName)
{
    if (strName == null) {
        strName = "";
    } else {
        strNum = Trim(strNum);
    }

    if (strNum == "" || isNaN(strNum)) {	// 不是浮点数
        if (bShowMsg) { alert(strName + "不是数字!"); }
        return false;
    }

    if (len > 0 && strNum.length > len) { // 长度过长
        if (bShowMsg) { alert(strName + "数字长度超出限定位数!"); }
        return false;
    }

    if (prec == -1) { return true; }

    var nDotPos = strNum.indexOf('.');		// 小数点的位置
    if (nDotPos == -1) { return true; }

    if (strNum.length - nDotPos - 1 > prec) { // 小数位数过多
        if (bShowMsg) { alert(strName + "小数位数过多!  只能 " + prec + " 位."); }
        return false;
    }

    return true;
}


///////////////////////////////////////////
// 日期操作
///////////////////////////////////////////


// 取当前的日期,按yyyy-mm-dd返回
function getCurrentDateStr()
{
    var nowDate = new Date();
    var strNowDate = "";

    strNowDate += nowDate.getYear() + "-";
    if (nowDate.getMonth() < 9) {
        strNowDate += "0" + (nowDate.getMonth() + 1) + "-";
    } else {
        strNowDate += (nowDate.getMonth() + 1) + "-";
    }
    if (nowDate.getDate() < 10) {
        strNowDate += "0" + nowDate.getDate();
    } else {
        strNowDate += nowDate.getDate();
    }

    return strNowDate;
}


//
function subtrateDate(dtDate, strFlag, nDiffer)
{
    var nYear = dtDate.getYear();
    var nMonth = dtDate.getMonth();
    var nDay = dtDate.getDate();

    if (strFlag == "year") {
        nYear += nDiffer;
    } else if (strFlag == "month") {
        nMonth += nDiffer;
    } else if (strFlag == "day") {
        nDay += nDiffer;
    }

    return new Date(nYear, nMonth, nDay);

}

// return "yyyy-mm-dd"
function convertDateToStr(dtDate, strFmt)
{
    var strDate = "";

    strDate += dtDate.getYear() + "-";
    if (dtDate.getMonth() < 9) {
        strDate += "0" + (dtDate.getMonth() + 1) + "-";
    } else {
        strDate += (dtDate.getMonth() + 1) + "-";
    }
    if (dtDate.getDate() < 10) {
        strDate += "0" + dtDate.getDate();
    } else {
        strDate += dtDate.getDate();
    }

    return strDate;
}


// 对URL加上时间戳标志,以应付ShowModelDialog不刷新的问题
// 若已有时间戳，则直接返回，反之则添加
function AddTimeStampToURL(strURL)
{
    if (strURL == null || strURL == "" || strURL.indexOf("ADD_TIMESTAMP=") != -1) {
        return strURL;
    }

    var 	longNow = (new Date()).getTime();

    if (strURL.indexOf("?") == -1) {
        strURL += "?ADD_TIMESTAMP=" + longNow;
    } else {
        strURL += "&ADD_TIMESTAMP=" + longNow;
    }

    return strURL;
}


///////////////////////////////////////////
// 按格式检查各种情况
///////////////////////////////////////////

//检查数据类型
//@return true:符合要求 false:不符合要求
function PublicCheck()
{
  var inputs = document.all.tags("input");
  var dataType = null;
  var disName  = null;
  var dataCanNull = null;

  //遍历所有的INPUT
  for(var i=0;i<inputs.length;i++){
       //如果字段被隐藏，将不做检查
       if(inputs[i].style.visibility == "hidden") continue;

       //无效字段也不检查
       if(inputs[i].disabled) continue;

       // 字段可以为空
       dataCanNull = inputs[i].getAttribute("DATACANNULL");
       if (dataCanNull != null && dataCanNull == 'yes') {
           if (inputs[i].value == "") {
               continue;
          }
       }

       disName = inputs[i].getAttribute("DISNAME");
        if(disName == null){
            disName = inputs[i].name;
        }

       //检查包括中文字符串的最大长度是否超出
       var iInputMaxLength = inputs[i].getAttribute("maxlength");
       var iInputValueLength = checkUnicodeStrLength(inputs[i].value);
       if (iInputValueLength > iInputMaxLength) {
           alert(disName + '输入过长!\n最大长度限定为 : ' + iInputMaxLength + ', 当前长度为 : ' + iInputValueLength);
           inputs[i].focus();
           return (false);
       }

     dataType = inputs[i].getAttribute("DATATYPE");    //获得数据类型

     if(dataType!=null){
          //获得提示的名称
          /*
          disName = inputs[i].getAttribute("DISNAME");
          if(disName == null){
              disName = inputs[i].name;
          }
          */

         if(dataType == 'number'){
             if(!isNumber(inputs[i].value)||Trim(inputs[i].value)==''){
                 alert(disName + ' 必须为整数-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //判断是否是非负数
             if((0-inputs[i].value)>0){
                 alert(disName + ' 必须为非负-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'num' && inputs[i].value!=''){
             if(!isNumber(inputs[i].value)){
                 alert(disName + ' 必须为整数-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //判断是否是非负数
             if((0-inputs[i].value)>0){
                 alert(disName + ' 必须为非负-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'number_null' && inputs[i].value!=''){
             if(!isNumber(inputs[i].value)){
                 alert(disName + ' 必须为整数-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //判断是否是非负数
             if((0-inputs[i].value)>0){
                 alert(disName + ' 必须为非负-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'deganumber'){
             if(!isNumber(inputs[i].value)||Trim(inputs[i].value)==''){
                 alert(disName + ' 必须为整数-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'float_null' && inputs[i].value!=''){
             if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
                 alert(disName + ' 必须为数字-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //判断是否是非负数
             if(0 > parseFloat(inputs[i].value)){
                 alert(disName + ' 必须为非负-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'float'){
             if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
                 alert(disName + ' 必须为数字-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //判断是否是非负数
             if(0 > parseFloat(inputs[i].value)){
                 alert(disName + ' 必须为非负-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'degafloat'){   //可以为负数
             if(isNaN(inputs[i].value)||Trim(inputs[i].value)==''){
                 alert(disName + ' 必须为数字-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'not null'){
             if(Trim(inputs[i].value) == ''){
                 alert(disName + ' 不能为空值');
                 return(false);
             }
         }else if(dataType == 'indentifier'){
             if(Trim(inputs[i].value) == ''){
                 alert(disName + ' 不能为空值');
                 return(false);
             }
             if(!checkCharDigital(inputs[i].value)){
                 alert(disName + ' 只能包括字母,数字,下划线.');
                 return(false);
             }
         }else if(dataType == 'indentifierNull'){
             if(!checkCharDigital(inputs[i].value)){
                 alert(disName + ' 只能包括字母,数字,下划线.');
                 return(false);
             }
         }else if(dataType == 'datetype'){
             if(dateCheck(inputs[i].value) != 0){
                 alert(disName + ' 必须为日期类型(yyyy-mm-dd)-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'email'){
             if(!emailCheck(inputs[i].value)){
                 alert(disName + ' 必须为邮箱格式-现在为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'timetype'){
             if(timeCheck(inputs[i].value) != 0){
                 alert(disName + ' 必须为时间类型(hh:mm,hh:mm:ss)-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'iptype'){
             if(!ipCheck(inputs[i].value)){
                 alert(disName + ' 必须为IP类型(0.0.0.0, 255.255.255.255)-现在的值为：' + inputs[i].value);
                 return(false);
             }
         }else if(dataType == 'MINMAXNUMBER'){     //设置了最大最小值的整数
            if(!isNumber(inputs[i].value)){
                 alert(disName + ' 必须为整数-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //获得允许的最大值和最小值
             var minValue = inputs[i].getAttribute("MINVALUE");
             var maxValue = inputs[i].getAttribute("MAXVALUE");
             var t_value  = eval(inputs[i].value);

             //检查最小值
             if(minValue != null){
                 if(t_value < eval(minValue)){
                     alert(disName + ' 必须大于' + minValue + '-现在的值为：' + inputs[i].value);
                     return(false);
                 }
             }

             if(maxValue != null){
                 if(t_value > eval(maxValue)){
                     alert(disName + ' 必须小于' + maxValue + '-现在的值为：' + inputs[i].value);
                     return(false);
                 }
             }
         }else if(dataType == 'MINMAXFLOAT'){     //设置了最大最小值的整数
            if(!checkFloatNumber(inputs[i].value,0,2,true,disName)){
                 //alert(disName + ' 必须为浮点数-现在的值为：' + inputs[i].value);
                 return(false);
             }
             //获得允许的最大值和最小值
             var minValue = inputs[i].getAttribute("MINVALUE");
             var maxValue = inputs[i].getAttribute("MAXVALUE");
             var t_value  = eval(inputs[i].value);

             //检查最小值
             if(minValue != null){
                 if(t_value < eval(minValue)){
                     alert(disName + ' 必须大于等于' + minValue + '-现在的值为：' + inputs[i].value);
                     return(false);
                 }
             }

             if(maxValue != null){
                 if(t_value > eval(maxValue)){
                     alert(disName + ' 必须小于等于' + maxValue + '-现在的值为：' + inputs[i].value);
                     return(false);
                 }
             }
         }
     }
  }

  var selects = document.all.tags('select');
  //遍历所有的select
  for(var i=0;i<selects.length;i++){
      disName = selects[i].getAttribute("DISNAME");
     if(selects[i].value=='bad'||selects[i].value=='BAD'){
             alert(disName+'下拉列表框的值必须被选择');
             return(false);
     }
  }
  return(true);
}


// IP地址的合法性检查
function ipCheck(ip)
{
    ip = Trim(ip.toString());
    var arrSect = converStrToArr(ip, '.');
    if (arrSect.length != 4) {
        return false;
    }

    var nSect = 0;
    for (var i = 0; i < arrSect.length; i ++) {
        if (!isNumber(arrSect[i])) {
            return false;
        }

        nSect = eval(arrSect[i]);
        if (nSect < 0 || nSect > 255) {
            return false;
        }
    }

    return true;
}


//电话号码的合法性检查
function telCheck(tel)
{
    var num= Trim(tel.toString());
    var ch = '';

    if (num == "")
        return true;

    // 电话号码只能由以下字符组成：0..9、-、(、)
   for(var i =0;i<num.length;i++)
   {
     ch = num.substr(i, 1);   // 检查每个字符
     // 电话号码开头不能是：-、)
     if (i == 0 && ((ch == '-') || (ch == ')')))
        return false;
     // 电话号码结尾只能是：0..9
     if (i == num.length - 1 && ((ch < '0') || (ch > '9')))
        return false;

     if (ch < '0' || ch > '9')
     {
        if (ch != '-' && ch != '(' && ch != ')')
            return false;
     }

   }

    return true;
}

// 手机号码检查，只能全部是数字
function mobileCheck(mbl)
{
    return postCheck(mbl);
}

// 邮政编码检查，只能全部是数字
function postCheck(pz)
{
    var num = Trim(pz.toString());
    var ch = '';

    if (num == "") {
        return true;
    }

    for (var i = 0; i < num.length; i ++)
    {
        ch = num.substr(i, 1);   // 检查每个字符
        if (ch < '0' || ch > '9')
            return false;
    }

    return true;
}


//Email的合法性检查
function emailCheck(eml)
{   var num= Trim(eml.toString());
   if(num!=""){
     if((num.indexOf("@")==-1)||(num.indexOf("@")==0)||(num.indexOf(".")==0)||(num.indexOf(".")==-1))
        {return false;}
     else  if((num.indexOf("@")==num.length-1 )||(num.indexOf(".")==num.length-1))
      {return false;}
    }
   return true;
 }

// HomePage的合法性检查
function homepageCheck(homepg)
{
    var num = Trim(homepg.toString());

    if (num != "")
    {
        if (num.indexOf(".") == -1)
            return false;
    }

    return true;
}

// 日期的合法性检查，格式只能是 yyyy-mm-dd，合法返回0，不合法返回负数
function dateCheck(dat)
{
    var num = Trim(dat.toString());

    if (num != "") { // 不为空，开始检测
        if (num.length != 10)  {  // 长度不对
            return -1;
        }
        if (num.substring(4, 5) != "-" || num.substring(7, 8) != "-") { // 分隔符不对
            return -2;
        }
        if (!isNumber(num.substring(0, 4)) || !isNumber(num.substring(5, 7)) ||!isNumber(num.substring(8, 10))) {
            // 不是数字
            return -3;
        }
        if (eval(num.substring(0, 4)) < 1900) { // 年份不对
            return -4;
        }
        if (eval(num.substring(5, 7)) < 1 || eval(num.substring(5, 7)) > 12) { // 月份不对
            return -5;
        }
        if (eval(num.substring(8, 10)) < 1 || eval(num.substring(8, 10)) > 31) { // 天数不对
            return -6;
        }

    }

    return 0;

}

// 时间的合法性检查，格式只能是 hh:mm 或 hh:mm:ss，合法返回0，不合法返回负数
function timeCheck(tim)
{
    var num = Trim(tim.toString());

    if (num != "") { // 不为空，开始检测
        if (num.length == 5) { // 检查格式为 hh:mm
            if (num.substring(2, 3) != ":") { // 分隔符不对
                return -2;
            }
            if (!isNumber(num.substring(0, 2)) || !isNumber(num.substring(3, 5))) {
                // 不是数字
                return -3;
            }
            if (eval(num.substring(0, 2)) < 0 || eval(num.substring(0, 2)) > 23) { // 小时不对
                return -4;
            }
            if (eval(num.substring(3, 5)) < 0 || eval(num.substring(3, 5)) > 59) { // 分钟不对
                return -5;
        }
        } else if (num.length == 8) { // 检查格式为 hh:mm:ss
            if (num.substring(2, 3) != ":" || num.substring(5, 6) != ":") { // 分隔符不对
                return -2;
            }
            if (!isNumber(num.substring(0, 2)) || !isNumber(num.substring(3, 5)) || !isNumber(num.substring(6, 8))) {
                // 不是数字
                return -3;
            }
            if (eval(num.substring(0, 2)) < 0 || eval(num.substring(0, 2)) > 23) { // 小时不对
                return -4;
            }
            if (eval(num.substring(3, 5)) < 0 || eval(num.substring(3, 5)) > 59) { // 分钟不对
                return -5;
        }
            if (eval(num.substring(6, 8)) < 0 || eval(num.substring(6, 8)) > 59) { // 秒数不对
                return -6;
        }
        }  else {   // 长度不对
            return -1;
        }

    }

    return 0;

}


//检查证件号码
function checkCertificate(certificateID)
{
    // no check for the unknown format exist. // edit by dgs, in 2003-01-13
    return true;

    certificateID=Trim(certificateID);
    var length=certificateID.length;
    //生日
    if(length<10)
    {
        alert('你输入的出生日期格式不正确！输入格式应该为“年年年年-月月-日日“！');
        return false;
    }
    else if(length==10)
    {
        if (certificateID.substring(4, 5)!="-" || certificateID.substring(7, 8)!= "-")
        {
            alert('你输入的出生日期格式不正确！输入格式应该为“年年年年-月月-日日“！');
            return false;
        }
        var year=certificateID.substring(0,4);
        var month=certificateID.substring(5,7);
        var day=certificateID.substring(8,10);

        var datestr = year+month+day;

        for(var i =0;i<datestr.length;i++)
        {
            var c=datestr.charAt(i);
            if(c <'0'||c>'9')
            {
                alert('你输入的出生日期格式不正确！输入格式应该为“年年年年-月月-日日“！');
            return false;
            }
        }
        year=parseInt(year);
        month=parseInt(month);
        day=parseInt(day);
        if(year<1900||year>2100)
        {
            alert('你输入的出生日期的年份不正确！');
            return false
        }
        else if(month<0||month>12)
        {
            alert('你输入的出生日期的月份不正确！');
            return false
        }
        else if(day<0||day>31)
        {
            alert('你输入的出生日期的日不正确！');
            return false
        }
        return true;

    }
    else if(length==15)
    {
        for(var i =0;i<certificateID.length;i++)
        {
            var c=certificateID.charAt(i);
            if(c < '0'||c>'9')
            {
                alert('你输入的身份证号码包含非法字符！');
                return false
            }
        }
        var year=certificateID.substring(6,8);
        var month=certificateID.substring(8,10);
        var day=certificateID.substring(10,12);
        year=parseInt(year);
        month=parseInt(month);
        day=parseInt(day);
        if(year<0||year>99)
        {
            alert('你输入的身份证号码的年份不正确！');
            return false
        }
        else if(month<0||month>12)
        {
            alert('你输入的身份证号码的月份不正确！');
            return false
        }
        else if(day<0||day>31)
        {
            alert('你输入的身份证号码的日不正确！');
            return false
        }
        return true;

    }
    else if(length==18)
    {
        certificateID=certificateID.substring(0,17);
        for(var i =0;i<certificateID.length;i++)
        {
            var c=certificateID.charAt(i);
            if(c < '0'||c>'9')
            {
                alert('你输入的身份证号码包含非法字符！');
                return false
            }
        }
        var year=certificateID.substring(6,10);
        var month=certificateID.substring(10,12);
        var day=certificateID.substring(12,14);
        year=parseInt(year);
        month=parseInt(month);
        day=parseInt(day);
        if(year<1900||year>2100)
        {
            alert('你输入的身份证号码的年份不正确！');
            return false
        }
        else if(month<0||month>12)
        {
            alert('你输入的身份证号码的月份不正确！');
            return false
        }
        else if(day<0||day>31)
        {
            alert('你输入的身份证号码的日不正确！');
            return false
        }
        return true;
    }
    else
    {
        alert('你输入的证件号码位数不正确！');
        return false;
    }
}





///////////////////////
/// 这一部分是对树进行操作的
//////////////////////

// 检查变动后的父ID,是否为自身或下级ID,是则返回true，
// 输入：树的所有节点ID，相对应的父节点ID，节点自身ID，节点新父ID
function checkBeSelfOrLower(treeNodeIDs, treeNodePIDs, selfID, newPID)
{
    if (newPID == selfID) {	// 新父ID为自身
        return true;
    }

    // 反溯节点的父节点
    var PID = newPID;
    while (true) {
        PID = getParentNodeOnTree(treeNodeIDs, treeNodePIDs, PID);
        if (PID == "-1") {
            break;
        }
        if (selfID == PID) {    // 找到，表明是下级
            return true;
        }
    }

    return false;
}

// 反溯节点的父节点，如果父节点为根或找不到，返回"-1"
function getParentNodeOnTree(treeNodeIDs, treeParentIDs, nodeID)
{
    for (var i = 0; i < treeNodeIDs.length; i ++) {
        if (nodeID == treeNodeIDs[i]) {
            return treeParentIDs[i];
        }
    }

    return "-1";
}

// 检查节点是否叶子,是则返回true
function checkBeLeaf(treeNodeIDs, treeNodePIDs, nodeID)
{
    // 如果节点的PID数组中没有该节点,就表明是叶子
    for (var i = 0; i < treeNodePIDs.length; i ++) {
        if (nodeID == treeNodePIDs[i]) {
            return false;
        }
    }

    return true;
}
function listDel(){
    var pk = document.all("pk");
    var ok = false;
    if(pk==null){
        return false;
    }else if(pk.length+''=='undefined'){
        if(pk.checked){
            return true;
        }
    }else{
        for(i=0;i<pk.length;i++){
            if(pk[i].checked){
                return true;
            }
        }
    }
    return false;

}
///////////////////////

