电话号码JS检测验证代码分享

function XrfCheckPhoneNumber(sInputID, sDivID, sAlertID, sIsGoTop, sGoTopDistance) {
	var vCheck = $.trim($("#" + sInputID).val());
	var vValidChars = "1234567890 +-.()";
	if (!XrfCheckValid(sInputID, sDivID, sAlertID, 8, 50, vValidChars, sIsGoTop, sGoTopDistance)) {
		return false
	} else {
		XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
		return true
	}
}

 今天给客户开发的网站 https://www.zhaohespray.com/, 添加了一个新功能,为了防止客户随意乱输入,给INPUT添加一个JS验证功能,

其他相关代码一并分享,

   1 function XrfStatusPrompt(sStatus, sInputID, sDivID, sAlertID, sAlertMsg, sIsGoTop, sGoTopDistance) {
   2     if (sStatus == "NG") {
   3         if (sDivID != "") {
   4             XrfGoScrollTop(sIsGoTop, sDivID, sGoTopDistance, sDivID, "bg-warning", "")
   5         } else {
   6             $("#" + sInputID).addClass("is-invalid")
   7         }
   8         if (sAlertID != "") {
   9             $("#" + sAlertID).html(sAlertMsg)
  10         }
  11         return false
  12     } else {
  13         if (sDivID != "") {
  14             $("#" + sDivID).removeClass("bg-warning")
  15         } else {
  16             $("#" + sInputID).removeClass("is-invalid")
  17         }
  18         if (sAlertID != "") {
  19             $("#" + sAlertID).html("")
  20         }
  21         return true
  22     }
  23 }
  24 function XrfGoScrollTop(sIsGoTop, sDivScrTopID, sDivScrTopDistance, sDivCssID, sDivCssStr, sInputFocusID) {
  25     if (sDivCssID != "") {
  26         $("#" + sDivCssID).addClass(sDivCssStr)
  27     }
  28     if ((sIsGoTop == 1) && (sDivScrTopID != "")) {
  29         $("html,body").animate({
  30             scrollTop: $("#" + sDivScrTopID).offset().top - sDivScrTopDistance
  31         },
  32         1000)
  33     }
  34     if (sInputFocusID != "") {
  35         $("#" + sInputFocusID).focus()
  36     }
  37 }
  38 function XrfUrlPointToAnchor(sIsGoTop, sGoTopDistance, sMediaMinwidth) {
  39     var vCurnUrl = window.location.href;
  40     if (vCurnUrl.indexOf("#", 0) > 0) {
  41         vSptURL = vCurnUrl.split("#");
  42         if ((vSptURL[1] != "") && ($(window).width() >= sMediaMinwidth)) {
  43             XrfGoScrollTop(sIsGoTop, vSptURL[1], sGoTopDistance, "", "", "")
  44         }
  45     }
  46 }
  47 function XrfCheckValid(sInputID, sDivID, sAlertID, sCharMin, sCharMax, sValidChars, sIsGoTop, sGoTopDistance) {
  48     var vCheck = $.trim($("#" + sInputID).val());
  49     if (vCheck == "") {
  50         XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, "Not allow null.", sIsGoTop, sGoTopDistance);
  51         return false
  52     }
  53     vCheck = vCheck.replace(/[\n\r]/g, " ");
  54     if ((vCheck.length < sCharMin) || (vCheck.length > sCharMax)) {
  55         XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, "Must be " + sCharMin + "-" + sCharMax + " characters.", sIsGoTop, sGoTopDistance);
  56         return false
  57     }
  58     if (sValidChars != "") {
  59         for (i = 0; i < vCheck.length; i++) {
  60             if (sValidChars.indexOf(vCheck.charAt(i).toUpperCase()) == -1) {
  61                 XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, "Invalid character.", sIsGoTop, sGoTopDistance);
  62                 return false
  63             }
  64         }
  65     }
  66     XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
  67     return true
  68 }
  69 function XrfCheckEmail(sInputID, sDivID, sAlertID, sIsGoTop, sGoTopDistance) {
  70     var vCheck = $.trim($("#" + sInputID).val());
  71     var vValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_@.";
  72     if (!XrfCheckValid(sInputID, sDivID, sAlertID, 5, 50, vValidChars, sIsGoTop, sGoTopDistance)) {
  73         return false
  74     }
  75     if ((vCheck == "") || (vCheck.length < 5) || (vCheck.charAt(0) == ".") || (vCheck.charAt(0) == "@") || (vCheck.indexOf("@", 0) == -1) || (vCheck.indexOf(".", 0) == -1) || (vCheck.lastIndexOf("@") == vCheck.length - 1) || (vCheck.lastIndexOf(".") == vCheck.length - 1)) {
  76         XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, "Invalid Email.", sIsGoTop, sGoTopDistance);
  77         return false
  78     } else {
  79         XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
  80         return true
  81     }
  82 }
  83 function XrfCheckPhoneNumber(sInputID, sDivID, sAlertID, sIsGoTop, sGoTopDistance) {
  84     var vCheck = $.trim($("#" + sInputID).val());
  85     var vValidChars = "1234567890 +-.()";
  86     if (!XrfCheckValid(sInputID, sDivID, sAlertID, 8, 50, vValidChars, sIsGoTop, sGoTopDistance)) {
  87         return false
  88     } else {
  89         XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
  90         return true
  91     }
  92 }
  93 function XrfCheckOnlyEngChars(sInputID, sDivID, sAlertID, sCharMin, sCharMax, sIsGoTop, sGoTopDistance) {
  94     var vValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  95     if (!XrfCheckValid(sInputID, sDivID, sAlertID, sCharMin, sCharMax, vValidChars, sIsGoTop, sGoTopDistance)) {
  96         return false
  97     }
  98     return true
  99 }
 100 function XrfAotoGoCountdown(sSecsNum, sSecsSpanID, sGotoURL) {
 101     document.getElementById(sSecsSpanID).innerHTML = sSecsNum;
 102     if (--sSecsNum > 0) {
 103         setTimeout("XrfAotoGoCountdown(" + sSecsNum + ",'" + sSecsSpanID + "', '" + sGotoURL + "')", 1000)
 104     } else {
 105         window.location.href = sGotoURL
 106     }
 107 }
 108 function XrfVerificationCode(sAct, sRtnID) {
 109     var url = "/ajax/verification_code.asp?xAct=" + encodeURIComponent(sAct) + "&t=" + Math.random();
 110     $.get(url,
 111     function(sMsg) {
 112         if (sAct == "Refresh") {
 113             $("#" + sRtnID).val(sMsg)
 114         } else {
 115             $("#" + sRtnID).html(sMsg)
 116         }
 117     })
 118 }
 119 function XrfCheckVerificationCode(sInputID, sConfirmID, sDivID, sIsGoTop, sGoTopDistance) {
 120     var vCheck = $.trim($("#" + sInputID).val());
 121     var vCheckConfirm = $.trim($("#" + sConfirmID).val());
 122     if ((vCheck == "") || (vCheck.length != 4) || (vCheck.toUpperCase() != vCheckConfirm.toUpperCase())) {
 123         XrfStatusPrompt("NG", sInputID, sDivID, "", "", sIsGoTop, sGoTopDistance);
 124         return false
 125     } else {
 126         XrfStatusPrompt("OK", sInputID, sDivID, "", "", sIsGoTop, sGoTopDistance);
 127         return true
 128     }
 129 }
 130 function XrfUserCountry(sAct, sScene, sRtnID, sUserCountryVal, sUserCountryRowID, sIsReload, sChooseSize) {
 131     if (sAct == "Init") {
 132         if (!XrfCheckOnlyEngChars("xri_UserCountry", sUserCountryRowID, "", 0, 3, 1, 100)) {
 133             return false
 134         }
 135         sUserCountryVal = $("#xri_UserCountry").val()
 136     }
 137     var url = "/ajax/user_country.asp?xAct=" + encodeURIComponent(sAct) + "&sScene=" + encodeURIComponent(sScene) + "&sRtnID=" + encodeURIComponent(sRtnID) + "&sUserCountryVal=" + encodeURIComponent(sUserCountryVal) + "&sUserCountryRowID=" + encodeURIComponent(sUserCountryRowID) + "&sIsReload=" + encodeURIComponent(sIsReload) + "&sChooseSize=" + encodeURIComponent(sChooseSize) + "&t=" + Math.random();
 138     $.get(url,
 139     function(sMsg) {
 140         $("#" + sRtnID).html(sMsg);
 141         if (sIsReload == "1") {
 142             window.location.reload()
 143         }
 144     })
 145 }
 146 function XrfMailRelaySend(sIsDisplaySending, sRtnDivID, sMailTo, sMailTName, sMailCC, sMailSort, sRefID, sRefStr) {
 147     if (sIsDisplaySending == "1" && sRtnDivID != "") {
 148         $("#" + sRtnDivID).html('<i class="fas fa-spinner fa-pulse fa-3x fa-fw"></i> Sending email ...')
 149     }
 150     var url = "/ajax/email.send.asp";
 151     $.post(url, {
 152         sMailTo: sMailTo,
 153         sMailTName: sMailTName,
 154         sMailCC: sMailCC,
 155         sMailSort: sMailSort,
 156         sRefID: sRefID,
 157         sRefStr: sRefStr
 158     },
 159     function(sMsg) {
 160         vMsg = $.trim(sMsg);
 161         if (vMsg == "OK") {
 162             if (sRtnDivID != "") {
 163                 $("#" + sRtnDivID).html('<b class="text-success">An email sent to <i>' + sMailTo + "</i> successfully. Please check.</b>")
 164             }
 165             XrfMailSentUpdateStatus("success", sMailTo, sMailSort, sRefID, sRefStr)
 166         } else {
 167             if (sRtnDivID != "" && sIsDisplaySending == "1") {
 168                 $("#" + sRtnDivID).html('<b class="text-danger">Delivery to the recipient <i>' + sMailTo + "</i> failed. Please contact us.</b>")
 169             }
 170         }
 171     })
 172 }
 173 function XrfMailSentUpdateStatus(sSentStatus, sMailTo, sMailSort, sRefID, sRefStr) {
 174     var url = "/ajax/email_sent_update.asp?sSentStatus=" + encodeURIComponent(sSentStatus) + "&sMailSort=" + encodeURIComponent(sMailSort) + "&sRefID=" + encodeURIComponent(sRefID) + "&sRefStr=" + encodeURIComponent(sRefStr) + "&t=" + Math.random();
 175     $.post(url, {
 176         sSentStatus: sSentStatus,
 177         sMailTo: sMailTo,
 178         sMailSort: sMailSort,
 179         sRefID: sRefID,
 180         sRefStr: sRefStr
 181     })
 182 }
 183 function XrfOrderPpecSubseProce(sAct, sUserIDreg, sOrderIDnew, sOrderIDpaid, sUserID, sUserEmail, sUserName, sUserType, sUserMyName, sUserIsLimited) {
 184     var url = "/ajax/order_subse.asp";
 185     $.post(url, {
 186         sAct: sAct,
 187         sUserIDreg: sUserIDreg,
 188         sOrderIDnew: sOrderIDnew,
 189         sOrderIDpaid: sOrderIDpaid,
 190         sUserID: sUserID,
 191         sUserEmail: sUserEmail,
 192         sUserName: sUserName,
 193         sUserType: sUserType,
 194         sUserMyName: sUserMyName,
 195         sUserIsLimited: sUserIsLimited,
 196         sScreenWidth: window.screen.width,
 197         sScreenHeight: window.screen.height
 198     },
 199     function(sMsg) {
 200         vMsg = $.trim(sMsg);
 201         if (vMsg == "OK") {
 202             $("#xri_Hd_Nav_Toggle_CartQty").html("").addClass("d-none");
 203             $("#xri_Hd_Nav_CartQtyBadge").html("");
 204             $("#xri_Hd_Nav_CartQty").html("My Shopping Cart");
 205             $("#xri_Hd_Wrap_CartQty").html("")
 206         }
 207     })
 208 }
 209 function XrfOrderDoSubseProce(sAct, sOrderIDnew) {
 210     var url = "/ajax/order_subse.asp";
 211     $.post(url, {
 212         sAct: sAct,
 213         sOrderIDnew: sOrderIDnew,
 214         sScreenWidth: window.screen.width,
 215         sScreenHeight: window.screen.height
 216     },
 217     function(sMsg) {
 218         vMsg = $.trim(sMsg);
 219         if (vMsg == "OK") {
 220             XrfSiteHeader("")
 221         }
 222     })
 223 }
 224 function XrfSchProCheckForm() {
 225     if ($("#xri_ProSch_Query").val() == "") {
 226         $("#xri_ProSch_Query").val($("#xri_Hd_Nav_Sch_Sentence").val())
 227     }
 228     return true
 229 }
 230 function XrfSchProCheckFormMobi() {
 231     if ($("#xri_ProSch_Query_Mobi").val() == "") {
 232         $("#xri_ProSch_Query_Mobi").val($("#xri_Hd_Nav_Sch_Sentence").val())
 233     }
 234     return true
 235 }
 236 function XrfSchProSelectSort(sDirID, sDirTitle) {
 237     if (sDirID != "0") {
 238         $("#xri_Hd_Nav_Sch_DirID").val(sDirID);
 239         $("#xri_Hd_Nav_Sch_SelectBtnText").html(sDirTitle)
 240     }
 241     if (sDirID == "") {
 242         $("#xri_Hd_Nav_Sch_SelectCateAll").hide()
 243     } else {
 244         $("#xri_Hd_Nav_Sch_SelectCateAll").show()
 245     }
 246 }
 247 function XrfProAggregateInfo(sProID) {
 248     var url = "/ajax/pro_aggregate_info.asp?ProID=" + encodeURIComponent(sProID) + "&rnd=" + Math.random();
 249     $.get(url,
 250     function(sMsg) {
 251         vMsg = $.trim(sMsg);
 252         vSptMsg = vMsg.split("#}");
 253         if ($.trim(vSptMsg[0]) != "") {
 254             $("#xri_ProDt_SoldCount_" + sProID).html($.trim(vSptMsg[0]))
 255         }
 256         if ($.trim(vSptMsg[1]) != "") {
 257             $("#xri_ProDt_DiggCount_" + sProID).html($.trim(vSptMsg[1]))
 258         }
 259         if ($.trim(vSptMsg[2]) != "") {
 260             $("#xri_ProDt_ReviewsCount_" + sProID).html($.trim(vSptMsg[2]));
 261             $("#xri_ProDt_Tabs_ReviewsCount_" + sProID).html($.trim(vSptMsg[2]))
 262         }
 263         if ($.trim(vSptMsg[3]) != "") {
 264             $("#xri_ProDt_ReviewsRating_" + sProID).attr("class", $.trim(vSptMsg[3]))
 265         }
 266         if ($.trim(vSptMsg[4]) != "") {
 267             $("#xri_ProDt_Tabs_FaqQuesQty_" + sProID).html($.trim(vSptMsg[4]));
 268             if (parseInt($.trim(vSptMsg[4])) > 0) {
 269                 $("#xri_ProDt_Tab_Li_Faqs").removeClass("d-none")
 270             }
 271         }
 272         if ($.trim(vSptMsg[5]) != "") {
 273             $("#xmi_ProDt_FaqOverview_" + sProID).html($.trim(vSptMsg[5]))
 274         }
 275     })
 276 }
 277 function XrfProQtySubtotal(sAct, sProID, sInputID, sQtyMoq, sProPrice, sRtnDivID, sPrefixStr, sShippingRtnDivID, sIsPeriodPrice) {
 278     var vQtyNewValue = Number($("#" + sInputID).val());
 279     if (sAct == "Plus") {
 280         vQtyNewValue = vQtyNewValue + 1
 281     } else {
 282         if (sAct == "Minus") {
 283             vQtyNewValue = vQtyNewValue - 1
 284         }
 285     }
 286     if ((vQtyNewValue < sQtyMoq) || (vQtyNewValue < 1)) {
 287         vQtyNewValue = sQtyMoq
 288     }
 289     if ((sAct == "Plus") || (sAct == "Minus")) {
 290         $("#" + sInputID).val(vQtyNewValue)
 291     }
 292     switch (sIsPeriodPrice) {
 293     case 0:
 294         if ((sProPrice != "") && (sProPrice != null) && (sProPrice != 0) && (vQtyNewValue != "") && (vQtyNewValue != "0")) {
 295             var vProPrice = sProPrice.replace(",", "");
 296             var url = "/ajax/pro_qty_subtotal.asp?sProPrice=" + encodeURIComponent(vProPrice) + "&sQty=" + encodeURIComponent(vQtyNewValue) + "&t=" + Math.random();
 297             $.get(url,
 298             function(sMsg) {
 299                 $("#" + sRtnDivID).html(sPrefixStr + sMsg)
 300             })
 301         }
 302         break;
 303     default:
 304         XrfProPeriodPriceReset(sProID, vQtyNewValue, sRtnDivID, "ProDetailReset")
 305     }
 306     XrfProEstimateShippingCost(sProID, vQtyNewValue, sShippingRtnDivID, "")
 307 }
 308 function XrfProEstimateShippingCost(sProIDs, sProQtys, sRtnDivID, sIsReqPremiumDelivery) {
 309     var url = "/ajax/pro_shippingcost.asp?ProIDs=" + encodeURIComponent(sProIDs) + "&ProQtys=" + encodeURIComponent(sProQtys) + "&RtnDivID=" + encodeURIComponent(sRtnDivID) + "&IsReqPremiumDelivery=" + encodeURIComponent(sIsReqPremiumDelivery) + "&t=" + Math.random();
 310     $.get(url,
 311     function(sMsg) {
 312         vMsg = $.trim(sMsg);
 313         $("#" + sRtnDivID).html(vMsg)
 314     })
 315 }
 316 function XrfProDiggIt(sProID, sRtnDivID) {
 317     var url = "/ajax/pro_digg_it.asp?ProID=" + encodeURIComponent(sProID) + "&rnd=" + Math.random();
 318     $.get(url,
 319     function(sMsg) {
 320         vMsg = $.trim(sMsg);
 321         vSptMsg = vMsg.split("#}");
 322         switch ($.trim(vSptMsg[0])) {
 323         case "NG":
 324             $("#" + sRtnDivID).fadeOut(50).removeClass("btn-info btn-success").addClass("btn-warning").html($.trim(vSptMsg[1])).fadeIn(300);
 325             break;
 326         case "OK":
 327             $("#" + sRtnDivID).fadeOut(50).removeClass("btn-info btn-warning").addClass("btn-success").html($.trim(vSptMsg[1])).fadeIn(300);
 328             break
 329         }
 330     })
 331 }
 332 function XrtProAddToWish(sProID, sRtnDivID) {
 333     var url = "/ajax/pro_add_to_wish.asp?ProID=" + encodeURIComponent(sProID);
 334     $.get(url,
 335     function(sMsg) {
 336         vMsg = $.trim(sMsg);
 337         vSptMsg = vMsg.split("#}");
 338         switch ($.trim(vSptMsg[0])) {
 339         case "NG":
 340             $("#" + sRtnDivID).fadeOut(50).removeClass("btn-secondary btn-success").addClass("btn-warning").html($.trim(vSptMsg[1])).fadeIn(300);
 341             break;
 342         case "OK":
 343             $("#" + sRtnDivID).fadeOut(50).removeClass("btn-secondary btn-warning").addClass("btn-success").html($.trim(vSptMsg[1])).fadeIn(300);
 344             break
 345         }
 346     })
 347 }
 348 function XrtProMyWish(sDispSort, sWishSort, sRtnDivID) {
 349     var url = "/ajax/pro_wish.asp?sWishSort=" + encodeURIComponent(sWishSort) + "&sDispSort=" + encodeURIComponent(sDispSort) + "&t=" + Math.random();
 350     $.get(url,
 351     function(sMsg) {
 352         vMsg = $.trim(sMsg);
 353         $("#" + sRtnDivID).html(sMsg)
 354     })
 355 }
 356 function XrfProPeriodPriceReset(sPeriodPriceProIDs, sPeriodPriceProQtys, sPeriodPriceDisplayIDs, sPeriodPriceStyle) {
 357     var url = "/ajax/pro_period_price.asp?sPeriodPriceProIDs=" + encodeURIComponent(sPeriodPriceProIDs) + "&sPeriodPriceProQtys=" + encodeURIComponent(sPeriodPriceProQtys) + "&sPeriodPriceStyle=" + encodeURIComponent(sPeriodPriceStyle) + "&t=" + Math.random();
 358     $.get(url,
 359     function(sMsg) {
 360         vMsg = $.trim(sMsg);
 361         vSptMsgPPP = vMsg.split("#}");
 362         vPeriPriDisp = sPeriodPriceDisplayIDs.split("|");
 363         for (i = 0; i < vSptMsgPPP.length; i++) {
 364             if ($.trim(vSptMsgPPP[i]) != "") {
 365                 $("#" + vPeriPriDisp[i]).html($.trim(vSptMsgPPP[i]))
 366             }
 367         }
 368     })
 369 }
 370 function XrfProVariationChange(sAct, sVariationKeyword, sVariationImg, sVariationCurnItemID, sVariationItemIDs) {
 371     if (sAct == "Variation") {
 372         var vVariationImgStr = '<img class="img-fluid" src="' + sVariationImg + '">';
 373         $("#xri_ProDt_ProVariation_Img").addClass("easyzoom-flyout").html(vVariationImgStr);
 374         $("#xri_ProDt_ProVariation_Keyword").html(sVariationKeyword)
 375     } else {
 376         if (sAct == "VariationClick") {
 377             var vVariationImgStr = '<img class="img-fluid" src="' + sVariationImg + '">';
 378             $("#xri_ProDt_ProVariation_Img").addClass("easyzoom-flyout").html(vVariationImgStr);
 379             $("#xri_ProDt_ProVariation_Keyword").html(sVariationKeyword);
 380             vSptVariationItemIDs = sVariationItemIDs.split("|");
 381             for (i = 0; i < vSptVariationItemIDs.length; i++) {
 382                 if (vSptVariationItemIDs[i] == sVariationCurnItemID) {
 383                     $("#xri_ProDt_ProVariation_Item_" + vSptVariationItemIDs[i]).removeClass("xr-border-to-gray xr-hover-box-shadow-round").addClass("xr-border-gold xr-box-shadow-gold xr-bg-yellow")
 384                 } else {
 385                     $("#xri_ProDt_ProVariation_Item_" + vSptVariationItemIDs[i]).removeClass("xr-border-gold xr-box-shadow-gold xr-bg-yellow").addClass("xr-border-to-gray xr-hover-box-shadow-round")
 386                 }
 387             }
 388         } else {
 389             $("#xri_ProDt_ProVariation_Img").removeClass("easyzoom-flyout").html("");
 390             $("#xri_ProDt_ProVariation_Keyword").html(sVariationKeyword)
 391         }
 392     }
 393 }
 394 function XrfProMobVariationDetails(sDivID, sMobDivID) {
 395     $("#" + sMobDivID).removeClass("d-flex").addClass("d-none");
 396     $("#" + sDivID).removeClass("d-none d-sm-block");
 397     swiperProDtProVariation.update()
 398 }
 399 function XrfProMobMatchDetails() {
 400     $("#xri_ProMatch_Row").addClass("px-1 py-2");
 401     $("label").removeClass("d-none d-sm-inline");
 402     $("#xri_ProMatch_Items").removeClass("d-none d-sm-inline");
 403     $("#xri_ProMatch_Oper_Price").removeClass("position-relative py-2 py-sm-0 xr-box-shadow-round xr-box-shadow-sm-none border-top xr-border-sm-0");
 404     $("#xri_ProMatch_Oper_Price_Arrow").remove();
 405     $("#xri_ProMatch_Oper_Btn").removeClass("d-none d-sm-inline");
 406     $("#xri_ProMatch_Oper_Price_Act").remove()
 407 }
 408 function XrfProMobAttsDetails() {
 409     $("#xri_ProDt_Atts_hr").removeClass("d-none d-md-block");
 410     $("#xri_ProDt_Atts_Items").removeClass("d-none d-md-block");
 411     $("#xri_ProDt_Atts_Row").removeClass("xr-box-shadow-round xr-box-shadow-sm-none border xr-border-md-0 rounded xr-rounded-md-0");
 412     $("#xri_ProDt_Atts_Act").remove()
 413 }
 414 function XrfProRelated(sCurnProID, sRelatedProSortID, sRelatedProSchIDs, sRelatedSortHeadingTitle, sRelatedSortHeadingCss, sRtnDivID) {
 415     var url = "/ajax/pro_related.asp";
 416     $.post(url, {
 417         sRelatedProSortID: sRelatedProSortID,
 418         sRelatedProSchIDs: sRelatedProSchIDs,
 419         sRelatedSortHeadingTitle: sRelatedSortHeadingTitle,
 420         sRelatedSortHeadingCss: sRelatedSortHeadingCss,
 421         t: Math.random()
 422     },
 423     function(sMsg) {
 424         vMsg = $.trim(sMsg);
 425         if (vMsg != "") {
 426             $("#" + sRtnDivID).html(vMsg)
 427         }
 428     })
 429 }
 430 function XrfProMatches(sCurnProID, sRelatedProSortID, sMatchProSchIDs, sRtnDivID) {
 431     var url = "/ajax/pro_match.asp";
 432     $.post(url, {
 433         ProID: sCurnProID,
 434         RelatedProSortID: sRelatedProSortID,
 435         MatchProSchIDs: sMatchProSchIDs,
 436         t: Math.random()
 437     },
 438     function(sMsg) {
 439         vMsg = $.trim(sMsg);
 440         if (vMsg != "") {
 441             $("#" + sRtnDivID).html(vMsg)
 442         }
 443     })
 444 }
 445 function XrfProMatchChange(sCurnProID, sAllProMatchIDs, sRtnDivID) {
 446     if ($("#RelatedProID_Match_" + sCurnProID).is(":checked") == true) {
 447         $("#xri_ProMatch_Img_" + sCurnProID).fadeIn(500);
 448         $("#xri_ProMatch_Plus_" + sCurnProID).fadeIn(500);
 449         $("#xri_ProMatch_Item_" + sCurnProID).removeClass("xr-text-lightgray xr-link-lightgray")
 450     } else {
 451         $("#xri_ProMatch_Img_" + sCurnProID).fadeOut(500);
 452         $("#xri_ProMatch_Plus_" + sCurnProID).fadeOut(500);
 453         $("#xri_ProMatch_Item_" + sCurnProID).addClass("xr-text-lightgray xr-link-lightgray")
 454     }
 455     var vChosenProIDs = "";
 456     var vProIDSpt = sAllProMatchIDs.split("|");
 457     for (i = 0; i < vProIDSpt.length; i++) {
 458         if ($("#RelatedProID_Match_" + vProIDSpt[i]).is(":checked") == true) {
 459             if (vChosenProIDs == "") {
 460                 vChosenProIDs = $("#RelatedProID_Match_" + vProIDSpt[i]).val();
 461                 $("#xri_ProMatch_Plus_" + vProIDSpt[i]).fadeOut(10)
 462             } else {
 463                 vChosenProIDs = vChosenProIDs + "|" + $("#RelatedProID_Match_" + vProIDSpt[i]).val();
 464                 $("#xri_ProMatch_Plus_" + vProIDSpt[i]).fadeIn(500)
 465             }
 466         }
 467     }
 468     var url = "/ajax/pro_match_choose.asp?ChosenProIDs=" + encodeURIComponent(vChosenProIDs) + "&t=" + Math.random();
 469     $.get(url,
 470     function(sMsg) {
 471         vMsg = $.trim(sMsg);
 472         $("#" + sRtnDivID).html(sMsg)
 473     })
 474 }
 475 function XrfProTopReviews(sProID, sRtnDivID, sDispMode) {
 476     var vProTopReviews = $("#" + sRtnDivID).html();
 477     if (vProTopReviews == "") {
 478         $("#" + sRtnDivID).html('<i class="fas fa-spinner fa-pulse fa-2x"></i>');
 479         var url = "/ajax/pro_reviews_top.asp?ProID=" + sProID + "&DispMode=" + sDispMode + "&t=" + Math.random();
 480         $.get(url,
 481         function(sMsg) {
 482             vMsg = $.trim(sMsg);
 483             $("#" + sRtnDivID).html(vMsg);
 484             if (sDispMode == "Overview") {
 485                 $("#xri_ProDt_ReviewsOverview").popover({
 486                     html: true,
 487                     content: vMsg,
 488                     trigger: "hover",
 489                     placement: "bottom"
 490                 });
 491                 $("#xri_ProDt_ReviewsOverview").popover("show")
 492             }
 493         })
 494     }
 495 }
 496 function XrfProMobItemDetails(sDivID, sItemTitle, sExtra) {
 497     XrfModalReset();
 498     var vItemDetails = $("#" + sDivID).html();
 499     if (sItemTitle != "") {
 500         $("#xri_ModalTitle").addClass("font-weight-bold text-danger mt-3 h3 mr-auto");
 501         $("#xri_ModalTitle").html(sItemTitle)
 502     } else {
 503         $("#xri_ModalHeader").addClass("pb-4")
 504     }
 505     $("#xri_ModalBody").html(vItemDetails);
 506     if (sExtra != "") {
 507         vSptExtra = sExtra.split("|");
 508         for (i = 0; i < vSptExtra.length; i++) {
 509             vSptExtraVal = vSptExtra[i].split(",");
 510             if (vSptExtraVal.length == 3) {
 511                 if (vSptExtraVal[1] == "add") {
 512                     $("#xri_ModalBody ." + vSptExtraVal[0]).addClass(vSptExtraVal[2])
 513                 } else {
 514                     if (vSptExtraVal[1] == "remove") {
 515                         $("#xri_ModalBody ." + vSptExtraVal[0]).removeClass(vSptExtraVal[2])
 516                     }
 517                 }
 518             }
 519         }
 520     }
 521     $("#xri_ModalBack").removeClass("d-none");
 522     $("#xri_ModalClose").hide();
 523     $("#xri_ModalFooter").addClass("p-1");
 524     $("#xri_Modal").addClass("w-100 h-100 m-0 p-0 bg-waring");
 525     $("#xri_ModalDialog").addClass("w-100 m-0 p-0 xr-modal-dialog-fluid");
 526     $("#xri_Modal").modal("show")
 527 }
 528 function XrfCheckAddToCartPara(sIsNeedPara, sInputID, sDivID, sAlertID, sAlertMsg, sIsGoTop, sGoTopDistance) {
 529     if (sIsNeedPara == "1") {
 530         var vCheck = $.trim($("#" + sInputID).val());
 531         if ((vCheck == "") || (vCheck == null) || (vCheck == "0")) {
 532             XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, sAlertMsg, sIsGoTop, sGoTopDistance);
 533             return false
 534         } else {
 535             XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
 536             return true
 537         }
 538     } else {
 539         return true
 540     }
 541 }
 542 function XrfCheckAddToCartValues(sIsNeedPara, sInputIDs, sDivIDs, sAlertIDs, sAlertMsg, sIsGoTop, sGoTopDistance, sFormItemID) {
 543     var vItemVal = "",
 544     vDivID = "",
 545     vAlertID = "";
 546     if (sIsNeedPara == "1") {
 547         if (sInputIDs == "") {
 548             return false
 549         }
 550         var vInputIDsSpt = sInputIDs.split("|");
 551         if (sDivIDs != "") {
 552             var vDivIDsSpt = sDivIDs.split("|")
 553         }
 554         if (sAlertIDs != "") {
 555             var vAlertIDsSpt = sAlertIDs.split("|")
 556         }
 557         for (var i = 0; i < vInputIDsSpt.length; i++) {
 558             if (sDivIDs != "") {
 559                 vDivID = vDivIDsSpt[i]
 560             }
 561             if (sAlertIDs != "") {
 562                 vAlertID = vAlertIDsSpt[i]
 563             }
 564             if (!XrfCheckAddToCartPara(sIsNeedPara, vInputIDsSpt[i], vDivID, vAlertID, sAlertMsg, sIsGoTop, sGoTopDistance)) {
 565                 return false
 566             }
 567             if (vItemVal == "") {
 568                 vItemVal = $("#" + vInputIDsSpt[i]).val()
 569             } else {
 570                 vItemVal = vItemVal + "|" + $("#" + vInputIDsSpt[i]).val()
 571             }
 572         }
 573         $("#" + sFormItemID).val(vItemVal);
 574         return true
 575     }
 576     return true
 577 }
 578 function XrfAddToCart(sProIDs, sAddMethod, sProPropertyItems, sQtyItems, sIsGoTop, sGoTopDistance) {
 579     var vProPropertyVal = "";
 580     if (sProPropertyItems != "") {
 581         var vProPropertyItemsSpt = sProPropertyItems.split("|");
 582         for (var i = 0; i < vProPropertyItemsSpt.length; i++) {
 583             if (i > 0) {
 584                 vProPropertyVal = vProPropertyVal + "|"
 585             }
 586             if (vProPropertyItemsSpt[i] != "") {
 587                 var vProPropertyEachItemSpt = vProPropertyItemsSpt[i].split(",");
 588                 for (var j = 0; j < vProPropertyEachItemSpt.length; j++) {
 589                     var vProPropertyItemEleSpt = vProPropertyEachItemSpt[j].split(":");
 590                     var vInputID = "",
 591                     vDivID = "",
 592                     vAlertID = "";
 593                     vInputID = vProPropertyItemEleSpt[0];
 594                     if (vProPropertyItemEleSpt.length > 1) {
 595                         vDivID = vProPropertyItemEleSpt[1]
 596                     }
 597                     if (vProPropertyItemEleSpt.length > 2) {
 598                         vAlertID = vProPropertyItemEleSpt[2]
 599                     }
 600                     if (!XrfCheckAddToCartPara(1, vInputID, vDivID, vAlertID, "", sIsGoTop, sGoTopDistance)) {
 601                         return false
 602                     }
 603                     if (j == 0) {
 604                         vProPropertyVal = vProPropertyVal + $.trim($("#" + vInputID).val())
 605                     } else {
 606                         vProPropertyVal = vProPropertyVal + "," + $.trim($("#" + vInputID).val())
 607                     }
 608                 }
 609             }
 610         }
 611     }
 612     $("#xri_AddToCart_ProPropertyItems").val(vProPropertyVal);
 613     var vQtyVal = "";
 614     if (sQtyItems != "") {
 615         var vQtyItemsSpt = sQtyItems.split("|");
 616         for (var i = 0; i < vQtyItemsSpt.length; i++) {
 617             var vSingleQtyOptionsSpt = vQtyItemsSpt[i].split(":");
 618             var vQtyInputID = "",
 619             vQtyDivID = "",
 620             vQtyAlertID = "";
 621             vQtyInputID = vSingleQtyOptionsSpt[0];
 622             if (vSingleQtyOptionsSpt.length > 1) {
 623                 vQtyDivID = vSingleQtyOptionsSpt[1]
 624             }
 625             if (vSingleQtyOptionsSpt.length > 2) {
 626                 vQtyAlertID = vSingleQtyOptionsSpt[2]
 627             }
 628             if (!XrfCheckAddToCartPara(1, vQtyInputID, vQtyDivID, vQtyAlertID, "", sIsGoTop, sGoTopDistance)) {
 629                 return false
 630             }
 631             if (vQtyVal == "") {
 632                 vQtyVal = $.trim($("#" + vQtyInputID).val())
 633             } else {
 634                 vQtyVal = vQtyVal + "|" + $.trim($("#" + vQtyInputID).val())
 635             }
 636         }
 637     }
 638     $("#xri_AddToCart_QtyItems").val(vQtyVal);
 639     $("#xri_AddToCart_ProID").val(sProIDs);
 640     $("#xri_AddToCart_xAct").val("Add");
 641     $("#xri_AddToCart_AddMethod").val(sAddMethod);
 642     $("#xri_Form_AddToCart").submit()
 643 }
 644 function XrfCartShiptoCountry() {
 645     if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserCountry", "", 0, 3, 1, 100)) {
 646         return false
 647     }
 648     $("#xri_Cart_UserCountry").val($("#xri_UserCountry").val());
 649     $("#xri_Cart_xAct").val("UpdateShiptoCountry");
 650     $("#xri_Form_ShoppingCart").submit()
 651 }
 652 function XrfCartCouponSet() {
 653     if (!XrfCheckOnlyEngChars("xri_Cart_SetCouponCode", "", "", 2, 15, 0, 0)) {
 654         return false
 655     }
 656     $("#xri_Cart_CouponCode").val($("#xri_Cart_SetCouponCode").val());
 657     $("#xri_Cart_xAct").val("SetCouponCode");
 658     $("#xri_Form_ShoppingCart").submit()
 659 }
 660 function XrfCartCouponReset() {
 661     $("#xri_Row_CouponCode_Mark").addClass("d-none");
 662     $("#xri_Row_CouponCode_Apply").removeClass("d-none").addClass("d-flex").fadeIn(500)
 663 }
 664 function XrfCartReqPremiumDelivery() {
 665     var vIsReqPremiumDelivery = 0;
 666     if ($("#xri_IsReqPremiumDelivery").is(":checked") == true) {
 667         vIsReqPremiumDelivery = 1
 668     }
 669     $("#xri_Cart_ReqPremiumDelivery").val(vIsReqPremiumDelivery);
 670     $("#xri_Cart_xAct").val("UpdateReqPremiumDelivery");
 671     $("#xri_Form_ShoppingCart").submit()
 672 }
 673 function XrfCartProQty(sAct, sInputID, sQtyMoq, sProID, sProSku) {
 674     var vQtyOriValue = Number($("#" + sInputID).val());
 675     var vQtyNewValue = vQtyOriValue;
 676     if (sAct == "Plus") {
 677         vQtyNewValue = vQtyOriValue + 1
 678     } else {
 679         if (sAct == "Minus") {
 680             vQtyNewValue = vQtyOriValue - 1
 681         }
 682     }
 683     if ((vQtyNewValue < sQtyMoq) || (vQtyNewValue < 1)) {
 684         vQtyNewValue = sQtyMoq
 685     }
 686     $("#" + sInputID).val(vQtyNewValue);
 687     $("#xri_Cart_ProID").val(sProID);
 688     $("#xri_Cart_ProSku").val(sProSku);
 689     $("#xri_Cart_ProQty").val(vQtyNewValue);
 690     $("#xri_Cart_xAct").val("UpdateQty");
 691     $("#xri_Form_ShoppingCart").submit()
 692 }
 693 function XrfCartRemovePro(sProID, sProSku) {
 694     if (confirm("Are your sure REMOVE this product?")) {
 695         $("#xri_Cart_ProID").val(sProID);
 696         $("#xri_Cart_ProSku").val(sProSku);
 697         $("#xri_Cart_xAct").val("Remove");
 698         $("#xri_Form_ShoppingCart").submit()
 699     }
 700 }
 701 function XrfCartSaveForLater(sProID, sProSku, sRtnDivID) {
 702     if (confirm("Are your sure? This product will be removed from cart?")) {
 703         XrtProAddToWish(sProID, sRtnDivID);
 704         $("#xri_Cart_ProID").val(sProID);
 705         $("#xri_Cart_ProSku").val(sProSku);
 706         $("#xri_Cart_xAct").val("Remove");
 707         $("#xri_Form_ShoppingCart").submit()
 708     }
 709 }
 710 function XrfCartProceed() {
 711     if ($("#xri_UserCountry").val() == "") {
 712         if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserCountry", "", 0, 3, 1, 100)) {
 713             return false
 714         }
 715     }
 716     $("#xri_Cart_xAct").val("Submit");
 717     $("#xri_Form_ShoppingCart").submit()
 718 }
 719 function XrfCartPaymentMethod(sPaymentMethod) {
 720     var url = "/ajax/payment_method.asp?PaymentMethod=" + encodeURIComponent(sPaymentMethod);
 721     $.get(url)
 722 }
 723 function XrfCartProgressSwitchToAddress() {
 724     $("#xri_Cart_PaymentMethod_Heading").removeClass("list-group-item-primary py-1 xr-text-l xr-text-lg-xxl").addClass("list-group-item-action list-group-item-light py-2 xr-text-m xr-text-lg-d xr-text-darkgray");
 725     $("#xri_Cart_PaymentMethod_Heading_Text").addClass("xr-text-d xr-text-lg-l");
 726     $("#xri_Cart_PaymentMethod_Heading_Status").removeClass("d-none");
 727     $("#xri_Cart_Address_Heading").removeClass("list-group-item-secondary py-2 xr-text-m xr-text-lg-d").addClass("list-group-item-primary py-1 xr-text-l xr-text-lg-xxl");
 728     $("#xri_Cart_Address_Heading_Icon").removeClass("text-secondary");
 729     $("#xri_Cart_Address_Heading_Text").removeClass("xr-text-d xr-text-lg-l");
 730     $("#xri_Cart_Address_Deatil").collapse("show");
 731     $("h1").html("Shipping Address");
 732     history.replaceState(null, null, "?xAct=Address")
 733 }
 734 function XrfCartGuestShipAddress() {
 735     if ($("#xri_UserCountry").val() == "") {
 736         if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserCountry", "", 0, 3, 1, 100)) {
 737             return false
 738         }
 739     }
 740     if (!XrfCheckEmail("xri_CartShip_Email", "xri_Row_CartShip_Email", "", 1, 100)) {
 741         return false
 742     }
 743     if (!XrfCheckUserMyName("xri_CartShip_FirstName", "xri_Row_CartShip_Name", "", 1, 100)) {
 744         return false
 745     }
 746     if (!XrfCheckUserMyName("xri_CartShip_LastName", "xri_Row_CartShip_Name", "", 1, 100)) {
 747         return false
 748     }
 749     if (!XrfCheckValid("xri_CartShip_AddressLine1", "xri_Row_CartShip_Address", "", 3, 200, "", 1, 100)) {
 750         return false
 751     }
 752     if (!XrfCheckValid("xri_CartShip_City", "xri_Row_CartShip_City", "", 2, 200, "", 1, 100)) {
 753         return false
 754     }
 755     if ("|UK|GB|AU|CA|FR|FX|IT|NL|SP|HK|JP|".indexOf("|" + $("#xri_UserCountry").val() + "|") == -1) {
 756         if (!XrfCheckValid("xri_UserAddr_Province", "xri_Row_UserAddr_Province", "", 2, 200, "", 1, 100)) {
 757             return false
 758         }
 759     }
 760     if (!XrfCheckValid("xri_CartShip_PostalCode", "xri_Row_CartShip_PostalCode", "", 3, 20, "", 1, 100)) {
 761         return false
 762     }
 763     if (!XrfCheckPhoneNumber("xri_CartShip_Phone", "xri_Row_CartShip_Phone", "", 1, 100)) {
 764         return false
 765     }
 766     return true
 767 }
 768 function XrfCartUserShipAddress(sCurnAddrID, sAllAddrIDs) {
 769     var vAddrIDSpt = sAllAddrIDs.split("|");
 770     for (i = 0; i < vAddrIDSpt.length; i++) {
 771         if (sCurnAddrID == vAddrIDSpt[i]) {
 772             $("#xri_Cart_UserAddress_Heading_" + vAddrIDSpt[i]).addClass("xr-border-gold");
 773             $("#xri_Cart_UserAddress_Icon_" + vAddrIDSpt[i]).removeClass("far fa-circle xr-text-lightgray").addClass("fas fa-check-circle text-success")
 774         } else {
 775             $("#xri_Cart_UserAddress_Heading_" + vAddrIDSpt[i]).removeClass("xr-border-gold");
 776             $("#xri_Cart_UserAddress_Icon_" + vAddrIDSpt[i]).removeClass("fas fa-check-circle text-success").addClass("far fa-circle xr-text-lightgray")
 777         }
 778     }
 779 }
 780 function XrfOrderPaymentMethod(sCurnPaymentID, sAllPaymentIDs) {
 781     var vPaymentIDSpt = sAllPaymentIDs.split("|");
 782     for (i = 0; i < vPaymentIDSpt.length; i++) {
 783         if (sCurnPaymentID == vPaymentIDSpt[i]) {
 784             $("#xri_Order_PaymentMethod_Item_" + vPaymentIDSpt[i]).removeClass("xr-border-lightgray").addClass("xr-border-gold");
 785             $("#xri_Order_PaymentMethod_Icon_" + vPaymentIDSpt[i]).removeClass("far fa-circle xr-text-lightgray").addClass("fas fa-check-circle text-success")
 786         } else {
 787             $("#xri_Order_PaymentMethod_Item_" + vPaymentIDSpt[i]).removeClass("xr-border-gold").addClass("xr-border-lightgray");
 788             $("#xri_Order_PaymentMethod_Icon_" + vPaymentIDSpt[i]).removeClass("fas fa-check-circle text-success").addClass("far fa-circle xr-text-lightgray")
 789         }
 790     }
 791 }
 792 function XrfViewMoreViaBtn(sAreaIDview, sAreaIDhide) {
 793     $("#" + sAreaIDview).css({
 794         "height": "auto",
 795         "overflow": "visible"
 796     });
 797     if (sAreaIDhide != "") {
 798         $("#" + sAreaIDhide).remove()
 799     }
 800 }
 801 function XrfOffsScroHdCart() {
 802     var vOffsTop_HdWrapCart = $("#xri_Hd_Wrap_MyCart").offset().top + 80;
 803     $(window).scroll(function() {
 804         var vScroTop_HdWrapCart = $(this).scrollTop();
 805         if (vScroTop_HdWrapCart >= vOffsTop_HdWrapCart) {
 806             $("#xri_Hd_Wrap_Logo").removeClass("d-none").addClass("d-flex");
 807             $("#xri_Hd_Wrap_MyCart").removeClass("d-none").addClass("d-flex")
 808         } else {
 809             if (vScroTop_HdWrapCart < vOffsTop_HdWrapCart) {
 810                 $("#xri_Hd_Wrap_Logo").removeClass("d-flex").addClass("d-none");
 811                 $("#xri_Hd_Wrap_MyCart").removeClass("d-flex").addClass("d-none")
 812             }
 813         }
 814     })
 815 }
 816 function XrfOffsScroProDtTabs() {
 817     var vOffsTop_ProDtTabs = $("#xri_ProDt_Tabs").offset().top - 105;
 818     $(window).scroll(function() {
 819         var vScroTop_ProDtTabs = $(this).scrollTop();
 820         if (vScroTop_ProDtTabs >= vOffsTop_ProDtTabs) {
 821             $("#xri_ProDt_Tabs").removeClass("nav-tabs pl-3 pl-xl-5 xr-nav-tabs").addClass("navbar fixed-top justify-content-center xr-nav-tabs-top xr-bg-transparent-white-95 xr-box-shadow xr-animation-appear");
 822             $("#xri_ProDt_Tabs_Buy").addClass("d-md-block")
 823         } else {
 824             if (vScroTop_ProDtTabs < vOffsTop_ProDtTabs) {
 825                 $("#xri_ProDt_Tabs").removeClass("navbar fixed-top justify-content-center xr-nav-tabs-top xr-bg-transparent-white-95 xr-box-shadow xr-animation-appear").addClass("nav-tabs pl-3 pl-xl-5 xr-nav-tabs");
 826                 $("#xri_ProDt_Tabs_Buy").removeClass("d-md-block")
 827             }
 828         }
 829     })
 830 }
 831 function XrfOffsScroProDtBuyBtn() {
 832     var vOffsTop_ProDtBuyBtn = $("#xri_Row_ProDt_BuyBtn").offset().top + 30;
 833     $(window).scroll(function() {
 834         var vScroTop_ProDtBuyBtn = $(this).scrollTop();
 835         if (vScroTop_ProDtBuyBtn >= vOffsTop_ProDtBuyBtn) {
 836             $("#xri_Row_ProDt_BuyBtn").removeClass("form-row mb-3 px-xl-5").addClass("row no-gutters fixed-bottom justify-content-center d-sm-none");
 837             $("#xri_Row_ProDt_BuyBtn button").addClass("rounded-0");
 838             $("#xri_Row_ProDt_BuyBtn_Now").removeClass("col-12 col-sm-5 px-4 px-sm-0 mt-2").addClass("col-5");
 839             $("#xri_Row_ProDt_BuyBtn_AddTo").removeClass("col-9 col-sm-5 pl-4 pl-sm-3 pr-sm-0 mt-3 mt-sm-2").addClass("col-5");
 840             $("#xri_Row_ProDt_BuyBtn_Wish").removeClass("col-3 col-sm-2 pl-2 pl-sm-3 pr-4 pr-sm-0 mt-3 mt-sm-2").addClass("col-2")
 841         } else {
 842             if (vScroTop_ProDtBuyBtn < vOffsTop_ProDtBuyBtn) {
 843                 $("#xri_Row_ProDt_BuyBtn").removeClass("row no-gutters fixed-bottom justify-content-center d-sm-none").addClass("form-row mb-3 px-xl-5");
 844                 $("#xri_Row_ProDt_BuyBtn button").removeClass("rounded-0");
 845                 $("#xri_Row_ProDt_BuyBtn_Now").removeClass("col-5").addClass("col-12 col-sm-5 px-4 px-sm-0 mt-2");
 846                 $("#xri_Row_ProDt_BuyBtn_AddTo").removeClass("col-5").addClass("col-9 col-sm-5 pl-4 pl-sm-3 pr-sm-0 mt-3 mt-sm-2");
 847                 $("#xri_Row_ProDt_BuyBtn_Wish").removeClass("col-2").addClass("col-3 col-sm-2 pl-2 pl-sm-3 pr-4 pr-sm-0 mt-3 mt-sm-2")
 848             }
 849         }
 850     })
 851 }
 852 function XrfSiteHeader(sPageWhere) {
 853     var vFromUrl = document.referrer;
 854     var vCurnUrl = window.location.href;
 855     var url = "/ajax/site_header.asp?PageWhere=" + sPageWhere + "&FromUrl=" + encodeURIComponent(vFromUrl) + "&CurnUrl=" + encodeURIComponent(vCurnUrl) + "&t=" + Math.random();
 856     $.get(url,
 857     function(sMsg) {
 858         vMsg = $.trim(sMsg);
 859         vSptMsg = vMsg.split("#}");
 860         var vNavTogCart = $.trim(vSptMsg[0]);
 861         var vNavMyCartSM = $.trim(vSptMsg[1]);
 862         var vNavMyCart = $.trim(vSptMsg[2]);
 863         var vHdWrapCart = $.trim(vSptMsg[3]);
 864         var vSignInOrNo = $.trim(vSptMsg[4]);
 865         if (vNavTogCart != "") {
 866             $("#xri_Hd_Nav_Toggle_CartQty").html(vNavTogCart).removeClass("d-none")
 867         }
 868         if (vNavMyCartSM != "") {
 869             $("#xri_Hd_Nav_CartQtyBadge").html(vNavMyCartSM)
 870         }
 871         if (vNavMyCart != "") {
 872             $("#xri_Hd_Nav_CartQty").html(vNavMyCart)
 873         }
 874         if (vHdWrapCart != "") {
 875             $("#xri_Hd_Wrap_CartQty").html(vHdWrapCart)
 876         }
 877         if (vSignInOrNo != "") {
 878             $("#xri_Hd_Wrap_Sign").html(vSignInOrNo)
 879         }
 880     })
 881 }
 882 function XrfCurrencyInit(sCurrCode, sIsReload) {
 883     var url = "/ajax/curr_init.asp?uCurrencyCode=" + encodeURIComponent(sCurrCode) + "&t=" + Math.random();
 884     $.get(url,
 885     function(sMsg) {
 886         vMsg = $.trim(sMsg);
 887         vSptMsg = vMsg.split("#}");
 888         $("#xri_Hd_Wrap_CurrCode").html(vSptMsg[0]);
 889         vCurrCurn = vSptMsg[1];
 890         vCurrAll = vSptMsg[2];
 891         if ((vCurrCurn != "") && (vCurrAll != "")) {
 892             vSptCurrAll = vCurrAll.split("|");
 893             for (i = 0; i < vSptCurrAll.length; i++) {
 894                 if (vCurrCurn != vSptCurrAll[i]) {
 895                     var vCurrDispID = document.getElementsByName("xrn-Curr-" + vSptCurrAll[i]);
 896                     for (j = 0; j < vCurrDispID.length; j++) {
 897                         if (vCurrDispID[j].style.display != "none") {
 898                             vCurrDispID[j].style.display = "none"
 899                         }
 900                     }
 901                 } else {
 902                     if (vCurrCurn == vSptCurrAll[i]) {
 903                         var vCurrDispID = document.getElementsByName("xrn-Curr-" + vCurrCurn);
 904                         for (j = 0; j < vCurrDispID.length; j++) {
 905                             if (vCurrDispID[j].style.display != "") {
 906                                 vCurrDispID[j].style.display = ""
 907                             }
 908                         }
 909                     }
 910                 }
 911             }
 912         }
 913         if (sIsReload == 1) {
 914             window.location.reload()
 915         }
 916     })
 917 }
 918 function XrfImportantNotice(sPageWhere) {
 919     var url = "/ajax/notice_modal.asp?PageWhere=" + encodeURIComponent(sPageWhere) + "&t=" + Math.random();
 920     $.get(url,
 921     function(sMsg) {
 922         var vMsg = $.trim(sMsg);
 923         if (vMsg != "") {
 924             var vSptMsg = vMsg.split("#}");
 925             var vNoticeShowedTimes = parseInt(vSptMsg[0]);
 926             var vNoticeIsCover = parseInt(vSptMsg[1]);
 927             var vNoticeIsPage = parseInt(vSptMsg[2]);
 928             var vNoticeDisplayTimes = parseInt(vSptMsg[3]);
 929             var vNoticeAutoCloseSec = parseInt(vSptMsg[4]);
 930             var vNoticeTitle = $.trim(vSptMsg[5]);
 931             var vNoticeContent = $.trim(vSptMsg[6]);
 932             if ((vNoticeContent != "") && (vNoticeShowedTimes < vNoticeDisplayTimes) && ((sPageWhere == "Home") && (vNoticeIsCover = 1)) || ((sPageWhere != "Home") && (vNoticeIsPage = 1))) {
 933                 XrfModalReset();
 934                 if (vNoticeTitle != "") {
 935                     $("#xri_ModalTitle").addClass("font-weight-bold text-danger");
 936                     $("#xri_ModalTitle").html(vNoticeTitle)
 937                 } else {
 938                     $("#xri_ModalHeader").addClass("border-0 py-0");
 939                     $("#xri_ModalBody").addClass("pb-4 px-md-4")
 940                 }
 941                 $("#xri_ModalBody").html(vNoticeContent);
 942                 $("#xri_ModalFooter").hide();
 943                 $("#xri_Modal").modal("show");
 944                 if (vNoticeAutoCloseSec > 0) {
 945                     setTimeout(function() {
 946                         $("#xri_Modal").modal("hide")
 947                     },
 948                     vNoticeAutoCloseSec * 1000)
 949                 }
 950             }
 951         }
 952     })
 953 }
 954 function XrfNewsletter(sInputID, sRtnDivID) {
 955     if (!XrfCheckEmail(sInputID, "", "", 0, 0)) {
 956         $("#" + sInputID).addClass("is-invalid");
 957         return false
 958     }
 959     url = "/ajax/newsletter_check.asp";
 960     $.post(url, {
 961         CheckSort: "email",
 962         Email: $.trim($("#" + sInputID).val())
 963     },
 964     function(sMsg) {
 965         if (sMsg != "") {
 966             $("#" + sRtnDivID).html(sMsg)
 967         }
 968         return false
 969     });
 970     return true
 971 }
 972 function XrfProReviewAdd(sUserID) {
 973     if ((sUserID == "") || (sUserID == null)) {
 974         if (!XrfCheckUserMyName("ReviewerName", "xri_rewite_rev_ReviewerName", "", 1, 80)) {
 975             return false
 976         }
 977         if (!XrfCheckEmail("ReviewerEmail", "xri_rewite_rev_ReviewerEmail", "", 1, 80)) {
 978             return false
 979         }
 980     }
 981     if (!XrfCheckReviewDetail("ReviewDetail", "xri_rewite_rev_ReviewDetail", 1, 80)) {
 982         return false
 983     }
 984     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 80)) {
 985         return false
 986     }
 987     return true
 988 }
 989 function XrfCheckReviewDetail(sInputID, sDivID, sIsGoTop, sGoTopDistance) {
 990     var vCheck = $.trim($("#" + sInputID).val());
 991     if ((vCheck == "") || (vCheck.length < 10)) {
 992         XrfGoScrollTop(sIsGoTop, sDivID, sGoTopDistance, sDivID, "bg-warning", "");
 993         return false
 994     } else {
 995         if (sDivID != "") {
 996             $("#" + sDivID).removeClass("bg-warning")
 997         }
 998         return true
 999     }
1000 }
1001 function XrfUserSingIn() {
1002     if (!XrfCheckUsername("xri_Signin_Username", "xri_Row_Signin_Username", "", 3, 50, 1, 100)) {
1003         return false
1004     }
1005     if (!XrfCheckUserPwd("xri_Signin_Password", "xri_Row_Signin_Password", "", 4, 20, 1, 100)) {
1006         return false
1007     }
1008     return true
1009 }
1010 function XrfUserRegister() {
1011     if (!XrfCheckUserEmail("xri_Register_Email", "xri_Row_Register_Email", "xri_Alert_Register_Email", "xri_Verify_Register_Email", 1, 100, "Register", 0)) {
1012         return false
1013     }
1014     if ($("#xri_Verify_Register_Email").val() == "0") {
1015         XrfStatusPrompt("NG", "xri_Register_Email", "xri_Row_Register_Email", "", "", 1, 100);
1016         return false
1017     }
1018     if (!XrfCheckUserPwd("xri_Register_pwd", "xri_Row_Register_pwd", "", 6, 20, 1, 100)) {
1019         return false
1020     }
1021     if (!XrfCheckUserRePwd("xri_Register_repwd", "xri_Row_Register_repwd", "xri_Alert_Register_repwd", "xri_Register_pwd", 6, 20, 1, 100)) {
1022         return false
1023     }
1024     if (!XrfCheckUserMyName("xri_Register_uFirstName", "xri_Row_Register_uName", "", 1, 100)) {
1025         return false
1026     }
1027     if (!XrfCheckUserMyName("xri_Register_uLastName", "xri_Row_Register_uName", "", 1, 100)) {
1028         return false
1029     }
1030     if ($("#xri_UserCountry").val() == "") {
1031         if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserCountry", "", 0, 3, 1, 100)) {
1032             return false
1033         }
1034     }
1035     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 100)) {
1036         return false
1037     }
1038     return true
1039 }
1040 function XrfCheckUserEmail(sInputID, sDivID, sAlertID, sValidationID, sIsGoTop, sGoTopDistance, sCheckSort, sUserID) {
1041     if (!XrfCheckEmail(sInputID, sDivID, "", sIsGoTop, sGoTopDistance)) {
1042         return false
1043     }
1044     var vCheck = $.trim($("#" + sInputID).val());
1045     var url = "/ajax/user_check.asp";
1046     $.post(url, {
1047         sCheckItem: "Email",
1048         sCheckValue: vCheck,
1049         sCheckSort: sCheckSort,
1050         sUserID: sUserID,
1051         t: Math.random()
1052     },
1053     function(sMsg) {
1054         vMsg = $.trim(sMsg);
1055         vSptMsg = vMsg.split("#}");
1056         var vMsgStatus = $.trim(vSptMsg[0]);
1057         var vMsgRemark = $.trim(vSptMsg[1]);
1058         XrfStatusPrompt(vMsgStatus, sInputID, sDivID, sAlertID, vMsgRemark, sIsGoTop, sGoTopDistance);
1059         if (vMsgStatus == "NG") {
1060             $("#" + sValidationID).val("0")
1061         } else {
1062             $("#" + sValidationID).val("1")
1063         }
1064     });
1065     return true
1066 }
1067 function XrfCheckUserPwd(sInputID, sDivID, sAlertID, sCharMin, sCharMax, sIsGoTop, sGoTopDistance) {
1068     var vValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
1069     if (!XrfCheckValid(sInputID, sDivID, sAlertID, sCharMin, sCharMax, vValidChars, sIsGoTop, sGoTopDistance)) {
1070         return false
1071     }
1072     return true
1073 }
1074 function XrfCheckUserRePwd(sInputID, sDivID, sAlertID, sOriInputID, sCharMin, sCharMax, sIsGoTop, sGoTopDistance) {
1075     var vValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
1076     if (!XrfCheckValid(sInputID, sDivID, "", sCharMin, sCharMax, vValidChars, sIsGoTop, sGoTopDistance)) {
1077         return false
1078     }
1079     if ($.trim($("#" + sInputID).val()) != $.trim($("#" + sOriInputID).val())) {
1080         XrfStatusPrompt("NG", sInputID, sDivID, sAlertID, "Passwords must match.", sIsGoTop, sGoTopDistance);
1081         return false
1082     }
1083     XrfStatusPrompt("OK", sInputID, sDivID, sAlertID, "", sIsGoTop, sGoTopDistance);
1084     return true
1085 }
1086 function XrfUserPwdPlaintext(sInputID, sSwitchID) {
1087     if ($("#" + sInputID).attr("type") == "password") {
1088         $("#" + sInputID).attr("type", "text");
1089         $("#" + sSwitchID).removeClass("fa-eye").addClass("fa-eye-slash")
1090     } else {
1091         $("#" + sInputID).attr("type", "password");
1092         $("#" + sSwitchID).removeClass("fa-eye-slash").addClass("fa-eye")
1093     }
1094 }
1095 function XrfCheckUserMyName(sInputID, sDivID, sAlertID, sIsGoTop, sGoTopDistance) {
1096     if (!XrfCheckValid(sInputID, sDivID, sAlertID, 1, 50, "", sIsGoTop, sGoTopDistance)) {
1097         return false
1098     }
1099     return true
1100 }
1101 function XrfCheckUsername(sInputID, sDivID, sAlertID, sCharMin, sCharMax, sIsGoTop, sGoTopDistance) {
1102     var vValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_@.";
1103     if (!XrfCheckValid(sInputID, sDivID, sAlertID, sCharMin, sCharMax, vValidChars, sIsGoTop, sGoTopDistance)) {
1104         return false
1105     }
1106     return true
1107 }
1108 function XrfUserGetPassword() {
1109     if (!XrfCheckEmail("xri_GetPassword_Email", "xri_Row_GetPassword_Email", "", 1, 100)) {
1110         return false
1111     }
1112     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 100)) {
1113         return false
1114     }
1115     return true
1116 }
1117 function XrfUserGetOrderTracking() {
1118     if ((($.trim($("#xri_OrderTracking_TransactionID").val()) == "") && ($.trim($("#xri_OrderTracking_Email").val()) == "")) || ($.trim($("#xri_OrderTracking_TransactionID").val()) != "")) {
1119         if (!XrfCheckOnlyEngChars("xri_OrderTracking_TransactionID", "xri_Row_OrderTracking_TransactionID", "", 17, 20, 1, 100)) {
1120             return false
1121         }
1122     }
1123     if ($.trim($("#xri_OrderTracking_Email").val()) != "") {
1124         if (!XrfCheckEmail("xri_OrderTracking_Email", "xri_Row_OrderTracking_Email", "", 1, 100)) {
1125             return false
1126         }
1127         if (!XrfCheckOnlyEngChars("xri_OrderTracking_OrderSN", "xri_Row_OrderTracking_OrderSN", "", 9, 20, 1, 100)) {
1128             return false
1129         }
1130     }
1131     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 100)) {
1132         return false
1133     }
1134     return true
1135 }
1136 function XrfUserAddrBook(sAddrID) {
1137     $("#xri_UserAddrBook_AddrID").val(sAddrID);
1138     $("#xri_Form_UserAddrBook").submit()
1139 }
1140 function XrfUserAddrSet(sAddrID, sAddrAct) {
1141     if (sAddrAct == "Remove") {
1142         if (confirm("Are your sure REMOVE this Address?")) {
1143             $("#xri_UserAddrSet_AddrID").val(sAddrID);
1144             $("#xri_UserAddrSet_xAct").val(sAddrAct);
1145             $("#xri_Form_UserAddrSet").submit()
1146         }
1147     } else {
1148         $("#xri_UserAddrSet_AddrID").val(sAddrID);
1149         $("#xri_UserAddrSet_xAct").val(sAddrAct);
1150         $("#xri_Form_UserAddrSet").submit()
1151     }
1152 }
1153 function XrfUserAddrDetail() {
1154     if ($("#xri_UserCountry").val() == "") {
1155         if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserAddr_UserCountry", "", 0, 3, 1, 100)) {
1156             return false
1157         }
1158     }
1159     if (!XrfCheckUserMyName("xri_UserAddr_FirstName", "xri_Row_UserAddr_Name", "", 1, 100)) {
1160         return false
1161     }
1162     if (!XrfCheckUserMyName("xri_UserAddr_LastName", "xri_Row_UserAddr_Name", "", 1, 100)) {
1163         return false
1164     }
1165     if (!XrfCheckValid("xri_UserAddr_AddressLine1", "xri_Row_UserAddr_Address", "", 3, 200, "", 1, 100)) {
1166         return false
1167     }
1168     if (!XrfCheckValid("xri_UserAddr_City", "xri_Row_UserAddr_City", "", 2, 200, "", 1, 100)) {
1169         return false
1170     }
1171     if ("|UK|GB|AU|CA|FR|FX|IT|NL|SP|HK|JP|".indexOf("|" + $("#xri_UserCountry").val() + "|") == -1) {
1172         if (!XrfCheckValid("xri_UserAddr_Province", "xri_Row_UserAddr_Province", "", 2, 200, "", 1, 100)) {
1173             return false
1174         }
1175     }
1176     if (!XrfCheckValid("xri_UserAddr_PostalCode", "xri_Row_UserAddr_PostalCode", "", 3, 10, "", 1, 100)) {
1177         return false
1178     }
1179     if (!XrfCheckPhoneNumber("xri_UserAddr_Phone", "xri_Row_UserAddr_Phone", "", 1, 100)) {
1180         return false
1181     }
1182     return true
1183 }
1184 function XrfUserOrderView(sOrderID) {
1185     $("#xri_User_OrderID").val(sOrderID);
1186     $("#xri_Form_UserOrderView").submit()
1187 }
1188 function XrfUserOrderAddComment() {
1189     if (!XrfCheckValid("xri_Order_CommentMessage", "xri_Row_Order_CommentMessage", "", 2, 2000, "", 1, 100)) {
1190         return false
1191     }
1192     return true
1193 }
1194 function XrfUserSetNewPwd() {
1195     if (!XrfCheckUserPwd("xri_UserAcct_ChangePwd_CurnPwd", "xri_Row_UserAcct_ChangePwd_CurnPwd", "", 4, 20, 1, 100)) {
1196         return false
1197     }
1198     if (!XrfCheckUserPwd("xri_UserAcct_ChangePwd_NewPwd", "xri_Row_UserAcct_ChangePwd_NewPwd", "", 6, 20, 1, 100)) {
1199         return false
1200     }
1201     if (!XrfCheckUserRePwd("xri_UserAcct_ChangePwd_NewRePwd", "xri_Row_UserAcct_ChangePwd_NewRePwd", "xri_Alert_UserAcct_ChangePwd_NewRePwd", "xri_UserAcct_ChangePwd_NewPwd", 6, 20, 1, 100)) {
1202         return false
1203     }
1204     return true
1205 }
1206 function XrfUserSetNewEmail(sUserID) {
1207     if (!XrfCheckUserPwd("xri_UserAcct_ChangeEmail_CurrentPwd", "xri_Row_UserAcct_ChangeEmail_CurrentPwd", "", 4, 20, 1, 100)) {
1208         return false
1209     }
1210     if (!XrfCheckUserEmail("xri_UserAcct_ChangeEmail_NewEmail", "xri_Row_UserAcct_ChangeEmail_NewEmail", "xri_Alert_UserAcct_ChangeEmail_NewEmail", "xri_Verify_UserAcct_ChangeEmail_NewEmail", 1, 100, "AccReset", sUserID)) {
1211         return false
1212     }
1213     if ($("#xri_Verify_UserAcct_ChangeEmail_NewEmail").val() == "0") {
1214         XrfStatusPrompt("NG", "xri_UserAcct_ChangeEmail_NewEmail", "xri_Row_UserAcct_ChangeEmail_NewEmail", "", "", 1, 100);
1215         return false
1216     }
1217     return true
1218 }
1219 function XrfUserProfile() {
1220     if (!XrfCheckUserMyName("xri_UserAcct_Profile_uFirstName", "xri_Row_UserAcct_Profile_uName", "", 1, 100)) {
1221         return false
1222     }
1223     if (!XrfCheckUserMyName("xri_UserAcct_Profile_uLastName", "xri_Row_UserAcct_Profile_uName", "", 1, 100)) {
1224         return false
1225     }
1226     if ($("#xri_UserCountry").val() == "") {
1227         if (!XrfCheckOnlyEngChars("xri_UserCountry", "xri_Row_UserAcct_Profile_UserCountry", "", 0, 3, 1, 100)) {
1228             return false
1229         }
1230     }
1231     if (!XrfCheckPhoneNumber("xri_UserAcct_Profile_uTel", "xri_Row_UserAcct_Profile_uTel", "", 1, 100)) {
1232         return false
1233     }
1234     return true
1235 }
1236 function XrfUserTicketRequest() {
1237     if (!XrfCheckValid("xri_UserMsg_Subject", "xri_Row_UserMsg_Subject", "", 5, 100, "", 1, 100)) {
1238         return false
1239     }
1240     if (!XrfCheckValid("xri_UserMsg_Question", "xri_Row_UserMsg_Question", "", 10, 2000, "", 1, 100)) {
1241         return false
1242     }
1243     return true
1244 }
1245 function XrfUserTicketOrderSNDisplay(sMasterID, sMatchValue, sDisplayID) {
1246     if ($("#" + sMasterID).val() == sMatchValue) {
1247         $("#" + sDisplayID).removeClass("d-none")
1248     } else {
1249         $("#" + sDisplayID).addClass("d-none")
1250     }
1251 }
1252 function XrfUserTicketView(sTicketID) {
1253     $("#xri_User_TicketID").val(sTicketID);
1254     $("#xri_Form_UserTicketView").submit()
1255 }
1256 function XrfUserTicketPostReply() {
1257     if (!XrfCheckValid("xri_UserMsg_ReplyDetail", "xri_Row_UserMsg_Reply", "", 3, 2000, "", 1, 100)) {
1258         return false
1259     }
1260     return true
1261 }
1262 function XrfUserReviewSet(sReviewID, sAct) {
1263     if (sAct == "Remove") {
1264         if (confirm("Are your sure REMOVE this review?")) {
1265             $("#xri_UserReviewSet_RevID").val(sReviewID);
1266             $("#xri_Form_UserReviewRemove").submit()
1267         }
1268     } else {
1269         if (sAct == "Edit") {
1270             $("#xri_UserReviewSet_RevID").val(sReviewID);
1271             $("#xri_Form_UserReviewEdit").submit()
1272         }
1273     }
1274 }
1275 function XrfUserProReviewDetail() {
1276     if (!XrfCheckValid("xri_UserReview_Detail", "xri_Row_UserReview_Detail", "", 3, 2000, "", 1, 100)) {
1277         return false
1278     }
1279     return true
1280 }
1281 function XrfUserFavoriteSet(sProID) {
1282     if (confirm("Are your sure REMOVE this product from Your Favorites?")) {
1283         $("#xri_UserFavoriteSet_ProID").val(sProID);
1284         $("#xri_Form_UserFavoriteSet").submit()
1285     }
1286 }
1287 function XrfUrlTracking() {
1288     var vCurnUrl = window.location.href;
1289     var vPreUrl = document.referrer;
1290     var url = "/ajax/url_tracking.asp?CurnUrl=" + encodeURIComponent(vCurnUrl) + "&PreUrl=" + encodeURIComponent(vPreUrl) + "&t=" + Math.random();
1291     $.get(url)
1292 }
1293 function XrfEdmTracking() {
1294     var vCurnUrl = window.location.href;
1295     var url = "/ajax/edm_tracking.asp?CurnUrl=" + encodeURIComponent(vCurnUrl) + "&t=" + Math.random();
1296     $.get(url)
1297 }
1298 function XrfBsCarouselTouch(sDivID) {
1299     var vTargetElement = document.getElementById(sDivID);
1300     var mc = new Hammer(vTargetElement);
1301     mc.on("panleft",
1302     function(ev) {
1303         $(vTargetElement).carousel("prev")
1304     });
1305     mc.on("panright",
1306     function(ev) {
1307         $(vTargetElement).carousel("next")
1308     })
1309 }
1310 function XrfFeedbackForm() {
1311     if (!XrfCheckValid("xri_Feedback_Subject", "xri_Row_Feedback_Subject", "", 5, 100, "", 1, 100)) {
1312         return false
1313     }
1314     if (!XrfCheckValid("xri_Feedback_Name", "xri_Row_Feedback_Name", "", 3, 50, "", 1, 100)) {
1315         return false
1316     }
1317     if (!XrfCheckEmail("xri_Feedback_Email", "xri_Row_Feedback_Email", "", 1, 100)) {
1318         return false
1319     }
1320     if (!XrfCheckValid("xri_Feedback_Detail", "xri_Row_Feedback_Detail", "", 10, 2000, "", 1, 100)) {
1321         return false
1322     }
1323     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 100)) {
1324         return false
1325     }
1326     return true
1327 }
1328 function XrfFeedbackLoginOrNot(sAct, sRtnDivIDs) {
1329     var url = "/ajax/user_basicinfo.asp?xAct=" + encodeURIComponent(sAct) + "&t=" + Math.random();
1330     $.get(url,
1331     function(sMsg) {
1332         vMsg = $.trim(sMsg);
1333         if (vMsg != "NG") {
1334             vSptMsg = vMsg.split("#}");
1335             vSptRtnDivID = sRtnDivIDs.split("|");
1336             for (i = 0; i < vSptRtnDivID.length; i++) {
1337                 $("#" + vSptRtnDivID[i]).val(vSptMsg[i])
1338             }
1339         }
1340     })
1341 }
1342 function XrfProGoTabPanel(sTabID, sPanelID) {
1343     $("#" + sTabID + ' a[href="#' + sPanelID + '"]').tab("show")
1344 }
1345 function XrfProFaqTop(sProID, sRtnDivID) {
1346     var vProTopFaqs = $("#" + sRtnDivID).html();
1347     if ((vProTopFaqs == "") || (vProTopFaqs.indexOf("<h2") == -1)) {
1348         $("#" + sRtnDivID).html('<i class="fas fa-spinner fa-pulse fa-2x"></i>');
1349         var url = "/questions/index.asp?ProID=" + sProID + "&DispMode=Ajax&t=" + Math.random();
1350         $.get(url,
1351         function(sMsg) {
1352             vMsg = $.trim(sMsg);
1353             $("#" + sRtnDivID).html(vMsg)
1354         })
1355     }
1356 }
1357 function XrfProFaqSeeMore(sDispName, sDispMode, sDispControlShowID, sDispControlHideID) {
1358     if (sDispMode == "show") {
1359         $("[name='" + sDispName + "']").removeClass("d-none");
1360         $("#" + sDispControlShowID).removeClass("d-block").addClass("d-none");
1361         $("#" + sDispControlHideID).removeClass("d-none")
1362     } else {
1363         $("[name='" + sDispName + "']").addClass("d-none");
1364         $("#" + sDispControlShowID).removeClass("d-none").addClass("d-block");
1365         $("#" + sDispControlHideID).addClass("d-none")
1366     }
1367 }
1368 function XrfProFaqQuesAdd(sUserID) {
1369     if ((sUserID == "") || (sUserID == null)) {
1370         if (!XrfCheckUserMyName("xri_Pro_FaqQueserEmail", "xri_Row_Pro_FaqQueserEmail", "", 1, 100)) {
1371             return false
1372         }
1373         if (!XrfCheckEmail("xri_Pro_FaqQueserEmail", "xri_Row_Pro_FaqQueserEmail", "", 1, 100)) {
1374             return false
1375         }
1376     }
1377     if (!XrfCheckValid("xri_Pro_FaqQuesSubject", "xri_Row_Pro_FaqQuesSubject", "", 3, 200, "", 1, 100)) {
1378         return false
1379     }
1380     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 80)) {
1381         return false
1382     }
1383     $("#xri_Submit_Pro_FaqQues").attr("disabled", true);
1384     return true
1385 }
1386 function XrfProFaqAnswAdd() {
1387     if (!XrfCheckValid("xri_Pro_FaqQuesSubject", "xri_Row_Pro_FaqQuesSubject", "", 3, 1000, "", 1, 100)) {
1388         return false
1389     }
1390     if (!XrfCheckVerificationCode("xri_ValidationCode", "xri_ValidationCode_Confirm", "xri_Row_VerificationCode", 1, 80)) {
1391         return false
1392     }
1393     $("#xri_Submit_Pro_FaqAnsw").attr("disabled", true);
1394     return true
1395 }
1396 function XrfProFaqVote(sProFaqQuesID, sProFaqAnswID, sHelpfulOrNot, sVoteResultID, sRtnDivID) {
1397     var url = "/ajax/pro_faq_vote.asp?ProFaqQuesID=" + encodeURIComponent(sProFaqQuesID) + "&ProFaqAnswID=" + encodeURIComponent(sProFaqAnswID) + "&HelpfulOrNot=" + encodeURIComponent(sHelpfulOrNot) + "&t=" + Math.random();
1398     $.get(url,
1399     function(sMsg) {
1400         vMsg = $.trim(sMsg);
1401         vSptMsg = vMsg.split("#}");
1402         switch ($.trim(vSptMsg[0])) {
1403         case "NG":
1404             break;
1405         case "OK":
1406             $("#" + sVoteResultID).html($.trim(vSptMsg[1])).fadeIn(500);
1407             break
1408         }
1409         if (sProFaqAnswID != 0) {
1410             $("#" + sRtnDivID).html($.trim(vSptMsg[2])).fadeIn(500)
1411         }
1412     })
1413 }
1414 $(function() {
1415     $('[data-toggle="tooltip"]').tooltip();
1416     $('[data-toggle="popover"]').popover()
1417 });
1418 function XrfModalReset() {
1419     $("#xri_Modal").modal("hide");
1420     var vModalBox = '<div id="xri_Modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="xri_ModalTitle" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false"><div id="xri_ModalDialog" class="modal-dialog modal-dialog-centered modal-lg" role="document"><div id="xri_ModalContent" class="modal-content"><div id="xri_ModalHeader" class="modal-header"><div id="xri_ModalBack" class="xr-absolute-top-left px-3 py-2 xr-cursor-pointer xr-text-gray xr-text-hover-readdark d-none" data-dismiss="modal"><i class="fas fa-chevron-left"></i> <span id="xri_ModalBackText">Back</span></div><div id="xri_ModalTitle" class="modal-title"></div><button id="xri_ModalClose" type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div id="xri_ModalBody" class="modal-body"></div><div id="xri_ModalFooter" class="modal-footer justify-content-center"><button type="button" class="btn btn-sm btn-light float-right xr-text-darkgray" data-dismiss="modal"><i class="fas fa-times"></i> Close</button></div></div></div></div>';
1421     $("#xri_ModalBox").html(vModalBox)
1422 }
1423 function XrfModalCartChooseCountry() {
1424     XrfModalReset();
1425     var vStr_ModalBody_SelectCountry = $("#xri_CartChooseShipToCountry").html();
1426     vStr_ModalBody_SelectCountry = vStr_ModalBody_SelectCountry.replace(/Ship to/i, "<b>Choose your country or region to estimate shipping</b>");
1427     vStr_ModalBody_SelectCountry = vStr_ModalBody_SelectCountry.replace(/xri_UserCountry/g, "xri_UserCountry_Modal");
1428     vStr_ModalBody_SelectCountry = vStr_ModalBody_SelectCountry.replace(' onchange=""javascript:XrfCartShiptoCountry();""', "");
1429     var vStr_ModalFooter_SelectCountry = "<button type=\"button\" class=\"btn btn-info btn-lg px-lg-5\" onClick=\"javascript:XrfCheckValid('xri_UserCountry_Modal', 'xri_ModalBody', '', '', 0, 3, 0, 0); if ($('#xri_UserCountry_Modal').val()!=''){$('#xri_UserCountry').val($('#xri_UserCountry_Modal').val()); XrfCartShiptoCountry(); $('#xri_Modal').modal('hide');}\">Submit &amp; Continue</button>";
1430     $("#xri_ModalBody").html(vStr_ModalBody_SelectCountry);
1431     $("#xri_ModalFooter").html(vStr_ModalFooter_SelectCountry);
1432     $("#xri_ModalFooter").addClass("justify-content-center");
1433     $("#xri_ModalDialog").removeClass("modal-lg");
1434     $("#xri_UserCountry_Modal").removeClass("xr-width-md-auto");
1435     $("#xri_Modal").modal({
1436         show: true,
1437         backdrop: "static"
1438     })
1439 }
1440 function XrfProPayLaterMessaging(sProID, sPriceVIP, sRtnDivID) {
1441     var url = "/ajax/pro_pp_paylater.asp?ProID=" + encodeURIComponent(sProID) + "&PriceVIP=" + encodeURIComponent(sPriceVIP) + "&t=" + Math.random();
1442     $.get(url,
1443     function(sMsg) {
1444         vMsg = $.trim(sMsg);
1445         if (vMsg != "") {
1446             vSptMsg = vMsg.split("#}");
1447             vInnRtn_Country = $.trim(vSptMsg[0]);
1448             vInnRtn_CurrencyCode = $.trim(vSptMsg[1]);
1449             vInnRtn_ProPrice = $.trim(vSptMsg[2]);
1450             vInnRtn_PPClientID = $.trim(vSptMsg[3]);
1451             var vProDtPayLM = '<div class="form-row mt-1"><div class="col-lg-2"></div><div class="col-12 col-lg-10"><div data-pp-message data-pp-amount="' + vInnRtn_ProPrice + '" data-pp-buyerCountry="' + vInnRtn_Country + '" data-pp-placement="product"></div></div></div>';
1452             $("#" + sRtnDivID).html(vProDtPayLM);
1453             var vPlmScriptUrl = "https://www.paypal.com/sdk/js?client-id=" + vInnRtn_PPClientID + "&currency=" + vInnRtn_CurrencyCode + "&components=messages";
1454             var vPlmScript = document.createElement("script");
1455             vPlmScript.setAttribute("src", vPlmScriptUrl);
1456             document.head.appendChild(vPlmScript)
1457         }
1458     })
1459 }
1460 function XrfUserProvince(sUserCountry, sRtnID, sUserProvinceVal) {
1461     var url = "/ajax/user_province.asp?UserCountry=" + encodeURIComponent(sUserCountry) + "&UserProvinceVal=" + encodeURIComponent(sUserProvinceVal) + "&t=" + Math.random();
1462     $.get(url,
1463     function(sMsg) {
1464         $("#" + sRtnID).html($.trim(sMsg))
1465     })
1466 };

 

posted @ 2022-01-28 11:45  hilong911  阅读(66)  评论(0编辑  收藏  举报