function Trim(txt)
{
  if (txt == "")
    return txt;

  var txtLen = txt.length;

  for (var i=1; i<= txtLen; i++)
  {
    if (txt.substring(0, 1) == " " || txt.substring(0,1) == "　")
      txt = txt.substring(1, txt.length);
    else
      break;
  }

  for (var i=1; i <= txtLen; i++)
  {
    if (txt.substring(txt.length - 1, txt.length) == " " || txt.substring(txt.length - 1, txt.length) == "　")
      txt = txt.substring(0, txt.length - 1);
    else
      break;
  }

  return txt;
}

function FieldNonEmpty(objField, ErrMsg)
{
  var txt = Trim(objField.value);
  if (txt == "")
  {
    if (ErrMsg != null && ErrMsg != "")
    {
      alert(ErrMsg);
      objField.focus();
    }
    return false;
  }
  return true;
}

function CheckobjNonChecked(objCheck, ErrMsg)
{
  if (objCheck.value != null)
    var IsMulti = false;
  else
    var IsMulti = true;

  if (IsMulti == false)
  {
    if (objCheck.checked == false)
    {
      if (ErrMsg != null && ErrMsg != "")
        alert(ErrMsg);

      return false;
    }
  }
  else
  {
    var flg = false;
    for (var i=1; i<=objCheck.length; i++)
    {
      if (objCheck[i-1].checked == true)
      {
          flg = true;
          break;
      }
    }

    if (flg == false)
    {
      if (ErrMsg != null && ErrMsg != "")
        alert(ErrMsg);

      return false;
    }
  }

  return true;
}

function ValidateFieldError(e, o)
{
  if (e)
  {
    o.show();
    o.focus();
    return false;
  }
  else
  {
    o.hide();
    return true;
  }
}

function ValidationNumber(objStr ,ErrMsg)
{
  if (isNaN(objStr.value))
  {
    if (ErrMsg != null && ErrMsg != "")
    {
      alert(ErrMsg);
      objStr.focus();
    }

    return false;
  }
  return true;
}

function ValidateFieldMail(objMail, ErrMsg)
{
  var email = objMail.value;

  /* check 1 */
  var ret1 = true;
  reg_v = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*" ;
  var rx = new RegExp(reg_v);
  var matches = rx.exec(email);
  email_ret = (matches != null && email == matches[0]);

  if (email.length == 0 || email_ret == false)
  {
    ret1 = false;
  }

    /* check 2 */
  var ret2 = true;
  var rege = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
  if (email.length == 0 || rege.exec(email) == null)
  {
    ret2 = false;
  }

  if (!ret1 && !ret2)
  {
    if (ErrMsg != null && ErrMsg != "")
    {
      alert(ErrMsg);
      objMail.focus();
    }
    return false;
  }

  return true;
}

function ValidateFieldDate(objYYYY, objMM, objDD, ErrMsg)
{
  if (objYYYY.type == "select-one")
    var y = parseInt(objYYYY[objYYYY.selectedIndex].value, 10);
  else
    var y = parseInt(objYYYY.value, 10);

  if (objMM.type == "select-one")
    var m = parseInt(objMM[objMM.selectedIndex].value, 10);
  else
    var m = parseInt(objMM.value,10);

  if (objDD.type == "select-one")
    var d = parseInt(objDD[objDD.selectedIndex].value, 10);
  else
    var d = parseInt(objDD.value, 10);

  if (y < 1900)
  {
    y = y + 1911; // 民國年才轉為西元年
  }
  var dt = new Date(y, m, 1);
  dt.setDate(dt.getDate() - 1);
  var maxday = dt.getDate();
  if(d > maxday)
  {
    if (ErrMsg != null && ErrMsg != "")
    {
      alert(ErrMsg);
      objDD.focus();
    }
    return false;
  }

  return true;
}

function ValidateFiledBirthday(objStr, objType, Range, ErrMsg)
{
  var ChkDate = new Date();
  var age =  eval(ChkDate.getFullYear())  - eval(objStr.value);
  if(objType == 1)
  {
    if( age < eval(Range))
    {
      if (ErrMsg != "")
      {
        alert(ErrMsg)
        objStr.focus();
      }
      return false;
    }
  }

  if(objType == 2)
  {
    if( age > eval(Range))
    {
      if (ErrMsg!="")
      {
        alert(ErrMsg)
        objStr.focus();
      }
      return false;
    }
  }
  return true;
}

function StrLen(SouceStr)
{
  var totalBytes = 0 ;
  for(i = 0;i < SouceStr.length; i++)
  {
    chr = SouceStr.charCodeAt(i);
    if (chr > 256)
    {
        totalBytes+=2;
    }
    else
    {
        totalBytes++;
    }
  }
  return totalBytes;
}

function ValidateStrLen(objStr ,chkBytes ,ErrMsg)
{
  var strLen = StrLen(objStr.value);

  if (strLen > chkBytes)
  {
    if (ErrMsg != null && ErrMsg != "")
    {
      alert(ErrMsg);
      objStr.focus();
    }
    return false;
  }
  return true;
}


function check_tw_id(sId)
{
  var LegalID = "0123456789"
  var fResult = true;
  if(sId.length < 10)
    fResult=false;
  else
  {
      if((sId.charAt(0)=='A') || (sId.charAt(0)=='a')) value=10
      else if((sId.charAt(0)=='B') || (sId.charAt(0)=='b')) value=11
      else if((sId.charAt(0)=='C') || (sId.charAt(0)=='c')) value=12
      else if((sId.charAt(0)=='D') || (sId.charAt(0)=='d')) value=13
      else if((sId.charAt(0)=='E') || (sId.charAt(0)=='e')) value=14
      else if((sId.charAt(0)=='F') || (sId.charAt(0)=='f')) value=15
      else if((sId.charAt(0)=='G') || (sId.charAt(0)=='g')) value=16
      else if((sId.charAt(0)=='H') || (sId.charAt(0)=='h')) value=17
      else if((sId.charAt(0)=='J') || (sId.charAt(0)=='j')) value=18
      else if((sId.charAt(0)=='K') || (sId.charAt(0)=='k')) value=19
      else if((sId.charAt(0)=='L') || (sId.charAt(0)=='l')) value=20
      else if((sId.charAt(0)=='M') || (sId.charAt(0)=='m')) value=21
      else if((sId.charAt(0)=='N') || (sId.charAt(0)=='n')) value=22
      else if((sId.charAt(0)=='P') || (sId.charAt(0)=='p')) value=23
      else if((sId.charAt(0)=='Q') || (sId.charAt(0)=='q')) value=24
      else if((sId.charAt(0)=='R') || (sId.charAt(0)=='r')) value=25
      else if((sId.charAt(0)=='S') || (sId.charAt(0)=='s')) value=26
      else if((sId.charAt(0)=='T') || (sId.charAt(0)=='t')) value=27
      else if((sId.charAt(0)=='U') || (sId.charAt(0)=='u')) value=28
      else if((sId.charAt(0)=='V') || (sId.charAt(0)=='v')) value=29
      else if((sId.charAt(0)=='X') || (sId.charAt(0)=='x')) value=30
      else if((sId.charAt(0)=='Y') || (sId.charAt(0)=='y')) value=31
      else if((sId.charAt(0)=='W') || (sId.charAt(0)=='w')) value=32
      else if((sId.charAt(0)=='Z') || (sId.charAt(0)=='z')) value=33
      else if((sId.charAt(0)=='I') || (sId.charAt(0)=='i')) value=34
      else if((sId.charAt(0)=='O') || (sId.charAt(0)=='o')) value=35
      else fResult = false ;
      if (!(sId.charAt(1)==1||sId.charAt(1)==2))
        fResult = false ;
  }
  if(fResult==true)
  {
    value = Math.floor(value/10) + (value%10)*9 + parseInt(sId.charAt(1))*8 +
            parseInt(sId.charAt(2))*7 + parseInt(sId.charAt(3)) * 6 + parseInt(sId.charAt(4)) * 5 +
            parseInt(sId.charAt(5))*4 + parseInt(sId.charAt(6)) * 3+ parseInt(sId.charAt(7)) * 2+
            parseInt(sId.charAt(8)) + parseInt(sId.charAt(9)) ;
    value = value % 10 ;
    if(value!=0) fResult = false ;

    var i;
    var c;
    for (i = 1; i < sId.length; i++)
    {
      c = sId.charAt(i);
      if (LegalID.indexOf(c) == -1) fResult = false;
    }
  }
  if(fResult == false)
    return false;
  else
    return true;
}

function getBytesLength(SouceStr)
{
  var totalBytes = 0 ;
  for(i = 0; i < SouceStr.length; i++)
  {
    chr = SouceStr.charCodeAt(i);
    if (chr > 127)
    {
      totalBytes += 2;
    }
    else
    {
      totalBytes++;
    }
  }
  return totalBytes;
}

function check_Field_tw_id(obj,ErrMsg)
{
  if (!check_tw_id(obj.value))
  {
    if (ErrMsg != null && ErrMsg != "")
        alert(ErrMsg);
    obj.focus();
    return false;
  }
  return true;
}
