//======================================================================================================= var isFormSubmitted = false; var newWin; function submitForm (formObj){ if (isFormSubmitted) { alert ('Your request has been already submitted. Please wait...'); }else { formObj.submit(); isFormSubmitted = true; } return false; } function doSubmit(formObj) { if (isValidForm(formObj)){ //in individual page return submitForm(formObj); }else{ return false; } } function doPopupSubmit(formObj) { if (isValidForm(formObj)){ //Skip the isFormSubmitted checking return formObj.submit(); } } /* changed to openWindow*/ /* function MM_openBrWindow(theURL,winName,features, myform) { //v2.0 var formObj = eval('document.' + myform); newWin = window.open("about:blank", winName, features); formObj.target = winName; formObj.action = theURL; formObj.submit(); formObj.target = ''; } */ function popupWindow(url, winTitle, width, height, isResizable, hasScrollbars) { var winWidth = parseInt(screen.availWidth)*0.7; var winHeight = parseInt(screen.availHeight)*0.7; var allowResize = "yes"; var showScrollbars = "yes"; if (width!=null){ winWidth=parseInt(width); } if (height!=null){ winHeight = parseInt(height); } if (isResizable!=null){ allowResize = isResizable; } if (hasScrollbars!=null){ if(hasScrollbars) { showScrollbars = "1"; } else { showScrollbars = "0"; } } var winParams = "width=" + winWidth + ",height=" + winHeight; winParams += ",left=0,top=0,toolbar=no,scrollbars="+showScrollbars+",resizable="+allowResize+",status=yes"; winName = window.open(url, winTitle, winParams); if(winName) { winName.focus(); } } function openWindow(where,winName,width,height,formObj,buttonName) { var features = 'left=0,top=0,toolbar=no, scrollbars=yes, status=no, resizable=yes, location=no, menubar=no, titlebar=no'; features+=", width=" + width; features+=", height=" + height; if (buttonName != null) { //set button log if buttonName is passed setButtonLog(formObj, buttonName); } if(getInternetExplorerVersion() >= 1){ if(isIE7OrAbove()){ //IE 7 or above newWin = window.open("about:blank", winName, features); }else{ //IE6 if (newWin!='undefined' && newWin!=null && !newWin.closed){ newWin.close(); } newWin = window.open("about:blank", winName, features); } }else{ //other browser newWin = window.open("about:blank", winName, features); } formObj.target = winName; formObj.action = where; formObj.submit(); formObj.target = ''; if (buttonName != null) { removeButtonLog(formObj); } return newWin; } function setClearSessionFormFlag(formName) { var formObj = document.getElementById(formName); var input = document.createElement("input"); input.id = "clearSessionForm"; input.name = "clearSessionForm"; input.type = "hidden"; input.value='Y'; formObj.appendChild(input); } function changeLang(currentlang, formName) { var formObj = document.getElementById(formName); var changeLang = document.createElement("input"); changeLang.id = "changeLang"; changeLang.name = "changeLang"; changeLang.type = "hidden"; changeLang.value='Y'; formObj.appendChild(changeLang); var lang = document.createElement("input"); lang.id = "lang"; lang.name = "lang"; lang.type = "hidden"; if (currentlang=='zh') { lang.value='en'; } else { lang.value='zh'; } //remove appended lang parameter var url=window.location+""; var loginPage="login.htm"; var pinReGenPage="pinReGenMbr.htm"; var memberEnrolPage="entry.htm"; if ( url.indexOf(loginPage)>-1 && url.indexOf('lang=')>-1) { formObj.action=url.substring(0, url.indexOf(loginPage)+loginPage.length); }else if ( url.indexOf(pinReGenPage)>-1 && url.indexOf('lang=')>-1) { formObj.action=url.substring(0, url.indexOf(pinReGenPage)+pinReGenPage.length); }else if ( url.indexOf(memberEnrolPage)>-1 && url.indexOf('lang=')>-1) { formObj.action=url.substring(0, url.indexOf(memberEnrolPage)+memberEnrolPage.length); } formObj.appendChild(lang); formObj.submit(); } function setButtonLog(formObj, buttonName){ var divName="BUTTON_LOG"; var div = document.getElementById(divName); if (div!=null) { //formObj.removeChild(div); div.parentNode.removeChild(div); } div = document.createElement("div"); div.id = divName; div.name = divName; formObj.appendChild(div); var input = document.createElement("input"); input.id = buttonName; input.name = buttonName; input.type = "hidden"; div.appendChild(input); } function removeButtonLog(formObj){ var divName="BUTTON_LOG"; var div = document.getElementById(divName); if (div!=null) { //formObj.removeChild(div); div.parentNode.removeChild(div); } } function go_Menu(where,formObj){ formObj.target = "_parent"; formObj.action = where; if (formObj.length==0){ //add dummy field for ios8 var dummyField=document.createElement('input'); dummyField.id="dummyFieldId"; dummyField.name="dummyFieldName"; dummyField.type="hidden"; dummyField.value=new Date().getTime(); formObj.appendChild(dummyField); } formObj.submit(); } /* submit form procedure, which double submission checking */ function submitWithButtonLog(buttonName, where, formObj) { setButtonLog(formObj, buttonName); formObj.target = "_parent"; formObj.action = where; submitForm(formObj); removeButtonLog(formObj); } function isNnu(where){ cs = new String(where); for (var i = 0; i < cs.length; i++){ if (cs.charAt(i) < "0" || cs.charAt(i) > "9") return true; } if (cs.length == 0) return true; return false; } // This function is for stripping leading and trailing spaces function trim(str){ return str.replace(/^\s*|\s*$/g,""); } function validBlockID(error){ if('err.id.blocked'==error){ return true; }else if ('err.scheme.blocked'==error){ return true; }else if ('err.gp.blocked'==error){ return true; }else if ('err.su.blocked'==error){ return true; }else if ('err.login.id.blocked'==error){ return true; }else{ return false; } } /*added for intranet search*/ function createHiddenField(name, value) { var hiddenField = document.createElement("input"); hiddenField.type="hidden"; hiddenField.name=name; hiddenField.id=name; hiddenField.value=value; return hiddenField; } //validate phone number function validateContactPhone(phone){ //alert((/[^(\d{1,}|/|\-|\(|\)|\s)(\d{1,}|/|\-|\(|\)|\s)(\d{1,}|/|\-|\(|\)|\s)$]/.test(phone))); //var pattern = /[^\d\(\)\/\-\s]/; //var pattern=/[^(\d{1,}|/|\-|\(|\)|\s)(\d{1,}|/|\-|\(|\)|\s)(\d{1,}|/|\-|\(|\)|\s)$]/; var pattern = /[^\d\(\)\/\-]/; if(pattern.test(phone) || phone.length<8){ return false; }else{ return true; } } //validate normal phone number function validatePhone(phone){ var pattern = /^\d{8}$/; if(pattern.test(phone)==false){ return false; }else{ return true; } } //validate mobile number function validateMobile(mobile){ var pattern = /^[456789]{1}\d{7}$/; if(pattern.test(mobile)==false){ return false; }else{ return true; } } //validate phone number with ext. function validatePhoneWithExt(phone){ var pattern = /^[123]{1}\d{7}$/; if(pattern.test(phone)==false){ return false; }else{ return true; } } //validate phone ext. function validatePhoneExt(ext){ var pattern = /^\d{1,4}$/; if(pattern.test(ext)==false){ return false; }else{ return true; } } //validate number within length function validateNumber(text, length){ var pattern = "^\\d{1,"+length+"}$"; var regExp=new RegExp(pattern); if(regExp.test(text)==false){ return false; }else{ return true; } } //validate userId function validateUserId(userId){ var pattern = /^(?=(.*?[a-zA-Z]){4,})[0-9a-zA-Z]{8,16}$/; return pattern.test(userId); } //Validate email function validateEmail(email){ var atIdx = email.indexOf("@"); var errorList =[]; if ( /[^\w@'.-]/.test(email) ){ errorList.push('The e-mail address contains invalid characters.'); } if ( atIdx == -1 ){ errorList.push('The e-mail address must contain an @.'); } if ( atIdx == 0 ){ errorList.push('The e-mail address must not start with @.'); } if (/@.*@/.test(email)){ errorList.push('The e-mail address must contain only one @.'); } if ( ! /@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*\.[a-zA-Z0-9_-]+$/.test( email ) ){ errorList.push('The e-mail address must contain a period in the domain name.'); } if ( /@\./.test( email ) ){ errorList.push('Period must not immediately follow @ in the e-mail address.'); } if ( /\.@/.test( email ) ){ errorList.push('Period must not immediately precede @ in the e-mail address.'); } if ( /\.\./.test( email ) ){ errorList.push('Two periods must not be adjacent in the e-mail address.'); } /* if ( ! /\.com\.?|\.net\.?|\.org\.?|\.edu\.?|\.int\.?|\.mil\.?|\.gov\.?|\.biz\.?|\.aero\.?|\.coop\.?|\.info\.?|\.pro\.?/.test( email ) ){ errorList.push('Invalid primary domain in the e-mail address.'); } */ return errorList; } function eFormDownload(theURL, myform) { var formObj = eval('document.' + myform); newWin = window.open("about:blank", 'DownloadWin','scrollbars=yes,resizable=yes,width=680,height=540'); formObj.target = 'DownloadWin'; formObj.action = theURL; formObj.submit(); } function download_form(referenceNo, formType) {//OAP application form //var link = '/bct/oap/application/downloadForm.pdf?referenceNo='+referenceNo+'&formType='+formType; var link = '?referenceNo='+referenceNo+'&formType='+formType; if(isChrome()) {//use .htm to work for chrome at android platform link = '/bct/oap/application/downloadForm.htm'+link; } else { link = '/bct/oap/application/downloadForm.pdf'+link; } winName = window.open(link, '', 'toolbar=no,scrollbars=yes,resizable=yes,status=yes'); winName.focus(); } function popUpPDF(url) { popupWindow(url, '', null, null, true, true); } function estatementPDFDownload(theURL, statementID) { var url = theURL+'?statementID='+statementID; //pass the url directly to window.open to avoid blank window remaining for 64-bit IE window.open(url, '_blank'); } function clearForm(formObj) {//clear all values in a form var frm_elements = formObj.elements; for (i = 0; i < frm_elements.length; i++) { field_type = frm_elements[i].type.toLowerCase(); switch (field_type) { case "text": case "password": case "textarea": case "hidden": frm_elements[i].value = ""; break; case "radio": case "checkbox": if (frm_elements[i].checked) { frm_elements[i].checked = false; } break; case "select-one": frm_elements[i].selectedIndex = 0; break; case "select-multi": frm_elements[i].selectedIndex = -1; break; default: break; } } } function isChrome() { //return navigator.userAgent.toLowerCase().indexOf('chrome') > -1; return (navigator.userAgent.match('CriOS') || navigator.userAgent.toLowerCase().match('chrome'));//check 'CriOS' for chrome in IOS } function dateFormat(str){ var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/ if (re.test(str)){ var dArr = str.split("/"); var dd = parseInt(dArr[0],10); var mm = parseInt(dArr[1],10)-1; var yyyy = parseInt(dArr[2],10); var d = new Date(yyyy,mm,dd); return d; } } function popUpEclub() { var url = '/bct/oap/eClub/register.htm'; popupWindow(url, 'EclubRegister', 1020, 700, true, true); } function popUpOAPUserGuide() { var url = 'https://www.bcthk.com/MobileRegistry/rest/cms/getToolById?itemId=193&extraFieldId=44'; popupWindow(url, 'UserGuide', 1020, 700, true, true); } function escapeHtml(input) { return input .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function isEmpty(input){ if(input=='undefined'||trim(input)==''){ return true; }else{ return false; } } function isValidHkid(hkid,ignoreParentheses){ var result=false; var checkDigit=0; if(!isEmpty(hkid)){ var lowerHkid=hkid.toLowerCase(); if(ignoreParentheses){ lowerHkid= lowerHkid.replace(/[(|[)]/g, ""); } if(lowerHkid.length==8||lowerHkid.length==9){ var lastDigit=lowerHkid.substring(lowerHkid.length-1,lowerHkid.length); lowerHkid=lowerHkid.substring(0,lowerHkid.length-1); if(lowerHkid.length==7){ if((lowerHkid.charCodeAt(0)<'a'.charCodeAt(0))||(lowerHkid.charCodeAt(0)>'z'.charCodeAt(0))){ return result; }else{ checkDigit=8*(lowerHkid.charCodeAt(0)-'a'.charCodeAt(0)+1); for(var i=1; i'9'.charCodeAt(0))){ return result; }else{ checkDigit=checkDigit+(8-i)*(lowerHkid.charCodeAt(i)-'1'.charCodeAt(0)+1); } } } }else{ if ((lowerHkid.charCodeAt(0)<'a'.charCodeAt(0)) || (lowerHkid.charCodeAt(0)>'z'.charCodeAt(0)) || (lowerHkid.charCodeAt(1)<'a'.charCodeAt(0)) || (lowerHkid.charCodeAt(1)>'z'.charCodeAt(0)) ){ return result; }else{ checkDigit=9*(lowerHkid.charCodeAt(0)-'a'.charCodeAt(0)+10); checkDigit+=8*(lowerHkid.charCodeAt(1)-'a'.charCodeAt(0)+10); for (var i=2; i'9')){ return result; }else{ checkDigit+=(9-i)*(lowerHkid.charCodeAt(i)-'1'+1); } } } } if (checkDigit>=0){ var outCheckDigit=""; var reminding=0; reminding=11-(checkDigit % 11); if (reminding==10){ outCheckDigit="a"; }else if (reminding==11){ outCheckDigit="0"; }else{ outCheckDigit=reminding.toString(); } if (outCheckDigit===lastDigit){ result=true; } } } } return result; } function submitFormMobile(where,formObj) { showLoadingDialog(); formObj.target = "_parent"; formObj.action = where; formObj.submit(); //removeButtonLog(formObj); } function changeLangMobile(currentlang, formName) { showLoadingDialog(); changeLang(currentlang, formName); } function loadPopup(where,title) { showLoadingDialog(); var ajaxPopupForm = document.createElement('form'); $(ajaxPopupForm).attr("action", where); $(ajaxPopupForm).attr("method", "post"); AjaxForm(ajaxPopupForm , ajaxPopupFormCallback); $("#popupDialog #popupDialogTitle").html(title); $(ajaxPopupForm).submit(); } function ajaxPopupFormCallback(data, textStatus, XMLHttpRequest){ $('#popupDialog').modal('show'); $("#popupDialog #popupDialogMessage").html(data); hideLoadingDialog(); } function ajaxSuccess(data, textStatus, XMLHttpRequest, callback){ callback(data, textStatus, XMLHttpRequest); } function ajaxError(xhr, textStatus, errorThrown) { if (textStatus=="timeout"){ showAlertMessage('Request timeout. Please try again later.'); }else if(xhr.status==600) { window.location = xhr.responseText; } } function chkErrMobile(errList, alertCallback) { if ( errList.length != 0 ){ var errMsg = ''; /* for (i=0; i { errMsg+=element; errMsg+='\n'; }); */ showAlertMessage(errList, alertCallback); } return errList.length == 0; }