// work-around for Apex bug in chrome that sporadically obscures input items on focus window.onload = (event) => { $(".apex-item-select").css("backface-visibility", "hidden") $(".apex-item-text").css("backface-visibility", "hidden") $(".apex-item-textarea").css("backface-visibility", "hidden") $(".apex-item-multi ").css("backface-visibility", "hidden") }; // ------------------------------------------------------------------------------------------------ function calcAge(dobVal,endVal) { // dob and dt are assumed to be valid mm/dd/yyyy dates var endArr = endVal.split('/'); var dobArr = dobVal.split('/'); // age based just on year age = parseInt(endArr[2]) - parseInt(dobArr[2]); if(isNaN(age)) return ""; // adjust for month and day var endMMDD = parseInt(endArr[0]+endArr[1]); var dobMMDD = parseInt(dobArr[0]+dobArr[1]); if(dobMMDD > endMMDD) { // end date month and day greater than start day month, have not reached age based on calendar year difference --age; } return age; } // ------------------------------------------------------------------------------------------------ function calcAgeItems(dobId, dtId) { // dobItm and dtItm are assumed to contain valid mm/dd/yyyy dates return calcAge( $("#"+dobId).val() , $("#"+dtId).val() ) } // ------------------------------------------------------------------------------------------------ function addToolTipEvent() { // designed to append the tooltip to the body // and display in right position with in the window frame $('.tooltip').hover(function() { $('
').text(this.getAttribute("data-desc")).appendTo("body").fadeIn("slow"); }, function() { $(".tooltip2").remove(); }).mousemove(function(b) { var leftPos = b.pageX + 20; var topPos = b.pageY + 10; //var disptt = $('#dispToolTip'); //var dispWidth = disptt.width; //alert(disptt); //alert(dispWidth); if(leftPos > window.innerWidth - 530) { leftPos = window.innerWidth - 530; } $(".tooltip2").css({ top: topPos, left: leftPos }); }); } // ------------------------------------------------------------------------------------------------ function setAgeItem(itmId, dobId, dtId) { $("#" + itmId).val( calcAgeItems(dobId, dtId) ); } // ------------------------------------------------------------------------------------------------ function setIfNull(itmId, fromId) { if($("#"+itmId).val() == "") { $("#"+itmId).val($("#"+fromId).val()); } } // ------------------------------------------------------------------------------------------------ function today() { var dt = new Date(); var mm2 = dt.getMonth(); var yyyy2 = dt.getFullYear(); var dd2 = dt.getDate(); // increment for formatting mm2 += 1; if(mm2 < 10) mm2 = "0" + mm2; if(dd2 < 10) dd2 = "0" + dd2; dtVal = mm2 + "/" + dd2 + "/" + yyyy2; return(dtVal); } // ------------------------------------------------------------------------------------------------ function checkDateVal(dtVal) { // this can be replaced with: // var dateVar = $.datepicker.parseDate( "mm/dd/yy", dtVal ); // which returns a JavaScript date, which can then be formatted with // return $.datepicker.formatDate( "mm/dd/yy", dateVar); // need to user try{} catch{} to catch Invalid date errors var delimiter; if(dtVal.indexOf("/") > -1){ delimiter = "/"; } else if(dtVal.indexOf("-") > -1){ delimiter = "-"; } var dtArr = dtVal.split(delimiter); var mm; var dd; var yyyy; if(dtArr.length == 3) { if(dtVal.length == 10 ) { if(delimiter=="/"){ mm = parseInt(dtArr[0]); dd = parseInt(dtArr[1]); yyyy = parseInt(dtArr[2]); } else { yyyy = parseInt(dtArr[0]); mm = parseInt(dtArr[1]); dd = parseInt(dtArr[2]); } } else { return("err:Invalid date format (use mm/dd/yyyy): " + dtVal); } } else if(dtArr.length == 1 && dtVal.length == 8) { mm = parseInt(dtVal.substr(0,2)); dd = parseInt(dtVal.substr(2,2)); yyyy = parseInt(dtVal.substr(4,4)); } else { return("err:Invalid date format (use mm/dd/yyyy): " + dtVal); } // is date valid? var dtUTC = Date.UTC(yyyy, mm, dd); if(isNaN(dtUTC)) { return("err:Invalid date format (use mm/dd/yyyy): " + dtVal); } var dt = new Date(yyyy,mm-1,dd); var mm2 = dt.getMonth(); var yyyy2 = dt.getFullYear(); var dd2 = dt.getDate(); // did elements convert to input value? if(mm-1 != mm2 || dd != dd2 || yyyy != yyyy2) { return("err:Invalid date : " + dtVal); } // increment for formatting mm2 += 1; if(mm2 < 10) mm2 = "0" + mm2; if(dd2 < 10) dd2 = "0" + dd2; dtVal = mm2 + "/" + dd2 + "/" + yyyy2; return(dtVal); } // checkDateVal // ------------------------------------------------------------------------------------------------ function asDate(dtStr,pDelimiter) { if(dtStr == "") return ""; var dtArr = dtStr.split(pDelimiter); var dt = new Date(dtArr[2], dtArr[0]-1, dtArr[1]); return dt; } // ------------------------------------------------------------------------------------------------ function checkDateItemId(itemId, minDate, maxDate) { if ((document.getElementById(itemId).getAttribute("class") != null && document.getElementById(itemId).getAttribute("class") != undefined) && document.getElementById(itemId).getAttribute("class").indexOf('apex-item-datepicker-jet') >= 0) { //console.log('oj'); var itm = document.getElementById(itemId+'|input'); } else { //console.log('not oj'); var itm = document.getElementById(itemId); } if(itm.value == "") return true; var dateValue = itm.value.substr(0,10); var dtVal = checkDateVal(dateValue); if(dtVal.slice(0,4) == 'err:') { //alertMsg(dtVal.slice(4),'Invalid Date ',itemId,'','','OK'); itm.value = ''; apex.message.alert(dtVal.slice(4)); return false; } // valid date, display formatted version itm.value = dtVal; // valid range? if(minDate != undefined || maxDate != undefined) { if( (minDate != "" && asDate(dtVal) < asDate(minDate)) || (maxDate != "" && asDate(dtVal) > asDate(maxDate)) ) { if(minDate != "" && maxDate != "") { alertMsg( "Date must be from " + minDate + " to " + maxDate, "Invalid Date", itemId,'','','OK'); } else if(minDate != "") { alertMsg( "Date cannot be less than " + minDate, "Invalid Date", itemId,'','','OK'); } else if(maxDate != "") { alertMsg( "Date cannot be greater than " + maxDate, "Invalid Date", itemId,'','','OK'); } return false; } } return true; } // checkDateItemId // ------------------------------------------------------------------------------------------------ // not used as of 6/5/2018 function isDate(dtVal,itemID) { var dtArr = dtVal.split('/'); var mm; var dd; var yyyy; if(dtArr.length == 3 && dtVal.length == 10 ) { mm = parseInt(dtArr[0])-1; dd = parseInt(dtArr[1]); yyyy = parseInt(dtArr[2]); } else if(dtVal.length != 8) { alertMsg("Invalid date: " + dtVal, "Invalid Date", itemID,'','','OK'); return false; } else { mm = parseInt(dtVal.substr(0,2))-1; dd = parseInt(dtVal.substr(2,2)); yyyy = parseInt(dtVal.substr(4,4)); } var dt = Date.UTC(yyyy, mm, dd); if(isNaN(dt)) { alertMsg("Invalid date: " + dtVal, "Invalid Date", itemID,'','','OK'); return false; } return true; } // ------------------------------------------------------------------------------------------------ // originally created for page 17 of Marriage & Divorce app // reworked to pass target page number // note that the Pxx_REPORT_PAGE_ID item is still required on the target page function printerFriendly(tgtPage) { var appID = $v('pFlowId'); // APP_ID var pageID = $v('pFlowStepId'); // APP_PAGE_ID var sessionID = $v('pInstance'); // SESSION var vUrl = "f?p=" + appID + ":" + tgtPage + ":" + sessionID + "::NO:RP:P"+tgtPage+"_REPORT_PAGE_ID:" + pageID window.open(vUrl, "_blank", "width=800,height=600"); } // ------------------------------------------------------------------------------------------------ function alertMsg(msg, ttl, itm, ht, wd, btn1, btn2, btn3) { // sized per Apex item help var htVar = (!ht ? 350 : ht); var wdVar = (!wd ? 500 : wd); var ttlVar = (!ttl ? "Alert!" : ttl); var msg = $('') .html(msg.replace("\n","