Greasy Fork is available in English.

SGW Item Modification Helper

Improves the modification page

// ==UserScript==
// @name        SGW Item Modification Helper
// @namespace   greasyfork.org
// @version     1.4.0.9
// @grant       none
// @include     https://sellers.shopgoodwill.com/sellers/modifyItem.asp*

// @require     https://greasyfork.org/scripts/37273-underdollar-jquery-replacement/code/Underdollar%20jQuery%20replacement.js?upDate=2018_01_11sq2
// @description Improves the modification page
// ==/UserScript==


console.log('squirrel?')

// @require     https://greasyfork.org/scripts/23449-gm-api-script/code/GM%20API%20script.js?upDate=2016_09_23

//NodeList.prototype.forEach = Array.prototype.forEach;

//Array.prototype.forEach.call(document.querySelectorAll('*[name]'), function(el) {
document.querySelectorAll('*[name]').forEach(function(el) {
	if (typeof el.id == 'undefined' || el.id.length < 1) {
		el.id = el.getAttribute('name');
	}
});




_$('#itemTitle').parent().parent().parent().hide();
_$('#itemTitle').parent().parent().parent().before("<tr><td valign='top' width='10' bgcolor='#2045A3'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='contentTD'></td></tr>");

_$('#contentTD').append("<p id='itemTitleContainer'><b>Item Title:</b> </p>");
_$('#itemTitleContainer').append(_$('#itemTitle'));

_$('#contentTD').append("<p id='itemCategoryContainer'><b>Category:</b> </p>");
_$('#itemCategoryContainer').append(_$('#s1'));

_$('#contentTD').append("<p id='itemDescriptionContainer'><b>Description:</b> </p>");
_$('#itemDescriptionContainer').append(_$('#colourPalette').parent());

_$('#contentTD').append("<div id='itemShippingDetailsContainer'></div>");
_$('#itemShippingDetailsContainer').append("<p id='itemShippingWeightContainer'><b>Shipping Weight:</b> </p>");
_$('#itemShippingWeightContainer').append(_$('#itemWeight'));
_$('#itemShippingDetailsContainer').append("<p id='itemDisplayWeightContainer'><b>Display (Actual) Weight:</b> </p>");
_$('#itemDisplayWeightContainer').append(_$('#itemDisplayWeight'));
_$('#itemShippingDetailsContainer').append("<p id='itemShippingPriceContainer'><b>Shipping Charge:</b><br></p>");
_$('#itemShippingPriceContainer').append(_$('#itemShippingPrice'));
_$('#itemShippingDetailsContainer').append("<p id='itemShipMethodContainer'><b>Shipping Method:</b> <br></p>");
_$('#itemShipMethodContainer').append(_$('#itemShipMethod'));
_$('#itemShippingDetailsContainer').append("<p id='itemNoCombineShippingContainer'><b>Item Shipment Combining:</b><br></p>");
_$('#itemNoCombineShippingContainer').append(_$('#itemNoCombineShipping'));
_$('#itemNoCombineShippingContainer').append(" Select this option if the buyer of this item should not be allowed to combine this item with shipment of other items.");
_$('#itemShippingDetailsContainer').append("<p id='itemAutoInsuranceContainer'><b>Auto Include Insurance (USPS Only):</b></p>");
_$('#itemAutoInsuranceContainer').append(_$('#itemAutoInsurance'));

_$('#contentTD').append("<p id='itemsellerstoreContainer'><b>Seller Store:</b> </p>");
_$('#itemsellerstoreContainer').append(_$('#itemsellerstore'));

//_$('#itemSellerInventoryLocationID').parent().attr('id', 'itemSellerInventoryLocationIDContainer').appendTo(_$('#contentTD')); // no appendTo, appendTo is stupid
_$('#contentTD').append(_$('#itemSellerInventoryLocationID').parent().attr('id', 'itemSellerInventoryLocationIDContainer'));

_$('#contentTD').append("<p id='itemSellerInfoContainer'><b>Seller Private Description:</b><br></p>");
_$('#itemSellerInfoContainer').append(_$('#itemSellerInfo'));

_$('#contentTD').append("<p style='position:relative; left: 10px; padding-bottom:4px;'><span class='fakeButton' onclick='_$(\"#hiddenJunk\").toggle();'>Show/hide hidden fields/etc.</span></p>");


_$('#contentTD').parent().after("<tr style='display:none;' id='hiddenJunk'><td valign='top' width='10' bgcolor='#2045A3'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='hiddenJunkTD'></td></tr>");

_$('#hiddenJunkTD').append("<p id='itemQuantityContainer'><b>Item Quantity: </b></p>");
_$('#itemQuantityContainer').append(_$('#itemQuantity').parent());

_$('#hiddenJunkTD').append("<p id='itemMinimumBidContainer'><b>Minimum Bid: </b></p>");
_$('#itemMinimumBidContainer').append(_$('#itemMinimumBid').parent());

_$('#hiddenJunkTD').append("<p id='itemBidIncrementContainer'><b>Bid Increment: </b></p>");
_$('#itemBidIncrementContainer').append(_$('#itemBidIncrement').parent());

_$('#hiddenJunkTD').append("<p id='itemReserveContainer'><b>Reserve Price: </b></p>");
_$('#itemReserveContainer').append(_$('#itemReserve').parent());
_$('#itemReserve').parent().children().first().remove();

_$('#hiddenJunkTD').append("<p id='itemBuyNowPriceContainer'><b>Buy Now Price: </b></p>");
_$('#itemBuyNowPriceContainer').append(_$('#itemBuyNowPrice').parent());
_$('#itemBuyNowPrice').parent().children().first().remove();

_$('#hiddenJunkTD').append("<p id='itemActualDimensionsContainer'></p>");
_$('#itemActualDimensionsContainer').append(_$('#itemLength').parent().parent().parent());

_$('#hiddenJunkTD').append("<p id='itemShippingDimensionsContainer'></p>");
_$('#itemShippingDimensionsContainer').append('<font face="Arial" size="2"><strong>Shipping Dimension - Length x Width x Height in inches (optional)</font><font face="arial" color="#a3223a" size="4"></font>:</strong>');
_$('#itemShippingDimensionsContainer').append(_$('#itemShipLength'));
_$('#itemShippingDimensionsContainer').append(" <font face='Arial' size='2'>(Numbers and decimal point '.' only) Used for shipping optimization and prevention of oversized charges.</font>");

_$('#hiddenJunkTD').append("<p id='itemShippingContainer'><b>Shipping: </b><p>");
_$('#itemShippingContainer').append(_$('#itemShipping'));
_$('#itemShippingContainer').append(_$('select[name="itemShipping"]'));

_$('#hiddenJunkTD').append("<p id='itemHandlingPriceContainer'><b>Handling Charge: </b></p>");

_$('#itemHandlingPriceContainer').append(_$('#itemHandlingPrice').parent());
_$('#itemHandlingPrice').parent().children().first().remove();

_$('#hiddenJunk').after("<tr><td valign='top' width='10' bgcolor='#2045A3' height='10px'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='hiddenJunkTD'></td></tr>");

_$('#itemShipMethod option[value="3"]').text('Post Office');


_$('#itemTitleContainer').after('<div id="counterContainer"><font face="Arial" size="4">You have <b><span id="myCounter"></span></b> characters remaining.</font></div>');
_$("#myCounter").html(50-_$('#itemTitle').val().length);
_$('#itemTitle').bind('keyup', function(){
  _$("#myCounter").html(50-_$('#itemTitle').val().length);
});

// --------- Shipping calculator --------------------------------------------

if (_$('#gesMN_shippingCalculatorContainer').length > 0) {
  _$("#itemDescriptionContainer").append(_$('#gesMN_shippingCalculatorContainer'));
  var sgwTimeouts = window.setTimeout(function(){


      function combineCheck(){
          var noCombine = false;
          var myWeight = _$('#itemWeight').val();
          if (myWeight >= 20) {
              console.log('badWeight: >= 20');
              noCombine = true;
          } else if (_$('#combineCheck').html() != 'true') {
              var myCat = _$('#s1').val();
              var badCats = ['Paintings', 'Prints', 'Strings', 'Brass', 'Formalwear', 'Outerwear', 'Wedding > Dresses', 'Lamps', 'Dinnerware', 'Sewing Machines', 'Typewriters', 'Receivers', 'Turntables', 'Dinnerware', 'Trains'];
              _$.each(badCats, function(index, category){//__$.each == __$().each
                  if (myCat.indexOf(category) >= 0)  {
                      noCombine = true;
                      console.log('badCat: ' + category);
                  }
              });
              if (noCombine == false) {
                  var myDescription = '';
                  if (typeof _$('#WebWizRTE').contents()[0]['body']['innerText'] != 'undefined') { // this may not work
                      var myDesc = _$('#WebWizRTE').contents()[0]['body']['innerText'].replace(/(?:\r\n|\r|\n)/g, '').toLowerCase();
                  }
                  var myTitle = _$('#itemTitle').val().toLowerCase();
                  var badWords = ['Framed', 'Saxophone', 'Guitar', 'Keyboard', 'Trombone', 'Telescope', 'Saxophone', 'Lamp', 'Snowboard', 'Skateboard', 'Glass', 'Crystal', 'Cast iron', 'Tool', 'Drum', 'Sewing machine', 'Typewriter', 'Printer', 'Desktop', 'Receiver', 'Turntable', 'Monitor'];
                  //                console.log(myDescription);
                  //                console.log(myTitle);
                  _$.each(badWords, function(index, word){
                      word = word.toLowerCase();
                      if (myDescription.indexOf(word) >= 0 || myTitle.indexOf(word) >= 0)  {
                          noCombine = true;
                          console.log('badWord: '+word);
                      } else {
                      }
                  });
                  if (noCombine == false && (myCat.indexOf('Speaker') >= 0 || myTitle.indexOf('speaker') >= 0 || myDescription.indexOf('speaker') >= 0) && myWeight > 5) {
                      noCombine = true;
                      console.log('badWeight (speaker)');
                  }
              }
          }
          if (noCombine == true) {
              console.log('no combine');
              _$('#itemNoCombineShipping').attr('checked', true);
          } else {
              console.log('combine');
              _$('#itemNoCombineShipping').attr('checked', false);
          }
      }

      function dummyWeight() {
          if (_$('#itemWeight').val().length < 1) {
              _$('#itemWeight').val(1);
          }
          if (_$('#itemDisplayWeight').val().length < 1) {
              _$('#itemDisplayWeight').val(1);
          }
      }

      function setCombinable(bool) {
          // true == CAN be combined; false == CANNOT
          _$('#combineCheck').html(bool);
          if (bool === true || bool == 'true') {
              _$('itemNoCombineShipping').attr('checked', false);
          } else {
              _$('itemNoCombineShipping').attr('checked', true);
          }
      }
      function getElement(queryString) {
          if (queryString.indexOf('#') == 0) {
              return document.getElementById(queryString.replace('#',''));
          } else {
              return document.querySelectorAll(queryString)[0];
          }
      }
      function getElements(queryString) {
          return document.querySelectorAll(queryString);
      }
      function hide(el){
          el.style.display = 'none';
          el.classList += 'gesHidden';
          return false;
      }
      function show(el){
          el.style.display = '';
          return false;
      }
      function addCSS(element, styleText) {
          element.style.cssText +=';'+ styleText;
          return false;
      }


      _$('#gesMN_useThisButton').bind('click', function(){
          var method;
          var actualWeight = _$('#gesMN_actualWeight').val();
          var shippingWeight = 0;
          var shippingCharge = 0;
          console.log(actualWeight);
          if (_$('#gesMN_shippingWeight').filter(function(el){
              return _$(el).isVisible();
          }).length > 0) {
              shippingWeight = _$('#gesMN_shippingWeight').html();
              _$('#itemShipMethod').val(2);
              _$('#itemAutoInsurance').attr('checked', false);
              console.log(shippingWeight);
          } else if (_$('#gesMN_shippingCharge').filter(function(el){
              return _$(el).isVisible();
          }).length > 0) {
              shippingWeight = actualWeight;
              _$('#itemShipMethod').val(3);
              _$('#itemAutoInsurance').attr('checked', true);
              shippingCharge = _$('#gesMN_shippingCharge').html();
          } else {
              shippingWeight = actualWeight;
              _$('#itemShipMethod').val(0);
              _$('#itemAutoInsurance').attr('checked', false);
          }
          _$('#itemWeight').val(shippingWeight);
          _$('#itemDisplayWeight').val(actualWeight);
          _$('#itemShippingPrice').val(shippingCharge);
      });

  }, 1100);

}

_$('.fakeButton').css({
  'border' : '1px solid #CCC',
  'background-color' : '#EEE',
  'padding' : '3px',
  'margin' : '3px',
});


// can I touch _$('body.WebWizRTEtextarea')???