// 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=="\\")
				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 ViewInfo(dbtbl,idfld,titlefld,id) {
var istr = "dbtbl="+dbtbl+"&idfld="+idfld+"&titlefld="+titlefld+"&id="+id;
MM_openBrWindow('viewinfo.asp?'+istr,'ImageWin','scrollbars=yes,resizable=yes,width=400,height=180');
}


//Date Functions
/**
 * DHTML date validation script for dd/mm/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}

function IsValidNric(fullnric) {
	/*var ic = document.form.textfield.value;
	if (ic.length != 9) { 
		//alert("Please enter the IC number in the format:\n   SXXXXXXXA");
		document.form.textfield.focus();
		return;
		//return false;
	}*/
	
	var icArray = new Array(9);
	for(i = 0; i < 9; i++) {
		icArray[i] = fullnric.charAt(i);
	}
	
	icArray[1] *= 2;
	icArray[2] *= 7;
	icArray[3] *= 6;
	icArray[4] *= 5;
	icArray[5] *= 4;
	icArray[6] *= 3;
	icArray[7] *= 2;
	
	var weight = 0;
	for(i = 1; i < 8; i++) {
		weight += parseInt(icArray[i]);
	}
	
	var offset=(icArray[0]=="T"||icArray[0]=="G")?4:0;
	var temp=(offset+weight)%11;
	
	var st=Array("J","Z","I","H","G","F","E","D","C","B","A");
	var fg=Array("X","W","U","T","R","Q","P","N","M","L","K");
	
	var theAlpha;
	if     (icArray[0]=="S"||icArray[0]=="T") { theAlpha=st[temp]; }
	else if(icArray[0]=="F"||icArray[0]=="G") { theAlpha=fg[temp]; }
	
	if (icArray[8] != theAlpha) {
		//document.getElementById("image").src="cross.gif";
		//alert("Bad IC Number: " + ic);
		return false;
	}
	else {
		//document.getElementById("image").src="tick.gif";
		//alert("Good IC Number: " + ic);
		return true;
	}
}

function check_date(inputname)
{
  var temp = "", temp_index1 = 0, temp_index2 = 0, temp_index3 = 0;
  var day = "", month = "", year = "";

  temp  = inputname.value;
  if (inputname.value != "") {
    var temp_arr  = temp.split("/");
    
    day   = temp_arr[0];	
    month = temp_arr[1];
    year  = temp_arr[2];
    
    //if ((parseInt(day) > 0 && parseInt(day) < 32) && (parseInt(month) > 0 && parseInt(month) < 13) && (parseInt(year) > 1900))
    if ( (day > 0 && day < 32) && (month > 0 && month < 13) && (year > 1900) && !((month == 4 || month == 6  || month == 9 || month == 11) && (day == 31)) && !(month == 2 && (day > 29 || (day == 29 && (year / 4) != parseInt(year / 4)))) )
    {
      
        if (day < 10 && day.length == 1) 
        {
            day = "0" + day;
        }
        if (month < 10 && month.length == 1)
        {
            month = "0" + month;
        }
        
        inputname.value = day + "/" + month + "/" + year;
    }
    else
    {
      alert ("Sorry, Please key in a valid date or date format");
      return false;
    }
  }
}

