NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Neopets Easy Search Hack
// @homepage http://www.shopneopia.com
// @match http://www.neopets.com/halloween/witchtower*.phtml
// @match http://www.neopets.com/island/kitchen*.phtml
// @match http://www.neopets.com/medieval/earthfaerie.phtml*
// @match http://www.neopets.com/faerieland/darkfaerie.phtml*
// @match http://www.neopets.com/safetydeposit.phtml*
// @match http://www.neopets.com/market.phtml?*type=your*
// @match http://www.neopets.com/market_your.phtml*
// @match http://www.neopets.com/space/coincidence.phtml
// @match http://www.neopets.com/island/*training.phtml?*type=status*
// @match http://www.neopets.com/pirates/academy.phtml?type=status
// @match http://www.neopets.com/inventory.phtml*
// @match http://www.neopets.com/halloween/esophagor*.phtml
// @match http://www.neopets.com/faerieland/employ/employment.phtml?*job_id=*
// @match http://www.neopets.com/closet.phtml*
// @match http://www.neopets.com/auctions.phtml?*auction_id=*
// @match http://www.neopets.com/winter/snowfaerie*.phtml
// @match http://www.neopets.com/quests.phtml
// @match http://www.neopets.com/games/kadoatery/index.phtml
// @match http://www.neopets.com/games/kadoatery/*
// @match http://www.neopets.com/process_cash_object.phtml
// @match http://www.neopets.com/hospital.phtml
// @match http://www.neopets.com/objects.phtml?type=shop*
// @match http://www.neopets.com/market.phtml?type=wizard&string=*
// edited by |2eap to include extra link for Shopneopia.com and other modifications to design/ functionality. All credits diceroll123 for the script.
// ==/UserScript==
imgsize = 17; // for the search images
$("<style type='text/css'>.searchimg { cursor: pointer; height: " + imgsize + "px !important; width: " + imgsize + "px !important;</style>").appendTo("head");
jQuery.fn.exists = function(){return this.length>0;}
var linkmap = { // for urls and images for each search type
ssw: {
"img": "http://images.neopets.com/shopkeepers/super_shopwizard.gif"
},
sw: {
"url": "http://www.neopets.com/market.phtml?type=wizard&string=%s",
"img": "http://images.neopets.com/shopkeepers/shopwizard.gif"
},
tp: {
"url": "http://www.neopets.com/island/tradingpost.phtml?type=browse&criteria=item_exact&search_string=%s",
"img": "http://images.neopets.com/new_shopkeepers/29.gif"
},
au: {
"url": "http://www.neopets.com/genie.phtml?type=process_genie&criteria=exact&auctiongenie=%s",
"img": "http://images.neopets.com/shopkeepers/auctiongenie.gif"
},
sn: {
"url": "http://www.shopneopia.com/apps/search-results#stq=%s",
"img": "http://i61.tinypic.com/fejpg5.png"
},
sdb: {
"url": "http://www.neopets.com/safetydeposit.phtml?obj_name=%s&category=0",
"img": "http://images.neopets.com/images/emptydepositbox.gif"
},
closet: {
"url": "http://www.neopets.com/closet.phtml?obj_name=%s",
"img": "http://images.neopets.com/items/ffu_illusen_armoire.gif"
},
jni: {
"url": "http://items.jellyneo.net/index.php?go=show_items&name=%s&name_type=exact&desc=&cat=0&specialcat=0&status=0&rarity=0&sortby=name&numitems=10",
"img": "http://images.neopets.com/items/toy_plushie_negg_fish.gif"
},
dti: { // had to base64 the image that I have saved since the item now has the hanger on it -.-
"img": "data:image/gif;base64,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"
}
};
// user has premium toolbar
premium = $("#sswmenu .imgmenu").exists();
function getQueryParams(qs) {
qs = qs.split("+").join(" ");
var params = {}, tokens, re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
function sswlink(item) {
// the only different one because it doesn't use a URL
return "<img item='"+ item + "' class='sswstuff searchimg' src='" + linkmap.ssw.img + "'>";
}
function sswopen(item) {
if($(".sswdrop").hasClass("panel_hidden")) {
$("#sswmenu .imgmenu").click();
}
if($("#ssw-tabs-1").hasClass("ui-tabs-hide")) {
$('#ssw-tabs').tabs('select', 0);
}
$("#ssw-criteria").val("exact");
$("#searchstr").val(item);
}
$(".sswstuff").live("click", function() {
sswopen($(this).attr("item"));
});
function combiner(item, url, image) {
url = url.replace("%s", item); // javascript needs sprintf.
return "<a target='_blank' href='" + url + "'><img src='" + image + "' class='searchimg'></a>";
}
// overall linker thing
function makelinks(item, extras) {
// extras is an object that can only have boolean of 'cash' and 'wearable' (for now) | and a string/int number 'itemid' (only needed for wearable being true)
links = "<br>";
item = $.trim(item);
if (typeof extras === "undefined") {
extras = {cash: false, wearable: false, tradeable: true}
}
if (typeof extras.tradeable === "undefined") {
extras.tradeable = true;
}
item = item.replace(/&/g, "%26");
if(extras.cash == false && extras.tradeable == true) {
if(document.URL.indexOf("quests.phtml") == -1) { // doesn't show either SW if you're on a quest
// SSW
if(premium) {
links += sswlink(item);
}
// Regular SW
links += combiner(item, linkmap.sw.url, linkmap.sw.img);
}
// TP
links += combiner(item, linkmap.tp.url, linkmap.tp.img);
// Auctions
links += combiner(item, linkmap.au.url, linkmap.au.img);
}
// SDB
if(document.URL.indexOf("safetydeposit") == -1) {
links += combiner(item, linkmap.sdb.url, linkmap.sdb.img);
}
// Closet
if(extras.wearable) {
if(document.URL.indexOf("closet.phtml") == -1) {
links += combiner(item, linkmap.closet.url, linkmap.closet.img);
}
}
// JN items
links += combiner(item, linkmap.jni.url, linkmap.jni.img);
// SN items
links += combiner(item, linkmap.sn.url, linkmap.sn.img);
// DTI
if(extras.wearable) {
if(extras.itemid != -1 && typeof extras.itemid != "undefined") {
link = "http://impress.openneo.net/items/" + extras.itemid;
} else {
link = "http://impress.openneo.net/items?utf8=%E2%9C%93&q=%s&commit=search";
}
links += combiner(item, link, linkmap.dti.img);
}
return links;
}
jQuery.fn.justtext = function() {
return $(this).clone().children().remove().end().text();
};
//////////////////////////////////////////////////////////////////////////////////////////
/*
Adds the search icons under things in:
Inventory
SDB
Closet
Auction Bidding Page
Your Shop Price Page
Coincidence
MI Training School
KI Training School
Snow Faerie
Esophagor
Edna Quest
Kitchen Quest
Illusen/Jhudora
Employment Agency
Faerie Quest Page
*/
br = "<br>";
hr = "<hr>";
// Main Shops
if(document.URL.indexOf("objects.phtml?type=shop") != -1) {
$("img[src*='/items/']").parent().parent().find("b").each(function(k,v) {
$(v).after(makelinks($(v).text()) + br);
});
}
// Hospital
if(document.URL.indexOf("/hospital.phtml") != -1) {
$("img[src*='/items/']").parent().prev().find("b").each(function(k,v) {
$(v).after(makelinks($(v).text()) + br).before(br);
$(v).parent().width(150);
});
}
// Redeeming Cash
if(document.URL.indexOf("process_cash_object") != -1) {
extras = {cash: true, wearable: true};
$("img[src*='/items/']").parent().find("b").each(function(k,v) {
$(v).before(br).after(makelinks($(v).text(), extras) + br);
});
}
// Auctions
if(document.URL.indexOf("auction_id") != -1) {
nameb = $("b:contains('owned by')");
fixname = nameb.html();
fixname = fixname.substr(0, fixname.indexOf(" (own")); // remove "owned by..."
nameb.parent().find("img").after(makelinks(fixname));
}
// Inventory
if(document.URL.indexOf("inventory") != -1) {
$("img[src*='/items/']").each(function(k,v) {
$nametd = $(v).parent().parent();
extras = {cash: $(v).hasClass("otherItem"), wearable: $nametd.hasClass("wearable"), itemid: -1};
if ($nametd.find("hr").exists()) {
extras.tradeable = !$nametd.find("span:contains('(no trade)')").exists();
$nametd.find("hr").before(makelinks($nametd.justtext(), extras));
} else {
$nametd.append(makelinks($nametd.justtext(), extras));
}
});
}
// SDB & Closet
// only downside is not knowing if something is NC if it's in the closet. Oh well, no way to know.
if(document.URL.indexOf("safetydeposit") != -1 || document.URL.indexOf("closet") != -1) {
$("img[src*='/items/']").each(function(k,v) {
id = $(v).parent().parent().find("td").eq(5).find("input").attr("name").match(/\d+/g)[0];
iswearable = $(v).parent().parent().find("td").eq(1).text().indexOf("(wearable)") != -1;
if(document.URL.indexOf("closet") != -1) { // because it'll always be wearable if it's in the closet...
iswearable = true;
}
category = $(v).parent().parent().find("td").eq(3);
extras = {cash: (category.text().trim() == "Neocash"), wearable: iswearable, itemid: id};
nametd = $(v).parent().parent().find("td").eq(1);
nametd.find("b").eq(0).after(makelinks(nametd.find("b").eq(0).justtext(), extras));
});
}
// Shop
if(document.URL.indexOf("type=your") != -1 || document.URL.indexOf("market_your") != -1) {
$("img[src*='/items/']").each(function(k,v) {
nametd = $(v).parent().parent().find("td").eq(0);
itemname = nametd.text();
itemname = itemname.replace(nametd.find(".medText").text(), "");
nametd.find("b").eq(0).after(makelinks(itemname));
});
}
// Coincidence
if(document.URL.indexOf("coincidence") != -1) {
$("img[src*='/items/']").each(function(k,v) {
nametd = $(v).parent();
nametd.find("b").eq(0).after(makelinks(nametd.justtext()));
});
}
// MI Training
if(document.URL.indexOf("/island/training.phtml?type=status") != -1) {
$("img[src*='/items/']").each(function(k,v) {
$(v).after(makelinks($(v).prev().text()) + "<hr>");
});
}
// Secret Training
if(document.URL.indexOf("/island/fight_training.phtml?type=status") != -1) {
$("img[src*='/items/']").each(function(k,v) {
$(v).after(makelinks($(v).prev().text()) + "<hr>");
});
}
// KI Training
if(document.URL.indexOf("/pirates/academy.phtml?type=status") != -1) {
$("img[src*='/items/']").each(function(k,v) {
nametd = $(v).parent();
itemname = nametd.parent().find("td > b").eq(0).text();
nametd.parent().find("td > b").eq(0).after(makelinks(itemname));
});
}
// Snow Faerie
// essentially same as kitchen. woo, lazy!
if(document.URL.indexOf("snowfaerie") != -1) {
addhr = (document.URL.indexOf("snowfaerie2") == -1);
hr = addhr ? "<hr>" : "";
$("img[src*='/items/']").parent().find("b").each(function(k,v) {
$(v).after(makelinks($(v).text()) + hr);
});
}
// Esophagor
if(document.URL.indexOf("esophagor") != -1) {
$("img[src*='/items/']").each(function(k,v) {
itemname = $(v).parent().find("b");
itemname.after(makelinks(itemname.text()));
});
}
// Edna
if(document.URL.indexOf("witchtower") != -1) {
$("img[src*='/items/']").each(function(k,v) {
itemname = $(v).parent().find("b");
itemname.after(makelinks(itemname.text()));
});
}
// Kitchen
if(document.URL.indexOf("kitchen") != -1) {
addhr = (document.URL.indexOf("kitchen2") == -1);
hr = addhr ? "<hr>" : "";
$("img[src*='/items/']").parent().find("b").each(function(k,v) {
$(v).after(makelinks($(v).text()) + hr);
});
}
// illusen & jhudora
if($("img[src*='ef_2.gif']").exists() || $("img[src*='darkfaeriequest2.gif']").exists()) {
itemname = $("center:contains('Where is my') > b").text();
$("center:contains('Where is my')").parent().find("img[src*='/items/']").after(makelinks(itemname));
}
// employment agency
if(document.URL.indexOf("employment") != -1) {
$("b:contains('Find')").eq(0).after(makelinks($("b:contains('Find')").eq(0).justtext()));
}
// Faerie Quests
if(document.URL.indexOf("quests") != -1) {
$("img[src*='/items/']").each(function(k,v) {
itemname = $(v).parent().find("b");
itemname.after(makelinks(itemname.text()));
});
}
// Kadoatery
if(document.URL.indexOf("kadoatery") != -1) {
$("td:contains('You should give it'):not(:contains('Thanks,'))").each(function(k,v) {
itemname = $(v).find("strong").last();
itemname.after(makelinks(itemname.text()));
});
}
// Shop Wiz Auto-Exact
if(document.URL.indexOf("type=wizard&string=") != -1) {
$("[name='shopwizard']").val(getQueryParams(document.location.search).string);
$("[name='criteria']").val("exact");
}