// Menu component functions var _lastMenu = null; function _toggleMenu(e, menuId) { // hide any open menu if (_lastMenu != null && _lastMenu != menuId) { document.getElementById(_lastMenu).style.display = 'none'; _lastMenu = null; } // toggle visibility of the specified element id if (document.getElementById(menuId).style.display == 'none') { document.getElementById(menuId).style.display = 'block'; _lastMenu = menuId; // set global onclick handler to hide menu e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation(); } document.onclick = _hideLastMenu; } else { document.getElementById(menuId).style.display = 'none'; document.onclick = null; } } // Hide the last opened menu function _hideLastMenu() { if (_lastMenu != null) { document.getElementById(_lastMenu).style.display = 'none'; _lastMenu = null; document.onclick = null; } } var ClockUpdate = new Array(3); ClockUpdate[0] = 0; ClockUpdate[1] = 1000; ClockUpdate[2] = 60000; var username = '' function setUsername(name){ this.username = name } function greeting() { var todaydate = new Date(); var timeis = todaydate.getTime(); todaydate.setTime(timeis); var houris = todaydate.getHours(); if (houris > 17) display = "Evening"; else if (houris >=12) display = "Afternoon"; else display = "Morning"; var title = document.title; var welcome = ("Good " + display); document.getElementById("greet").innerHTML = welcome + ', ' + this.username; setTimeout("greeting()",ClockUpdate[1]); } // Currently works on NUMBERS only // Will need another function to cater // currency (with . - ,) function isNumberKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode > 31 && (charCode < 48 || charCode > 57)) return false; return true; } // Works on NUMBERS and character ':' function isValidTimeInputKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode > 31 && (charCode < 48 || charCode > 58)) return false; return true; } //only a-zA-Z function isAlphabetKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode if (charCode == 8 || charCode > 31 && (charCode < 48 || charCode > 58) && charCode) return true; return false; } function isAlphabetOnlyKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode; if ((charCode >= 65 && charCode <= 90) || charCode == 32 || (charCode >= 97 && charCode <= 122)) { return true; } return false; } function isAlphabetNumericOnlyKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) return false; return true; } function isAlphabetNumericOnlyKeyAllowDash(evt) { var charCode = (evt.which) ? evt.which : event.keyCode; if (charCode > 31 && (charCode < 45 || charCode > 45) && (charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) return false; return true; } //Allow space function isAlphabetNumericKey(evt) { var charCode = (evt.which) ? evt.which : event.keyCode; if (charCode > 32 && (charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) return false; return true; } //Allow space, allow "/" function isAlphabetNumericKeyAllowSlash(evt) { var charCode = (evt.which) ? evt.which : event.keyCode; if (charCode > 32 && (charCode < 47 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) return false; return true; } function convertTOUppercase(e,r) { r.value = r.value.toUpperCase(); return true; } /* * similiar function to checkmaxlength, but added 1 param * */ function checkfieldmaxlength(myfield, e, maxlimit, nextfield, labelname){ var key; var keychar; var charlimit; charlimit = maxlimit; maxlimit = maxlimit ; if (window.event){ key = window.event.keyCode; } else if (e){ key = e.which; } else return true; keychar = String.fromCharCode(key); if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) || (key==118)) { if (myfield.value.length > maxlimit){ myfield.focus(); alert(labelname + " anda mestilah tidak melebihi " + charlimit.toString() + " abjad." ); return false; } else { return true; } } else { if (myfield.value.length >= maxlimit){ return false; } else { return true; } } } function checkmaxlength(myfield, e, maxlimit, nextfield){ var key; var keychar; var charlimit; charlimit = maxlimit; maxlimit = maxlimit ; if (window.event){ key = window.event.keyCode; } else if (e){ key = e.which; } else return true; keychar = String.fromCharCode(key); if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) || (key==118)) { if (myfield.value.length > maxlimit){ myfield.focus(); alert("Catatan anda mestilah tidak melebihi " + charlimit.toString() + " abjad." ); return false; } else { return true; } } else { if (myfield.value.length >= maxlimit){ return false; } else { return true; } } } /* * To check key in value is number or dash only. For Serial number used. (e.g. 978-983-99557-1-2) * @param e = event * @author BNG */ function isNumberWithDashKey(e) { var charCode = (e.which) ? e.which : event.keyCode; if (charCode != 45 && charCode > 31 && (charCode < 48 || charCode > 57)){ return false; } return true; } /* * To check key in value is alpha or number or dash only. For Serial number used. (e.g. 9A8-9C3-99D57-1-2) * @param e = event * @author BNG */ function isAlphaNumericWithDashKey(e) { var charCode = (e.which) ? e.which : event.keyCode; if (charCode != 45 && charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)){ return false; } return true; } /* * To keep the current number value only while press and will be * used by function compareNumberValue(originalValue, fieldCurrent). * @author BNG */ var currentValue=0; var changeFlag=0; function setCurrentAllowedNumberValue(evt, fieldCurrent){ if(changeFlag == 0 && fieldCurrent.value != ''){ currentValue = parseInt(fieldCurrent.value,10); } changeFlag = 1; var charCode = (evt.which) ? evt.which : event.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)){ return false; } return true; } /* * To compare if current new value is more than original value then will be * replace by previous current value set at setCurrentAllowedNumberValue(evt, fieldCurrent); * @author BNG */ function compareNumberValue(originalValue, fieldCurrent){ var currentNewValue = fieldCurrent.value; if((currentNewValue == '') || (parseInt(currentNewValue,10) > parseInt(originalValue,10))){ fieldCurrent.value = currentValue; } changeFlag = 0; } /* * To check key in value is numeric(Numbers with Decimal) or not. * Pass in (field,e) only if no limitation. * Pass in (field,e,numFormat) if want to have limitation through numeric format. * @param field = field Object * @param e = event * @param numFormat = *.* example= 7.2 (same as DB Data Type - meant 5 digit plus 2 decimal) * @author BNG */ function isNumericKeyWithLimit(field,e,numFormat){ var num = field.value; //alert('num='+num); var charCode = (e.which) ? e.which : event.keyCode; //alert('charCode='+charCode); //if (charCode==8 || (charCode > 31 && ((charCode < 46 || charCode > 57) || charCode==47 || (charCode==46 && num.indexOf(".")>-1)))) //Bug 5594 - Cannot backspace at all fields, //removed charCode == 8, backspace, enable backspace in mozilla if ( charCode > 31 && ( (charCode < 46 || charCode > 57) || charCode==47 || (charCode==46 && num.indexOf(".")>-1) ) ) { return false; } if(numFormat != undefined){ num = num.toString().replace(/\$|\,/g,''); var digit = num; var scale=0; var precision; var d; //alert('numFormat='+numFormat); if(numFormat.toString().indexOf(".")!= -1){ var arr = numFormat.toString().split("."); precision= parseInt(arr[0]); scale= parseInt(arr[1]); d = precision-scale; } else{ precision=numFormat; d = precision-scale; } //alert('d='+d); //alert('scale='+scale); if(scale==0 && charCode==46){ return false; } if(digit !=''){ var decimal=''; if(num.indexOf(".")!= -1){ digit = num.substring(0,num.indexOf(".")); decimal = num.substring(num.indexOf(".")+1); } var digitNum = parseInt(digit,10); digit = digitNum.toString(); if(digit.length < d){ //alert('digit.length='+digit.length); if(charCode!=46 && scale > 0){ if(num.indexOf(".")!= -1){ if(digit.length == d){ if(decimal.length >= scale){ return false; } } else{ if(decimal.length > scale){ return false; } } } else{ if(digit.length == d){ return false; } } } else if(charCode==46 && scale==0){ return false; } } else{ return false; } } } return true; } /* * Format key in numeric(Numbers with Decimal) value with limitation through numeric format. * @param field = field Object * @param numFormat = *.* example= 7.2 (same as DB Data Type - meant 5 digit plus 2 decimal) * @author BNG */ function formatNumericWithLimit(field,numFormat){ return formatNumericWithLimitNegative(field,numFormat,false); } function formatNumericWithLimitNegative(field,numFormat,negative){ var num = field.value; num = num.toString().replace(/\$|\,/g,''); if(num==""){ return; } var digit = num; var decimal=''; if(num.indexOf(".")!= -1){ digit = num.substring(0,num.indexOf(".")); decimal = num.substring(num.indexOf(".")+1); } if(digit ==''){ digit = 0; } if(checkNumbersWithNegative(digit+decimal,negative) == false){ field.value = ''; return; } if(numFormat != undefined){ var arr = numFormat.toString().split("."); var precision= parseInt(arr[0],10); var scale= parseInt(arr[1],10); var d = precision-scale; while(decimal.length< scale){ decimal+="0"; } var digitNum = parseInt(digit,10); digit = digitNum.toString(); if(digit.length>d){ digit = digit.substring(0,parseInt(d)); } if(decimal.length>scale){ var roundUpFig = decimal.substring(scale,scale+1); decimal = decimal.substring(0,scale); if(parseInt(roundUpFig)>=5){ decimal = parseFloat(decimal)+1; // If decimal round up is more than dec, add the value into digit decimal = decimal.toString(); if (decimal.length > scale) { var index = decimal.length - scale; digit = (parseInt(digit, 10) + parseInt(decimal.substring(0, index), 10)).toString(); decimal = decimal.substring(index); } } } } if(decimal.length>0){ digit += "."+ decimal; } field.value = digit; } /* * This is to empty the field if user paste digit to the input field - * use when onblur */ function formatAlphabetOnly(field){ //alert('inside formatAlphaOnly'); var num = field.value; if( num == "" ){ return; } var digit = num; var decimal=''; if(num.indexOf(".")!= -1){ digit = num.substring(0,num.indexOf(".")); decimal = num.substring(num.indexOf(".")+1); } if(digit ==''){ digit = 0; } if(checkNumbers(digit+decimal) == true ){ field.value = ''; return; } else { return; } } /* * Checking Input is Numeric or not * @param input = input Object * @author BNG */ function checkNumbers(input) { return checkNumbersWithNegative(input,false); } /* * Checking Input is Numeric or not * @param input = input Object * @author BNG */ function checkNumbersWithNegative(input,negative) { input=trim(input); var numericSet = null; if(negative){ numericSet = "-1234567890"; }else{ numericSet = "1234567890"; } for (var i = 0; i < input.length; i++) { if (numericSet.indexOf(input.charAt(i)) == -1) { return false; } } return true; } /* * Trim String object * @param strText = strText Object * @author BNG */ function trim(strText) { // this will get rid of leading spaces while (strText.substring(0,1) == ' ') strText = strText.substring(1, strText.length); // this will get rid of trailing spaces while (strText.substring(strText.length-1,strText.length) == ' ') strText = strText.substring(0, strText.length-1); return strText; } /* * zaliza * */ function formatNumericInput(field){ var num = field.value; num = num.toString().replace(/\$|\,/g,''); if(num==""){ return; } var digit = num; if(digit ==''){ digit = 0; } if(checkNumbers(digit) == false){ field.value = ''; return; } field.value = digit; } //added by YeeHung //allow user to key negative decimal value function extractNumber(obj, decimalPlaces, allowNegative) { var temp = obj.value; // avoid changing things if already formatted correctly var reg0Str = '[0-9]*'; if (decimalPlaces > 0) { reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}'; } else if (decimalPlaces < 0) { reg0Str += '\\.?[0-9]*'; } reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str; reg0Str = reg0Str + '$'; var reg0 = new RegExp(reg0Str); if (reg0.test(temp)) return true; // first replace all non numbers var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']'; var reg1 = new RegExp(reg1Str, 'g'); temp = temp.replace(reg1, ''); if (allowNegative) { // replace extra negative var hasNegative = temp.length > 0 && temp.charAt(0) == '-'; var reg2 = /-/g; temp = temp.replace(reg2, ''); if (hasNegative) temp = '-' + temp; } if (decimalPlaces != 0) { var reg3 = /\./g; var reg3Array = reg3.exec(temp); if (reg3Array != null) { // keep only first occurrence of . // and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0 var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length); reg3Right = reg3Right.replace(reg3, ''); reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right; temp = temp.substring(0,reg3Array.index) + '.' + reg3Right; } } obj.value = temp; } function searchResult(event,id) { var keycode; if (window.event) keycode = window.event.keyCode; else if (e) keycode = e.which; else return true; if (keycode == 13) { document.getElementById(id).click(); return false; } else{ return true; } } /** * Currently used in eSurvey window (FormMode.NEW) * @param msg */ function confirmExitWindow(msg) { var c=confirm(msg); if(c==true) { window.close(); } }