console.log('uid='); //*** time check 1 (0.02231s elapsed) //*** time check 2 (0.02234s elapsed) //*** JJ itemId=ntfl0829 //*** pageType=product //*** time check 3 (0.02265s elapsed) //*** forceOutOfStock=false //*** time check 4 (0.02266s elapsed) //*** public_mod_structuredData_renderJsonByItemId found //*** public_mod_structuredData enabled var script = document.createElement('script'); script.setAttribute('type', 'application/ld+json'); script.innerHTML = "{\"@context\":\"http:\\/\\/schema.org\",\"@type\":\"Product\",\"offers\":{\"@type\":\"Offer\",\"price\":\"78.00\",\"priceCurrency\":\"USD\",\"priceValidUntil\":\"2025-05-19\",\"seller\":{\"@type\":\"Organization\",\"name\":\"Skin-Etc.com\"},\"@id\":\"https:\\/\\/www.skin-etc.com\\/ntfl0829.html#offers\",\"url\":\"https:\\/\\/www.skin-etc.com\\/ntfl0829.html\",\"itemCondition\":\"NewCondition\",\"availability\":\"OutOfStock\"},\"name\":\"Nutrafol Growth Activator\",\"description\":\"Ashwagandha Exosome Hair Serum A patent-pending advancement in scalp support, Growth Activator is the first of its kind: an extremely fast-absorbing and lightweight hair serum formulated with Ashwagandha Exosomes to boost cell renewal and naturally activate visibly thicker, stronger hair in as little as 90 days. Growth Activator Hair Serum plays nicely with a daily Nutraceutical regimen. For best results, keep consistent.1-3 Delivers plant-based nourishment directly to the scalp to reduce visible breakage and naturally aid in cell renewal for hair that feels stronger and looks thicker. Depending on your usage, one bottle of Growth Activator typically lasts 1-3 months: Approximately 1 month - Applying to entire scalp daily Approximately 3 months - Applying to specific areas of concerns daily Returns These products may NOT be returned. Please make your selections carefully. \",\"brand\":{\"@type\":\"Brand\",\"name\":\"Nutrafol\"},\"image\":\"https:\\/\\/images.practicaldatacore.com\\/skin-etc\\/getProductImage.php?size=imageMedium&cb=1747350155&productId=ntfl0829\",\"sku\":\"NTFL-0829\",\"@id\":\"https:\\/\\/www.skin-etc.com\\/ntfl0829.html#product\",\"gtin12\":\"851801008296\"}" document.getElementsByTagName('head')[0].appendChild(script); ; //*** time check 5 (0.03228s elapsed) //*** mod_storeClosed called //*** time check 6 (0.03247s elapsed) //*** mod_specialAccess //*** time check 7 (0.03249s elapsed) var pdServerTime = new Date("2025-05-16T00:54:14-05:00"); var pdProductId = "ntfl0829"; var pdProductCode = "NTFL-0829"; //************************************************ //************ 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); } //*** time check 8 (0.0325s elapsed) /* 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")+1); } var data = jQuery.parseJSON(response); console.log(data); if (data['loggedIn'] == true){ jQuery(pdAddToFavoritesButton).addClass("is-favorite"); console.log("Success adding to favorites"); } else{ console.log("User not logged in adding to favorites"); } }, 'error': function(xhr, status, error){ var errorMessage = xhr.status + ': ' + xhr.statusText console.log('Error - ' + errorMessage); } }); }); function pdAddToFavorites(orderForm,index,productUrl) { var pdAddToFavoritesAction = "https://myaccount.skin-etc.com/mod_favorites/favoritesAddItem.php"; if(pdIsBlank(index)) index = 0; var item = "vwitem" + index; var itemAttr = "vwattr" + index + "_"; //*** CAN'T FIND MULTIFORM ELEMENT? FALL BACK TO SINGLE ITEM CASE if(typeof orderForm[item] == "undefined") { item = "item"; itemAttr = "vwattr_"; } //******** ATTACH PRODUCT ID INPUT ************** if(item != "item") { var inputProductId = document.createElement("INPUT"); inputProductId.type = "hidden"; inputProductId.name = "add-single-favorites"; inputProductId.value = index; orderForm.appendChild(inputProductId); } if(productUrl == "autoDetect") productUrl = String(document.location); if(!pdIsBlank(productUrl)) { var inputOptions = document.createElement("INPUT"); inputOptions.type = "hidden"; inputOptions.name = "productUrl"; inputOptions.value = productUrl; orderForm.appendChild(inputOptions); } var tempAction = orderForm.action; var copiedQueryString = ""; var queryStringPosition = tempAction.indexOf("?"); if(queryStringPosition > -1) { copiedQueryString = tempAction.substring(queryStringPosition, tempAction.length); copiedQueryString = copiedQueryString.replace("+", "%20"); } orderForm.action=pdAddToFavoritesAction + copiedQueryString; if(orderForm.target != "_top") orderForm.target = ""; //*** COMPAT W/ SCFC orderForm.submit(); orderForm.action = tempAction; orderForm.removeChild(inputProductId); orderForm.removeChild(inputOptions); return false; } //*** mod_favorites enabled //*** public_mod_favorites_renderAddToFavoritesButton found jQuery(document).ready(function(){ jQuery(".pdAddToFavWrap").each(function(){ var itemId = jQuery(this).attr("data-itemid"); var productId = jQuery(this).attr("productId"); var item; if(!isBlank(itemId)){ item = itemId; }else{ item = 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://myaccount.skin-etc.com//mod_favorites/ajax/favoritesCheckItemFavorited.php?isCategory=false", 'data': data, 'crossDomain': true, 'success': function (response) { var data = jQuery.parseJSON(response); if (data['loggedIn'] == true){ if (data['message'] == 'success'){ jQuery(pdAddToFavoritesButton).html('
Add to Favorites
'); } else if (data['error'] == ""){ jQuery(pdAddToFavoritesButton).html(data['message']); // jQuery(pdAddToFavoritesButton).prop("onclick",null).off("click"); } else { jQuery(pdAddToFavoritesButton).html('
Add to Favorites
'); } } else{ window.location.href = data['message']; } }, 'error': function(xhr, status, error){ var errorMessage = xhr.status + ': ' + xhr.statusText alert('Error - ' + errorMessage); } }); }); }); jQuery(document).on("click", ".pdAddToFavWrap", function (event) { var itemId = jQuery(this).attr("data-itemid"); var productId = jQuery(this).attr("productId"); var item; if(!isBlank(itemId)){ item = itemId; }else{ item = productId; } var orderForm = jQuery(this).parents('form:first'); var pdAddToFavoritesButton = jQuery(this); optionString = jQuery(orderForm).serialize(); var data = { vwitem: item, productOptionList: optionString } //**** IF ITEM IS ALREADY FAVORITED, DISABLE ACTIONS AND DIRECT TO CUSTOMER FAVORITES *** var pdItemAlreadyInFavorites = jQuery(this).children("div").hasClass("pdAddToFavExists"); var pdErrorAddingToFavorites = jQuery(this).children("div").hasClass("pdAddToFavError"); var pdItemAddedToFavorites = jQuery(this).children("div").hasClass("pdAddToFavSuccess"); var pdItemAlreadyInFavoritesSection = jQuery(this).children("div").hasClass("pdAddToFavExistsSection"); var pdErrorAddingToFavoritesSection = jQuery(this).children("div").hasClass("pdAddToFavErrorSection"); var pdItemAddedToFavoritesSection = jQuery(this).children("div").hasClass("pdAddToFavSuccessSection"); if(pdItemAlreadyInFavorites == true || pdErrorAddingToFavorites == true || pdItemAddedToFavorites == true || pdItemAlreadyInFavoritesSection == true || pdErrorAddingToFavoritesSection == true || pdItemAddedToFavoritesSection == true){ console.log("Item is already in customer favorites"); pdItemAddedToFavorites window.location.href = "https://myaccount.skin-etc.com//mod_favorites/favorites.php"; return false; } jQuery.ajax({ // 'async': false, 'global': false, 'xhrFields': {withCredentials: true}, 'type': "POST", 'url': "https://myaccount.skin-etc.com//mod_favorites/ajax/favoritesAddItemNew.php?isCategory=false", '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'] + "?productList=" + encodeURIComponent(data['productList']); } }, 'error': function(xhr, status, error){ var errorMessage = xhr.status + ': ' + xhr.statusText alert('Error - ' + errorMessage); } }); event.stopPropagation(); event.preventDefault(); }); //*** time check 13 (0.03981s elapsed) //*** time check 14 (0.03981s elapsed) if(jQuery('#pd_pdOneBanner').length) { //*** BANNER ALREADY EXISTS, DO NOT RE-INSERT } else { jQuery("body").prepend('
'); } jQuery("#pd_pdOneBanner").html(" Account Account "); //*** time check 15 (0.04318s elapsed) if (typeof pdPerformLoginActions === "function") { pdPerformLoginActions(false); } //*** time check 16 (0.04419s elapsed) //*** time check 17 (0.04422s elapsed) //*** time check 18 (0.04423s elapsed) //*** time check 19 (0.04423s elapsed) //*** time check 20 (0.04594s elapsed) //*** time check 21 (0.04673s elapsed) //*** time check 22 (0.04858s elapsed) //********************************* //*** BEGIN mod_promotionCenter *** //********************************* //*** COULD NOT FIND PUBLIC FUNCTION 'public_mod_promotionCenter_getRenderedPageScript3()' //******************************* //*** END mod_promotionCenter *** //******************************* //*** time check 23 (0.0486s elapsed) //*** SEND PROMO INFO TO ALREADY ON-PAGE HANDLER FUNCTION var pdPromo = {}; try{pdHandlePromoInfo(pdPromo)} catch(e) {} //*** SEND PROMO INFO TO ALREADY ON-PAGE HANDLER FUNCTION var pdProductListCalloutHtml = ""; try{pdHandleProductListCallout(pdProductListCalloutHtml)} catch(e) {} //*** time check 24 (0.04937s elapsed) //*** mod_fbConversion is NOT enabled! //*** time check 25 (0.05021s elapsed) //*** time check 26 (0.05102s elapsed) //*** time check 27 (0.05178s elapsed) //*** time check 28 (0.05251s elapsed) //**** CART ITEM COUNT MESSAGE ***** function pdDisplayCartItemCount() { var pdCartItemCount = pdGetCookie('pdCartItemCount'); if(!pdIsBlank(pdCartItemCount)) { var pdCartItemCountMessage = pdCartItemCount; jQuery('.pdCartItemCountMessage').html(pdCartItemCountMessage); } } pdDisplayCartItemCount(); //*** pageScript end (0.05255s elapsed) //*** time check 29 (0.05255s elapsed)