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='';
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);
}