//??????????????????
function RadioChecked(radio_name,radio_value) {
    var doc_radio_value=null;
    eval("doc_radio_value=document.getElementsByName('"+radio_name+"');");
    for(var i=0;i<doc_radio_value.length;i++) 
     { 
      if(doc_radio_value[i].value==radio_value) 
        {
         doc_radio_value[i].checked=true
         break; 
        } 
     }
}

function  getRadioValue(radio_name)
    {   
        var doc_radio_value=null;
        eval("doc_radio_value=document.getElementsByName('"+radio_name+"');");
        var radio_value="";
        for(var i=0;i<doc_radio_value.length;i++) 
          { 
          if(doc_radio_value[i].checked==true) 
            { 
             radio_value=doc_radio_value[i].value; 
             break; 
            } 
          } 
        return radio_value;
    }
    
//??????????????????
function isSpace(str) {
    var len = str.length;

    for(var i=0; i< len; i++) {
        temp = str.substring(i,i+1);
        if (temp != " ") {
            return false;
        }
    }
    return true;
}


//??????????????????
function isNum(str) {
    
    var len = 0;
    len = str.length;
    var i = 0;
    for( i=0; i< len; i++) {
        temp = str.substring(i,i+1);
        if (temp >="0" && temp<="9") {
            continue;
        }
        else {
            return false;
        }
    }
    return true;
}

//??????????"????.????"??????
function isPrice(str) {
    var len = 0;
    len = str.length;
    var i = 0;
    var count = 0;
    for( i=0; i< len; i++) {
        temp = str.substring(i,i+1);
        if (temp == "." && count<1) {
            count++;
            continue;
        }
        else if (temp >="0" && temp<="9") {
            continue;
        }
        else {
            return false;
        }
    }
    return true;
}

//????Email????????
function isEmailOld(str) {
    var len = 0;
    len = str.length;
    if (len<5) {
        return false;
    }
    else if (str.indexOf("@") <2) {
        return false;
    }
    return true;

}


/* -- ????????????(YYYY-MM-DD)?????????????? -- */
function Date_Compare(asStartDate,asEndDate){
    var miStart = Date.parse(asStartDate.replace(/\-/g, '/'));
    var miEnd = Date.parse(asEndDate.replace(/\-/g, '/'));
    return (miEnd-miStart)/(1000*24*3600);
}
 /*-- ??????????????(YYYY-MM-DD)?????????????? -- */
function Date_istrue(asDate){
    var lsDate = asDate + "";
    var loDate = lsDate.split("-");
    if (loDate.length!=3) return false;
    if (isNaN(loDate[0])||isNaN(loDate[1])||isNaN(loDate[2])) return false;

    if (loDate[0].substring(0,1) == "0" && loDate[0].length>=2) {
        loDate[0] = loDate[0].substring(1,2);
    }
    if (loDate[1].substring(0,1) == "0" && loDate[1].length>=2) {
        loDate[1] = loDate[1].substring(1,2);
    }
    if (loDate[2].substring(0,1) == "0" && loDate[2].length>=2) {
        loDate[2] = loDate[2].substring(1,2);
    }


    var liYear = parseInt(loDate[0]);
    var liMonth = parseInt(loDate[1]);
    var liDay = parseInt(loDate[2]);
    if ((loDate[0].length>4)||(loDate[1].length>2)||(loDate[2].length>2)) return false;

    //if (isNaN(liYear)||isNaN(liMonth)||isNaN(liDay)) return false;
    if ((liYear<1900)||(liYear>3000)) return false;
    if ((liMonth>12)||(liMonth<=0)) return false;
    if ((liDay>31) || (liDay<=0)) return false;

    if (Date_getDay(liYear,liMonth)<liDay) return false;
    return !isNaN(Date.UTC(liYear,liMonth,liDay));
}

 /*-- ??????????????????-- */
function Date_getDay(aiYear,aiMonth){
    var loDay = [0,31,28,31,30,31,30,31,31,30,31,30,31];
    if((aiYear%4==0&&aiYear%100!=0)||(aiYear%400==0)) loDay[2] = 29;
    return loDay[aiMonth];
}

/*---????????????????disable-----------*/
function DisableAll(form) {
    var i=0;
    for (i=0;i<form.elements.length;i++)   {
        if (form.elements[i].type == "submit" || form.elements[i].type == "button") {
            form.elements[i].disabled = true;
        }
    }
}

/////////????????????str????????????????????????????????????????????true??????false
function isFileCanUpload(str) {
    str=str.toLowerCase();
    var lens=str.length;
    var exename=str.substring(lens-4,lens);
    if  ((exename==".exe" ) || (exename==".dll")
         || (exename==".jsp" ) || (exename==".asp" )
         || (exename==".cab" ) || (exename==".ini" )
         || (exename==".ocx" ) || (exename==".html")
         || (exename==".bat" ) || (exename==".htm"))
    {
        alert("??????????????????????????????");
        return false;
    }
    return true;
}

function AddItem(f,t) {
    for (var i=0;i<f.length;i++){
        if (f.options[i].selected){
            t.options[t.length]=new Option(f.options[i].text,f.options[i].value);
        }
    }
    for (var i=f.length-1;i>-1;i--){
        if (f.options[i].selected){
            f.options[i]=null;
        }
    }
}

function AItem(f,t) {
    for(i=0;i<f.options.length;i++) {
        f.options(i).selected=true;
    }

    for(i=0;i<f.options.length;i++) {
        var oOption = document.createElement("OPTION");
        oOption.text=f.options(i).text;
        oOption.value=f.options(i).value;
        t.add(oOption);
    }
    for (var i=f.length-1;i>-1;i--) {
        if (f.options[i].selected) {
            f.options[i]=null;
        }
    }
}
//////////////????
function SelectAll(field) {
    for (var i=0;i<field.length;i++){
        field.options[i].selected=true;
    }
}

/////////////????????????
function Win_UserSelect(obj_id,obj_name) {
    var url = "../../share/select/win_user.jsp?obj_id="  + obj_id + "&obj_name=" + obj_name;
    userWin = window.open(url ,'','left=120,top=120, scrollbars=no,resizable=no,status=no,width=280,height=380');
}

 //?????????
 function vErr(o,s){
  alert(s);
  try{
  if (!o.readOnly) o.focus();
  }
  catch(E){}
  return false;
 }
 
 //????????
 function isCheckeWorkFlow(){
   var workFlow = document.getElementById("FYLS");
   if(!workFlow)return true;
   if(workFlow.value==""){
    return vErr(workFlow,"流程不能为空！");
   }
   return true;
 }
 
 /*********************************************************************************
 * FUNCTION:  isBetween
 * PARAMETERS:  val  AS any value
 *     lo  AS Lower limit to check
 *     hi  AS Higher limit to check
 * CALLS:   NOTHING
 * RETURNS:  TRUE if val is between lo and hi both inclusive, otherwise false.
 **********************************************************************************/
 function isBetween (val, lo, hi) {
  if ((val < lo) || (val > hi)) { return(false); }
  else { return(true); }
 }

 /*********************************************************************************
 * FUNCTION:  isDate checks a valid date
 * PARAMETERS:  theStr  AS String
 * CALLS:   isBetween, isInt
 * RETURNS:  TRUE if theStr is a valid date otherwise false.
 **********************************************************************************/
 function isDate (theStr) {
  var the1st = theStr.indexOf('-');
  var the2nd = theStr.lastIndexOf('-');
  
  if (the1st == the2nd) { return(false); }
  else {
   var y = theStr.substring(0,the1st);
   var m = theStr.substring(the1st+1,the2nd);
   var d = theStr.substring(the2nd+1,theStr.length);
   var maxDays = 31;
   
   if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {
    return(false); }
   else if (y.length < 4) { return(false); }
   else if (!isBetween (m, 1, 12)) { return(false); }
   else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;
   else if (m==2) {
    if (y % 4 > 0) maxDays = 28;
    else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;
   else maxDays = 29;
   }
   if (isBetween(d, 1, maxDays) == false) { return(false); }
   else { return(true); }
  }
 }
 /********************************************************************************
 *   FUNCTION:       Compare Date! Which is the latest!
 *   PARAMETERS:     lessDate,moreDate AS String
 *   CALLS:          isDate,isBetween
 *   RETURNS:        TRUE if lessDate<moreDate
 *********************************************************************************/
 function isComdate (lessDate , moreDate)
 {
  if (!isDate(lessDate)) { return(false);}
  if (!isDate(moreDate)) { return(false);}
  var less1st = lessDate.indexOf('-');
  var less2nd = lessDate.lastIndexOf('-');
  var more1st = moreDate.indexOf('-');
  var more2nd = moreDate.lastIndexOf('-');
  var lessy = lessDate.substring(0,less1st);
  var lessm = lessDate.substring(less1st+1,less2nd);
  var lessd = lessDate.substring(less2nd+1,lessDate.length);
  var morey = moreDate.substring(0,more1st);
  var morem = moreDate.substring(more1st+1,more2nd);
  var mored = moreDate.substring(more2nd+1,moreDate.length);
  var Date1 = new Date(lessy,lessm,lessd);
  var Date2 = new Date(morey,morem,mored);
  if (Date1>Date2) { return(false);}
   return(true);
   
 }

 /*********************************************************************************
 * FUNCTION isEmpty checks if the parameter is empty or null or ""
 * PARAMETER str  AS String
 **********************************************************************************/
 function isEmpty (str) {
     if ((str==null)||(str.length==0)||(str=="")) return true;
     else return(false);
 }


 /*********************************************************************************
 * FUNCTION isAllEmpty checks if all the character is empty or null
 * PARAMETER str  AS String
 **********************************************************************************/
 function isAllEmpty (str)
  {
  if ((str==null)||(str.length==0)) return true;
  else
   {
   for (var i=0; i<str.length; i++)
    {
    if (str.substring(i,i+1)!=" ") return false;
    }
   return true
   }
  }

 /*********************************************************************************
 * FUNCTION:  isInt
 * PARAMETER:  theStr AS String
 * RETURNS:  TRUE if the passed parameter is an integer, otherwise FALSE
 * CALLS:   isDigit
 **********************************************************************************/
 function isInt (theStr) {
  var flag = true;

  if (isEmpty(theStr)) { flag=false; }
  else
  { for (var i=0; i<theStr.length; i++) {
    if (isDigit(theStr.substring(i,i+1)) == false) {
     flag = false; break;
    }
   }
  }
  return(flag);
 }

 /*********************************************************************************
 * FUNCTION:  isReal
 * PARAMETER: heStr AS String
          decLen AS Integer (how many digits after period)
 * RETURNS:  TRUE if theStr is a float, otherwise FALSE
 * CALLS:   isInt
 **********************************************************************************/
 function isReal (theStr, decLen) {
  var dot1st = theStr.indexOf('.');
  var dot2nd = theStr.lastIndexOf('.');
  var OK = true;
  if (isEmpty(theStr)) return false;

  if (dot1st == -1) {
   if (!isInt(theStr)) return(false);
   else return(true);
  }
  else if (dot1st != dot2nd) return (false);
  else if (dot1st==0) return (false);
  else {
   var intPart = theStr.substring(0, dot1st);
   var decPart = theStr.substring(dot2nd+1);

   if (decPart.length > decLen) return(false);
   else if (!isInt(intPart) || !isInt(decPart)) return (false);
   else if (isEmpty(decPart)) return (false);
   else return(true);
  }
 }

 /*********************************************************************************
 * FUNCTION:  isEmail
 * PARAMETER:  String (Email Address)
 * RETURNS:  TRUE if the String is a valid Email address
 *     FALSE if the passed string is not a valid Email Address
 * EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com
 *     @ sign can appear only once in the email address.
 *********************************************************************************/
 function isEmail (theStr) {
  var atIndex = theStr.indexOf('@');
  var dotIndex = theStr.indexOf('.', atIndex);
  var flag = true;
  theSub = theStr.substring(0, dotIndex+1)

  if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length))
  { return(false); }
  else { return(true); }
 }
 /*********************************************************************************
 * FUNCTION:  newWindow
 * PARAMETERS:  doc   -> Document to open in the new window
      hite  -> Height of the new window
      wide  -> Width of the new window
      bars -> 1-Scroll bars = YES 0-Scroll Bars = NO
      resize  -> 1-Resizable = YES 0-Resizable = NO
 * CALLS:   NONE
 * RETURNS:  New window instance
 **********************************************************************************/
 function newWindow (doc, wide, hite, bars, resize) {
  var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
  var l = Math.floor((screen.width-wide)/2);
  var t = Math.floor((screen.height-hite)/2);
  opt+=("scrollbars="+bars+",");
  opt+=("resizable="+resize+",");
  opt+=("width="+wide+",");
  opt+=("height="+hite+",");
  opt+=("top="+t+",");
  opt+=("left="+l);
  winHandle=window.open(doc,'',opt);
  return;
 }

 //?????0-9?????
 function isDigit(s)
 {
  var patrn=/^[0-9]{1,20}$/;
  if (!patrn.exec(s)) return false
  return true
 }
 

