neopets 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+