// Global Functions
function radioVal(obj) {
	var retVal;
	for (var i=0;i<obj.length;i++) {
		if (obj[i].checked) {
			retVal = obj[i].value;
			break;
		}
	}
	return retVal;
}

function selectVal(obj) {
	var retVal;
	retVal = obj.options[obj.selectedIndex].value;
	return retVal;
}

function CheckVal(obj) {
	var retVal;
	if (obj.checked)
		retVal = obj.value;
	return retVal;
}

function setCheck(val, obj) {
	if (val)
		obj.checked = true;
}

function indexMatch(obj, toFind) {
	var retVal = -1
	for(var i = 0; i < obj.length; i++) if (obj[i].value == toFind) {
		retVal = i
		break;
	}
	return retVal;
}

function IsEmpty(szFieldName) {
   var i; var ch;
   TrimField(szFieldName);
   if (szFieldName.value == "")	return true;
   if (parseInt(szFieldName.value.length) == 0) return true;
   for (i=0; i<parseInt(szFieldName.value.length); i++) {
     ch = szFieldName.value.charAt(i);
     if (ch != ' ' && ch != '\t')
       return false;
   }
   return true;
}

function IsNumeric(szFieldName) {
	var i; var IsNum; var ch;

	IsNum=true;
	TrimField(szFieldName);
	for(i=0; i<parseInt(szFieldName.value.length); i++) {
		ch=szFieldName.value.charAt(i);
		if ((ch >= "0") && (ch <= "9"))
			IsNum= true;
		else
			return false;
	}
	return IsNum;
}

function IsDecimal(szFieldName) {
	var i; var IsDec; var ch;

	IsDec=true;
	TrimField(szFieldName);
	for(i=0; i<parseInt(szFieldName.value.length); i++) {
		ch=szFieldName.value.charAt(i);
		if ((ch >= "0") && (ch <= "9"))
			IsDec= true;
		else if (((ch == ".") || (ch == ",")) && (i>0) && (i<parseInt(szFieldName.value.length)-1))
			IsDec = true;
		else
			return false;
	}
	return IsDec;
}

function IsTelcoNum(szFieldName) {
	var i; var IsNum; var ch;

	IsNum=true;
	TrimField(szFieldName);
	for (i=0; i<parseInt(szFieldName.value.length); i++) {
		ch=szFieldName.value.charAt(i);
		if ((ch >= "0") && (ch <= "9"))
			IsNum=true;
		else  
		{
			if ( ch=="+" || ch=="(" || ch==")" || ch=="-" || ch==" "  || ch=="/"  || ch=="\\")
				IsNum=true;
			else
				return false;
		}	
	}
	return IsNum;
}

function IsValidEmail(szFieldName) {
	var IsEmail;
	var ch;
	var checkAT;
	var checkPERIOD;
	var checkExt;

	checkAT = 0; 
	checkPERIOD = 0;
	if (IsEmpty(szFieldName)) return false;
	if (szFieldName.value.indexOf("@")==-1) return false;
	if (szFieldName.value.indexOf("@")==0) return false;
	if (szFieldName.value.indexOf("@")>=40) return false;
	if ((parseInt(szFieldName.value.length) - szFieldName.value.indexOf("@"))>=40) return false;
	if (szFieldName.value.indexOf("@")==(parseInt(szFieldName.value.length)-1)) return false;
	if (szFieldName.value.indexOf(" ") != -1) return false;
	
//	if ((szFieldName.value.indexOf(".com")==-1) && (szFieldName.value.indexOf(".net")==-1) && (szFieldName.value.indexOf(".us")==-1) && (szFieldName.value.indexOf(".biz")==-1) && (szFieldName.value.indexOf(".edu")==-1) && (szFieldName.value.indexOf(".info")==-1) && (szFieldName.value.indexOf(".tv")==-1) && (szFieldName.value.indexOf(".org")==-1) && (szFieldName.value.indexOf(".cc")==-1) && (szFieldName.value.indexOf(".gov")==-1) && (szFieldName.value.indexOf(".fm")==-1) && (szFieldName.value.indexOf(".edu")==-1)) return false;
	
	for(i=0; i<parseInt(szFieldName.value.length); i++) {
		ch= szFieldName.value.charAt(i)
		if (ch == "@") {
			checkAT = checkAT + 1;
			if (checkAT >= 2) {
				IsEmail = false;
				break;
			}
		}
	if (ch == ".") {
		checkPERIOD = checkPERIOD + 1;
	}
	if ((( ch >= "A") && (ch <= "Z")) || ((ch >= "a") && (ch <= "z")) || ((ch >= "0") && (ch <= "9")) || 
		(ch == "$") || (ch == "-") || (ch == ".") || (ch == "&") || (ch == "+") || (ch == "!") ||
		(ch == "*") || (ch == "`") || (ch == "(") || (ch == ")") || (ch == ",") || (ch == "@") ||
		(ch == "_")) {
	IsEmail= true;
	}
	else {
	IsEmail= false;
	break;
	}
	}

	if (checkPERIOD == 0) {
	 	return false;
	}
    if (!IsEmail) {
        return false;
    }
   return true;
}

function TrimField(szFieldName) {
	var szNewStr;
	if (szFieldName.value != "") { 	
		szNewStr = TrimString(szFieldName.value);
		szFieldName.value = szNewStr;
	}
}

function TrimString(szString)  {
	var i = 0; var j = 0;
	for (i=0; i<parseInt(szString.length); i++) {
            if (szString.charAt(i) != " ") {
                  for (j=parseInt(szString.length) - 1; j > i; j--) {
                        if (szString.charAt(j) != " ") {
                              break;
                        }
                  }
                  break;
            }
      }
      if (i > j)
            i = j;
      if (szString.length > 0 && szString.charAt(j) != " ")
            j++;
      return szString.substring(i, j);
}

function lessChar(szFieldName,minNo) {
	TrimField(szFieldName);
	if (szFieldName.value == "")	return true;
	if (parseInt(szFieldName.value.length) <= minNo) return true;
	return false;
}

function bfnIsDate (day,month,year) 
{
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);

    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
		return true;
    else
        return false
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function chkTextLength(szFieldName, maxlength) {
	if (szFieldName.value.length > maxlength) {
		alert("Text exceeds max. allowed length of " + maxlength + " characters.\n\nTotal no. of characters : " + szFieldName.value.length);
		szFieldName.focus();
		return false;
	}
	else
		return true;
}

function ClearField(fld, orgval) {
	if (TrimString(fld.value) == orgval)
		fld.value = "";
}

function ResetField(fld, orgval) {
	if (TrimString(fld.value) == "")
		fld.value = orgval;
}


function isValidNRIC(s)
{

  if(s!="")
  {
    s=s.toLowerCase();
    if(s.length!=9)
    {
     return false;
    }
    cChar=s.charAt(0);
    if((cChar!='s')&&(cChar!='t')&&(cChar!='f')&&(cChar!='g')) // first alphabet only could be "s","t","f","g"
    {
     return false;
    }
    cChar=s.charAt(s.length-1);
    if((cChar>'z')||(cChar<'a'))
    {
     return false;
    }
    if((cChar=='o')||(cChar=='s')||(cChar=='v')||(cChar=='y'))  // last alphabet could not be "o","s","v","y"
    {
     return false;
    }

    tempS=s.substring(1,s.length-1);
    if(!checkDigital(tempS))  // from 2 - 8 are 7 numbers
    {
     return false;
    }

    S1=s.charAt(1)*2+s.charAt(2)*7+s.charAt(3)*6+s.charAt(4)*5+s.charAt(5)*4+s.charAt(6)*3+s.charAt(7)*2;
    if(s.charAt(0)=='g'||s.charAt(0)=='t'){
      S1=S1+4;
    }
    inx=11-S1%11-1;

    if(s.charAt(0)=='s'||s.charAt(0)=='t'){   //start with 's' or 't'
      arrST=new Array(11);
      arrST[0]="a";
      arrST[1]="b";
      arrST[2]="c";
      arrST[3]="d";
      arrST[4]="e";
      arrST[5]="f";
      arrST[6]="g";
      arrST[7]="h";
      arrST[8]="i";
      arrST[9]="z";
      arrST[10]="j";
    }

    if(s.charAt(0)=='f'||s.charAt(0)=='g'){
      arrST=new Array(11);
      arrST[0]="k";
      arrST[1]="l";
      arrST[2]="m";
      arrST[3]="n";
      arrST[4]="p";
      arrST[5]="q";
      arrST[6]="r";
      arrST[7]="t";
      arrST[8]="u";
      arrST[9]="w";
      arrST[10]="x";
    }
      if (arrST[inx]!=s.charAt(s.length-1))
      {
        return false;
      }

  }

  return true;
}

function checkDigital(s)
{
     if(s!="")
     {
       var i = 0;
       var cChar;
                   //	 alert(s);

       for (i=0 ; i< s.length ; i++)
       {
             cChar = s.charAt(i);
       if((cChar>'9')||(cChar<'0'))
             {
              return (false);
             }
       }
     }
     return (true);
}
