var rootFolderDirty = false; var productSizeID; var colourID; var buybtnID = -1 var productID; var startLoadingPreviewAnim; function setDefaultSelection(ID) { $('#sizeOption' + ID).find("option:not([disabled])").first().prop('selected', '1'); } //disables buy or save button if the size is out of stock, enables the button if inStock function changeBuyBtnStatus(btnID) { var id = $("#sizeOption").find("option:selected").attr("id"); if (buybtnID != -1) { buybtnID = btnID; } switch (id) { case "outOfStock": disableBuyBtn(); break; case "inStock": enableBuyBtn(); break; } } function removeOutOfStockTxt() { $('#buyDiv #outOfStockTxt').remove(); } function OutOfStockTxt() { $('#buyDiv').prepend(''+"Sorry, temporarily out of stock"+'
'); } function disableBuyBtn() { removeOutOfStockTxt() OutOfStockTxt() $('#buyBtn'+buybtnID).attr('class', 'MarketPlaceItemDetail__buyBtn disabled'); $('#buyBtn' + buybtnID).attr('onclick', ''); } function enableBuyBtn() { removeOutOfStockTxt() $('#buyBtn' + buybtnID).attr('class', 'MarketPlaceItemDetail__buyBtn'); $('#buyBtn' + buybtnID).attr('onclick', ''); } function buyButton() { //loadSizes(productID, colourID); loadSizes(); } function loadSizes() { $.ajax({ url: '/custom-tools/des-size-server.aspx?PID=' + productID + '&CID=' + colourID + '&SID='+productSizeID+'&R=' + Math.random(), cache: false, success: function (res) { $('#sizes').html(res) if ($('#sizeOption').find("option:selected").attr('id') == 'outOfStock') { //looks for the next size in stock if ($('#sizeOption').find("option[class=inStock]").attr('value') > 0) { $('#sizeOption').find("option:selected").remove("selected"); $('#sizeOption').find("option:not([disabled])").first().prop('selected', '1'); enableBuyBtn(); } else { disableBuyBtn(); } } } }); } function changeThumbSide(vPos,ID) { var thumbsideurl = $("#" + ID + ".thumbSideURL"+vPos).val(); $("#" + ID + ".tabs__imageResources--theThumbnail").attr("src",thumbsideurl); updateThumbNailURL(ID); } function updateThumbNailURL(ID) { var thumboutRadioSelector = "thumbside" + ID; var thumboutRadioSelection= $('input:radio[name="'+thumboutRadioSelector+'"]:checked').val(); var imgSrc= $("#" + ID + ".thumbOutURL"+thumboutRadioSelection).val(); var itemName = $("#" + ID + ".MarketPlace__ProductTitle").text(); var size = $("#" + ID + ".thumbnailSize").val(); var detailURL = $("#itemPageURL"+ID).val(); var linkArea = $("#embeddedURL"+ID); var link='\"'+itemName+'\"/'; linkArea.html(link); linkArea.select(); } function createSaleItem() { var SetupSaleItemForm = document.getElementById('SetupSaleItemForm'); resetErrors(SetupSaleItemForm); SetupSaleItemForm.newDesc.style.background='white'; if (validateSaleItem(SetupSaleItemForm)) SetupSaleItemForm.submit(); } function validItemDetails(theForm) { var result=true; if(theForm.newItemName.value.trim()=='') { displayError('ItemName', "You must name your item"); theForm.newItemName.focus(); result = false; } if(theForm.newDesc.value.trim()=='') { displayError('ItemDesc', "You must have a description for your item"); theForm.newDesc.focus(); result = false; } return result; } function validateSaleItem(theForm) { var result=true; if (!validItemDetails(theForm)) { result=false; } if (!validPrices(theForm)) { result=false; } return result; } function toggleItemDetails(event, caller){ event.preventDefault(); if($(caller).siblings("[name='marketplaceMySalesItems__detailsMenu']").is(':hidden')) { caller.parentElement.classList.add("marketplaceMySalesItems__detailsMenu--containerOpen"); caller.parentElement.classList.remove("marketplaceMySalesItems__detailsMenu--container"); } else if($(caller).siblings("[name='marketplaceMySalesItems__detailsMenu']").is(':visible')) { caller.parentElement.classList.remove("marketplaceMySalesItems__detailsMenu--containerOpen"); caller.parentElement.classList.add("marketplaceMySalesItems__detailsMenu--container"); } //Toggle the collapsible $(caller).siblings("[name='marketplaceMySalesItems__detailsMenu']").slideToggle(250); //Rotate the Chevron var toggleOrderBtnChevron = $(caller).children("[name='marketplace__toggleDetailsBtn--Chevron']") if (toggleOrderBtnChevron.hasClass("marketplace__toggleDetailsBtn--Chevron--Rotate")){ toggleOrderBtnChevron.removeClass("marketplace__toggleDetailsBtn--Chevron--Rotate"); } else{ toggleOrderBtnChevron.addClass("marketplace__toggleDetailsBtn--Chevron--Rotate"); } //Change the button text var toggleOrderBtnSpan = $(caller).children("[name='marketplace__toggleDetailsBtn--Span']"); var currentBtnText = toggleOrderBtnSpan.text(); var newBtnText = toggleOrderBtnSpan.attr("data-altText"); toggleOrderBtnSpan.text(newBtnText); toggleOrderBtnSpan.attr("data-altText", currentBtnText); } function changeDetailsMenuTab(caller,targetClass,ID){ $('#detailForm'+ID).find("."+ targetClass).show(); $('#detailForm'+ID).find("."+ targetClass).siblings().hide(); $(caller).addClass("detailsMenu__navigationBar--tabOn") $(caller).removeClass("detailsMenu__navigationBar--tabOff") $(caller).siblings().removeClass("detailsMenu__navigationBar--tabOn") $(caller).siblings().addClass("detailsMenu__navigationBar--tabOff") } function validPrices(theForm) { var result=true; var prices = document.getElementById('pricesDiv').getElementsByTagName('Input'); for (var count=0;count < prices.length;count++) { if (prices[count].value.trim()=='') { displayError(prices[count].id, "Please enter a commission value between 0 and the value of the item"); prices[count].focus(); result = false; } else if (!isCurrency(prices[count])) { displayError(prices[count].id,"The commission value must be a valid number less than the sale price of the product"); prices[count].focus(); result=false; } else if (parseFloat(prices[count].value) > document.getElementById('maxCommission'+prices[count].id.substring(9)).value) { displayError(prices[count].id,"The commission value is limited to the sale price of the product"); prices[count].focus(); result=false; } } return result; } function isCurrency(formField) { return formField.value.trim().search(/^[0-9]{0,3}(\.[0-9]{1,2})?$/)!=-1 } function delItem(ID) { if(confirm("Are you sure you wish to delete this item from the Marketplace at TShirt Studio? *All external links to this item will no longer work"+'* ')) { xmlHttp('/SubArea/customer/marketplacesetup/SaleItemDelete.aspx?ID='+ID+'&R='+Math.random(),function(){},true); var delItem = document.getElementById('detailForm'+ID); delItem.parentNode.removeChild(delItem); } } function updateItemBasicDetails(ID) { var newItemName =$('#ItemName'+ID).val(); var newDesc = $('#ItemDesc'+ID).val(); var newSearchable = $('#detailForm'+ID).find('#webSearchable').is(':checked'); var newSearchableDefault = $('#detailForm'+ID).find('#webSearchable').prop("defaultChecked") if(updateItemBasicDetailsValid(newItemName,newDesc,ID)) { $.ajax({ url:'/SubArea/customer/marketplacesetup/saleitemupdatebasicdetails.aspx?ID=' +ID+'&NewDesc='+newDesc+'&NewItemName='+newItemName+'&NewSearchable='+newSearchable, cache:false, success:function(res) { res = JSON.parse(res); if(res.returnUrl != "") { window.location.href = res.returnUrl; } if(res.success == true) { restartErrors('detailForm'+ID); if(newSearchable != newSearchableDefault) { $('#detailForm'+ID).find('#webSearchable').prop("defaultChecked",newSearchable); createSuccessMessage('detailsMenu__checkbox'+ID,res.messageList[0].Message); } if(newItemName != $("#" + ID + ".MarketPlace__ProductTitle").text()) { $("#" + ID + ".MarketPlace__ProductTitle").text(newItemName); createSuccessMessage('ItemName'+ID,res.messageList[0].Message); } if(newDesc != $("#" + ID + ".marketplace__ProductDescription").text()) { $("#" + ID + ".marketplace__ProductDescription").text(newDesc); createSuccessMessage('ItemDesc'+ID,res.messageList[0].Message); } } else { restartErrors('detailForm'+ID); for (var i = 0; i < res.messageList.length; i++) { displayError(res.messageList[i].elementID+ID, res.messageList[i].Message); } } } }) } } function updateItemBasicDetailsValid(itemName,itemDesc,ID) { restartErrors('detailForm'+ID); var itemName; var itemDesc; var result=true; if(itemName.trim()=='') { displayError('ItemName'+ID, "You must name your item"); result = false; } if(itemName.length > 50) { displayError('ItemName'+ID, "Your name is too long"); result = false; } if(itemDesc.trim()=='') { displayError('ItemDesc'+ID, "You must have a description for your item"); result = false; } if(itemDesc.length > 500) { displayError('ItemDesc'+ID, "Your description is too long"); result = false; } return result; } function updateItemCommision(ID) { restartErrors('detailForm'+ID); var isValid = true; var prices = document.getElementById('detailForm'+ID).getElementsByClassName('Price'+ID) var pricesJson = {currencies: []}; for (var i = 0; i < prices.length; i++) { isValid = updateItemCommisionValid(ID,i+1,isValid) pricesJson.currencies.push ({ "ID" : prices[i].id, "Price" : prices[i].value }) } var stringPricesJson = JSON.stringify(pricesJson) if (isValid == true) { $.ajax({ url:'/SubArea/customer/marketplacesetup/saleitemupdatecommision.aspx?ID='+ID+'&pricesStringJson='+stringPricesJson, cache:false, success:function(res) { res = JSON.parse(res); if(res.returnUrl != "") { window.location.href = res.returnUrl; } if(res.success == true) { for (var i = 0; i < prices.length; i++) { if(prices[i].value != prices[i].defaultValue) { createSuccessMessage('commisionInput'+ID +(i+1),res.messageList[0].Message); prices[i].defaultValue = prices[i].value } } } else { for (var i = 0; i < res.messageList.length; i++) { displayError('commisionInput'+ID+res.messageList[i].elementID, res.messageList[i].Message); } } } }) } } function updateItemCommisionValid(ID,CurrencyID,isValid) { currentCurrencyValue = parseFloat($('#commisionInput'+ID+CurrencyID).val()); currentCurrencyMax = parseFloat($('#commisionInput'+ID+CurrencyID).attr("max")); var result=true; if(isValid == false) { result = false; } if(currentCurrencyValue < 0) { displayError(('commisionInput'+ID +CurrencyID), "The commission value can't be negative"); result = false; } else if(String(currentCurrencyValue).trim().search(/^[0-9]{0,3}(\.[0-9]{1,2})?$/)==-1) { displayError(('commisionInput'+ID +CurrencyID), "Please enter a valid commission value"); result = false; } else if(currentCurrencyValue > currentCurrencyMax) { displayError(('commisionInput'+ID +CurrencyID), "The commission value is limited to the sale price of the product"); result = false; } return result; } function addAddress() { var addForm = document.getElementById('addAddressForm'); if (validateAddressForm(addForm)) addForm.submit(); } function validateAddressForm(theForm) { resetErrors(theForm); var result=true; if (theForm.Name.value.trim()=='') { displayError('customerName',"please enter a name"); result=false; } if (theForm.Address1.value.trim()=='') { displayError('customerAddress1',"please enter an address"); result=false; } if (theForm.City.value.trim()=='') { displayError('customerCity',"please enter a town/city"); result=false; } if (theForm.Postcode.value.trim()=='') { displayError('customerPostcode',"please enter a Post Code"); result=false; } return result; } function useAddress(addressID) { document.getElementById('useAddressForm'+addressID).submit(); } function updateSeller() { var sellerForm = document.getElementById('sellerForm'); if (validateSellerForm(sellerForm)) sellerForm.submit(); } function validateSellerForm(theForm) { resetErrors(theForm); var result=true; if(theForm.newMarketplaceShopName.value.trim()=='') { displayError('marketplaceShopName',"You must name your shop"); theForm.newMarketplaceShopName.focus(); result=false; } if (theForm.newPaypalEmailAddress.value.trim()!='' && !validEmail(theForm.newPaypalEmailAddress)) result=false; if (theForm.newVATNumber.value.trim()!='' && !checkVATNumber(theForm.newVATNumber.value.trim().toUpperCase())) { displayError('VATNumber',"VAT number is not valid, please remember to include the country code e.g. GB797925454"); theForm.newVATNumber.focus(); result=false; } return result; } function signUpSeller(btn) { btn.disabled = true; btn.classList.add("disabled"); var signUpForm = document.getElementById('signUpForm'); if (validateSignUpForm(signUpForm)) { signUpForm.submit(); } else { btn.disabled = false; btn.classList.remove("disabled"); } } function isFriendlyURL(formField){ return formField.value.trim().toLowerCase().search(/[^_=$£!'^a-z^A-Z^0-9^-]$/)==-1 } function validateSignUpForm(theForm) { resetErrors(theForm); var result=true; if(theForm.newMarketplaceShopName.value.trim()=='') { displayError('marketplaceShopName',"You must name your shop"); theForm.newMarketplaceShopName.focus(); result=false; } if(!isFriendlyURL(theForm.newRootFolder)) { displayError('rootFolder', "the root folder can only contain the following characters:" + "_=$£!\'a-z 0-9"); result=false; } if (!validEmail(theForm.newPaypalEmail)){ result=false; } if (theForm.newVATNumber.value.trim()!='' && !checkVATNumber(theForm.newVATNumber.value.trim().toUpperCase())) { displayError('VATNumber',"VAT number is not valid, please remember to include the country code e.g. GB797925454"); theForm.newVATNumber.focus(); result=false; } if(!theForm.tandc.checked) { displayError('idtandc',"you must read and agree to the marketplace terms and conditions"); theForm.tandc.focus(); result=false; } return result; } function updatedShopName(shopName) { if (!rootFolderDirty) { var rootFolder=document.getElementById("rootFolder") rootFolder.value=makeURLFriendly(shopName); } } function updatedFolderName(rootFolder) { rootFolderDirty=true; } function makeURLFriendly(url) { return url.replace(/[^_=$£!'^a-z^A-Z^0-9^-]/g, "-").toLowerCase(); } function validEmail(formField) { if (formField.value.trim()=='') { displayError('emailAddress',"please enter an email address"); return false; } var validRegEx=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/; if (formField.value.trim().toUpperCase().search(validRegEx)==-1) { displayError(formField.id,"email address is not valid"); formField.focus(); return false; } return true; } function startLoadingAnim(ID) { if (window.XMLHttpRequest) startLoadingPreviewAnim = new SpriteAnim({ width: 120, height: 120, sprite: '/art/base/designer/loading/loading120.png', frames: 12, elementId: 'loading'+ ID }); } function createSuccessMessage(ID,Message) { const small = document.createElement("small"); const node = document.createTextNode(Message); small.appendChild(node); small.classList.add("errorText"); small.classList.add("errorText--green"); const element = document.getElementById(ID) const elementParent = document.getElementById(ID).parentElement elementParent.insertBefore(small,element) } function restartErrors(ID) { var errorBackgrounds = document.getElementById(ID).querySelectorAll("input, textarea"); for (var i = 0; i < errorBackgrounds.length; i++) { if(errorBackgrounds[i].style.background == "pink") { errorBackgrounds[i].style.background = ""; } } var errors = document.getElementById(ID).querySelectorAll(".errorText"); for (var i = 0; i < errors.length; i++) { errors[i].remove(); } } function copyToClipboard(ID) { var target = document.getElementById(ID) target.select(); target.setSelectionRange(0, 99999); navigator.clipboard.writeText(target.value); } function loadsalesitemlist(isOnLoad, isSortBy) { const defaultFetchNext = 20 var marketplaceURL = $('#marketplaceURL').val(); var qtyItems = $('#qtyItems').val(); var loadMoreButton = $('#loadMoreOrderRowsBtn'); var loadMoreSpinner = $('#loadMoreOrderRowsSpinner'); var offSet = $("[name='product']").length var fetchNext = defaultFetchNext var sortType = $('#marketPlace__Sort--dropdown').val(); var sortElement = document.getElementById("marketPlace__Sort--dropdown"); var loadCounterText = $('#loadCounter') if(isOnLoad == true) //If it is the first load use cookie instead { var fetchNextCookie = getCookie("fetchNext") if(fetchNextCookie != "") { offSet = 0 fetchNext = fetchNextCookie } var sortTypeCookie = getCookie("sortType") if(sortTypeCookie != "") { sortType = sortTypeCookie sortElement.value = sortType; } } if(isSortBy == true) { offSet = 0 fetchNext = $("[name='product']").length createCookie("sortType",sortType,5,window.location.pathname) $(".page__Content").children().remove(); } $.ajax({ url:'/SubArea/customer/marketplacesetup/loadsalesitemlist.aspx?offSet='+offSet+'&fetchNext='+fetchNext+'&Marketplace='+marketplaceURL+'&SortType='+sortType, cache:false, beforeSend: function() { loadMoreSpinner.show(); loadMoreButton.hide(); loadCounterText.hide(); }, success:function(res) { res = JSON.parse(res) if(res.returnUrl != "") { window.location.href = res.returnUrl; } else if (res.stringifiedHTML != "") { var qtyItems = res.totalItems; $(".page__Content").append(res.stringifiedHTML); onLoadSuccessVisuals(res) createCookie("fetchNext",$("[name='product']").length,5,window.location.pathname) //Load counter text $('#loadCounter').text("You've viewed" + " " + $("[name='product']").length + " " + "of" + " " + qtyItems + " " + "items") if (qtyItems <= $("[name='product']").length) //If current items is equal to the max we want to hide the button { loadMoreSpinner.hide(); loadMoreButton.hide(); } else if((qtyItems - $("[name='product']").length) >= defaultFetchNext) //If the remaining items is greater than the default we dont want to change the load next text { $('#loadMoreOrderRowsBtn').val("Load next" +" "+ defaultFetchNext +" "+ "→") } else { $('#loadMoreOrderRowsBtn').val("Load next" +" "+ (qtyItems - $("[name='product']").length) +" "+ "→") } } else //We failed to load anything or shop is empty { loadMoreSpinner.hide(); loadMoreButton.hide(); } } }); } function onLoadSuccessVisuals(res) { var loadMoreCounter = $('#loadCounter') var loadMoreButton = $('#loadMoreOrderRowsBtn'); var loadMoreSpinner = $('#loadMoreOrderRowsSpinner'); loadMoreSpinner.hide(); loadMoreButton.show(); loadMoreCounter.show(); } function createCookie(name,value,minutes,path) { if (minutes) { var date = new Date(); date.setTime(date.getTime()+(minutes*60*1000)); var expires = "; expires="+date.toUTCString(); } else { var expires = ""; } document.cookie = name+"="+value+expires+"; path="+path; } function getCookie(cookieName){ var cookieArray = document.cookie.split(cookieName + '=')[1]; if (cookieArray === undefined){ return "" }else{ return cookieArray.split(';').shift(); } } //new regenerated marketplace thumbnail - pending rollout function regenerateThumbs(ID,saleDetailPage) { //display loading startLoadingAnim(ID); $('#loading'+ID).show(); $('.marketplaceOverlay').show(); $.ajax({ url: '/SubArea/customer/marketplacesetup/saleItemRegenerateThumb.aspx?ID=' + ID + '&R=' + Math.random(), cache: false, success: function (res) { if (saleDetailPage == true) { $('img').each(function () { $(this).attr('src', $(this).attr('src') + '?' + new Date().getTime()); }); } else { $('#itemThumb' + ID + "-1Img").attr("src", $('#itemThumb' + ID + "-1Img").attr('src') + "?" + new Date().getTime()); $('#itemThumb' + ID + "-2Img").attr("src", $('#itemThumb' + ID + "-2Img").attr('src') + "?" + new Date().getTime()); } $('#loading' + ID).hide(); $('.marketplaceOverlay').hide(); startLoadingPreviewAnim.stopAnimation(); } }); } function toggleDescriptionVisibility(event){ event.preventDefault(); $(event.currentTarget).closest("[name='marketPlaceItemInfo']").children("[name='description']").slideToggle(150); }