/* * Author * SNT Lotus Notes Development Team, 2002 * Version * Version 1.10.0 */ function isValidDate( strDate ){ var booError = false; var booTrue = true; //var strArrDate; var strArrDateSeparator = new Array("-","/"); if (strDate==""){ return booError } strArrayDate = strDate.split("/"); if (strArrayDate.length == 1){ return booError; } var strArrDate = splitDateStringToArray( strDate ); var strDay = strArrDate[0]; var strMonth = strArrDate[1]; var strYear = strArrDate[2]; if ( isNaN( strYear ) ){ return booError } if ( strYear.length != 4 ){ if ( strYear.length != 2 ){ return booError } }else{ if ( parseInt(strYear)<1900 || parseInt(strYear)>2100 ){ return booError } } if ( strMonth.length<1 || strMonth.length>2 ){ return booError } if ( isNaN( strMonth ) ){ return booError } if ( parseInt(strMonth,10)<1 || parseInt(strMonth,10)>12 ){ return booError } if ( strDay.length<1 || strMonth.length>2 ){ return booError } if ( isNaN( strDay ) ){ return booError } if ( parseInt(strDay,10)<1 || parseInt(strDay,10)>31 ){ return booError } var intYear = parseInt( strYear ); var intMonth = parseInt( strMonth ); var intDay = parseInt( strDay ); if ( (intMonth==1 || intMonth==3 || intMonth==5 || intMonth==7 || intMonth==8 || intMonth==10 || intMonth==12) && (intDay>31) ){ return booError } if ( (intMonth==4 || intMonth==6 || intMonth==9 || intMonth==11) && (intDay>30) ){ return booError } if ( intMonth==2){ if ( isLeapYear(intYear) ){ if (intDay>29){ return booError } }else{ if (intDay>28){ return booError } } } return booTrue; } function isLeapYear( intYear ){ if (intYear % 100 == 0){ if (intYear % 400 == 0) { return true; } }else{ if ((intYear % 4) == 0) { return true; } } return false; } function splitDateStringToArray( strDate ){ var booError = false; var booTrue = true; var strArrDate = new Array("00","00","0000"); var strArrDateTemp; var strArrDateSeparator = new Array("-","/"); if (strDate==""){ return strArrDate } for ( var i=0 ; i Date.parse(vDate2)){ return 1 } if (Date.parse(vDate1) == Date.parse(vDate2)){ return 0 } } function isDateSmaller( date1, date2 ){ if (dateCompare( date1, date2 ) == -1){ return true }else{ return false; } } function isDateSmallerEqual( date1, date2 ){ if (dateCompare( date1, date2 ) == -1){ return true }else{ if (dateCompare( date1, date2 ) == 0){ return true }else{ return false; } } } function isDateBigger( date1, date2 ){ if (dateCompare( date1, date2 ) == 1){ return true }else{ return false; } } function isDateSame( date1, date2 ){ if (dateCompare( date1, date2 ) == 0){ return true }else{ return false; } } function getTodayDate(){ var todayDate = new Date(); var day = todayDate.getDate(); var month = todayDate.getMonth()+1; var year = todayDate.getYear(); if (day < 10) { day = "0" + day;} if (month < 10){ month="0"+month;} if (year < 2000) { year = year + 1900;} return day + "/" + month + "/" + year; } function getCurrentYear(){ var todayDate = new Date(); return todayDate.getYear(); } function getCurrentMonth(){ var todayDate = new Date(); return todayDate.getMonth()+1; } function getCurrentDay(){ var todayDate = new Date(); return todayDate.getDate(); } function dateTimeCompare( dateTime1, dateTime2 ){ vArrTmp1 = dateTime1.split( " " ); vArrTmp2 = dateTime2.split( " " ); vDateToSplit1 = dateTime1; vDateToSplit2 = dateTime2; if ( vArrTmp1.length == 3 ){ vDateToSplit1=vArrTmp1[0] } if ( vArrTmp2.length == 3 ){ vDateToSplit2=vArrTmp2[0] } vArr1 = splitDateStringToArray( dateTime1 ); vArr2 = splitDateStringToArray( dateTime2 ); if ( vArr1[0]=="0000" ){ return false } if ( vArr2[0]=="0000" ){ return false } t1yyyy = parseInt( vArr1[0], 10 ); t1mm = parseInt( vArr1[1], 10 ); t1dd = parseInt( vArr1[2], 10 ); t1hh = parseInt( getHour( dateTime1 ), 10 ); t1min = parseInt( getMinute( dateTime1 ), 10 ); t2yyyy = parseInt( vArr2[0], 10 ); t2mm = parseInt( vArr2[1], 10 ); t2dd = parseInt( vArr2[2], 10 ); t2hh = parseInt( getHour( dateTime2 ), 10 ); t2min = parseInt( getMinute( dateTime2 ), 10 ); t1hh = ( getAMPM( dateTime1 )=="AM" ) ? t1hh : t1hh+12; t2hh = ( getAMPM( dateTime2 )=="AM" ) ? t2hh : t2hh+12; vTime1 = new Date( t1yyyy, t1mm, t1dd, t1hh, t1min, 0 ); vTime2 = new Date( t2yyyy, t2mm, t2dd, t2hh, t2min, 0 ); if ( vTime1 < vTime2 ){ return -1} if ( vTime1 > vTime2 ){ return 1 } if ( vTime1 == vTime2 ){ return 0 } return false; } function isValidTime( strTime ){ strTime = strTime.replace(/(^\s+)|(\s+$)/g, ""); if ( strTime.value=="" ){ return false } var strTimeArray1 = strTime.split(":"); if (strTimeArray1.length != 2){ return false } var strTimeArray2 = strTimeArray1[ 1 ].split(" "); if (strTimeArray2.length != 2){ return false } var strHour = strTimeArray1[ 0 ]; var strMinit = strTimeArray2[ 0 ]; var strAMPM = strTimeArray2[ 1 ].toUpperCase(); if ( isNaN( strHour) ){ return false } if ( isNaN( strMinit) ){ return false } if ( !isNaN(strAMPM) ){ return false } if ( strHour.length<1 || strHour.length>2 ){ return false } if ( strMinit.length!=2 ){ return false } if ( strAMPM.length!=2){ return false } var intHour = parseInt( strHour, 10 ); var intMinit = parseInt( strMinit, 10 ); if ( intHour<0 || intHour>12 ){ return false } if ( intMinit<0 || intMinit>59 ){ return false } if ( !(strAMPM=="AM" || strAMPM=="PM") ){ return false } return true; } function timeCompare( time1, time2 ){ if ( ! isValidTime(time1) ){ return false } if ( ! isValidTime(time2) ){ return false } t1hh = parseInt( getHour( time1 ), 10 ); t1mm = parseInt( getMinute( time1 ), 10 ); t2hh = parseInt( getHour( time2 ), 10 ); t2mm = parseInt( getMinute( time2 ), 10 ); t1hh = ( getAMPM( time1)=="AM" ) ? t1hh : t1hh+12; t2hh = ( getAMPM( time2)=="AM" ) ? t2hh : t2hh+12; vTime1 = new Date( 2000, 1, 1, t1hh, 10, t1mm, 0 ); vTime2 = new Date( 2000, 1, 1, t2hh, 10, t2mm, 0 ); if ( vTime1 < vTime2 ){ return -1} if ( vTime1 > vTime2 ){ return 1 } if ( vTime1 == vTime2 ){ return 0 } return false; } function getHour( pTime ){ vArrTime = pTime.split( " " ); if ( vArrTime.length==3 ){ vTime =vArrTime[1] + " " + vArrTime[2]; }else{ vTime = pTime; } if ( ! isValidTime( vTime ) ){ return false } var1 = vTime.split( ":"); return var1[0]; } /* * @Usage : given a time, extract the MINUTE part. * @Return : Boolean/String. if Time Not Valid Return False else return MINUTE * @Param : pTime : [String] Time value to be extracted * @Format : hh:mm AMPM OR dd/mm/yyyy hh:mm AMPM */ function getMinute( pTime ){ vArrTime = pTime.split( " " ); if ( vArrTime.length==3 ){ vTime =vArrTime[1] + " " + vArrTime[2]; }else{ vTime = pTime; } if ( ! isValidTime( vTime ) ){ return false } var1 = vTime.split( ":"); var2 = var1[1].split( " " ); return var2[0]; } function getAMPM( pTime ){ vArrTime = pTime.split( " " ); if ( vArrTime.length==3 ){ vTime =vArrTime[1] + " " + vArrTime[2]; }else{ vTime = pTime; } if ( ! isValidTime( vTime ) ){ return false } var1 = vTime.split( ":"); var2 = var1[1].split( " " ); return var2[1]; } function isTimeSmaller( time1, time2 ){ if (timeCompare( time1, time2 ) == -1){ return true }else{ return false; } } function splitNewICToArray( txtNewIC ){ var arrNewIC = txtNewIC.split("-"); if(arrNewIC.length==1){ if ( txtNewIC.length ==12){ arrNewIC[ 0 ]=txtNewIC.substring(0,6); arrNewIC[ 1 ]=txtNewIC.substring(6,8); arrNewIC[ 2 ]=txtNewIC.substring(8,12); } } return arrNewIC; } function isValidNewIC( txtNewIC ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return false; } if ( isNaN(arrNewIC[ 0 ]) ){ return false;} if ( isNaN(arrNewIC[ 1 ]) ){ return false;} if ( isNaN(arrNewIC[ 2 ]) ){ return false;} if ( arrNewIC[0].length!=6 ){ return false; } if ( arrNewIC[1].length!=2 ){ return false; } if ( arrNewIC[2].length!=4 ){ return false; } var dd = parseInt(arrNewIC[0].substring(4,6), 10); var mm = parseInt(arrNewIC[0].substring(2,4), 10); var yy = parseInt(arrNewIC[0].substring(0,2), 10); yy = (yy==0) ? "00" : yy; var yyyy= (parseInt(yy) < 10) ? ("20"+yy) : ("19"+yy); if ( dd<=0){ return false;} if ( dd>31){ return false;} if ( mm<=0){ return false;} if ( mm>12){ return false;} if ( (mm==4 || mm==6 || mm==9 || mm==11) && dd>30 ){ return false; } if (mm==2){ if ( ! isLeapYear(yyyy) && (dd>28) ){ return false; } if ( isLeapYear(yyyy) && (dd>29) ){ return false; } } return true; } function formatNewIC( txtNewIC ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return txtNewIC; }else{ return arrNewIC[0] + "-" + arrNewIC[1] + "-" + arrNewIC[2]; } } function getDobFromNewIC( txtNewIC, txtDobSeperator ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ var dd=arrNewIC[0].substring(4,6); var mm=arrNewIC[0].substring(2,4); var yy=arrNewIC[0].substring(0,2); var yyyy= (parseInt(yy) < 10) ? ("20"+yy) : ("19"+yy); return dd + txtDobSeperator + mm + txtDobSeperator + yyyy; } } } function getAgeFromNewIC( txtNewIC ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ var yy=arrNewIC[0].substring(0,2); var dobYear = (parseInt(yy) < 10) ? ("20"+yy) : ("19"+yy); var currentYear = getCurrentYear(); return parseInt(currentYear)-parseInt(dobYear); } } } function getDobDayFromNewIC( txtNewIC, txtDobSeperator ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ var dd=arrNewIC[0].substring(4,6); return dd; } } } function getStateNameFromNewIC( txtNewIC ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ returnValue="00"; vKod=arrNewIC[ 1 ]; switch (vKod){ } return returnValue; } } } function getDobMonthFromNewIC( txtNewIC, txtDobSeperator ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ var mm=arrNewIC[0].substring(2,4); return mm; } } } function getDobYearFromNewIC( txtNewIC, txtDobSeperator, txtYearFormat ){ var arrNewIC = splitNewICToArray( txtNewIC ); if (arrNewIC.length!=3){ return ""; }else{ if ( ! isValidNewIC( txtNewIC ) ){ return ""; }else{ var yy=arrNewIC[0].substring(0,2); var yyyy= (parseInt(yy) < 10) ? ("20"+yy) : ("19"+yy); return (txtYearFormat=="YY") ? yy : yyyy; } } } function getJantinaFromNewIC( str ){ var i = str.length - 1; var arr = str.charAt( i ); var strJantina = arr%2; if( strJantina.toString() == "0" ){ return "Perempuan"; }else if( strJantina.toString() == "1" ){ return "Lelaki"; }else{ return ""; } } function isValidEmail( emailStr ){ if ( emailStr.indexOf('@') == -1 || emailStr.indexOf('@') != emailStr.lastIndexOf('@') || emailStr.indexOf('@') + 3 > emailStr.lastIndexOf('.') || emailStr.indexOf('@') < 2 || emailStr.indexOf(".@") > -1|| emailStr.indexOf("@.") > -1 || emailStr.indexOf('.') == 0 || emailStr.substring(emailStr.lastIndexOf('.')).length < 3 || emailStr.substring(emailStr.lastIndexOf('.')).length > 4 || emailStr.indexOf("..") > -1 ){ return false; } var numeric = "0123456789_"; var dExt = emailStr.substring(emailStr.lastIndexOf('.')+1); for(i=0; i -1) { return false; } } var invalidChar = "~`!#$%^&*() -=+|}{[];:?/><,'\""; for(i=0; i -1) { return false; } } return true; } function setAsErrorField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.className="ErrorField"; } function setAsEmptyField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.className="EmptyField"; } function setAsDisabledField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.className="disabledField"; } function setAsNormalField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.className="NormalField"; } function checkComboBox( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); if ( field1.options[ field1.selectedIndex ].text=="" ){ setAsEmptyField( strFieldName ) }else{ setAsNormalField( strFieldName ) } } function enableField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.disabled=false; field1.className="NormalField"; } function disableField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); field1.disabled=true; field1.className="DisabledField"; } function toggleEnableDisableField( strFieldName ){ var field1 = eval( "document.forms[0]." + strFieldName ); if ( field1.disabled == true ){ enableField( strFieldName ); }else{ disableField( strFieldName ); } } function getAge( strDOB, strDate ){ var strAge="0"; if ( ! isValidDate( strDOB ) ){ return strAge } if ( ! isValidDate( strDate ) ){ return strAge } var arrDOB = splitDateStringToArray( strDOB ); var strDobDay = arrDOB[0]; var strDobMonth = arrDOB[1]; var strDobYear = arrDOB[2]; var arrDate = splitDateStringToArray( strDate ); var strCompareDay = arrDate[0]; var strCompareMonth = arrDate[1]; var strCompareYear = arrDate[2]; var strMonthStatus=""; if ( parseInt( strCompareMonth, 10 ) < parseInt( strDobMonth, 10 ) ){ strMonthStatus="SMALLER"; }else if ( parseInt( strCompareMonth, 10 ) > parseInt( strDobMonth, 10 ) ){ strMonthStatus="BIGGER"; }else if ( parseInt( strCompareMonth, 10 ) == parseInt( strDobMonth, 10 ) ){ strMonthStatus="SAME"; } var strDayStatus=""; if ( parseInt( strCompareDay, 10 ) < parseInt( strDobDay, 10 ) ){ strDayStatus="SMALLER"; }else if ( parseInt( strCompareDay, 10 ) > parseInt( strDobDay, 10 ) ){ strDayStatus="BIGGER"; }else if ( parseInt( strCompareDay, 10 ) == parseInt( strDobDay, 10 ) ){ strDayStatus="SAME"; } if ( strMonthStatus=="SMALLER" ){ strAge = parseInt( strCompareYear, 10 ) - parseInt( strDobYear, 10 ) - 1; }else if ( strMonthStatus=="BIGGER" ){ strAge = parseInt( strCompareYear, 10 ) - parseInt( strDobYear, 10 ); }else if ( strMonthStatus=="SAME" ){ if ( strDayStatus=="SMALLER" ){ strAge = parseInt( strCompareYear, 10 ) - parseInt( strDobYear, 10 ) - 1; }else if ( strDayStatus=="BIGGER" ){ strAge = parseInt( strCompareYear, 10 ) - parseInt( strDobYear, 10 ); }else{ strAge = parseInt( strCompareYear, 10 ) - parseInt( strDobYear, 10 ); strDays = "0"; } } if ( strAge<0 ){ return ""; }else{ return strAge; } } function getValidationMsgHeader1(){ return "Sila lengkapkan medan-medan berikut :-"; } function getValidationMsgHeader2(){ return "\nSila betulkan medan-medan berikut :-"; } function getValidationMsgTrailer1(){ return "\n * Medan-medan yang wajib dilengkapkan telah ditandakan dengan warna BIRU."; } function getValidationMsgTrailer2(){ return "\n * Medan-medan yang salah telah ditandakan dengan warna MERAH."; } function getConfirmSaveMsg(){ return "Bersedia untuk simpan maklumat ini ?"; }