neopets 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/autotest/discover.rb +1 -0
- data/lib/neopets.rb +5 -0
- data/lib/neopets/pet.rb +48 -0
- data/lib/neopets/user.rb +62 -0
- data/lib/neopets/version.rb +3 -0
- data/neopets.gemspec +25 -0
- data/spec/_samples/userlookup/account_disabled.html +589 -0
- data/spec/_samples/userlookup/dirtside.html +962 -0
- data/spec/_samples/userlookup/not_found.html +731 -0
- data/spec/neopets/pet_spec.rb +43 -0
- data/spec/neopets/user_spec.rb +78 -0
- data/spec/spec_helper.rb +4 -0
- metadata +93 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1 @@
|
|
1
|
+
Autotest.add_discovery { "rspec2" }
|
data/lib/neopets.rb
ADDED
data/lib/neopets/pet.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
module Neopets
|
2
|
+
class Pet
|
3
|
+
attr_accessor :gender, :name
|
4
|
+
attr_reader :image_url
|
5
|
+
|
6
|
+
def initialize(name, options={})
|
7
|
+
@name = name
|
8
|
+
options.each { |key, value| self.send("#{key}=", value) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def cp
|
12
|
+
parse_image_url unless @cp
|
13
|
+
@cp
|
14
|
+
end
|
15
|
+
|
16
|
+
def female?
|
17
|
+
@gender == :female
|
18
|
+
end
|
19
|
+
|
20
|
+
def image_url=(url)
|
21
|
+
@image_url = url
|
22
|
+
|
23
|
+
# Expire the memoized cp and mood, since with this new URL they're no
|
24
|
+
# longer true. By this strategy, we don't run the regex parse unless
|
25
|
+
# we need to, but still always keep the cp/mood values up-to-date.
|
26
|
+
@cp = nil
|
27
|
+
@mood = nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def male?
|
31
|
+
@gender == :male
|
32
|
+
end
|
33
|
+
|
34
|
+
def mood
|
35
|
+
parse_image_url unless @mood
|
36
|
+
@mood
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
|
41
|
+
IMAGE_URL_PATTERN = %r{http://pets\.neopets\.com/cp/([a-z0-9]+)/([0-9])/[0-9]\.png}
|
42
|
+
MOODS = {'1' => :happy, '2' => :sad, '4' => :sick}
|
43
|
+
def parse_image_url
|
44
|
+
@cp, mood_code = @image_url.match(IMAGE_URL_PATTERN).captures
|
45
|
+
@mood = MOODS[mood_code]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/neopets/user.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'neopets/pet'
|
4
|
+
|
5
|
+
module Neopets
|
6
|
+
class User
|
7
|
+
class Error < RuntimeError; end
|
8
|
+
class AccountDisabledError < Error; end
|
9
|
+
class ConnectionError < Error; end
|
10
|
+
class NotFoundError < Error; end
|
11
|
+
|
12
|
+
attr_reader :username
|
13
|
+
|
14
|
+
def initialize(username)
|
15
|
+
@username = username
|
16
|
+
end
|
17
|
+
|
18
|
+
def pets
|
19
|
+
load_userlookup unless @pets
|
20
|
+
@pets
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def load_userlookup
|
26
|
+
doc = open_doc(userlookup_url)
|
27
|
+
user_node = doc.at('#userneopets')
|
28
|
+
unless user_node
|
29
|
+
if doc.css('#content td.content b').last.content == 'This account has been disabled.'
|
30
|
+
raise AccountDisabledError, "User #{@username.inspect} has been frozen"
|
31
|
+
else
|
32
|
+
raise NotFoundError, "User #{@username.inspect} not found on Neopets.com"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
pet_nodes = user_node.css('td.contentModuleContent td')
|
37
|
+
@pets = pet_nodes.map { |n| pet_from_node(n) }
|
38
|
+
end
|
39
|
+
|
40
|
+
def open_doc(url)
|
41
|
+
begin
|
42
|
+
source = open(url)
|
43
|
+
rescue Exception => e
|
44
|
+
raise ConnectionError, "request to #{url.inspect} raised #{e.class}: #{e.message}"
|
45
|
+
end
|
46
|
+
Nokogiri::HTML(source)
|
47
|
+
end
|
48
|
+
|
49
|
+
def pet_from_node(node)
|
50
|
+
bolds = node.css('b')
|
51
|
+
|
52
|
+
Pet.new(bolds[0].content,
|
53
|
+
:gender => (bolds[1].content == 'Male' ? :male : :female),
|
54
|
+
:image_url => node.at('img')['src']
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
def userlookup_url
|
59
|
+
"http://www.neopets.com/userlookup.phtml?user=#{username}"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/neopets.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "neopets/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "neopets"
|
7
|
+
s.version = Neopets::VERSION
|
8
|
+
s.authors = ["Matchu"]
|
9
|
+
s.email = ["matchu1993@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{access public information on Neopets.com}
|
12
|
+
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
|
18
|
+
# specify any dependencies here; for example:
|
19
|
+
# s.add_development_dependency "rspec"
|
20
|
+
# s.add_runtime_dependency "rest-client"
|
21
|
+
|
22
|
+
s.add_runtime_dependency "nokogiri", "~> 1.5.2"
|
23
|
+
s.add_development_dependency "rspec", "~> 2.10.0"
|
24
|
+
s.add_development_dependency "webmock", "~> 1.8.7"
|
25
|
+
end
|
@@ -0,0 +1,589 @@
|
|
1
|
+
|
2
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
3
|
+
<!--
|
4
|
+
host - neopets-web-72.811.mtvi.com
|
5
|
+
//-->
|
6
|
+
<html>
|
7
|
+
|
8
|
+
<head>
|
9
|
+
<meta name="description" content="Neopets.Com - Virtual Pet Community! Join up for free games, shops, auctions, chat and more!">
|
10
|
+
<meta name="keywords" content="pets, pet, games, game, virtual, chat, fun, prizes, play, virtual pet, kids">
|
11
|
+
<meta name="robots" content="noodp, index, follow">
|
12
|
+
<meta http-equiv="X-UA-Compatible" content="IE=8">
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
<link rel="stylesheet" type="text/css" href="http://images.neopets.com/css/default.css?v=3">
|
17
|
+
<link rel="stylesheet" type="text/css" href="http://images.neopets.com/css/ad.css?v=3">
|
18
|
+
|
19
|
+
<link rel="stylesheet" type="text/css" href="http://images.neopets.com/css/themes/027_tkg_69097.css?v=4">
|
20
|
+
|
21
|
+
<title>Neopets - User Lookup</title>
|
22
|
+
|
23
|
+
<script id="js-framework" type="text/javascript" language="JavaScript" src="http://images.neopets.com/js/common.js?v=3"></script>
|
24
|
+
<script id="js-browserdetect" type="text/javascript" language="JavaScript" src="http://images.neopets.com/js/getbrowser.js?v=1"></script>
|
25
|
+
<script type="text/javascript" src="http://images.neopets.com/n.js"></script> <script type="text/javascript">
|
26
|
+
<!--
|
27
|
+
var nl = "en";
|
28
|
+
var nh = 8;
|
29
|
+
var nm = 57;
|
30
|
+
var ns = 28;
|
31
|
+
var na = "am";
|
32
|
+
var ncl = new Array(0, 53, 104, 137, 169, 198, 231, 265, 299, 335, 368, 397, 427);
|
33
|
+
|
34
|
+
window.setInterval('nc()', 1000);
|
35
|
+
|
36
|
+
function sh(i) {
|
37
|
+
ol.style.clip = "rect("+ncl[i-1]+" 128 "+ncl[i]+" 0)";
|
38
|
+
ol.style.visibility = "visible";
|
39
|
+
}
|
40
|
+
|
41
|
+
function mo() {
|
42
|
+
ol.style.visibility = "hidden";
|
43
|
+
}
|
44
|
+
|
45
|
+
function search_handle(searchForm) {
|
46
|
+
searchForm.action = "/search.phtml";
|
47
|
+
searchForm.target = "";
|
48
|
+
searchForm.method = "post";
|
49
|
+
searchForm.s.value = searchForm.q.value;
|
50
|
+
searchForm.submit();
|
51
|
+
};
|
52
|
+
//-->
|
53
|
+
</script>
|
54
|
+
<script type="text/javascript">
|
55
|
+
var _gaq = _gaq || [];
|
56
|
+
_gaq.push(['_setAccount', 'UA-1152868-1']);
|
57
|
+
_gaq.push(['_setCustomVar', 1, 'age-gender', 'male-18', 2]);
|
58
|
+
_gaq.push(['_trackPageview', '/userlookup.phtml']);
|
59
|
+
(function() {
|
60
|
+
var ga = document.createElement('script');
|
61
|
+
ga.type = 'text/javascript'; ga.async = true;
|
62
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
63
|
+
var s = document.getElementsByTagName('script')[0];
|
64
|
+
s.parentNode.insertBefore(ga, s);
|
65
|
+
})();
|
66
|
+
|
67
|
+
</script>
|
68
|
+
<script type="text/javascript" src="http://images.neopets.com/js/kids/coda.js"></script>
|
69
|
+
<script type="text/javascript" src="http://images.neopets.com/js/kids/ads.js"></script>
|
70
|
+
<script type="text/javascript">
|
71
|
+
function omnitureTrackPage(advertiser, id) { return sendReportingCall(id, advertiser); }
|
72
|
+
function omnitureTrackClick(advertiser, id) { return sendADLinkCall(advertiser + " - " + id); }
|
73
|
+
</script>
|
74
|
+
<script type="text/javascript">
|
75
|
+
KIDS.ads.config = {"url":"default","text":"default","gameLoaderCap":"0","zone":"","ads":[{"size":"728x90","elementID":"ad-728x90IF","keyValues":"pos=atf;","dartPercent":"0.0","refreshable":"true","refreshRate":"0.5","yahooAds":"false"},{"size":"300x250","elementID":"ad-300x250IF-atf","keyValues":"pos=atf;","dartPercent":"0.0","refreshable":"true","refreshRate":"0.5","yahooAds":"false"},{"size":"300x250","elementID":"ad-300x250IF-btf","keyValues":"pos=btf;","dartPercent":"1.0","refreshable":"false","refreshRate":"1.0","yahooAds":"false"},{"size":"160x600","elementID":"ad-160x600IF","keyValues":"pos=atf;","dartPercent":"0.0","refreshable":"true","refreshRate":"0.5","yahooAds":"false"}],"demo":{"gender":"M","age":18}};
|
76
|
+
</script>
|
77
|
+
</head>
|
78
|
+
<body>
|
79
|
+
<div id="main">
|
80
|
+
|
81
|
+
<div id="ban" ></div>
|
82
|
+
|
83
|
+
<div id="header">
|
84
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
85
|
+
<tr>
|
86
|
+
<td width="156" rowspan="3"><a href="/index.phtml"><img src="http://images.neopets.com/transparent_spacer.gif" width="156" height="77" alt="" border="0"></a></td>
|
87
|
+
<td class="eventIcon sf" xalign="left"> </td>
|
88
|
+
<td class="user medText">
|
89
|
+
Welcome, <a href="/userlookup.phtml?user=matchu1993">matchu1993</a> <span style="font-weight: normal;">|</span> NP: <a id='npanchor' href="/objects.phtml?type=inventory">603,961</a> <span style="font-weight: normal;">|</span> <a href="/logout.phtml"><b>Logout</b></a> </td>
|
90
|
+
</tr>
|
91
|
+
<tr>
|
92
|
+
<td colspan="2" id="navigation">
|
93
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
94
|
+
<tr>
|
95
|
+
<td width="725" align="center">
|
96
|
+
<script type="text/javascript">
|
97
|
+
// Yay for Suckerfish!
|
98
|
+
startList = function() {
|
99
|
+
if (document.all&&document.getElementById) {
|
100
|
+
navRoot = document.getElementById("template_nav");
|
101
|
+
for (i=0; i<navRoot.childNodes.length; i++) {
|
102
|
+
node = navRoot.childNodes[i];
|
103
|
+
if (node.nodeName=="LI") {
|
104
|
+
node.onmouseover=function() {
|
105
|
+
this.className+=" over";
|
106
|
+
}
|
107
|
+
node.onmouseout=function() {
|
108
|
+
this.className=this.className.replace(" over", "");
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
window.onload=startList;
|
115
|
+
</script>
|
116
|
+
|
117
|
+
<ul id="template_nav">
|
118
|
+
<li class="nav_image"><a href="/myaccount.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/myaccount.png" alt="" border="0" width="119" height="38"></a><ul class="dropdown">
|
119
|
+
<li><a href="/myaccount.phtml">» Control Panel</a></li>
|
120
|
+
<li><a href="/preferences.phtml">» Preferences</a></li>
|
121
|
+
<li><a href="/userinfo.phtml">» Edit Profile</a></li>
|
122
|
+
<li><a href="/neomessages.phtml">» Neomail</a></li>
|
123
|
+
<li><a href="/neofriends.phtml">» Neofriends</a></li>
|
124
|
+
<li><a href="/addpet.phtml">» Create a Neopet</a></li>
|
125
|
+
<li><a href="/space/warehouse/prizecodes.phtml">» Redeem Code</a></li>
|
126
|
+
</ul>
|
127
|
+
|
128
|
+
<li class="nav_image"><a href="/customise/"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/customise.png" alt="" border="0" width="89" height="38"></a><ul class="dropdown">
|
129
|
+
<li><a href="/customise/">» Customise Neopet</a></li>
|
130
|
+
<li><a href="/objects.phtml?type=inventory">» Inventory</a></li>
|
131
|
+
<li><a href="/closet.phtml">» Closet</a></li>
|
132
|
+
<li><a href="/neohome/"> » Neohomes</a></li>
|
133
|
+
<li><a href="/neohome/shed">» Storage Shed</a></li>
|
134
|
+
<li><a href="/addpet.phtml">» Create a Neopet</a></li>
|
135
|
+
</ul>
|
136
|
+
</li>
|
137
|
+
|
138
|
+
<li class="nav_image"><a href="/games/"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/games.png" alt="" border="0" width="66" height="38"></a><ul class="dropdown">
|
139
|
+
<li><a href="/games/">» Games Room</a></li>
|
140
|
+
<li><a href="/games/category.phtml?sortby=pop">» Popular</a></li>
|
141
|
+
<li><a href="/games/hiscores.phtml">» High Scores</a></li>
|
142
|
+
<li><a href="/games/favourites.phtml">» Favourites</a></li>
|
143
|
+
<li><a href="/keyquest/">» Key Quest</a></li>
|
144
|
+
<li><a href="/habitarium/">» Habitarium</a></li>
|
145
|
+
</ul>
|
146
|
+
</li>
|
147
|
+
|
148
|
+
<li class="nav_image"><a href="/explore.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/explore.png" alt="" border="0" width="75" height="38"></a><ul class="dropdown">
|
149
|
+
<li><a href="/explore.phtml">» Map of Neopia</a></li>
|
150
|
+
<li><a href="/help/tutorial/index.phtml">» Tutorial</a></li>
|
151
|
+
<li><a href="/weather.phtml">» Weather</a></li>
|
152
|
+
<li><a href="/pronounce.phtml">» Pronunciation</a></li>
|
153
|
+
<li><a href="/neopedia.phtml">» Neopedia</a></li>
|
154
|
+
</ul>
|
155
|
+
</li>
|
156
|
+
|
157
|
+
<li class="nav_image"><a href="/nf.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/news.png" alt="" border="0" width="58" height="38"></a><ul class="dropdown">
|
158
|
+
<li><a href="/nf.phtml">» New Features</a></li>
|
159
|
+
<li><a href="/comingsoon.phtml">» Coming Soon</a></li>
|
160
|
+
<li><a href="/ntimes/index.phtml">» Neopian Times</a></li><li><a href="/stuff.phtml">» Merch News</a></li> </ul>
|
161
|
+
</li>
|
162
|
+
|
163
|
+
<li class="nav_image"><a href="/petcentral.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/petcentral.png" alt="" border="0" width="95" height="38"></a><ul class="dropdown">
|
164
|
+
<li><a href="/petcentral.phtml">» Main</a></li>
|
165
|
+
<li><a href="/calendar.phtml">» Calendar</a></li>
|
166
|
+
<li><a href="/worldevents.phtml">» World Events</a></li>
|
167
|
+
<li><a href="/pound/index.phtml">» Neopian Pound</a></li>
|
168
|
+
</ul>
|
169
|
+
</li>
|
170
|
+
|
171
|
+
<li class="nav_image"><a href="/neoboards/index.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/boards.png" alt="" border="0" width="68" height="38"></a><ul class="dropdown">
|
172
|
+
<li><a href="/neoboards/index.phtml">» Neoboard Index</a></li>
|
173
|
+
<li><a href="/neoboards/preferences.phtml">» Preferences</a></li>
|
174
|
+
</ul>
|
175
|
+
</li>
|
176
|
+
|
177
|
+
<li class="nav_image"><a href="/objects.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/shops.png" alt="" border="0" width="62" height="38"></a><ul class="dropdown">
|
178
|
+
<li><a href="/objects.phtml">» Neopia Central</a></li>
|
179
|
+
<li><a href="/market.phtml?type=wizard">» Shop Wizard</a></li>
|
180
|
+
<li><a href="/market.phtml?type=your">» Your Shop</a></li>
|
181
|
+
<li><a href="/auctions.phtml">» Auctions</a></li>
|
182
|
+
<li><a href="/island/tradingpost.phtml">» Trading Post</a></li>
|
183
|
+
<li><a href="/bank.phtml">» Bank</a></li>
|
184
|
+
<li><a href="/shopping/index.phtml">» Merchandise</a></li>
|
185
|
+
</ul>
|
186
|
+
</li>
|
187
|
+
|
188
|
+
<style type="text/css">
|
189
|
+
li.nav_image {
|
190
|
+
margin-left: 0px;
|
191
|
+
}
|
192
|
+
</style>
|
193
|
+
<li class="nav_image"><a href="/mall/index.phtml"><img src="http://images.neopets.com/themes/027_tkg_69097/navigation/ncmall.png" alt="" border="0" width="93" height="38"></a><ul class="dropdown">
|
194
|
+
<li><a href="/mall/index.phtml">» Shop</a></li>
|
195
|
+
<li><a href="/mall/index.phtml?page=buy_nc">» Get Neocash</a></li>
|
196
|
+
<li><a href="/mall/index.phtml?type=11">» Neocash Cards</a></li>
|
197
|
+
<li><a href="/mall/index.phtml?page=redeem_nc ">» Redeem Neocash Card</a></li>
|
198
|
+
</ul>
|
199
|
+
</li>
|
200
|
+
</ul>
|
201
|
+
</td>
|
202
|
+
<td id="nst">8:57:28 am NST</td>
|
203
|
+
</tr>
|
204
|
+
</table>
|
205
|
+
</td>
|
206
|
+
</tr>
|
207
|
+
<tr>
|
208
|
+
<td colspan="3" height="3"><img src="http://images.neopets.com/transparent_spacer.gif" width="1" height="3" alt="" border="0"></td>
|
209
|
+
</tr>
|
210
|
+
</table>
|
211
|
+
</div>
|
212
|
+
|
213
|
+
<div id="content">
|
214
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
215
|
+
<tr>
|
216
|
+
<td class="content">
|
217
|
+
|
218
|
+
<div align="center" style="font-size: 10pt;">
|
219
|
+
<b>User Lookup: poop</b> <a href="/s/index.phtml?track_cat_id=50&item_id=492"><img src="http://images.neopets.com/help/question_mark.png" width="13" height="13" alt="" border="0" align="absbottom"></a>
|
220
|
+
</div><br /><b>This account has been disabled.</b>
|
221
|
+
<br clear="all">
|
222
|
+
|
223
|
+
</td>
|
224
|
+
</tr>
|
225
|
+
</table>
|
226
|
+
</div>
|
227
|
+
<div id="footer">
|
228
|
+
<img src="http://images.neopets.com/themes/027_tkg_69097/rotations/7.png" width="200" height="170" alt="" border="0" class="footerNifty">
|
229
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="footer">
|
230
|
+
<tr>
|
231
|
+
<td width="175" align="left"><a href="/index.phtml"><img src="http://images.neopets.com/transparent_spacer.gif" width="156" height="46" alt="Neopets.com" border="0"></a></td>
|
232
|
+
<td align="left"><br>
|
233
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
234
|
+
<tr>
|
235
|
+
<!-- Search -->
|
236
|
+
<td class="sf" valign="middle">
|
237
|
+
<form onSubmit="javascript: search_handle(this);">
|
238
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
239
|
+
<tr>
|
240
|
+
<td class="footerForm sf" valign="middle"><b>Search Neopets:</b> </td>
|
241
|
+
<td valign="middle"><input class="sf" type="text" name="q" size="25" maxlength="255" value="Enter search text..." style="color: #a5a5a5; padding: 2px;" onFocus="this.style.color='#000000'; if( this.value=='Enter search text...' ) { this.value=''; }" onBlur="if( this.value=='' ) { this.style.color='#A5A5A5'; this.value='Enter search text...'; }"> </td>
|
242
|
+
<td valign="middle"><input type="submit" value="Go!" class="sf">
|
243
|
+
<input type="hidden" name="client" value="pub-9208792519293771">
|
244
|
+
<input type="hidden" name="forid" value="1">
|
245
|
+
<input type="hidden" name="ie" value="ISO-8859-1">
|
246
|
+
<input type="hidden" name="oe" value="ISO-8859-1">
|
247
|
+
<input type="hidden" name="safe" value="active">
|
248
|
+
<input type="hidden" name="domains" value="www.neopets.com">
|
249
|
+
<input type="hidden" name="cof" value="GALT:#FFFFFF;GL:1;DIV:#000066;VLC:FFFFFF;AH:center;BGC:FFFFFF;LBGC:000066;ALC:FFFFFF;LC:FFFFFF;T:000000;GFNT:000066;GIMP:000077;FORID:1">
|
250
|
+
<input type="hidden" name="hl" value="en">
|
251
|
+
<input type="hidden" name="s">
|
252
|
+
</td>
|
253
|
+
</tr>
|
254
|
+
</table>
|
255
|
+
</form>
|
256
|
+
</td>
|
257
|
+
<td width="15"> </td>
|
258
|
+
<!-- Language -->
|
259
|
+
<td class="sf" valign="top">
|
260
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
261
|
+
<tr>
|
262
|
+
<td class="footerForm sf" valign="middle"><form method="post"><b>Select Language:</b> </td>
|
263
|
+
<td valign="top">
|
264
|
+
<select name="lang" class="sf"><option value="en" selected>English</option><option value="nl">Nederlands</option><option value="pt">Português</option><option value="de">Deutsch</option><option value="fr">Français</option><option value="it">Italiano</option><option value="es">Español</option><option value="ch">简体中文</option><option value="zh">繁體中文</option><option value="ja">日本語</option><option value="ko">한국어</option></select> </td>
|
265
|
+
<td valign="top"><input type="submit" value="Go!" class="sf"></form></td>
|
266
|
+
</tr>
|
267
|
+
</table>
|
268
|
+
</td>
|
269
|
+
</tr>
|
270
|
+
</table>
|
271
|
+
</td>
|
272
|
+
</tr>
|
273
|
+
<tr>
|
274
|
+
<td colspan="2" class="copyright">
|
275
|
+
|
276
|
+
<a href='/privacy.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/privacypolicy.png' width='81' height='18' border='0' alt='privacypolicy'></a>
|
277
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
278
|
+
<a href='/safetytips.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/safetytips.png' width='61' height='18' border='0' alt='safetytips'></a>
|
279
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
280
|
+
<a href='/contact.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/contactus.png' width='60' height='18' border='0' alt='contactus'></a>
|
281
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
282
|
+
<a href='/aboutus.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/aboutus.png' width='50' height='18' border='0' alt='aboutus'></a>
|
283
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
284
|
+
<a href='/refer/index.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/referral.png' width='98' height='18' border='0' alt='referral'></a>
|
285
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
286
|
+
<a href='/help.phtml'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/help.png' width='25' height='18' border='0' alt='help'></a>
|
287
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/navigation/divider.png' width='4' height='16' border='0'>
|
288
|
+
<a href='http://srp.mtvn.com/sitefaq.html' target='_blank'><img src='http://images.neopets.com/themes/027_tkg_69097/navigation/ad-choices.png' width='75' height='18' border='0' alt='ad-choices'></a>
|
289
|
+
<script type="text/javascript">
|
290
|
+
function setVisible(obj) {
|
291
|
+
obj = document.getElementById(obj);
|
292
|
+
obj.style.visibility = (obj.style.visibility == 'visible') ? 'hidden' : 'visible';
|
293
|
+
obj.style.zIndex = '9999';
|
294
|
+
document.getElementById('dimBackground').style.visibility = (document.getElementById('dimBackground').style.visibility == 'visible') ? 'hidden' : 'visible';
|
295
|
+
if(document.getElementById('fb-decoy') != null) {
|
296
|
+
document.getElementById('fb-decoy').style.zIndex = (document.getElementById('fb-decoy').style.zIndex == '9999') ? '-1' : '9999';
|
297
|
+
}
|
298
|
+
|
299
|
+
if(document.getElementById('kq-body-content') != null) {
|
300
|
+
document.getElementById('kq-body-content').style.visibility = (document.getElementById('kq-body-content').style.visibility == 'hidden') ? 'visible' : 'hidden';
|
301
|
+
}
|
302
|
+
|
303
|
+
if(document.getElementById('navigation') != null) {
|
304
|
+
document.getElementById('navigation').style.visibility = (document.getElementById('navigation').style.visibility == 'hidden') ? 'visible' : 'hidden';
|
305
|
+
}
|
306
|
+
}
|
307
|
+
if(document.getElementById('fb-decoy') != null) {
|
308
|
+
document.getElementById('fb-decoy').style.zIndex = '9999';
|
309
|
+
}
|
310
|
+
</script>
|
311
|
+
<style type="text/css">
|
312
|
+
.bumper {
|
313
|
+
position: fixed;
|
314
|
+
top:50%;
|
315
|
+
left:50%;
|
316
|
+
right:50%;
|
317
|
+
margin-top:-10%;
|
318
|
+
margin-left:-20%;
|
319
|
+
visibility: hidden;
|
320
|
+
background: url('http://images.neopets.com/help/bumper/bg.png');
|
321
|
+
width: 580px;
|
322
|
+
height: 300px;
|
323
|
+
padding: 20px;
|
324
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
325
|
+
font-size: 9pt;
|
326
|
+
background-repeat: no-repeat;
|
327
|
+
z-index:9200;
|
328
|
+
}
|
329
|
+
|
330
|
+
.bumper p {
|
331
|
+
display:block;
|
332
|
+
position:absolute;
|
333
|
+
left:20px;
|
334
|
+
top:50px;
|
335
|
+
width:385px;
|
336
|
+
font-size:12px;
|
337
|
+
font-family:font-family: Verdana, Arial, Helvetica, sans-serif;
|
338
|
+
margin:0px;
|
339
|
+
padding:0px;
|
340
|
+
}
|
341
|
+
|
342
|
+
.bumper div, .bumper p {
|
343
|
+
color: black;
|
344
|
+
}
|
345
|
+
|
346
|
+
#open {
|
347
|
+
position:absolute;
|
348
|
+
top:118px;
|
349
|
+
background: url('http://images.neopets.com/help/bumper/buttons/yes.png');
|
350
|
+
width: 177px;
|
351
|
+
height: 137px;
|
352
|
+
overflow:hidden;
|
353
|
+
text-align: center;
|
354
|
+
cursor: pointer
|
355
|
+
}
|
356
|
+
|
357
|
+
#close {
|
358
|
+
position:absolute;
|
359
|
+
top:118px;
|
360
|
+
left:220px;
|
361
|
+
background: url('http://images.neopets.com/help/bumper/buttons/no.png');
|
362
|
+
width: 177px;
|
363
|
+
height: 137px;
|
364
|
+
overflow:hidden;
|
365
|
+
cursor: pointer
|
366
|
+
}
|
367
|
+
|
368
|
+
#close:hover {
|
369
|
+
background: url('http://images.neopets.com/help/bumper/buttons/no.png') repeat 0 -137px;
|
370
|
+
}
|
371
|
+
|
372
|
+
#open:hover {
|
373
|
+
background: url('http://images.neopets.com/help/bumper/buttons/yes.png') repeat 0 -137px;
|
374
|
+
}
|
375
|
+
|
376
|
+
#a:hover .close {
|
377
|
+
background: url('http://images.neopets.com/help/bumper/buttons/no.png') repeat 0 -137px;
|
378
|
+
}
|
379
|
+
|
380
|
+
#close-text {
|
381
|
+
position: absolute;
|
382
|
+
top:68px; left:7px;
|
383
|
+
width: 160px;
|
384
|
+
height:75px;
|
385
|
+
text-align: center;
|
386
|
+
font-family: Arial, Helvetica, sans-serif;
|
387
|
+
font-weight: bold;
|
388
|
+
font-size: 8pt;
|
389
|
+
}
|
390
|
+
|
391
|
+
#open-text {
|
392
|
+
position: absolute;
|
393
|
+
top:68px;
|
394
|
+
left:7px;
|
395
|
+
width: 160px;
|
396
|
+
height:75px;
|
397
|
+
text-align: center;
|
398
|
+
font-family: Arial, Helvetica, sans-serif;
|
399
|
+
font-weight: bold;
|
400
|
+
font-size: 8pt;
|
401
|
+
}
|
402
|
+
|
403
|
+
#dimBackground {
|
404
|
+
position:fixed;
|
405
|
+
width: 100%;
|
406
|
+
height: 100%;
|
407
|
+
background: url(http://images.neopets.com/dark-semi-trans.png);
|
408
|
+
left: 0;
|
409
|
+
top: 0;
|
410
|
+
z-index: 998;
|
411
|
+
visibility:hidden;
|
412
|
+
}
|
413
|
+
|
414
|
+
#fb-decoy {
|
415
|
+
display:inline-block;
|
416
|
+
position:relative;
|
417
|
+
right:0px;
|
418
|
+
bottom:21px;
|
419
|
+
height:30px;
|
420
|
+
width:60px;
|
421
|
+
background-color:white;
|
422
|
+
z-index:9;
|
423
|
+
}
|
424
|
+
|
425
|
+
#fb-decoy a {
|
426
|
+
position:absolute;
|
427
|
+
top:0px;
|
428
|
+
left:0px;
|
429
|
+
height:20px;
|
430
|
+
width:45px;
|
431
|
+
background-image:url("http://images.neopets.com/np-facebook-like.png");
|
432
|
+
background-position:0px 0px;
|
433
|
+
background-repeat:no-repeat;
|
434
|
+
z-index:999999;
|
435
|
+
}
|
436
|
+
|
437
|
+
#fb-decoy a:hover {
|
438
|
+
text-align:left;
|
439
|
+
background-position:0px -20px;
|
440
|
+
}
|
441
|
+
|
442
|
+
.layer-msg {
|
443
|
+
display:inline;
|
444
|
+
position:absolute;
|
445
|
+
top:252px;
|
446
|
+
left:27px;
|
447
|
+
width:370px;
|
448
|
+
}
|
449
|
+
|
450
|
+
#facebook_games {
|
451
|
+
position:relative;
|
452
|
+
display:inline-block;
|
453
|
+
top:-21px;
|
454
|
+
left:115px;
|
455
|
+
text-align:right;
|
456
|
+
width:144px;
|
457
|
+
height:15px;
|
458
|
+
}
|
459
|
+
|
460
|
+
.fb_iframe_widget iframe {
|
461
|
+
display:block;
|
462
|
+
left:0px;
|
463
|
+
}
|
464
|
+
|
465
|
+
#facebook_games #fb-decoy {
|
466
|
+
display:inline-block;
|
467
|
+
left:-94px;
|
468
|
+
width:46px;
|
469
|
+
height:21px;
|
470
|
+
}
|
471
|
+
|
472
|
+
@media screen and (-webkit-min-device-pixel-ratio:0){
|
473
|
+
#facebook_games #fb-decoy {
|
474
|
+
bottom:22px;
|
475
|
+
left:-98px;
|
476
|
+
}
|
477
|
+
}
|
478
|
+
|
479
|
+
#hab-main #facebook_games {
|
480
|
+
float:left;
|
481
|
+
text-align:right;
|
482
|
+
height:25px;
|
483
|
+
margin-top:2px;
|
484
|
+
}
|
485
|
+
|
486
|
+
#hab-main #facebook_games $fb-decoy {
|
487
|
+
float:left;
|
488
|
+
left:0px;
|
489
|
+
}
|
490
|
+
|
491
|
+
.fb-like-button #fb-decoy {
|
492
|
+
display:block;
|
493
|
+
height:21px;
|
494
|
+
width:45px;
|
495
|
+
}
|
496
|
+
|
497
|
+
#hab-logo {
|
498
|
+
clear:both;
|
499
|
+
display:block;
|
500
|
+
position:relative;
|
501
|
+
right:2px;
|
502
|
+
bottom:4px;
|
503
|
+
}
|
504
|
+
|
505
|
+
#gamesHeader #facebook_games {
|
506
|
+
margin-left:0px;
|
507
|
+
height:23px;
|
508
|
+
top:2px;
|
509
|
+
}
|
510
|
+
|
511
|
+
#gamesHeader #fb-decoy {
|
512
|
+
top:-35px;
|
513
|
+
left:0px;
|
514
|
+
float:left;
|
515
|
+
height:21px;
|
516
|
+
}
|
517
|
+
|
518
|
+
.fb_edge_widget_with_comment span.fb_edge_comment_widget iframe.fb_ltr {
|
519
|
+
display:none;
|
520
|
+
}
|
521
|
+
|
522
|
+
.connect_comment_widget .nub {
|
523
|
+
display:none;
|
524
|
+
}
|
525
|
+
</style>
|
526
|
+
<div id="dimBackground"></div>
|
527
|
+
<div class="bumper" id="layer1">
|
528
|
+
<img src="http://images.neopets.com/help/bumper/headers/leaving-neopia.png" alt="Heads Up! You're about to leave Neopia!" />
|
529
|
+
<br />
|
530
|
+
<p>You've clicked on a link that will take you outside of<BR> Neopets.com. We do not control your destination's website,<BR> so its rules, regulations, and Meepit defense systems will be<BR> different! Are you sure you'd like to continue?</p>
|
531
|
+
<br><br>
|
532
|
+
<div id="open" onclick="window.open('http://www.facebook.com/neopets','Facebook','width =800,height=800, resizable=yes,scrollbars=yes,toolbar=yes');location.href='javascript:setVisible(\'layer1\',true)'">
|
533
|
+
<div id="open-text">
|
534
|
+
It is a journey<BR>I must face...alone.<br>*dramatic music*
|
535
|
+
</div>
|
536
|
+
</div>
|
537
|
+
<div id="close-hover" style="display: hidden;"></div>
|
538
|
+
<div id="close" onclick="location.href='javascript:setVisible(\'layer1\',true)'">
|
539
|
+
<div id="close-text" >
|
540
|
+
I want to stay on Neopets,<BR>where the dangers of<br>Meepit invasion<br> are taken seriously.
|
541
|
+
</div>
|
542
|
+
</div></div><div class="bumper" id="layer2">
|
543
|
+
<img src="http://images.neopets.com/help/bumper/headers/leaving-neopia.png" alt="Heads Up! You're about to leave Neopia!" />
|
544
|
+
<br />
|
545
|
+
<p>You've clicked on a link that will take you outside of<BR> Neopets.com. We do not control your destination's website,<BR> so its rules, regulations, and Meepit defense systems will be<BR> different! Are you sure you'd like to continue?</p>
|
546
|
+
<br><br>
|
547
|
+
<div id="open" onclick="document.getElementById('fb-decoy').style.visibility='hidden';location.href='javascript:setVisible(\'layer2\',true)'">
|
548
|
+
<div id="open-text">
|
549
|
+
It is a journey<BR>I must face...alone.<br>*dramatic music*
|
550
|
+
</div>
|
551
|
+
</div>
|
552
|
+
<div id="close-hover" style="display: hidden;"></div>
|
553
|
+
<div id="close" onclick="location.href='javascript:setVisible(\'layer2\',true)'">
|
554
|
+
<div id="close-text" >
|
555
|
+
I want to stay on Neopets,<BR>where the dangers of<br>Meepit invasion<br> are taken seriously.
|
556
|
+
</div>
|
557
|
+
</div>
|
558
|
+
<div class="layer-msg" style="clear:both;">
|
559
|
+
<img src="http://images.neopets.com/help/bumper/headers/log-in-to-facebook.png" alt="/help/bumper/headers/log-in-to-facebook" />
|
560
|
+
</div></div><div style='position:absolute;right:257px;top:52px;overflow:hidden;'><img src ='http://images.neopets.com/themes/027_tkg_69097/navigation/follow-us-on.png'><a href="http://www.facebook.com/neopets" target="_blank"><img src ='http://images.neopets.com/facebook-icon.png' border=0><a/></div><div style='position:absolute;right:257px;top:82px;overflow:hidden;'><a href="/prefs_fb.phtml"><img src="http://images.neopets.com/template/fb_connect/fb-connect.png" border="0"></a></div> <br>
|
561
|
+
<div class='sf' style='width: 775px;'>
|
562
|
+
<img src='http://images.neopets.com/themes/027_tkg_69097/nvw.png' alt='Nickelodeon Virtual Worlds' title='Nickelodeon Virtual Worlds' align='top' hspace='5' vspace='5' align='left'>
|
563
|
+
<img src='http://images.neopets.com/comscore-gray.gif' vspace='5' width='99' height='32' alt='Nickelodeon Kids and Teens' title='Nickelodeon Kids and Teens'><br>
|
564
|
+
NEOPETS and all related indicia are trademarks of <a href="/aboutus.phtml"><b>Neopets, Inc.</b></a>, © 1999-2012. ® denotes Reg. USPTO. All rights reserved. Use of this site signifies your acceptance of the <a href='/terms.phtml'><b>Terms of Use</b></a>.
|
565
|
+
|
566
|
+
|
567
|
+
</div>
|
568
|
+
</td>
|
569
|
+
</tr>
|
570
|
+
</table>
|
571
|
+
</div>
|
572
|
+
|
573
|
+
|
574
|
+
<script language="JavaScript">
|
575
|
+
function tzCook() {
|
576
|
+
var today = new Date();
|
577
|
+
var expire = new Date();
|
578
|
+
expire.setTime(today.getTime() + 3600000*24*30);
|
579
|
+
var cstr = "_tz="+escape(today.getTimezoneOffset()) + ";expires="+expire.toGMTString() + ";path=/;domain=.neopets.com;";
|
580
|
+
document.cookie = cstr;
|
581
|
+
}
|
582
|
+
tzCook();
|
583
|
+
</script>
|
584
|
+
|
585
|
+
</div>
|
586
|
+
|
587
|
+
</body>
|
588
|
+
</html>
|
589
|
+
|