﻿// JScript File
function ICvalidation(strICNum)
  {
      //var strICNum=$("#"+'<%Response.Write(ic.ClientID); %>').val();
      if (strICNum.length != 9)
       {
          alert("-Invalid IC Number!");
          return false;
       }

     // Convert to upper-case
        strICNum.toUpperCase();
        
        var chPrefix;
        var chPostfix;
        var chVal;
        var nTotal;
        var nTemp;
        var d=new Array(7);

        // Read in the digits
        for (var i=0;i<7;i++)
        {
          d[i] = strICNum.charAt(i + 1) - '0';
        }

        // Calculate total
        nTotal = d[0] * 2 + d[1] * 7 + d[2] * 6 + d[3] * 5 + d[4] * 4 + d[5] * 3 + d[6] * 2;

        chPrefix = strICNum.charAt(0);
        chPostfix = strICNum.charAt(8);

        nTemp = 0;
        while (nTotal % 11 != 0)
        {
            nTemp++;
            nTotal++;
        }

        if (chPrefix == 'F')
        {
            switch (nTemp)
            {
                case 1:chVal = 'K';break;
                case 2:chVal = 'L';break;
                case 3:chVal = 'M';break;
                case 4:chVal = 'N';break;
                case 5:chVal = 'P';break;
                case 6:chVal = 'Q';break;
                case 7:chVal = 'R';break;
                case 8:chVal = 'T';break;
                case 9:chVal = 'U';break;
                case 10:chVal = 'W';break;
                case 11:chVal = 'X';break;
            };
        }
        else if (chPrefix == 'S')
        {
            switch (nTemp)
            {
                case 1:chVal = 'A';break;
                case 2:chVal = 'B';break;
                case 3:chVal = 'C';break;
                case 4:chVal = 'D';break;
                case 5:chVal = 'E';break;
                case 6:chVal = 'F';break;
                case 7:chVal = 'G';break;
                case 8:chVal = 'H';break;
                case 9:chVal = 'I';break;
                case 10:chVal = 'Z';break;
                case 0:chVal = 'J';break;
            };
        }
        else if (chPrefix == 'T')
        {
            switch (nTemp)
            {
                case 1:chVal = 'H';break;
                case 2:chVal = 'I';break;
                case 3:chVal = 'Z';break;
                case 4:chVal = 'J';break;
                case 5:chVal = 'A';break;
                case 6:chVal = 'B';break;
                case 7:chVal = 'C';break;
                case 8:chVal = 'D';break;
                case 9:chVal = 'E';break;
                case 10:chVal = 'F';break;
                case 0:chVal = 'G';break;
            };
        }
        else if (chPrefix == 'G')
        {
            switch (nTemp)
            {
                case 1:chVal = 'T';break;
                case 2:chVal = 'U';break;
                case 3:chVal = 'W';break;
                case 4:chVal = 'X';break;
                case 5:chVal = 'K';break;
                case 6:chVal = 'L';break;
                case 7:chVal = 'M';break;
                case 8:chVal = 'N';break;
                case 9:chVal = 'P';break;
                case 10:chVal = 'Q';break;
                case 0:chVal = 'R';break;
            };
        }
    else
    {
       alert("-Invalid IC Number!");
       return false;
    }

    if (chPostfix == chVal)
    {
        return true;
    }
    else
    {
      alert("-Invalid IC Number!");
      return false;
    }
    return true;
  }

