//*** page id: //*** product id: //*** forceOutOfStock=false //*** public_mod_structuredData_renderJsonByItemId found //*** public_mod_structuredData NOT enabled var pdServerTime = new Date("2019-10-10T13:46:39-05:00"); //************************************************ //************ JS/CSS FILE ROUTINES ************* //************************************************ function pdLoadJsCssFile(filename, filetype){ if (filetype=="js") { var fileref=document.createElement('script'); fileref.setAttribute("type","text/javascript"); fileref.setAttribute("async",true); fileref.setAttribute("src", filename); } else if (filetype=="css") { var fileref=document.createElement("link"); fileref.setAttribute("rel", "stylesheet"); fileref.setAttribute("type", "text/css"); fileref.setAttribute("href", filename); } if (typeof fileref!="undefined") document.getElementsByTagName("head")[0].appendChild(fileref); } function pdAddStyle(css) { var style = document.createElement("style"); style.innerHTML = css; document.getElementsByTagName("body")[0].appendChild(style); } /* pdGetElementsByClassName -- Revised to avoid JS conflicts with libraries that override native "getElementsByClassName" browser function in IE Developed by Robert Nyman, http://www.robertnyman.com Code/licensing: http://code.google.com/p/getelementsbyclassname/ */ var pdGetElementsByClassName = function (className, tag, elm){ var ieVersion = getInternetExplorerVersion(); if (ieVersion == -1 && document.getElementsByClassName) { pdGetElementsByClassName = function (className, tag, elm) { elm = elm || document; var elements = elm.getElementsByClassName(className), nodeName = (tag)? new RegExp("\b" + tag + "\b", "i") : null, returnElements = [], current; for(var i=0, il=elements.length; i -1) { if(signatureList[i] == 'android') { //*** ONLY CONSIDER android a mobile device if "mobile" is also present in user agent string if(agent.indexOf("mobile") > -1) isMobile = true; } else { isMobile = true; } } } return isMobile; } function pdIsIpad() { var isIpad = false; var signatureList = new Array('ipad'); var agent = navigator.userAgent.toLowerCase(); for(var i=0;i -1) isIpad = true; } return isIpad; } function pdIsTablet() { var isTablet = false; var signatureList = new Array('ipad', 'android'); var agent = navigator.userAgent.toLowerCase(); for(var i=0;i -1) { isTablet = true; //*** ASSUME TABLET if(signatureList[i] == 'android') { //*** ONLY CONSIDER android a mobile device if "mobile" is also present in user agent string if(agent.indexOf("mobile") > -1) isTablet = false; } else { isTablet = true; } } } return isTablet; } function pdFormatCurrency(num, includeDollarSign) { num = num.toString().replace(/$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num*100+0.50000000001); cents = num%100; num = Math.floor(num/100).toString(); if(cents<10) cents = "0" + cents; for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3)); var returnValue = (((sign)?'':'-') + num + '.' + cents); if(includeDollarSign == true) returnValue = "$" + returnValue; return returnValue; } function pdFindParentForm(element) { var elm,parentForm; for (elm = element.parentNode; elm; elm = elm.parentNode) { if(elm.tagName.toLowerCase() == "form") { parentForm = elm; break; } } return parentForm; } function pdHideForLoggedInUser() { var hideList = pdGetElementsByClassName("pdHideForLoggedInUser", null); for(var i=0;i'); } jQuery("#pd_pdOneBanner").html(""); if (typeof pdPerformLoginActions === "function") { pdPerformLoginActions(false); } //*** public_mod_favorites_renderAddToFavoritesButton found //*** public_mod_favorites enabled jQuery(document).ready(function(){ jQuery(".pdAddToFavoritesButton").each(function(){ var item = jQuery(this).attr("productId"); var orderForm = jQuery(this).parents('form:first'); jQuery(this).removeAttr('onClick'); var pdAddToFavoritesButton = jQuery(this); optionString = jQuery(orderForm).serialize(); var data = { vwitem: item, productOptionList: optionString } jQuery.ajax({ // 'async': false, 'global': false, 'xhrFields': {withCredentials: true}, 'type': "POST", 'url': "https://superiornutstore.practicaldatacore.com//mod_favorites/ajax/favoritesCheckItemFavorited.php", 'data': data, 'crossDomain': true, 'success': function (response) { var data = jQuery.parseJSON(response); if (data['loggedIn'] == true){ if (data['message'] == 'success'){ jQuery(pdAddToFavoritesButton).html(''); } else if (data['error'] == ""){ jQuery(pdAddToFavoritesButton).html(data['message']); // jQuery(pdAddToFavoritesButton).prop("onclick",null).off("click"); } else { jQuery(pdAddToFavoritesButton).html(''); } } else{ window.location.href = data['message']; } }, 'error': function(xhr, status, error){ var errorMessage = xhr.status + ': ' + xhr.statusText alert('Error - ' + errorMessage); } }); }); }); jQuery(document).on("click", ".pdAddToFavoritesButton", function () { var item = jQuery(this).attr("productId"); var orderForm = jQuery(this).parents('form:first'); var pdAddToFavoritesButton = jQuery(this); optionString = jQuery(orderForm).serialize(); var data = { vwitem: item, productOptionList: optionString } jQuery.ajax({ // 'async': false, 'global': false, 'xhrFields': {withCredentials: true}, 'type': "POST", 'url': "https://superiornutstore.practicaldatacore.com//mod_favorites/ajax/favoritesAddItemNew.php", 'data': data, 'crossDomain': true, 'success': function (response) { if (response.indexOf("<") == 0){ response = response.slice(response.indexOf(">")+1); } var data = jQuery.parseJSON(response); // console.log(data); if (data['loggedIn'] == true){ jQuery(pdAddToFavoritesButton).html(data['message']); } else{ window.location.href = data['message']; } }, 'error': function(xhr, status, error){ var errorMessage = xhr.status + ': ' + xhr.statusText alert('Error - ' + errorMessage); } }); }); //********************************* //*** BEGIN mod_promotionCenter *** //********************************* //*** PAGE ID: //*** isPromotionSneakPeekActive=false //*** public_mod_promotionCenter_getRenderedProductPageCalloutPageScript //*** hasPromoOffer //*** public_mod_promotionCenter_getRenderedProductListCalloutPageScript() pdLoadJsCssFile("https://superiornutstore.practicaldatacore.com//cdn/mod_promotionCenter/pdPromotionCenter.css?cb=1745259", "css"); jQuery("div.pdPromotionCenterProductPageBanner").html("

Free ECONOMY Shipping on orders of $129 & UP with Coupon Code SUP129!

"); //*** db1 //*** countdownTimerDebug //*** countdownTimerDebugBefore var pdDisplayTimers = function() { var timerObjects = new Array(); var timerList = new Array(); var serverTimeOffset = null; function pdGetCurrentTime() { var currentDate = new Date(); if (serverTimeOffset === null) { serverTimeOffset = 0; if (typeof pdServerTime != 'undefined') { serverTimeOffset = (currentDate - pdServerTime) / 1000; console.log("Setting server time offset to " + serverTimeOffset); } } var dateAdjustedForServerTime = currentDate; dateAdjustedForServerTime.setSeconds(dateAdjustedForServerTime.getSeconds() + serverTimeOffset); return dateAdjustedForServerTime; } //*** "SNEAK PEEK" COUNT UP TIMER *** function pdDisplayCountdownToStart(target, millisecondsRemaining) { var timeRemaining = Math.floor(millisecondsRemaining / 1000); var daysRemaining = 0; var hoursRemaining = 0; var minutesRemaining = 0; var secondsRemaining = 0; var countdownHtml = '
'; if (timeRemaining > 0) { daysRemaining = Math.floor(timeRemaining / 86400); hoursRemaining = Math.floor((timeRemaining - (daysRemaining * 86400)) / 3600); minutesRemaining = Math.floor((timeRemaining - (hoursRemaining * 3600) - (daysRemaining * 86400)) / 60); secondsRemaining = timeRemaining - (hoursRemaining * 3600 + minutesRemaining * 60 + daysRemaining * 86400); var daysRemainingPrefix = ""; var daysRemainingPrefixSm = ""; if(daysRemaining == 1) { daysRemainingPrefix = '
1Day
:
'; daysRemainingPrefixSm = '
1Day
:
'; } else if(daysRemaining > 1) { daysRemainingPrefix = '
1Day
:
'; daysRemainingPrefixSm = '
1Day
:
'; } countdownHtml += daysRemainingPrefix + '
' + pdZeroPad(hoursRemaining) + 'Hrs
:
' + pdZeroPad(minutesRemaining) + 'Min
:
' + pdZeroPad(secondsRemaining) + 'Sec
'; countdownSmHtml += daysRemainingPrefixSm + '
' + pdZeroPad(hoursRemaining) + 'Hrs
:
' + pdZeroPad(minutesRemaining) + 'Min
:
' + pdZeroPad(secondsRemaining) + 'Sec
'; jQuery(".pdCountdown[productId='" + target + "'] span").html(countdownHtml); jQuery(".pdCountdownSm[productId='" + target + "'] span").html(countdownHtml); }else{ //** RELOAD PAGE TO SHOW PROMOTIONAL OFFER MESSAGING *** jQuery(".pdCountdown[productId='" + target + "'] span").html(""); jQuery(".pdCountdownSm[productId='" + target + "'] span").html(""); //location.reload(); setTimeout(location.reload.bind(location), 2000); //*** 5 second delay *** } } function pdDisplayCountdown(target, millisecondsRemaining, millisecondsTotal, countUpTimer=false) { var totalTime = Math.floor(millisecondsTotal / 1000); var timeRemaining = Math.floor(millisecondsRemaining / 1000); var daysRemaining = 0; var hoursRemaining = 0; var minutesRemaining = 0; var secondsRemaining = 0; if (timeRemaining > 0) { daysRemaining = Math.floor(timeRemaining / 86400); hoursRemaining = Math.floor((timeRemaining - (daysRemaining * 86400)) / 3600); minutesRemaining = Math.floor((timeRemaining - (hoursRemaining * 3600) - (daysRemaining * 86400)) / 60); secondsRemaining = timeRemaining - (hoursRemaining * 3600 + minutesRemaining * 60 + daysRemaining * 86400); var countdownHtml = ''; var countdownSmHtml = ''; if (!countUpTimer){ countdownHtml = '
'; countdownSmHtml = '
'; } else { countdownHtml = '
'; countdownSmHtml = '
'; } var daysRemainingPrefix = ""; var daysRemainingPrefixSm = ""; if(daysRemaining == 1) { daysRemainingPrefix = '
1Day
:
'; daysRemainingPrefixSm = '
1Day
:
'; } else if(daysRemaining > 1) { daysRemainingPrefix = '
' + daysRemaining + 'Days
:
'; daysRemainingPrefixSm = '
' + daysRemaining + 'Days
:
'; } countdownHtml += daysRemainingPrefix + '
' + pdZeroPad(hoursRemaining) + 'Hrs
:
' + pdZeroPad(minutesRemaining) + 'Min
:
' + pdZeroPad(secondsRemaining) + 'Sec
'; countdownSmHtml += daysRemainingPrefixSm + '
' + pdZeroPad(hoursRemaining) + 'Hrs
:
' + pdZeroPad(minutesRemaining) + 'Min
:
' + pdZeroPad(secondsRemaining) + 'Sec
'; jQuery(".pdCountdown[productId='" + target + "'] span").html(countdownHtml); jQuery(".pdCountdownSm[productId='" + target + "'] span").html(countdownSmHtml); } else { if (!countUpTimer) { var countdownHtml = '
'; jQuery(".pdCountdown[productId='" + target + "']").html(countdownHtml); jQuery(".pdCountdownSm[productId='" + target + "']").html(countdownSmHtml); } else { jQuery(".pdCountdown[productId='" + target + "']").parent().hide(); jQuery(".pdCountdownSm[productId='" + target + "']").parent().hide(); } } var pctRemaining = Math.round((timeRemaining / totalTime) * 100); if (timeRemaining > 0) { jQuery(".pdCountdownProgbar[productId='" + target + "']").css('width', pctRemaining + '%'); jQuery(".pdCountdownSmProgbar[productId='" + target + "']").css('width', pctRemaining + '%'); } if (timeRemaining <= 0) return false; else return true; } function pdZeroPad(input) { if (String(input).length == 1) input = "0" + String(input); return input; } return function() { if (timerList.length == 0) { timerList = jQuery(".pdCountdown[productId],.pdCountdownSm[productId]").toArray(); for (var i = 0; i < timerList.length; i++) { timerObjects[i] = new Object(); timerObjects[i]["productId"] = timerList[i].getAttribute("productId"); var s = timerList[i].getAttribute("startTime"); timerObjects[i]["startTime"] = new Date(s); var s = timerList[i].getAttribute("finishTime"); timerObjects[i]["finishTime"] = new Date(s); var s = timerList[i].getAttribute("preStartTime"); timerObjects[i]["preStartTime"] = new Date(s); var s = timerList[i].getAttribute("timerType"); if (s == "countUpTimer") {timerObjects[i]["countUpTimer"] = true;}else{timerObjects[i]["countUpTimer"] = false;} timerObjects[i]["completed"] = false; } } var currentTime = pdGetCurrentTime(); var keepRunning = false; for (var i = 0; i < timerObjects.length; i++) { if (timerObjects[i]["completed"] == false) { keepRunning = true; //*** LOGIC TO DECIDE ON DISPLAYING COUNT UP / SNEAK PEEK "COUNTUP" TIMER *** if (currentTime < Math.floor(timerObjects[i]["startTime"]) && currentTime > Math.floor(timerObjects[i]["preStartTime"])) { if (timerObjects[i]["countUpTimer"]) { //*** DISPLAY THE SNEAK PEEK "COUNT UP" TIMER *** timerObjects[i]["timeRemaining"] = Math.floor(timerObjects[i]["startTime"] - currentTime); pdDisplayCountdownToStart( timerObjects[i]["productId"], timerObjects[i]["timeRemaining"] ); } } else { timerObjects[i]["totalTime"] = Math.floor(timerObjects[i]["finishTime"]) - Math.floor(timerObjects[i]["startTime"]); timerObjects[i]["timeRemaining"] = Math.floor(timerObjects[i]["finishTime"] - currentTime); success = pdDisplayCountdown( timerObjects[i]["productId"], timerObjects[i]["timeRemaining"], timerObjects[i]["totalTime"], timerObjects[i]["countUpTimer"] ); if (success == false) timerObjects[i]["completed"] = true; } } } if (keepRunning == false) { console.log("All timers finished."); clearInterval(pdTimer); } }; }(); var pdTimer = setInterval(pdDisplayTimers, 1000); pdDisplayTimers(); //*** countdownTimerDebugAfter //******************************* //*** END mod_promotionCenter *** //*******************************