/**
* This function validate that any key presses must be an alphanumeric key.
*/
function letternumber(e)
{
        var key;
        var keychar;

        if (window.event)
                 key = window.event.keyCode;
        else if (e)
                 key = e.which;
        else
                 return true;
        keychar = String.fromCharCode(key);
        keychar = keychar.toLowerCase();

        // control keys
        if ((key==null) || (key==0) || (key==8) ||
                        (key==9) || (key==13) || (key==27) )
                 return true;

        // alphas and numbers
        else if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1))
                 return true;
        else
                 return false;
}
/**
* This function validate that any key presses must be a numeric key.
*/
function numbersonly(myfield, e)
{
        var key;
        var keychar;

        if (window.event)
                key = window.event.keyCode;
        else if (e)
                key = e.which;
        else
                return true;
        keychar = String.fromCharCode(key);

        // control keys
        if ((key==null) || (key==0) || (key==8) ||
                        (key==9) || (key==13) || (key==27) )
                return true;

        // numbers
        else if ((("0123456789").indexOf(keychar) > -1))
                return true;

        else
                return false;
}

function isEmpty(isEmpty_val) {
        if (isEmpty_val == "") {
                return true;
        }
        else return false;
}

function checkEmail(s)
{
   if(s=="")
   {
     alert("Please enter an email address.");
     return false;
   }

   else if (s!="")
   {
        var i = 0;
        var nCount = 0;
        var nDotCount = 0;
        var nDotAfter = 0
        var nPos = 0
        var nError = 0
        var cChar;
        strAccount = s;
        for (i=0 ; i< strAccount.length ; i++)
        {
                cChar = strAccount.charAt(i);
                if (cChar == '@') {
                        nCount ++;
                        nPos = i
                }
                else if (cChar == '.') {
                        // if @ is present
                        if (nCount > 0) {
                                // . is right after the @
                                if (i - nPos < 2) {
                                        nError = 1
                                }
                                nDotAfter++
                        }
                        // if . is the last character
                        if (strAccount.length - i == 1) {
                                nError = 1
                        }
                        nDotCount++;
                }
                else if (cChar==' ' || cChar=='[' || cChar==']' || cChar=='{' ||
                        cChar=='}' || cChar==':' || cChar==';' || cChar=='<' || cChar=='>' ||
                        cChar=='?' || cChar=='/' || cChar=='\\' || cChar==',' || cChar=="'"
                        )
                {
                        alert("Please enter a valid email address.");
                    return false;
                }
        }
        if ((nCount == 0) || (nDotCount == 0) || (nDotCount > 4) || (nDotAfter > 4) || (nError == 1))
    {
                alert("Please enter a valid email address.");
                return false;
        }

  }
  return true;

}

function checkPhoneNo(s)
{
    if(s!="")
    {
      var i = 0;
      var cChar;
      for (i=0 ; i< s.length ; i++)
      {
            cChar = s.charAt(i);
            if(((cChar>'9')||(cChar<'0'))&&(cChar!='+')&&(cChar!='-'))
            {

              return (false);
            }
      }
	  if(s.length<8){ 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);
}

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);
}

function changeSelected(select,value)
{
  for(i=0;i<=select.length-1;i++)
  {
    if(select.options[i].value==value)select.options[i].selected=true;
  }
}



function checkDecimal(s)
{
     if(s!="")
     {
       var strDot;
       var i = 0;
       var cChar;
       for (i=0 ; i< s.length ; i++)
       {
             cChar = s.charAt(i);
             if((cChar>'9')||(cChar<'0'))
             {
                          if (cChar=='.'&&strDot!="1")
                         {
                           strDot="1"
                         }
                         else
                         {
                              return (false);
                         }
             }
       }
     }
     return (true);
}

function checkTwoDecimal(s)
{
    if(!checkDecimal(s)){
      return false;
    }
    for (i=0 ; i< s.length ; i++)
    {
       cChar = s.charAt(i);
            if (cChar=='.'&&s.length-i-1>2)
            {
               return false;
            }
    }
    return true;
}


function trim(string) {
var temp = "";
string = '' + string;
splitstring = string.split(" ");
for(i = 0; i < splitstring.length; i++)
temp += splitstring[i];
return temp;
}
function numericCheck(param){
	nr1=param;
	flg=0;
	str="";
	spc=""
	arw="";
for (var i=0;i<nr1.length;i++){
	cmp="0123456789"
	tst=nr1.substring(i,i+1)
	if (cmp.indexOf(tst)<0){
		flg++;
		str+=" "+tst;
		spc+=tst;
		arw+="^";
	}
	else{arw+="_";}
	}
		if (flg!=0){
		if (spc.indexOf(" ")>-1) {
			str+="space";
		}

		return false;
	}
return true;
}
function doubleCheck(param){
	nr1=param;
	flg=0;
	pot=0;
	str="";
	spc=""
	arw="";
	for (var i=0;i<nr1.length;i++){
		cmp="0123456789."
		tst=nr1.substring(i,i+1)
		if (tst==".")
		{
			pot+=1;
		}
		if (cmp.indexOf(tst)<0){
			flg++;
			str+=" "+tst;
			spc+=tst;
			arw+="^";
		}else{
			arw+="_";
		}
	}
	if (pot>1)
	{
		return false;
	}
	if (flg!=0){
		if (spc.indexOf(" ")>-1) {
			str+="space";
		}
		return false;
	}
	return true;
}

//input 8 charactor, start with "s"
function checknric(param) {
  var keyword = new Array(2,7,6,5,4,3,2);
  var result =new Array("A","B","C","D","E","F","G","H","I","Z","J");
  var value = 0;
  var nricref="";
  if (param.length!=8) return false;
  for (i=0;i<7;i++) {
    value+=keyword[i]*(parseInt(param.charAt(i)));
  }
  nricref=result[(10-(value%11))];
  if ((nricref.toLowerCase()==(param.charAt(7)+""))||(nricref==(param.charAt(7)+""))) return true;
  return false;
}

//input 9 charactor
function isValidNRIC(s)
{
  alert("checking NRIC");
  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 populate(objYear,objMonth,objDay,objDate,pFormat)
{
	var selectedDay = objDay[objDay.selectedIndex].value - 1;
	var curDay = objDay[objDay.selectedIndex].value;
	var curMonth = objMonth[objMonth.selectedIndex].value;
	var curYear = objYear[objYear.selectedIndex].value;

			timeA = new Date(curYear, curMonth,1);
			timeB = new Date(timeA- 86400000);
			var daysInMonth = timeB.getDate();

			for (var i = 0; i < objDay.length; i++)
			{
				objDay.options[0] = null;
			}

			for (var i = 0; i < daysInMonth; i++)
			{
				objDay.options[i] = new Option(i+1);
				objDay.options[i].value = i+1;
			}

		if (selectedDay < objDay.length)
		{
			if (selectedDay >= 0) objDay.options[selectedDay].selected = true;
			//if (selectedDay >= 0) objDay.selectedIndex = selectedDay;
		}
		else
		{
			objDay.options[0].selected = true;
		}
			refreshDay(objDate,objDay,objMonth,objYear,pFormat);


}

function refreshDay(objDate,objDay,objMonth,objYear,pFormat)
{
			switch (pFormat)
			{
				case 'MM/DD/YYYY':
					objDate.value = objMonth[objMonth.selectedIndex].value + "/" + objDay[objDay.selectedIndex].value + "/" + objYear[objYear.selectedIndex].value
					break;
				case 'mm/dd/yyyy':
					objDate.value = objMonth[objMonth.selectedIndex].value + "/" + objDay[objDay.selectedIndex].value + "/" + objYear[objYear.selectedIndex].value
					break;
				default:
					objDate.value = objDay[objDay.selectedIndex].value + "/" + objMonth[objMonth.selectedIndex].value + "/" + objYear[objYear.selectedIndex].value
			}
}


function checkDate(d,m,y){
                err=0
        //basic error checking
        if (m<1 || m>12) err = 1
        if (d<1 || d>31) err = 1
        if (y<1900 || y>3000) err = 1
        //advanced error checking

        // months with 30 days
        if (m==4 || m==6 || m==9 || m==11){
                if (d==31) err=1
        }

        // february, leap year
        if (m==2){
                // feb
                var g=parseInt(y/4)
                if (isNaN(g)) {
                        err=1
                }

                if (d>29) err=1
                if (d==29 && ((y/4)!=parseInt(y/4))) err=1
        }

        if (err==1){
                return false
        }
        else{
                return true
        }

}
 //if use text box to input date, format is dd/mm/yyyy
function isDate(str){
	thedate= new Date();

                      var err=0
                      var psj=0;
                      a=str
                      if (a.length != 10) err=1
                      d = a.substring(0, 2)// day
                      c = a.substring(2, 3)// '/'
                      b = a.substring(3, 5)// month
                      e = a.substring(5, 6)// '/'
                      f = a.substring(6, 10)// year


                      //basic error checking
                      if (b<1 || b>12) err = 2
                      if (c != '/') err = 3
                      if (d<1 || d>31) err = 4
                      if (e != '/') err = 5
                      if (f<1900 || f>thedate.getFullYear()) err = 6

                      //advanced error checking

                      // months with 30 days
                      if (b==4 || b==6 || b==9 || b==11){
                              if (d==31) err=7
                      }

                      // february, leap year
                      if (b==2){
                              // feb
                              var g=parseInt(f/4)
                              if (isNaN(g)) {
                                      err=8
                              }

                              if (d>29) err=9
                              if (d==29 && ((f/4)!=parseInt(f/4))) err=10
                      }

                      if (err!=0){
                              alert("Please enter a valid date. [DD/MM/YYYY]")
                              return false
                      }
                      else{
                              return true
                      }

}
