appconfig.lang="pt"; appconfig.sid=""; appconfig.baseurl=window.location.protocol + "//" + window.location.host + "/" + window.location.pathname; appconfig.formdata=JSON.parse('null'); /*console.log(appconfig);*/ ; function getObjectSize(obj) { var size = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)){ size++; } } return size; } function clearSpecialCharaters(s){ return (s||"").replace(/[﹑_`.,;\\\\/:*?\"\{\}\[\]\(\)<>|&-='\^%$#@!\~]/g," "); } function keepTextSingleSpace(s){ return (s||"").replace(/\s\s+/g," "); } function clearNumbers(s){ return (s||"").replace(/\d/g,""); } function scrollToPageElement(scrollTo,speed,delta){ delta=delta||0; speed=speed||0; var container =$("body,html"); try{ if(window.self !== window.top) { container = $("body,html",window.parent.document); } } catch(e){ container =$("body,html"); } if (scrollTo){ if(container.find(".webpage-body>.scroller").length>0){ container=container.find(".webpage-body>.scroller"); container.animate({scrollTop: scrollTo.offset().top - container.offset().top-delta },speed); } else { //console.log(scrollTo.offset().top); container.animate({scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop()-delta},speed); } } else { if(container.find(".webpage-body>.scroller").length>0){ container=container.find(".webpage-body>.scroller"); container.animate({scrollTop: container.offset().top-delta },speed); } else { container.animate({scrollTop: container.offset().top + container.scrollTop()-delta},speed); } } } function setParentIframeHeight(thePage){ try{ if(window.self !== window.top) { container = $("body,html",window.parent.document); var h=thePage.height()+10; container.find("#cont_detail iframe").height(h); //thePage.css({"min-height":h}); } } catch(e){ } } /*check requiered fields*/ function checkRequiredInputs(thePage,callback){ var scrollToRequiredElm=function(){ var container =$("body,html"); try{ if(window.self !== window.top) { container = $("body,html",window.parent.document); } } catch(e){ container =$("body,html"); } scrollToElement($(".required-field:first"),container,0); }; isok=true; if(thePage){ thePage.find(".required-tips").remove(); thePage.find(":input[required]:visible,textarea[required]:visible,div[required]:visible").removeClass("required-field bordered bordered-danger").each(function(){ var elm=$(this); if(elm.find(":checkbox:visible,:radio:visible").length>0){ if(elm.find(":checked").length==0){ isok=false; elm.addClass("required-field bordered bordered-danger"); if(elm.parent("[data-date-format]").length>0) elm=elm.parent("[data-date-format]"); elmTips(elm,lng("必須填寫","Preenchimento obrigatório","Required")); //if(isAndroid) scrollToRequiredElm(); runScript(callback); } } else { if($.trim(this.value)==""){ isok=false; elm.addClass("required-field bordered bordered-danger"); if(elm.parent("[data-date-format]").length>0) elm=elm.parent("[data-date-format]"); /*elmTips(elm,getTranslate("lang_required"));*/ elmTips(elm,lng("必須填寫","Preenchimento obrigatório","Required")); //if(isAndroid) scrollToRequiredElm(); runScript(callback); } } }); if(!isok){ thePage.find(".required-field:first").focus(); setParentIframeHeight(); } } return isok; } $(function() { setParentIframeHeight($(".rpage-body")); scrollToPageElement(); }); function isIdnbrLast4Digists(n){ return /^[0-9]{4}$/.test(n); }; function isMacauMobile(n){ // 匹配澳 (6開始共8碼) return /^6[\d]{7}$/.test(n); }; function isMacauTel(n){ // 匹配澳 (28開始共8碼) return /^28[\d]{6}$/.test(n); }; function isNotIncludeNumber (n) { return /^([^0-9]*)$/.test(n); }; function onlyWord(s){ return (s||'').replace(/[\d]/g,'') }; function isEmail(n){ return /^([a-z0-9_\.-]+\@[\da-z\.-]+\.[a-z\.]{2,6})$/.test(n); }; function isLicno1(n){ n=(n||"").toString().toUpperCase(); return /^[MDWETOCAS\-]\-[\d]{4}|^PH\-[\d]{4}|^AT\-[\d]{4}$/.test(n); }; function isLicno(n){ n=(n||"").toString().toUpperCase(); return /^([A-Z]{1,2}-[\d]{4})$/.test(n); }; function isMacauIdnbr(n){ return /^[157][\d]{7}$/.test(n); }; function isSsStaffid(n){ return /^[\d]{7}$/.test(n); }; $.fn.snapToRequiredContainer=function(elm,targetname,msg){ clearAllElmTips(); myForm=$(this); msg=msg||""; if (msg==""){ msg=lng("必須填寫,請檢查!","Obrigatório!","Required, please check! ")} var c=myForm.find(targetname); if(c.length>0){ elm.removeClass("disabled"); c.elmTips(msg); setParentIframeHeight(targetname); rt=false; } else { rt=true; } return rt; } $.fn.snapTipsToInputBox=function(elm,inputname,msg){ clearAllElmTips(); myForm=$(this); elm.removeClass("disabled"); myForm.find("[name="+inputname+"]").focus().elmTips(msg); setParentIframeHeight(myForm.find("[name="+inputname+"]")); } $.fn.isInputMaxLength=function(elm,str,inputname,msg,defaultlength){ elm.removeClass("disabled"); var myForm=$(this); var rt=false; str=$.trim(str||""); defaultlength=defaultlength||50; var elm_maxlength=parseInt((myForm.find("[name="+inputname+"]").attr("maxlength")||defaultlength)); // logme(str.length); // logme(elm_maxlength); if(str.length!==elm_maxlength){ myForm.snapTipsToInputBox(elm,inputname,msg.replace(/\[0\]/g,elm_maxlength)); rt=false; } else { rt=true; } logme("isInputMaxLength["+inputname+"]="+rt); return rt; } $.fn.isInputBeginsWith=function(elm,str,chars,inputname,msg){ elm.removeClass("disabled"); var myForm=$(this); var rt=false; str=$.trim(str||""); if (!$.isArray(chars)){ chars=[chars]; } var found=false; $.each(chars,function(k,v){ if(str.beginsWith(chars[k])){ found=true; } }); logme(chars); if(!found){ myForm.snapTipsToInputBox(elm,inputname,msg); rt=false; } else { rt=true; } return rt; } $.fn.isInputEndsWith=function(elm,str,chars,inputname,msg){ elm.removeClass("disabled"); var myForm=$(this); var rt=false; str=$.trim(str||""); if(!str.endsWith(chars)){ myForm.snapTipsToInputBox(elm,inputname,msg); rt=false; } else { rt=true; } return rt; } $.fn.isInputDigit=function(elm,str,inputname,msg){ elm.removeClass("disabled"); var myForm=$(this); var rt=false; str=$.trim(str||""); if(!str.isDigit()){ myForm.snapTipsToInputBox(elm,inputname,msg); rt=false; } else { rt=true; } return rt; } $.fn.isInputChinese=function(elm,str,inputname,msg){ var myForm=$(this); msg=msg||""; if (msg==""){ msg=lng("必須是中文","Deve ser chinês","Must be Chinese")} elm.removeClass("disabled"); var rt=false; str=$.trim(str||""); if(!str.isChinese()){ myForm.snapTipsToInputBox(elm,inputname,msg); rt=false; } else { rt=true; } return rt; } $.fn.isInputInChinese=function(elm,str,inputname,msg){ var myForm=$(this); msg=msg||""; if (msg==""){ msg=lng("必須是中文","Deve ser chinês","Must be Chinese")} elm.removeClass("disabled"); var rt=false; str=$.trim(str||""); if(str.isInChinese()){ myForm.snapTipsToInputBox(elm,inputname,msg); rt=false; } else { rt=true; } return rt; } var _smsverifycode="", smsverifytimer; function setSmsVerify(defaultwait=60){ var fm=$("#fmSmsVerification"), btnResendVerifyCode=fm.find("#btnResendVerifyCode"), btnVerifyCodeSuccess=fm.find("#btnVerifyCodeSuccess"), txtVcode = fm.find("[name=smsvcode]"), VCountDown=fm.find("#VerifyCodeCountDown"), mobile=$.trim(fm.find("[name=verifymobile]").val()||""), areacode=$.trim(fm.find("[name=verifyareacode]").val()||""); defaultwait=defaultwait||60; var _wait=defaultwait; var VerifyCodeCountDown=function(obj){ //console.log("_wait="+_wait); if(_wait==0){ if(!fm.hasClass("verified")) { btnVerifyCodeSuccess.addClass("hide"); btnResendVerifyCode.removeClass("disabled").removeClass("hide").data("vcid",""); VCountDown.addClass("hide").removeClass("disabled"); txtVcode.removeAttr("readonly").val(""); $("#vsno").empty(); } _wait=defaultwait; } else { if(!fm.hasClass("verified")) { var txt=_wait+"秒後重試"; if(getAppConfig().lang=="pt"){ txt="Repetir após "+_wait+" segundos"; } else if(getAppConfig().lang=="en"){ txt="Retry after "+_wait+" seconds"; } else { txt=_wait+"秒後重試"; } VCountDown.removeClass("hide").addClass("disabled").text(txt); _wait--; smsverifytimer=setTimeout(function(){ VerifyCodeCountDown(obj) },1000); } } } fm.on("init",function(e){ $("[name='smsvcode']").removeAttr("readonly").val(""); $("[name='verifymobile']").val(""); $("[name='verifyareacode']").val(""); btnVerifyCodeSuccess.addClass("hide"); VCountDown.addClass("hide"); btnResendVerifyCode.removeClass("hide"); fm.removeClass("verified"); }) txtVcode.off().on("keyup blur",function(e){ var v=this.value; if(v==_smsverifycode && v!==""){ fm.addClass("verified"); btnVerifyCodeSuccess.removeClass("hide"); btnResendVerifyCode.addClass("hide").data("vcid",""); VCountDown.addClass("hide").removeClass("disabled"); txtVcode.attr("readonly",true); _wait=0; } //if (e.which == 13) //alert(e.which == 13); //btnResendVerifyCode.addClass("disabled"); return false; }); btnResendVerifyCode.off().on("click",function(e){ e.preventDefault(); var theBtn=$(this); if(theBtn.hasClass("disabled")) return false; theBtn.addClass("disabled"); fm.removeClass("verified"); mobile=$.trim(fm.find("[name=verifymobile]:visible").val()||""); areacode=$.trim(fm.find("[name=verifyareacode]:visible").val()||""); //if(_wait>0) return false; if(fm.find("[name=verifyareacode]:visible").length>0){ if(areacode.length==0) { theBtn.removeClass("disabled"); setParentIframeHeight($("body")); clearAllElmTips(); var elm=$("[name=areacode]"); elm.focus(); elm.parents(".input-group").elmTips(lng("請輸入正確的地區碼!","Por favor, insira o código de área correto!","Please enter the correct area code!"),{style:"display:inline-block"}); //scrollToPageElement(elm); return false; } } if(fm.find("[name=verifymobile]:visible").length>0){ if(mobile.length==0) { theBtn.removeClass("disabled"); setParentIframeHeight($("body")); clearAllElmTips(); var inputMobile=$("[name=mobile]"); inputMobile.focus().elmTips(lng("建議填手機號碼!","Preferencialmente número de telemóvel!"),{style:"display:block"}); //alert($("[name=mobile]").length); scrollToPageElement(inputMobile); return false; } } var orgtext=theBtn.text(); theBtn.addClass("disabled").text(lng("傳送中...","Sending...","Sending...")); txtVcode.val("").focus().clearElmTips(); pdata=Base64.encode(JSON.stringify({mobile:mobile,areacode:areacode})); //console.log({f:"smsvcode",pdata:pdata,lang:appconfig.lang,sid:appconfig.sid}); $.post(appconfig.baseurl,{f:"smsvcode",pdata:pdata,lang:appconfig.lang,sid:appconfig.sid},function(rt){ //console.log(rt); // console.log(defaultwait); //theBtn.addClass("hide").removeClass("disabled").text(orgtext); theBtn.addClass("hide").text(orgtext); if(rt.result=="success"){ _smsverifycode=rt.vcode if(rt.vsno!==""){ $("#vsno").text(lng("短訊序號:","Número de série do SMS:","SMS serial number:")+rt.vsno); } VerifyCodeCountDown(this); //console.log("VerifyCodeCountDown") } else { theBtn.removeClass("hide"); } }, "json"); return false; }); } ; $(function(){ //console.log(appconfig); var tipsStyle="display:inline-block;margin-top:3px;white-space:normal !important;word-wrap: break-word; "; var updateIframeHeight=function(){setParentIframeHeight($(".rpage-body"));}; var pagebanner=$(".rpage-banner"); var pagebannerheight=pagebanner.outerHeight(); //$(".step:first").parents(".row").parent().css({"padding-top":pagebannerheight}); var defaultSmsVerifySeconds=90; setSmsVerify(defaultSmsVerifySeconds); try{ if(appconfig.formdata!=null){ var curRow=appconfig.formdata; $("[name=name_c]").val(curRow["name_c"]||""); $("[name=name_p]").val(curRow["name_p"]||""); $("[name=sex] option[value='"+curRow["sex"]+"']").attr("selected","selected"); $("[name=idnbr]").val(curRow["idnbr"]||""); $("[name=dpt]").val(curRow["dpt"]||""); $("[name=staffid]").val(curRow["staffid"]||""); $("[name=medtype]").val(curRow["medtype"]||""); $("[name=opt_medtype] option[value='"+curRow["medtype"]+"']").attr("selected","selected"); $("[name=licno_num]").val(curRow["licno_num"]||""); if ((curRow["licno_num"]||"")!=="") $("[name=licno]").val($("[name=opt_medtype] option:selected").attr("value")+"-"+(curRow["licno_num"]||"")); $("[name=mobile]").val(curRow["mobile"]||""); $("[name='verifymobile']").val(curRow["mobile"]||""); $("[name='smsvcode']").val(curRow["smsvcode"]||""); $("#VerifyCodeCountDown").text(defaultSmsVerifySeconds); $("[name=tel]").val(curRow["tel"]||""); $("[name=email]").val(curRow["email"]||""); $((curRow["courseitem"]||"").split(",")).each(function(){ $("[name=courseitem][value='"+this+"']").parents("tr").remove(); }); } } catch(e){} if($("[name=courseitem]").length==0){ $(".btn-step[nextstep=1]").after(juicer("${lng('沒有可報的時段!','Sem período de registo!','No registration period!')}",curRow)); $(".btn-step[nextstep=1]").remove(); $(".applycourses,.btn-submit").remove(); } $(".btn-step[nextstep=1]").removeClass("hide"); if(isMobile){ $("[name='staffid'],[name='mobile'],[name='tel'],[name='idnbr'],[name='licno_num']").attr("type","number"); $("[name='email']").attr("type","email"); } else { // $("[name='licno']").each(function(k){ // $.mask.definitions["T"]="[WACSwacs]"; // $(this).mask("T-9999",{autoclear: false}); // }); // $("[name='staffid']").each(function(k){ // $(this).mask("9999999",{autoclear: false}); // }); // $("[name='mobile']").each(function(k){ // $(this).mask("69999999",{autoclear: false}); // }); } var getOnlyMaxLength=function(v,maxlength){ v=(v||"").toString().toUpperCase(); if(v.length>maxlength && maxlength>0) v=v.substring(0,maxlength); return v; } $(":input[maxlength]").on("keypress",function(e){ this.value=getOnlyMaxLength(this.value.toString(),$(this).attr("maxlength")||0) }); $(":input[maxlength][type=number]").on("blur",function(e){ this.value=getOnlyMaxLength(this.value.toString(),$(this).attr("maxlength")||0).replace(/[^\d]/g, ""); }); $("[name='mobile']").on("blur",function(e){ $("[name='verifymobile']").val($(this).val()); $("#VerifyCodeCountDown").text(defaultSmsVerifySeconds); $(this).clearElmTips(); var v=($(this).val()||"").toString().toUpperCase(); if(v.length>0){ if(!isMacauMobile(v)){ $(this).focus().select().elmTips(lng('請輸入流動電話號碼且必須為6開頭的8個數字號碼','Por favor introduza o número de telemóvel e este deve ser um número de 8 dígitos começando por 6','Please enter the cell phone number and it must be an 8 digit number starting with 6'),{style:tipsStyle}); } } }); $("[name='tel']").on("blur",function(e){ $(this).clearElmTips(); var v=($(this).val()||"").toString().toUpperCase(); if(v.length>0){ if(!isMacauTel(v)){ $(this).focus().select().elmTips(lng('請輸入聯絡電話號碼必須為28開頭的8個數字號碼','O número de contacto deve ser um número de 8 dígitos, começando por 28。','The contact number must be an 8-digit number starting with 28.'),{style:tipsStyle}); } } }); // $("[name='email']").on("blur",function(e){ // $(this).clearElmTips(); // var v=($(this).val()||"").toString().toUpperCase(); // if(v.length>0){ // if(!isEmail(v)){ // $(this).focus().select().elmTips(lng("請輸入正確的電郵","Por favor, digite o e-mail correto")+" eg: abc@abc.org",{style:tipsStyle}); // } // } // }); // $("[name='licno']").on("blur",function(e){ // var v=($(this).val()||"").toString().toUpperCase(); // $(this).clearElmTips(); // if(v.length>0){ // if(!isLicno(v)){ // $(this).focus().select().elmTips(lng('請輸入正確的執照編號','Por favor introduza o número de licença correcto')+" eg. M-XXXX, WL-XXXX ",{style:tipsStyle}); // } // } // }); $("[name='opt_medtype']").on("change",function(e){ var opt=$(this).find('option:selected'); var mtype=opt.attr('value'); $('[name=profession]').val($.trim(opt.text())); $('[name=medtype]').val(mtype); var v=$("[name='licno_num']").val(); if(v.length>0){ $('[name=licno]').val(mtype+'-'+v); } }); $("[name='licno_num']").on("change keypress keyup",function(e){ $(this).val($(this).val().replace(/[^0-9\-]+/g, '')); }).on("keyup",function(e){ var v=$(this).val().trim(); if(v.length>0){ var mtype=$('[name=medtype]').val(); if(mtype==''){ var optmtype=$('[name=opt_medtype] option:selected').attr('value'); $('[name=medtype]').val(optmtype); mtype=optmtype }; if (v.length>4) v=v.substring(0,4); $('[name=licno]').val(mtype+'-'+v); } else { $('[name=licno]').val(v); } }) $("[name='idnbr']").on("blur",function(e){ var v=($(this).val()||"").toString().toUpperCase(); $(this).clearElmTips(); if(v.length>0){ if(!isMacauIdnbr(v)){ $(this).focus().select().elmTips(lng("不正確的澳門居民身份證號碼","BIR N.º de Macau incorrecto","Incorrect BIR Macau No."),{style:tipsStyle}); } } }); $(window).on("scroll",function(){ // if($(window).scrollTop()0){ elm.removeClass("disabled"); updateIframeHeight(); scrollToPageElement(step1.find(".required-field").eq(0)); return false; } } $(".step").addClass("hide").eq(nStep).removeClass("hide"); setTimeout(function(){ updateIframeHeight(); if(window.self !== window.top) { scrollToPageElement(); } else { $(window).scrollTop(0); } },0); elm.removeClass("disabled"); }); $("#captcha").on("click",function(e){ $.post(appconfig.baseurl,{f:"refreshcaptcha",sid:appconfig.sid},function(rt){ rt=JSON.parse(rt); $("#captcha").text(rt.vsno); }); }); $.fn.inputTips=function(tipsmsg){ var elm=$(this); return this.each(function(){ elm.clearElmTips(); elm.elmTips(tipsmsg,{style:tipsStyle}); updateIframeHeight(); //scrollToPageElement(elm); //setTimeout(function(){ if(elm.find(":input:visible").length>0){ elm.find(":input:visible:first").focus().select(); } else { elm.focus().select(); } setTimeout(function(){ scrollToPageElement(elm,0,150); },0); //},0); }); } $(".btn-submit").on("click",function(e){ var elm=$(this); var myForm=$("#form1"); var passdata=retrieveFormData(myForm); $(".required-field,.required-tips").removeClass("required-field bordered-danger"); $(".required-tips").remove(); //console.log(passdata); if(passdata.name_c=="" && passdata.name_p =="") { $("[name=name_c]:visible").inputTips(lng("必須填寫","Preenchimento obrigatório","Required")); elm.removeClass("disabled"); return false; } else if(passdata.name_c!==""){ if(!passdata.name_c.isChinese()){ $("[name=name_c]:visible").inputTips(lng("必須是中文姓名","Deve ser chinês","Must be Chinese")); elm.removeClass("disabled"); return false; } } else if(passdata.name_p!==""){ if(passdata.name_p.isInChinese()){ elm.removeClass("disabled"); $("[name=name_p]:visible").inputTips(lng("必須是外文姓名","Não pode ser um nome chinês ","Cannot be a Chinese name ")); elm.removeClass("disabled"); return false; } } if(passdata.licno==""){ $("[name=licno_num]").inputTips(lng("必須填寫執照編號!","Licença devem ser preenchidos!","Must fill in license")); elm.removeClass("disabled"); return false; } /* if (passdata.licno!=="" && passdata.staffid==""){ if(!isLicno(passdata.licno)){ $("[name=licno]").inputTips(lng("不正確的執照編號!","Número de licença incorrecto!","Incorrect license number!")); elm.removeClass("disabled"); return false; } } else if (passdata.licno=="" && passdata.staffid!==""){ if(!isSsStaffid(passdata.staffid)){ $("[name=staffid]").inputTips(lng("不正確的員工編號!","Número de pessoal incorrecto!","Incorrect employee number!")); elm.removeClass("disabled"); return false; } } else{ if(passdata.licno=="" || passdata.staffid==""){ $("[name=licno_num]").inputTips(lng("必須填寫執照或員工編號!","Licença ou número de pessoal devem ser preenchidos!","Must fill in license or employee number")); elm.removeClass("disabled"); return false; } } */ if(!isMacauIdnbr(passdata.idnbr)){ $("[name=idnbr]:visible").inputTips(lng("不正確的澳門居民身份證號碼","BIR N.º de Macau incorrecto","Incorrect BIR Macau No.")); elm.removeClass("disabled"); return false; } if(!isMacauMobile(passdata.mobile)){ $("[name=mobile]:visible").inputTips(lng("請輸入正確的手機號碼!","Por favor introduza o número de telemóvel correcto!","Please enter the correct cell phone number")); elm.removeClass("disabled"); return false; } if(passdata.email!=="") { if(!isEmail(passdata.email)){ $("[name=email]:visible").inputTips(lng("請輸入正確的電郵","Por favor, digite o e-mail correto")+" eg: abc@abc.org"); elm.removeClass("disabled"); return false; } } //console.log(passdata); if(!checkRequiredInputs(myForm)){ updateIframeHeight(); elm.removeClass("disabled"); return false; } $("table.applycourses").parent().removeClass("required-field bordered bordered-red"); if($("[name=courseitem]:checked").length==0){ $("table.applycourses").parent().addClass("required-field bordered bordered-red").elmTips(lng("必須鈎選","Preenchimento obrigatório","Required"),{style:tipsStyle});; updateIframeHeight(); scrollToPageElement($("table.applycourses")); elm.removeClass("disabled"); return false; } $(".agreement").removeClass("required-field bordered bordered-red") if (!(passdata.ag1=="Y" && passdata.ag2=="Y")){ $(".agreement").addClass("required-field bordered bordered-red"); updateIframeHeight(); elm.removeClass("disabled"); return false; } if($("[name=smsvcode]").val()==""){ $('.smsverify').removeClass('hide'); updateIframeHeight(); scrollToPageElement($("[name=smsvcode]")); elm.removeClass("disabled"); return false; } //console.log(passdata); $("#form1").submit(); return false; }); updateIframeHeight(); scrollToPageElement(); });