SGW Item Modification Helper

Improves the modification page

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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')???