Nexus Clash Remove Spellgem Colour from Inventory

Remove Spellgem Colour from Inventory

// ==UserScript==
// @name        Nexus Clash Remove Spellgem Colour from Inventory
// @namespace   http://userscripts.org/users/125692
// @description Remove Spellgem Colour from Inventory
// @include        http://nexusclash.com/modules.php?name=Game*
// @include        http://www.nexusclash.com/modules.php?name=Game*
// @exclude        http://nexusclash.com/modules.php?name=Game&op=disconnect
// @exclude        http://www.nexusclash.com/modules.php?name=Game&op=disconnect
// @version     1
// @grant       none
// ==/UserScript==
//removes the spellgem colour from gems in the inventory and sorts them and puts them at the bottom of inventory
//adds title text (mouse over) with the colour
(function() {

var inventoryheaders = document.evaluate(
	"//th[starts-with(.,'Item')]", 
	document, 
	null,
	XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
	null
	);
if(inventoryheaders.snapshotLength>0){
var inventoryheader=inventoryheaders.snapshotItem(0);//pick the first one
  
  
  //right now whle we at inventory hide spellgem colours.   
    var inventorygems = document.evaluate(
	"//tr[contains(td/text(),'Spellgem')]", 
	inventoryheader.parentNode, 
	null,
	XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
	null
	);
    if (inventorygems.snapshotLength>0){//we have spellgems
        //set title text to color. Remove colour and move them to bottom of inventory
       var inventorygemrow=0;
		   for (i=0;inventorygemrow=inventorygems.snapshotItem(i);i++){
         inventorygemrow.firstElementChild.title=inventorygemrow.firstElementChild.textContent;
			    inventorygemrow.firstElementChild.textContent=inventorygemrow.firstElementChild.textContent.replace(/.*(Spellgem.*)/,'$1');
		   }  
    }
var wornrow=  document.evaluate(//row above which we insert spellgems
	"//tr[th/text()='Worn']", 
	inventoryheader.parentNode, 
	null,
	XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
	null
	);
   
if (wornrow.snapshotLength>0){
  wornrow=wornrow.snapshotItem(0);
  var inventorygemrowparent=inventoryheader.parentNode.parentNode;
  //sort an array of the gem rows

  var sellength=inventorygems.snapshotLength;
  if(sellength>1){//ie we need to sort
  	var tmpAry = new Array();
    for (var i=0;i<sellength ;i++) {
		tmpAry[i] = new Array();
		tmpAry[i][0] = inventorygems.snapshotItem(i);
		}
		tmpAry.sort(function (a,b){//this needed to ignore case and leading numbers
                var a=a[0].firstElementChild.textContent.match(/([A-Za-z-,0-9 ]+)/)[1].toLowerCase();
                var b=b[0].firstElementChild.textContent.match(/([A-Za-z-,0-9 ]+)/)[1].toLowerCase();//([A-Za-z-,0-9 ]+)
                return a<b?-1:b<a?1:0;
            });
		for (var i=0;i<tmpAry.length;i++) {
            inventorygemrowparent.insertBefore(tmpAry[i][0],wornrow);
		}
  }
  else if(sellength==1) {//we only have one gem
   inventorygemrowparent.insertBefore(inventorygems.snapshotItem(0),wornrow);
  }
  } 
}
  
//EOF
})();