neopets 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in neopets.gemspec
4
+ gemspec
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" }
@@ -0,0 +1,5 @@
1
+ require "neopets/version"
2
+
3
+ module Neopets
4
+ # Your code goes here...
5
+ end
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module Neopets
2
+ VERSION = "0.0.1"
3
+ end
@@ -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">&nbsp;</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">&raquo; Control Panel</a></li>
120
+ <li><a href="/preferences.phtml">&raquo; Preferences</a></li>
121
+ <li><a href="/userinfo.phtml">&raquo; Edit Profile</a></li>
122
+ <li><a href="/neomessages.phtml">&raquo; Neomail</a></li>
123
+ <li><a href="/neofriends.phtml">&raquo; Neofriends</a></li>
124
+ <li><a href="/addpet.phtml">&raquo; Create a Neopet</a></li>
125
+ <li><a href="/space/warehouse/prizecodes.phtml">&raquo; 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/">&raquo; Customise Neopet</a></li>
130
+ <li><a href="/objects.phtml?type=inventory">&raquo; Inventory</a></li>
131
+ <li><a href="/closet.phtml">&raquo; Closet</a></li>
132
+ <li><a href="/neohome/"> &raquo; Neohomes</a></li>
133
+ <li><a href="/neohome/shed">&raquo; Storage Shed</a></li>
134
+ <li><a href="/addpet.phtml">&raquo; 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/">&raquo; Games Room</a></li>
140
+ <li><a href="/games/category.phtml?sortby=pop">&raquo; Popular</a></li>
141
+ <li><a href="/games/hiscores.phtml">&raquo; High Scores</a></li>
142
+ <li><a href="/games/favourites.phtml">&raquo; Favourites</a></li>
143
+ <li><a href="/keyquest/">&raquo; Key Quest</a></li>
144
+ <li><a href="/habitarium/">&raquo; 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">&raquo; Map of Neopia</a></li>
150
+ <li><a href="/help/tutorial/index.phtml">&raquo; Tutorial</a></li>
151
+ <li><a href="/weather.phtml">&raquo; Weather</a></li>
152
+ <li><a href="/pronounce.phtml">&raquo; Pronunciation</a></li>
153
+ <li><a href="/neopedia.phtml">&raquo; 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">&raquo; New Features</a></li>
159
+ <li><a href="/comingsoon.phtml">&raquo; Coming Soon</a></li>
160
+ <li><a href="/ntimes/index.phtml">&raquo; Neopian Times</a></li><li><a href="/stuff.phtml">&raquo; 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">&raquo; Main</a></li>
165
+ <li><a href="/calendar.phtml">&raquo; Calendar</a></li>
166
+ <li><a href="/worldevents.phtml">&raquo; World Events</a></li>
167
+ <li><a href="/pound/index.phtml">&raquo; 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">&raquo; Neoboard Index</a></li>
173
+ <li><a href="/neoboards/preferences.phtml">&raquo; 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">&raquo; Neopia Central</a></li>
179
+ <li><a href="/market.phtml?type=wizard">&raquo; Shop Wizard</a></li>
180
+ <li><a href="/market.phtml?type=your">&raquo; Your Shop</a></li>
181
+ <li><a href="/auctions.phtml">&raquo; Auctions</a></li>
182
+ <li><a href="/island/tradingpost.phtml">&raquo; Trading Post</a></li>
183
+ <li><a href="/bank.phtml">&raquo; Bank</a></li>
184
+ <li><a href="/shopping/index.phtml">&raquo; 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">&raquo; Shop</a></li>
195
+ <li><a href="/mall/index.phtml?page=buy_nc">&raquo; Get Neocash</a></li>
196
+ <li><a href="/mall/index.phtml?type=11">&raquo; Neocash Cards</a></li>
197
+ <li><a href="/mall/index.phtml?page=redeem_nc ">&raquo; 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>&nbsp;</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...'; }">&nbsp;</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">&nbsp;</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>&nbsp;</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>&nbsp;</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>, &copy; 1999-2012. &reg; 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
+