ruby-fitbit 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/lib/ruby-fitbit.rb CHANGED
@@ -6,11 +6,15 @@ class RubyFitbit
6
6
 
7
7
  attr_reader :calories, :steps, :miles_walked, :sedentary_active, :lightly_active, :fairly_active, :very_active
8
8
 
9
+ #TODO change tests so reader isn't needed
10
+ attr_reader :logged_in
11
+
9
12
  def initialize(email, pass)
10
13
  @email = email
11
14
  @pass = pass
12
15
  @agent = WWW::Mechanize.new #{|a| a.log = Logger.new(STDERR) } #turn on if debugging
13
16
  @logged_in = false
17
+ @cached_data = {}
14
18
  get_data
15
19
  end
16
20
 
@@ -37,6 +41,8 @@ class RubyFitbit
37
41
  login
38
42
 
39
43
  date = get_fitbit_date_format(date).gsub('-','/')
44
+ return @cached_data[date] if @cached_data[date]
45
+
40
46
  page = @agent.get "https://www.fitbit.com/#{date}"
41
47
 
42
48
  @calories = page.search("//div[@class='data']").search("span").children[0].text
@@ -54,6 +60,7 @@ class RubyFitbit
54
60
  data['lightly_active'] = @lightly_active
55
61
  data['fairly_active'] = @fairly_active
56
62
  data['very_active'] = @very_active
63
+ @cached_data[date] = data
57
64
  data
58
65
  end
59
66
 
data/ruby-fitbit.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ruby-fitbit}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dan Mayer"]
12
- s.date = %q{2010-07-10}
12
+ s.date = %q{2010-07-20}
13
13
  s.default_executable = %q{ruby-fitbit}
14
14
  s.description = %q{This is a Ruby API for Fitbit.com, currently scraping, but soon will use the officail API (when released)}
15
15
  s.email = %q{Danmayer@gmail.com}
@@ -29,6 +29,8 @@ Gem::Specification.new do |s|
29
29
  "lib/ruby-fitbit.rb",
30
30
  "ruby-fitbit.gemspec",
31
31
  "test/helper.rb",
32
+ "test/responses/data.txt",
33
+ "test/responses/loginpage.txt",
32
34
  "test/test_ruby-fitbit.rb"
33
35
  ]
34
36
  s.homepage = %q{http://github.com/danmayer/ruby-fitbit}
@@ -0,0 +1,3625 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
32
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
33
+ <head>
34
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
35
+ <title>Fitbit Dashboard</title>
36
+ <meta name="keywords" content="keywords" />
37
+ <meta name="description" content="description" />
38
+ <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>
39
+
40
+
41
+ <link rel="stylesheet" type="text/css" href="/pack?h=3f18725800c7f1b86b3af8be68c89e9e&item=%2Fyui%2F2.7.0%2Fbuild%2Ffonts%2Ffonts-min.css&item=%2Fyui%2F2.7.0%2Fbuild%2Freset%2Freset-min.css&item=%2Fyui%2F2.7.0%2Fbuild%2Fcontainer%2Fassets%2Fskins%2Fsam%2Fcontainer.css&item=%2Fyui%2F2.7.0%2Fbuild%2Fcalendar%2Fassets%2Fskins%2Fsam%2Fcalendar.css&item=%2Fyui%2F2.7.0%2Fbuild%2Fautocomplete%2Fassets%2Fskins%2Fsam%2Fautocomplete.css&item=%2Fdesign%2F2009-07%2Fcss%2Fcommon.css&item=%2Fdesign%2F2009-07%2Fcss%2Fapp.css"/>
42
+
43
+
44
+
45
+ <script type="text/javascript">
46
+ document.documentElement.className += ' js';
47
+
48
+ function setTextLimits() {
49
+ for (var nodes = document.getElementsByTagName('*'), i = 0, l = nodes.length; i < l; i++) {
50
+ var m = nodes[i].className.match(/(?:^|\s)textLimit(?:(\d+)(?:-(\d+))?)?(?=\s|$)/i);
51
+ if (!m || !nodes[i].lastChild) {
52
+ continue;
53
+ }
54
+
55
+ var el = nodes[i];
56
+ var lines = m[1] || 1;
57
+ var maxWidth = m[2] || Number.MAX_VALUE;
58
+ var clone = el.cloneNode(false);
59
+ var ellipsis = clone.appendChild(document.createTextNode('\u2026'));
60
+ el.parentNode.replaceChild(clone, el);
61
+ var maxHeight = (clone.scrollHeight - clone.clientHeight) + ((clone.clientHeight + 3) * lines);
62
+ clone.parentNode.replaceChild(el, clone);
63
+ if (el.scrollHeight > maxHeight || el.scrollWidth > maxWidth) {
64
+ el.title = (el.textContent || el.innerText || '').replace(/^\s+|\s+$/g, '');
65
+ for (var root = el, node = root.lastChild;; node = root.lastChild) {
66
+ if (node && node.nodeType == 1) {
67
+ root = node;
68
+ } else {
69
+ if (!node) {
70
+ if (root == el) {
71
+ break;
72
+ }
73
+ node = root;
74
+ root = root.parentNode;
75
+ root.removeChild(node);
76
+ } else if (node.nodeType == 3) {
77
+ node.nodeValue = node.nodeValue.slice(0, -1);
78
+ if (!node.nodeValue) {
79
+ root = node.parentNode;
80
+ root.removeChild(node);
81
+ }
82
+ } else {
83
+ root.removeChild(node);
84
+ }
85
+ root.appendChild(ellipsis);
86
+ if (el.scrollHeight <= maxHeight && el.scrollWidth <= maxWidth) {
87
+ break;
88
+ }
89
+ root.removeChild(ellipsis);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ </script>
96
+
97
+
98
+
99
+ <link rel="stylesheet" type="text/css" href="/pack?h=6c17b35d953b4f6bf8bf899840b45ada&item=%2Fdesign%2F2009-07%2Fcss%2Fdashboard.css&item=%2Fdesign%2F2009-07%2Fcss%2Ffitbit%2Fapp%2Fuser%2Fstats%2Frank.css&item=%2Fdesign%2F2009-07%2Fcss%2Ffitbit%2Fapp%2Fuser%2Fstats%2FweightStats.css&item=%2Fdesign%2F2009-07%2Fcss%2Ffitbit%2Fapp%2Fuser%2Ffriends%2FfriendStats.css&item=%2Fdesign%2F2009-07%2Fcss%2Ffitbit%2Fapp%2Fuser%2Fstats%2FpersonalBests.css&item=%2Fdesign%2F2009-07%2Fcss%2Fjournal.css"/>
100
+ <style type="text/css">
101
+ #editplanhelper .button {
102
+ background: url("/images/controls/pink_button.gif") no-repeat scroll left top transparent;
103
+ border: 1px solid #AC083A;
104
+ color: white;
105
+ font-size: 14px;
106
+ height: 25px !important;
107
+ line-height: 24px;
108
+ margin: 0;
109
+ padding: 0 5px !important;
110
+ }
111
+ </style>
112
+
113
+ </head>
114
+
115
+ <body>
116
+
117
+ <div id="main">
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+ <div id="header">
129
+ <div class="logo"><a href="http://www.fitbit.com/"><img src="/images/layout/logo.gif" alt=""/></a></div>
130
+ <div class="accountLinks">
131
+
132
+ <ul>
133
+ <li>Hi <a href="/user/22CJ7H" style="border: 0; padding: 0;">dan@fake.com</a></li>
134
+
135
+ <li><a href="http://www.fitbit.com/help">Help</a></li>
136
+
137
+
138
+
139
+ <li><a href="https://www.fitbit.com/logout">Log Out</a></li>
140
+ <li class="last"><a href="http://www.fitbit.com/product">Store</a></li>
141
+
142
+
143
+
144
+ </ul>
145
+
146
+
147
+ </div>
148
+
149
+ <div id="menu">
150
+
151
+ <ul>
152
+
153
+
154
+
155
+ <li class="current"><a href="http://www.fitbit.com/" class="selected">Home</a></li>
156
+
157
+
158
+ <li><a href="http://www.fitbit.com/foods/log">Tracker</a></li>
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <li><a href="http://www.fitbit.com/community" rel="nofollow">Community</a></li>
170
+
171
+
172
+ <li><a href="http://www.fitbit.com/premium/cb" class="analytics" rel="nofollow">Analytics</a></li>
173
+
174
+ </ul>
175
+
176
+
177
+ </div>
178
+
179
+ </div>
180
+
181
+
182
+
183
+ <div id="content">
184
+
185
+
186
+
187
+
188
+ <div id="contentHead" class="clearfix">
189
+
190
+
191
+ <p id="dashPromo" class="noticeMessage placeholder blank">
192
+ Premium is here. Get fitter faster.
193
+ <a href="/premium/about">Learn more about a Premium membership!</a>
194
+ </p>
195
+
196
+ <div id="tasks">
197
+ <h1>My Dashboard</h1>
198
+ <ul class="actions">
199
+ <li id="logFood"><a href="/foods/log">Log Food</a></li>
200
+ <li id="logActivities"><a href="/activities">Log Activity</a></li>
201
+ <li id="trackWeight" class="last"><a href="/weight">Track Weight</a></li>
202
+ </ul>
203
+ </div>
204
+ <div id="goalScene" >
205
+
206
+
207
+ <div id="scene">&nbsp;</div>
208
+
209
+ <div class="details">
210
+ <p style="clear: both;">
211
+
212
+
213
+
214
+
215
+ <span>11%</span>
216
+ of
217
+ 70,000
218
+ weekly steps
219
+
220
+
221
+ </p>
222
+ <ul>
223
+
224
+ <li class="first"><a href="#" onclick="return false;" onmousedown="fitbit.app.user.goal.primary.showGoalDialog();">Select another goal</a></li>
225
+ </ul>
226
+ </div>
227
+ </div>
228
+ </div>
229
+ <div id="contentBody" class="clearfix">
230
+ <div id="modules" class="clearfix">
231
+
232
+ <div id="smallTabs" class="smallTabs" style="margin: -31px 0 0 -9px; position: absolute;">
233
+ <ul class="menu">
234
+ <li ><a href="#daily"><span>Daily</span></a></li>
235
+ <li class='active'><a class='active' href="#historical"><span>Historical</span></a></li>
236
+ </ul>
237
+ </div>
238
+
239
+
240
+ <div id="daily" class="invisible" style="position: relative;">
241
+
242
+ <div id="calories" class="module firstModule clearfix">
243
+ <div class="dateHeader">
244
+ <div class="title"><h2>Calories</h2></div>
245
+ <div class="dateArea">
246
+
247
+
248
+
249
+
250
+
251
+
252
+ <ul id="dateNavHeader">
253
+ <li><a href="/2010/07/17"><img src="/images/common/pre_arrow.gif" alt=""/></a></li>
254
+ <li class="date"><span>Today</span></li>
255
+
256
+ <li class="select"><a id="showCalendar" href="#" onclick="return false;" onmousedown="fitbit.app.showCalendar('', 'calendar', 'showCalendar', '2010-07-18', false, '/'); return false;">Select</a></li>
257
+ </ul>
258
+ <div class="yui-skin-sam">
259
+ <div id="calendarContainer">
260
+ <div id="calendarHeader" class="hd"></div>
261
+ <div class="bd clearfix" style="color: black">
262
+ <div id="calendar"></div>
263
+ </div>
264
+ </div>
265
+ &nbsp;
266
+ </div>
267
+
268
+
269
+
270
+ </div>
271
+ </div>
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+ <div class="content ttContainer">
282
+ <!-- CUT INTO CALORIES INCLUDE JSP -->
283
+
284
+
285
+ <div class="dataBlock clearfix">
286
+ <div class="data"><span class="highlight1">1928</span>&nbsp;calories burned</div>
287
+
288
+ <div class="simpleGraph invisible" onmousedown="fitbit.app.user.goal.showGoalDialog( 'My goal is to burn more than', 'calories every day', 47472, '2184.0', 0, true, 0 );">
289
+
290
+
291
+
292
+
293
+
294
+
295
+ <a class="tooltip" title="Click to edit goal" href="#">
296
+ <div class="graph">
297
+ <strong id="bar.47472" class="bar highlightBg1"
298
+
299
+ style="width: 88.27839%;"></strong>
300
+ </div>
301
+ <div class="text">
302
+ <span id="percentComplete.47472">88</span>%
303
+ of goal of
304
+ <span id="target.47472">2184</span>
305
+ </div>
306
+ </a>
307
+ </div>
308
+
309
+ </div>
310
+
311
+ <div class="dataBlock clearfix">
312
+ <div class="data"><span class="highlight2">0</span> calories eaten</div>
313
+
314
+ <div class="simpleGraph invisible" onmousedown="fitbit.app.user.goal.showGoalDialog( 'My goal is to eat', 'calories every day', 47471, '2184.0', 1, false, 0 );">
315
+ <a class="tooltip" title="Click to edit goal" href="#">
316
+ <div class="graph">
317
+ <strong id="bar.47471" class="bar highlightBg2"
318
+
319
+ style="width: 0.0%;"></strong>
320
+ </div>
321
+ <div class="text">
322
+ <span id="percentComplete.47471">0</span>%
323
+ of goal of
324
+ <span id="target.47471">2184</span>
325
+ </div>
326
+ </a>
327
+ </div>
328
+
329
+ </div>
330
+ <div class="dataBlock">
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+
371
+
372
+ <div id="trainerPremiumModal" class="form modal invisible" style="padding-top: 49px;">
373
+ <div class="hd">
374
+ <div class="header" style="line-height: 49px;">Fitbit Trainer</div>
375
+ <div class="closeButton" style="line-height: 49px;">
376
+ <a href="#" onmousedown="fitbit.app.premium.trainer.onClose(); return false;" onclick="return false;">Close</a>
377
+ </div>
378
+ </div>
379
+ <div class="body" style="padding-bottom: 15px; padding-top: 30px;">
380
+ <div style="margin-bottom: 15px; text-align:justify;">
381
+ The Fitbit trainer helps you set and track attainable goals to get more
382
+ active. It does this by first learning your current activity level and then
383
+ creating a personalized fitness plan that pushes you to gradually
384
+ increase your movement over the course of 12 weeks. Like a fitness
385
+ coach, it adapts the plan to meet your changing needs and help you
386
+ attain your fitness goals.
387
+ </div>
388
+
389
+
390
+
391
+ <div style="margin-bottom: 15px; text-align:justify;">
392
+ The trainer comes as part of a premium membership but you are
393
+ eligible to try it in a free week-long trial. At the end of the trial you can
394
+ choose to sign up for a premium membership, but there is no
395
+ commitment whatsoever.
396
+ </div>
397
+
398
+
399
+
400
+ <div style="margin-bottom: 7px;">
401
+ A premium membership unlocks many more site features:
402
+ </div>
403
+ <div style="float: left; clear: both; width: 100%; margin-bottom: 20px;">
404
+ <div style="float: left; margin-left: 40px;">
405
+ <ul style="list-style:disc inside none;">
406
+ <li style="list-style:disc inside none; font-size: 12px;">Benchmarking</li>
407
+ <li style="list-style:disc inside none; font-size: 12px;">Personalized reports</li>
408
+ </ul>
409
+ </div>
410
+ <div style="float: left; margin-left: 40px;">
411
+ <ul style="list-style:disc inside none;">
412
+
413
+ <li style="list-style:disc inside none; font-size: 12px;">Unlimited custom trackers</li>
414
+ <li style="list-style:disc inside none; font-size: 12px;">Much more!</li>
415
+ </ul>
416
+ </div>
417
+ </div>
418
+ <div style=" margin-top: 4px; font-size:15px;">
419
+ <a href="/premium/about">Learn more about premium</a>
420
+ </div>
421
+
422
+ <div class="clearfix" style="margin: 25px 0 0 0;">
423
+ <div id="buttonsContainer">
424
+
425
+ <div id="bGetFreeTrial">
426
+ <a href="#" title="Get Free Report. No Credit Card Required."
427
+ onmousedown="fitbit.app.premium.addTrialSubscription('TRIAL_ALGORITHMIC_TRAINER', '/trainer/trainerSetup', 'trialTrainer_dashPage_trainerUpsellDialog'); return false;"
428
+ onclick="return false;">
429
+ <span>Start Free Trial</span>
430
+ <br/>
431
+ <span style="font-size:8px;">NO CREDIT CARD REQUIRED</span>
432
+ </a>
433
+ </div>
434
+
435
+ <div id="bBuyPremium">
436
+ <a href="#" title="Buy Premium"
437
+ onmousedown="window.location='/order?packName=fitbit_premium&doneUrl=/trainer/trainerSetup&cancelUrl=/&linkId=premiumPack_dashPage_trainerUpsellDialog'; return false;"
438
+ onclick="return false;">Buy Premium</a>
439
+ </div>
440
+ <div class="lOr">or</div>
441
+ <div id="bNoThanks">
442
+ <a title="Cancel" href="#" onclick="fitbit.app.premium.trainer.onClose(); return false;">No thanks</a>
443
+ </div>
444
+ </div>
445
+
446
+ </div>
447
+ </div>
448
+ </div>
449
+
450
+ <div style="float:left;margin-right:10px;font-size:12px;color:#000000;">Want to challenge yourself to be more active?</div>
451
+ <a href="#" onmousedown="fitbit.app.premium.trainer.showDialog();" onclick="return false;"
452
+ style="display: block; text-decoration: underline;font-size:12px;">Start a free week trial of the Fitbit trainer now!</a>
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+ </div>
463
+ </div>
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+ <div class="content border">
474
+ <div id="intradayCaloriesTabs" class="tabs">
475
+ <h3 style="float: left; padding: 6px 2px;">Intraday calories</h3>
476
+ <ul class="menu">
477
+ <li class='active'><a class='active' href="#intradayCaloriesBurnedChart"><span>burned every 5 min</span></a></li>
478
+ <li ><a href="#intradayCaloriesEatenChart"><span>eaten</span></a></li>
479
+ </ul>
480
+ </div>
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+ <div id="intradayCaloriesBurnedChart" >
494
+
495
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
496
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
497
+ </p>
498
+
499
+ </div>
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+ <div id="intradayCaloriesEatenChart" class="invisible" >
515
+
516
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
517
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
518
+ </p>
519
+
520
+ </div>
521
+
522
+
523
+
524
+
525
+
526
+ </div>
527
+
528
+
529
+ </div>
530
+ <div id="activity" class="module clearfix">
531
+ <div class="dateHeader">
532
+ <div class="title"><h2>Activity</h2></div>
533
+ <div class="dateArea">
534
+
535
+
536
+
537
+
538
+
539
+
540
+ <ul id="dateNavHeader">
541
+ <li><a href="/2010/07/17"><img src="/images/common/pre_arrow.gif" alt=""/></a></li>
542
+ <li class="date"><span>Today</span></li>
543
+
544
+ <li class="select"><a id="showCalendar2" href="#" onclick="return false;" onmousedown="fitbit.app.showCalendar('', 'calendar2', 'showCalendar2', '2010-07-18', false, '/'); return false;">Select</a></li>
545
+ </ul>
546
+ <div class="yui-skin-sam">
547
+ <div id="calendar2Container">
548
+ <div id="calendar2Header" class="hd"></div>
549
+ <div class="bd clearfix" style="color: black">
550
+ <div id="calendar2"></div>
551
+ </div>
552
+ </div>
553
+ &nbsp;
554
+ </div>
555
+
556
+
557
+
558
+ </div>
559
+ </div>
560
+ <div class="content firstBlock">
561
+ <!-- CUT INTO Activities INCLUDE JSP -->
562
+ <div class="dataBlock clearfix">
563
+ <div class="data">
564
+ <span class="highlight1">7821
565
+ </span> steps taken
566
+ today
567
+ </div>
568
+
569
+ <div class="simpleGraph invisible" onmousedown="fitbit.app.user.goal.showGoalDialog( 'My goal is to walk or run more than', 'steps every day', 47474, '10000.0', 0, true, 0 );">
570
+ <a class="tooltip" title="Click to edit goal" href="#">
571
+ <div class="graph">
572
+ <strong id="bar.47474" class="bar highlightBg1"
573
+
574
+ style="width: 78.21%;"></strong>
575
+ </div>
576
+ <div class="text">
577
+ <span id="percentComplete.47474">78</span>%
578
+ of goal of
579
+ <span id="target.47474">10000</span>
580
+ </div>
581
+ </a>
582
+ </div>
583
+
584
+ </div>
585
+ <div class="dataBlock clearfix">
586
+ <div class="data">
587
+ <span class="highlight2">
588
+ 3.38
589
+ </span> miles traveled
590
+ today
591
+ </div>
592
+
593
+ <div class="simpleGraph invisible" onmousedown="fitbit.app.user.goal.showGoalDialog( 'My goal is to walk or run more than', 'miles every day', 47475, '5.0', 0, true, 0, false );">
594
+ <a class="tooltip" title="Click to edit goal" href="#">
595
+ <div class="graph">
596
+ <strong id="bar.47475" class="bar highlightBg2"
597
+
598
+ style="width: 67.63514%;"></strong>
599
+ </div>
600
+ <div class="text">
601
+ <span id="percentComplete.47475">68</span>%
602
+ of goal of
603
+ <span id="target.47475">5.00</span>
604
+ </div>
605
+ </a>
606
+ </div>
607
+
608
+ </div>
609
+ <div class="dataBlock clearfix">
610
+ <div class="data">
611
+
612
+ <span class="highlight1">606</span> active score<a class="tooltip ttid-active-score-tip" href="#" style="z-index: 9000"><span style="color: gray">*</span>
613
+ <span id="active-score-tip" class="help tooltip-content">
614
+ <div>The Active Score captures how active you were compared to if you were completely sedentary all day. Your score will be 0 if you were sedentary, and
615
+ typically a 3-digit number if you were active.
616
+ <br/>
617
+ You may prefer the Active Score over Calories Burned, because the Active Score just captures your level of activity and is not dependent on your height and
618
+ weight, as calories burned is.
619
+ <br/>
620
+ For those who understand what a MET (Metabolic Equivalent) is, the Active Score is a rough translation of the sum of your METs for each minute minus 1 for each minute elapsed in the day.
621
+ </div>
622
+ </span>
623
+ </a>
624
+ </div>
625
+
626
+
627
+
628
+ <div class="simpleGraph invisible" onmousedown="fitbit.app.user.goal.showGoalDialog( 'My goal is to reach', 'active score every day', 47473, '1000.0', 0, true, 0 );">
629
+ <a class="tooltip" title="Click to edit goal" href="#">
630
+ <div class="graph">
631
+ <strong id="bar.47473" class="bar highlightBg1"
632
+
633
+ style="width: 60.6%;"></strong>
634
+ </div>
635
+ <div class="text">
636
+ <span id="percentComplete.47473">61</span>%
637
+ of goal of
638
+ <span id="target.47473">1000</span>
639
+ </div>
640
+ </a>
641
+ </div>
642
+
643
+ </div>
644
+
645
+
646
+ <div class="dataBlock clearfix">
647
+ <div class="recording">
648
+ You have recorded
649
+ <a class="tooltip ttid-activities-tip" style="z-index: 9000;" href="/activities">
650
+ 0 activities
651
+ <span id="activities-tip" class="tooltip-content">
652
+ A recording is similar to a trip odometer.<br/><br/>
653
+ You can record activities using your Fitbit. Press and the hold the Fitbit button for 2+ seconds to start a recording and hold for 2+ seconds to stop a recording.<br/><br/>
654
+ Recordings are useful, for instance, if you want to know exactly how many steps it takes you to walk from your house to the bus stop or you want to know how many calories you burn during your morning walk or what your pace was during the walk.
655
+ </span>
656
+ </a>
657
+ </div>
658
+ </div>
659
+
660
+
661
+ </div>
662
+
663
+
664
+ <div id="activityBreakdownChartArea" class="content border">
665
+ <h3>Today's activity breakdown (excluding sleep)</h3>
666
+
667
+ <div id="activityGraphHorizontal" class="horizontalGraph invisible">
668
+ <div class="graph">
669
+ <div class="bar sedentary" style="width: 81.6%;"></div>
670
+ <div class="bar lightly" style="width: 8.2%;"></div>
671
+ <div class="bar fairly" style="width: 8.9%;"></div>
672
+ <div class="bar very" style="width: 1.4%;"></div>
673
+ </div>
674
+ <div class="text">
675
+
676
+
677
+
678
+
679
+
680
+ <div class="caption"><span class="sedentary">sedentary</span><span class="time">16hrs 58min</span></div>
681
+ <div class="caption"><span class="lightly" >lightly active</span><span class="time">1hr 42min</span></div>
682
+ <div class="caption"><span class="fairly" >fairly active</span><span class="time">1hr 51min</span></div>
683
+ <div class="caption"><span class="very" >very active</span><span class="time">17min</span></div>
684
+ </div>
685
+ </div>
686
+
687
+ <div id="activityGraphBar" class="barGraph invisible">
688
+ <div class="graph">
689
+ <div class="bar sedentary" style="height:100px; border-top-width:0px;"></div>
690
+ <div class="bar lightly" style="height:10px; border-top-width:90px;"></div>
691
+ <div class="bar fairly" style="height:11px; border-top-width:89px;"></div>
692
+ <div class="bar very" style="height:2px; border-top-width:98px;"></div>
693
+ </div>
694
+ <div class="text">
695
+ <div class="caption sedentary">sedentary<div>16hrs 58min</div></div>
696
+ <div class="caption lightly">lightly active<div>1hr 42min</div></div>
697
+ <div class="caption fairly">fairly active<div>1hr 51min</div></div>
698
+ <div class="caption very">very active<div>17min</div></div>
699
+ </div>
700
+ </div>
701
+
702
+ <div id="activityGraphPie" class="pieGraph">
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+ <div id="activityPieChart" class="graph" style="width: 240px;">
711
+
712
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
713
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
714
+ </p>
715
+
716
+ </div>
717
+
718
+ <div class="left">
719
+ <div class="sedentary caption">sedentary<div class="number">16hrs 58min</div></div>
720
+ <div class="lightly caption">lightly active<div class="number">1hr 42min</div></div>
721
+ </div>
722
+ <div class="right">
723
+ <div class="caption fairly">fairly active<div class="number">1hr 51min</div></div>
724
+ <div class="caption very">very active<div class="number">17min</div></div>
725
+ </div>
726
+ </div>
727
+ </div>
728
+
729
+ <div class="content border">
730
+ <div id="intradayTabs" class="tabs">
731
+ <ul class="menu">
732
+ <li class='active'><a class='active' href="#intradayStepsChart"><span>Steps taken</span></a></li>
733
+ <li ><a href="#intradayActiveScoreChart"><span>Active score</span></a></li>
734
+ </ul>
735
+ <h3 style="float: left; padding: 6px 10px;">every 5 minutes</h3>
736
+ </div>
737
+
738
+
739
+ <div id="intradayStepsChart" ></div>
740
+
741
+
742
+ <div id="intradayActiveScoreChart" class="invisible"></div>
743
+
744
+
745
+ </div>
746
+
747
+
748
+ <!-- CUT INTO Activities INCLUDE JSP -->
749
+ </div>
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+ <div id="sleep" class="module clearfix ">
780
+
781
+
782
+
783
+
784
+
785
+ <div id="sleepRecord." class="annotation content firstBlock" onmouseout="fitbit.app.highlightRecord('sleepRecord', '', false);" onmouseover="fitbit.app.highlightRecord('sleepRecord', '', true);">
786
+
787
+
788
+ <!-- class: p1, p2 or p3 (poor, average, really restful) -->
789
+ <div id="sleepIndicator" class="p1">Your sleep efficiency
790
+ <span class="text">
791
+
792
+ ?%
793
+
794
+
795
+ </span>
796
+ </div>
797
+ <h3 id="sleepChartLabel">Your main sleep pattern &nbsp; <span class="textLegendHighlight1">asleep</span> &nbsp; <span class="textLegendHighlight2">active</span></h3>
798
+
799
+
800
+
801
+ <h3 id="sleepChartMessage">You did not log sleep data on this day.</h3>
802
+
803
+
804
+ <ul id="sleepSummary">
805
+ <li class="first">
806
+ <span class="sleepMetricLabel">You went to bed at</span>
807
+ <span class="sleepMetric">
808
+
809
+ ?
810
+
811
+
812
+ </span>
813
+ </li>
814
+ <li>
815
+ <span class="sleepMetricLabel">Time to fall asleep</span>
816
+ <span class="sleepMetric">0min</span>
817
+ </li>
818
+ <li>
819
+ <span class="sleepMetricLabel">Times awakened</span>
820
+ <span class="sleepMetric">0</span>
821
+ </li>
822
+ <li>
823
+ <span class="sleepMetricLabel">You were in bed for</span>
824
+ <span class="sleepMetric">0min</span>
825
+ </li>
826
+ <li>
827
+ <span class="sleepMetricLabel">Actual sleep time</span>
828
+ <span class="sleepMetric highlight2">0min</span>
829
+ </li>
830
+ </ul>
831
+ <div class="clearfix" style="height: 0; float: none; clear: both;"></div>
832
+
833
+ <div id="editSleepRecord." class="edit invisible">
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+ <div id="sleepRecordEntry" >
847
+
848
+ <div class="quantityLabel">
849
+ <h3 style="float: none; height: auto;">
850
+ Create a new sleep record
851
+ </h3>
852
+ </div>
853
+
854
+
855
+ <form name="sleepLogForm" action="/activities/sleepAnnotation" class="form" method="post" onsubmit="fitbit.app.sleep.logSleep(); return false;">
856
+ <div id="sleepRecordEntryInternal">
857
+ <input name="date" value="2010-07-18" type="hidden" />
858
+ <input name="clock" value="" type="hidden" />
859
+ <input name="sleepProcAlgorithm" value="" class="invisible" type="text" />
860
+
861
+ <div style="width: 200px; float: left;">
862
+ <h3 style="float: none;">Entered bed</h3>
863
+ <div style="margin-bottom: 10px;">
864
+ <input maxlength="2" name="enteredBedHours" value="" type="text" size="2" />
865
+ <span style="font-weight: bold;">:</span>
866
+ <input maxlength="2" name="enteredBedMinutes" value="" type="text" size="2" />&nbsp;
867
+
868
+
869
+
870
+
871
+ <select name="enteredBedAmpm">
872
+ <option selected="selected" value="am">am</option>
873
+ <option value="pm">pm</option>
874
+ </select>
875
+
876
+
877
+ </div>
878
+ on the
879
+ <select name="enteredBedDay">
880
+ <option value="prev">Previous day</option>
881
+ <option selected="selected" value="same">Same day</option>
882
+ </select>
883
+ <div id="startTimeLinks" class="startTimeBlock" style="padding: 12px 0; margin: 0;">
884
+ <a id="clock12" href="#" onclick="return false;" onmousedown="fitbit.app.sleep.setClock('12','');">12 hr</a>&nbsp;
885
+ <a id="clock24" href="#" onclick="return false;" onmousedown="fitbit.app.sleep.setClock('24','');">24 hr</a>
886
+ </div>
887
+ </div>
888
+ <div style="margin-left: 25px; width: 200px; float: left;">
889
+ <h3 style="float: none;">Left bed</h3>
890
+ <div>
891
+ <input maxlength="2" name="leftBedHours" value="" type="text" size="2" />
892
+ <span style="font-weight: bold;">:</span>
893
+ <input maxlength="2" name="leftBedMinutes" value="" type="text" size="2" />&nbsp;
894
+
895
+
896
+
897
+
898
+ <select name="leftBedAmpm">
899
+ <option selected="selected" value="am">am</option>
900
+ <option value="pm">pm</option>
901
+ </select>
902
+
903
+
904
+ </div>
905
+ </div>
906
+
907
+
908
+
909
+ <input id="logSleepButton" style="clear: both; float: left; margin: 0 0 0 0" name="logSleepButton" value="Log Sleep" class="button" type="submit" />
910
+
911
+ </div>
912
+ <div id="sleepRecordEntryStatus" style="clear: both; padding-top: 10px;">
913
+ <div id="logSleepProgress" class="recentlyAddedStatus invisible" style="margin: 0;"></div>
914
+ <div id="logSleepErrors" class="error invisible" style="margin: 0;"></div>
915
+ </div>
916
+ <div style="display: none;"><input type="hidden" name="_sourcePage" value="KONJlF7X_WfGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKxV2RUoL5W60NfHjCnPkhut" /><input type="hidden" name="__fp" value="VTacRFoN_4doEYlyxrNfYrnIH0RJLtw0N26H55fJomuPoci9bkO-bTduh-eXyaJrLYwjslupZN8=" /></div></form>
917
+
918
+ </div>
919
+
920
+ </div>
921
+ </div>
922
+
923
+
924
+ <h3 id="sleepChartMoreLink"><a href="/sleep">View all your sleeps on this day</a></h3>
925
+
926
+
927
+
928
+ </div>
929
+ <!--
930
+ <div id="dashboardAdvertisement" class="module clearfix">
931
+ <div class="content firstBlock">
932
+ <h3 class="advertisement">Headline for Advertisement Goes Here</h3>
933
+ <p>Marketing copy for the advertisement talks about additional stats provided, as well as the ease of the syncing software. Maybe one more line.</p>
934
+ <a href="/order/" class="buttonLink"><img src="/images/dashboard/purchaseButton.gif" alt="Purchase" width="154" height="39"/></a>
935
+ </div>
936
+ </div>
937
+ -->
938
+
939
+ <div id="journal" class="module clearfix">
940
+ <div class="dateHeader">
941
+ <div class="title"><h2>Journal</h2></div>
942
+ <div class="dateArea">
943
+
944
+
945
+
946
+
947
+
948
+
949
+ <ul id="dateNavHeader">
950
+ <li><a href="/2010/07/17"><img src="/images/common/pre_arrow.gif" alt=""/></a></li>
951
+ <li class="date"><span>Today</span></li>
952
+
953
+ <li class="select"><a id="showCalendar3" href="#" onclick="return false;" onmousedown="fitbit.app.showCalendar('', 'calendar3', 'showCalendar3', '2010-07-18', false, '/'); return false;">Select</a></li>
954
+ </ul>
955
+ <div class="yui-skin-sam">
956
+ <div id="calendar3Container">
957
+ <div id="calendar3Header" class="hd"></div>
958
+ <div class="bd clearfix" style="color: black">
959
+ <div id="calendar3"></div>
960
+ </div>
961
+ </div>
962
+ &nbsp;
963
+ </div>
964
+
965
+
966
+
967
+ </div>
968
+ </div>
969
+ <div class="content firstBlock">
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+ <div class="text">
994
+
995
+ You have not logged your mood.
996
+
997
+
998
+ </div>
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+ </div>
1007
+ <div class="content">
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+ <div class="text">
1032
+
1033
+ You have not logged your allergies.
1034
+
1035
+
1036
+ </div>
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+ </div>
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+ <div id="journal" class="clearfix">
1068
+
1069
+
1070
+ <div class="content">
1071
+ <div class="text">
1072
+
1073
+ You have not written anything in your journal.
1074
+
1075
+
1076
+ </div>
1077
+ </div>
1078
+
1079
+
1080
+
1081
+ </div>
1082
+ </div>
1083
+
1084
+ </div>
1085
+
1086
+
1087
+ <div id="historical" style="position: relative;">
1088
+ <div class="module firstModule clearfix">
1089
+
1090
+ <div class="dateHeader">
1091
+ <div class="title"><h2>&nbsp;</h2></div>
1092
+ <div class="dateArea">
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+ <ul id="dateNavHeader">
1100
+ <li><a href="/2010/07/17"><img src="/images/common/pre_arrow.gif" alt=""/></a></li>
1101
+ <li class="date"><span>Today</span></li>
1102
+
1103
+ <li class="select"><a id="showCalendar5" href="#" onclick="return false;" onmousedown="fitbit.app.showCalendar('', 'calendar5', 'showCalendar5', '2010-07-18', false, '/'); return false;">Select</a></li>
1104
+ </ul>
1105
+ <div class="yui-skin-sam">
1106
+ <div id="calendar5Container">
1107
+ <div id="calendar5Header" class="hd"></div>
1108
+ <div class="bd clearfix" style="color: black">
1109
+ <div id="calendar5"></div>
1110
+ </div>
1111
+ </div>
1112
+ &nbsp;
1113
+ </div>
1114
+
1115
+
1116
+
1117
+ </div>
1118
+ </div>
1119
+
1120
+ <div class="content firstBlock">
1121
+ <h3>30 day graph of <span class="textLegendHighlight1">intake</span> vs. <span class="textLegendHighlight2">burn</span></h3>
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+ <div id="caloriesInOutChart" style="margin-top: 0; float: left">
1130
+
1131
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
1132
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
1133
+ </p>
1134
+
1135
+ </div>
1136
+
1137
+ <div style="margin-left: 100px;">
1138
+ <h3 style="float: left;"><span class="highlight1">2,313</span> average burn</h3>
1139
+ <h3 style="float: left; margin-left: 50px;"><span class="highlight2">0</span> average intake</h3><br/>
1140
+ </div>
1141
+ </div>
1142
+
1143
+ <div class="content">
1144
+ <div id="historicalActivitiesTabs" class="tabs">
1145
+ <ul class="menu">
1146
+ <li class='active'><a class='active' href="#stepsTakenHistoricalChart"><span>Steps</span></a></li>
1147
+ <li ><a href="#distanceHistoricalChart"><span>Distance</span></a></li>
1148
+ <li ><a href="#activeScoreHistoricalChart"><span>Active Score</span></a></li>
1149
+ </ul>
1150
+ <h3 style="float: left; padding: 6px 10px;">30 day graph</h3>
1151
+ </div>
1152
+
1153
+
1154
+ <div id="activeScoreHistoricalChart" class="invisible"></div>
1155
+
1156
+
1157
+ <div id="stepsTakenHistoricalChart" ></div>
1158
+
1159
+
1160
+ <div id="distanceHistoricalChart" class="invisible"></div>
1161
+
1162
+ </div>
1163
+
1164
+
1165
+ <div class="content">
1166
+ <h3>30 day graph of minutes active (in hours)</h3>
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+ <div id="minutesActiveChart" style="margin-top: 8px; float: left">
1175
+
1176
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
1177
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
1178
+ </p>
1179
+
1180
+ </div>
1181
+
1182
+ <div style="margin-left: 50px;">
1183
+
1184
+ <h3 style="float: left; margin-left: 25px;"><span class="textLegendHighlightLightly">lightly active</span></h3>
1185
+ <h3 style="float: left; margin-left: 25px;"><span class="textLegendHighlightFairly">fairly active</span></h3>
1186
+ <h3 style="float: left; margin-left: 25px;"><span class="textLegendHighlightVery">very active</span></h3>
1187
+ <br/>
1188
+ </div>
1189
+ </div>
1190
+
1191
+
1192
+ <div class="content">
1193
+ <h3>30 day weight graph (in lbs)</h3>
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+ <div id="weightChart" style="margin-top: 8px; float: left">
1202
+
1203
+ <p style="margin: 0 10px 10px 0; font-size: 10px;">
1204
+ You are seeing this because you don't have Adobe Flash plugin installed. <a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash</a> to view this graph.
1205
+ </p>
1206
+
1207
+ </div>
1208
+
1209
+ <div style="margin-left: 130px;">
1210
+ <h3 style="float: left;"><span class="textLegendHighlight1">actual weight</span></h3>
1211
+ <h3 style="float: left; margin-left: 35px;"><span class="textLegendHighlight2">target weight</span></h3>
1212
+ <br/>
1213
+ </div>
1214
+ </div>
1215
+
1216
+
1217
+ <div class="content">
1218
+ <div id="sleepInfoTabs" class="tabs">
1219
+ <ul class="menu">
1220
+ <li class='active'><a class='active' href="#timeAsleepChart"><span>Hours asleep</span></a></li>
1221
+ <li ><a href="#timesAwakenedChart"><span>Times awakened</span></a></li>
1222
+ </ul>
1223
+ <h3 style="float: left; padding: 6px 10px;">30 day graph</h3>
1224
+ </div>
1225
+
1226
+
1227
+ <div id="timeAsleepChart" ></div>
1228
+
1229
+
1230
+ <div id="timesAwakenedChart" class="invisible"></div>
1231
+
1232
+ </div>
1233
+
1234
+ </div>
1235
+ </div>
1236
+ </div>
1237
+ <div id="teasers">
1238
+ <div id="profile" class="teaser firstTeaser clearfix">
1239
+ <div class="content" style="background: none;">
1240
+ <div class="clearfix">
1241
+ <div class="photo"><a href="/user/22CJ7H">
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+
1258
+
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+ <span class="profilePhoto">
1270
+ <img class="profileImage" width="100" height="100" alt="" title="" src="http://cache.fitbit.com/FD733464-63AF-92C7-7C1A-DF4037775B11_profile_100_square.jpg">
1271
+
1272
+ </span></a></div>
1273
+ <ul class="info">
1274
+ <li class="username">D​a​n</li>
1275
+
1276
+
1277
+
1278
+
1279
+ <li>Male, 28</li>
1280
+
1281
+
1282
+ <li>
1283
+
1284
+ 5' 5''
1285
+
1286
+ </li>
1287
+
1288
+
1289
+ <li>W​a​s​h​i​n​g​t​o​n​, D​C​, U​S</li>
1290
+ <li>Joined May 14, 2010</li>
1291
+ <li>&nbsp;</li><li>Synced 16 minutes ago</li>
1292
+ <li>&nbsp;</li><li>Battery level: Low</li><!-- Battery Level: 14% -->
1293
+ </ul>
1294
+ </div>
1295
+ </div>
1296
+
1297
+ <div class="content clearfix">
1298
+ <div class="actions">
1299
+ <ul>
1300
+ <li><a href="/user/22CJ7H">View profile</a></li>
1301
+ <li><a href="/user/profile/edit">Edit profile</a></li>
1302
+ <li><a href="/user/profile/uploadProfilePhoto">Change profile pic</a></li>
1303
+ <li class="padding"></li>
1304
+ </ul>
1305
+ <ul>
1306
+ <li>
1307
+ <a href="/user/profile/share"><span class="tooltip ttid-share-stats-tooltip">Share stats</span></a>
1308
+ <div id="share-stats-tooltip" class="tooltip-content">
1309
+ Share your daily or weekly average activity stats on your Twitter or Facebook account.
1310
+ </div>
1311
+ </li>
1312
+
1313
+ </ul>
1314
+
1315
+ </div>
1316
+ </div>
1317
+ </div>
1318
+
1319
+ <div class="teaser clearfix">
1320
+ <div class="header">My Stats</div>
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+
1345
+
1346
+
1347
+
1348
+
1349
+ <div id="bodyScales" class="content">
1350
+ <div id="bodyScalesHeader">
1351
+ <h3>My Body's</h3>
1352
+ <ul id="bodyScalesNav">
1353
+ <li><a href="#weightScale" class="active">Weight</a></li>
1354
+ <li><a href="#bmiScale">BMI</a></li>
1355
+ </ul>
1356
+
1357
+
1358
+
1359
+
1360
+ <a id="toggleBodyScales" href="/setUIState?index=5&amp;state=hidden&amp;targetLabel=Show+my+weight+and+BMI">Hide</a>
1361
+
1362
+ </div>
1363
+
1364
+ <div id="weightScale" class="pane active">
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+ <div class="scaleChart scaleChartWide" style="clear: both;">
1375
+ <div class="markerContainer">
1376
+ <!-- left: (weight - minWeight) / (maxWeight - minWeight), as a percentage -->
1377
+ <div id="curWeight" class="marker normal" style="left: 27.862646%;">
1378
+ 132
1379
+ </div>
1380
+ </div>
1381
+ <div class="bar">
1382
+ <span class="a">90</span>
1383
+ <span class="b">111</span>
1384
+ <span class="c">150</span>
1385
+ <span class="d">180</span>
1386
+ <span class="e">240+</span>
1387
+ </div>
1388
+ </div>
1389
+
1390
+ </div>
1391
+ <div id="bmiScale" class="pane">
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+ <div class="scaleChart scaleChartWide" style="clear: both;">
1401
+ <div class="markerContainer">
1402
+ <!-- left: (BMI - 15) / 25, as a percentage -->
1403
+ <div id="curBmi" class="marker normal" style="left: 27.862617%;">
1404
+ 22
1405
+ </div>
1406
+ </div>
1407
+ <div class="bar">
1408
+ <span class="a">15</span>
1409
+ <span class="b">18.5</span>
1410
+ <span class="c">25</span>
1411
+ <span class="d">30</span>
1412
+ <span class="e">40</span>
1413
+ </div>
1414
+ </div>
1415
+
1416
+
1417
+ <div style="margin: 15px 0 0 25px;">
1418
+ <span class="textLegendHighlightUnder">under</span> <span class="textLegendHighlightNormal">normal</span> <span class="textLegendHighlightOver">over</span> <span class="textLegendHighlightObese">obese</span>
1419
+ </div>
1420
+ </div>
1421
+ </div>
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+
1443
+
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+
1476
+
1477
+
1478
+
1479
+
1480
+
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+
1494
+ <div id="personalBests" class="content">
1495
+
1496
+ <ul id="bestRankNav">
1497
+ <li>My best stats</li>
1498
+ <li><a id="bestAllTime" class="selected" href="/user/22CJ7H/stats/getPersonalBests?period=alltime&amp;updateRate=DAILY">All-time</a></li>
1499
+ <li><a id="best30days" href="/user/22CJ7H/stats/getPersonalBests?period=30_days&amp;updateRate=DAILY">30 days</a></li>
1500
+ <li><a id="best7days" href="/user/22CJ7H/stats/getPersonalBests?period=7_days&amp;updateRate=DAILY">7 days</a></li>
1501
+ </ul>
1502
+
1503
+ <div id="bestStatsContainer">
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+
1571
+
1572
+
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+
1628
+
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+
1709
+
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+ <ul id="bestStats">
1854
+
1855
+ <li> <span class="statValue">25,794 steps</span> on <span class="statDate">May 27, 2010</span> </li>
1856
+
1857
+
1858
+ <li> <span class="statValue">3,482 calories burned</span> on <span class="statDate">May 27, 2010</span> </li>
1859
+
1860
+
1861
+ <li> <span class="statValue">12.73 miles</span> on <span class="statDate">May 27, 2010</span> </li>
1862
+
1863
+
1864
+ <li> <span class="statValue">1,908 active score</span> on <span class="statDate">May 27, 2010</span> </li>
1865
+
1866
+
1867
+ <li> <span class="statValue">176 very active min</span> on <span class="statDate">May 27, 2010</span> </li>
1868
+
1869
+ </ul>
1870
+
1871
+
1872
+ </div>
1873
+
1874
+ </div>
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+
1988
+
1989
+
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+
2031
+
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+
2073
+
2074
+
2075
+
2076
+
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+
2132
+
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+
2146
+
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+
2160
+
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+
2188
+
2189
+
2190
+
2191
+
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+
2202
+
2203
+
2204
+
2205
+
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+
2216
+
2217
+
2218
+
2219
+
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+
2230
+
2231
+
2232
+
2233
+
2234
+
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+
2244
+
2245
+
2246
+
2247
+
2248
+
2249
+
2250
+
2251
+
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+
2300
+
2301
+
2302
+
2303
+
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+
2311
+
2312
+
2313
+
2314
+
2315
+
2316
+
2317
+
2318
+
2319
+
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+
2328
+
2329
+
2330
+
2331
+
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+
2346
+
2347
+
2348
+
2349
+
2350
+
2351
+
2352
+
2353
+
2354
+
2355
+
2356
+
2357
+
2358
+
2359
+
2360
+
2361
+
2362
+
2363
+
2364
+ <form id="stats" class="content" action="/user/22CJ7H/stats/getConstrainedStats" method="get">
2365
+ <fieldset id="rankingCategories">
2366
+
2367
+
2368
+
2369
+
2370
+
2371
+ <legend><span>Rank by</span></legend>
2372
+
2373
+
2374
+ <ul>
2375
+
2376
+ <li>
2377
+
2378
+ <input type="checkbox" id="fitbitConstraint" name="constraints" value="tracker" checked="checked" >
2379
+ <label for="fitbitConstraint" class="checked">Fitbit</label>
2380
+ </li>
2381
+
2382
+
2383
+
2384
+ <li>
2385
+ <input type="checkbox" id="genderConstraint" name="constraints" value="gender">
2386
+ <label for="genderConstraint">Gender</label>
2387
+ </li>
2388
+
2389
+
2390
+
2391
+ <li>
2392
+ <input type="checkbox" id="ageConstraint" name="constraints" value="age">
2393
+ <label for="ageConstraint">Age</label>
2394
+ </li>
2395
+
2396
+
2397
+
2398
+ <li>
2399
+ <input type="checkbox" id="bmiConstraint" name="constraints" value="bmi">
2400
+ <label for="bmiConstraint">BMI</label>
2401
+ </li>
2402
+
2403
+
2404
+ </ul>
2405
+
2406
+
2407
+ <div id="rankingActions">
2408
+ <input type="hidden" name="values" value="percentile,value">
2409
+ <input type="hidden" name="statistics" value="avg_activity_7_days,avg_steps_7_days,avg_mins_very_active_7_days,avg_distance_miles_7_days">
2410
+ <input type="hidden" name="aggregates" value="average">
2411
+ <input type="hidden" name="displayContext" value="faceted">
2412
+ <input type="hidden" name="valueWhenUnavailable" value="--" />
2413
+ <input type="hidden" name="defaultConstraints" value="global" />
2414
+ <input type="hidden" name="updateRate" value="WEEKLY" />
2415
+ <button type="submit">Go</button>
2416
+ </div>
2417
+ </fieldset>
2418
+
2419
+ <table>
2420
+ <caption id="networkCaption">
2421
+ My rank among <span id="network.name">members who <strong>use a Fitbit</strong></span>.
2422
+ </caption>
2423
+
2424
+ <thead>
2425
+ <tr>
2426
+ <th class="avg">7 day <abbr title="average">avg.</abbr></th>
2427
+ <th>Me</th>
2428
+ <th>All</th>
2429
+ <th>%Rank</th>
2430
+ </tr>
2431
+ </thead>
2432
+
2433
+ <tfoot>
2434
+ <tr>
2435
+
2436
+ <td colspan="4">stats updated weekly</td>
2437
+ </tr>
2438
+ </tfoot>
2439
+
2440
+ <tbody>
2441
+ <tr>
2442
+ <th>Steps</th>
2443
+ <td id="values.avg_steps_7_days.user.value">9,744</td>
2444
+ <td id="values.avg_steps_7_days.network.average">7,144</td>
2445
+ <td id="values.avg_steps_7_days.user.percentile">77.0</td>
2446
+ </tr>
2447
+ <tr>
2448
+ <th>Active score</th>
2449
+ <td id="values.avg_activity_7_days.user.value">780</td>
2450
+ <td id="values.avg_activity_7_days.network.average">348</td>
2451
+ <td id="values.avg_activity_7_days.user.percentile">85.9</td>
2452
+ </tr>
2453
+ <tr>
2454
+ <th>Distance (miles)</th>
2455
+ <td id="values.avg_distance_miles_7_days.user.value">4.37</td>
2456
+ <td id="values.avg_distance_miles_7_days.network.average">3.50</td>
2457
+ <td id="values.avg_distance_miles_7_days.user.percentile">73.0</td>
2458
+ </tr>
2459
+
2460
+ <tr>
2461
+ <th>Very active <abbr title="minutes">min.</abbr></th>
2462
+ <td id="values.avg_mins_very_active_7_days.user.value">46</td>
2463
+ <td id="values.avg_mins_very_active_7_days.network.average">18</td>
2464
+ <td id="values.avg_mins_very_active_7_days.user.percentile">91.4</td>
2465
+ </tr>
2466
+
2467
+ </tbody>
2468
+ </table>
2469
+ </form>
2470
+
2471
+
2472
+
2473
+ <div class="content firstContent">
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+
2482
+
2483
+
2484
+
2485
+
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+
2496
+
2497
+
2498
+
2499
+
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+
2510
+
2511
+
2512
+ <div id="benchmarkingPremiumModal" class="form modal invisible" style="padding-top: 49px;">
2513
+ <div class="hd">
2514
+ <div class="header" style="line-height: 49px;">Benchmarking</div>
2515
+ <div class="closeButton" style="line-height: 49px;">
2516
+ <a href="#" onmousedown="fitbit.app.premium.benchmarking.onClose(); return false;" onclick="return false;">Close</a>
2517
+ </div>
2518
+ </div>
2519
+ <div class="body" style="padding-bottom: 15px; padding-top: 30px;">
2520
+ <div style="margin-bottom: 15px; text-align:justify;">
2521
+ How do I compare to others in activity, sleep, and weight? Find out with
2522
+ premium benchmarking - an interactive tool that lets you explore the
2523
+ entire Fitbit database to see how you stand up against your peers.
2524
+ </div>
2525
+
2526
+
2527
+
2528
+ <div style="margin-bottom: 15px; text-align:justify;">
2529
+ You are eligible to try a free one day trial of benchmarking. At the end of
2530
+ the trial you can choose to sign up for a premium membership, but
2531
+ there is no commitment whatsoever.
2532
+ </div>
2533
+
2534
+
2535
+
2536
+ <div style="margin-bottom: 7px;">
2537
+ A premium membership unlocks many more site features:
2538
+ </div>
2539
+ <div style="float: left; clear: both; width: 100%; margin-bottom: 20px;">
2540
+ <div style="float: left; margin-left: 40px;">
2541
+ <ul style="list-style:disc inside none;">
2542
+ <li style="list-style:disc inside none; font-size: 12px;">Fitbit trainer</li>
2543
+ <li style="list-style:disc inside none; font-size: 12px;">Personalized reports</li>
2544
+ </ul>
2545
+ </div>
2546
+ <div style="float: left; margin-left: 40px;">
2547
+ <ul style="list-style:disc inside none;">
2548
+
2549
+ <li style="list-style:disc inside none; font-size: 12px;">Unlimited custom trackers</li>
2550
+ <li style="list-style:disc inside none; font-size: 12px;">Much more!</li>
2551
+ </ul>
2552
+ </div>
2553
+ </div>
2554
+ <div style=" margin-top: 4px; font-size:15px;">
2555
+ <a href="/premium/about">Learn more about premium</a>
2556
+ </div>
2557
+
2558
+ <div class="clearfix" style="margin: 25px 0 0 0;">
2559
+ <div id="buttonsContainer">
2560
+
2561
+ <div id="bGetFreeTrial">
2562
+ <a href="#" title="Get Free Report. No Credit Card Required."
2563
+ onmousedown="fitbit.app.premium.addTrialSubscription('TRIAL_COMMUNITY_BENCHMARKING', '/premium/cb', 'trialBenchmark_dashPage_benchmarkUpsellDialog'); return false;"
2564
+ onclick="return false;">
2565
+ <span>Start Free Trial</span>
2566
+ <br/>
2567
+ <span style="font-size:8px;">NO CREDIT CARD REQUIRED</span>
2568
+ </a>
2569
+ </div>
2570
+
2571
+ <div id="bBuyPremium">
2572
+ <a href="#" title="Buy Premium"
2573
+ onmousedown="window.location='/order?packName=fitbit_premium&doneUrl=/premium/cb&cancelUrl=/&linkId=premiumPack_dashPage_benchmarkUpsellDialog'; return false;"
2574
+ onclick="return false;">Buy Premium</a>
2575
+ </div>
2576
+ <div class="lOr">or</div>
2577
+ <div id="bNoThanks">
2578
+ <a title="Cancel" href="#" onclick="fitbit.app.premium.benchmarking.onClose(); return false;">No thanks</a>
2579
+ </div>
2580
+ </div>
2581
+
2582
+ </div>
2583
+ </div>
2584
+ </div>
2585
+
2586
+ <div>Are you addicted to data?</div>
2587
+ <a href="#" onmousedown="fitbit.app.premium.benchmarking.showDialog();" onclick="return false;" style="display: block; text-decoration: underline;">Try
2588
+ out premium benchmarking with a free trial</a>
2589
+
2590
+
2591
+
2592
+
2593
+
2594
+
2595
+
2596
+
2597
+
2598
+ </div>
2599
+ </div>
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+
2612
+
2613
+
2614
+
2615
+
2616
+
2617
+
2618
+
2619
+ <div id="friends" class="teaser">
2620
+ <h3 class="header">Friends</h3>
2621
+
2622
+ <div class="content">
2623
+
2624
+
2625
+
2626
+
2627
+
2628
+ <div class="blank placeholder clearfix">
2629
+ <div style="margin-top: 5px; font-weight: bold;">Are you more active than your friends?</div>
2630
+ <div style="margin-top: 7px;">Invite them to join Fitbit and find out.</div>
2631
+ <div style="margin-top: 7px; margin-bottom: 7px;">You will get ranked nightly on categories such as who walks the most steps, etc.</div>
2632
+
2633
+
2634
+
2635
+
2636
+
2637
+
2638
+
2639
+
2640
+
2641
+
2642
+
2643
+
2644
+
2645
+
2646
+
2647
+
2648
+ <a href="#" onclick="return false;" onmousedown="fitbit.app.user.friends.showFriendInvitationDialog('Dan', 'dan@fake.com', '', '');">Invite friends!</a>
2649
+
2650
+ </div>
2651
+
2652
+
2653
+
2654
+
2655
+ <ul class="friendActions">
2656
+
2657
+ <li>
2658
+
2659
+
2660
+
2661
+
2662
+
2663
+
2664
+
2665
+
2666
+
2667
+
2668
+
2669
+
2670
+
2671
+
2672
+ <a href="#" onclick="return false;" onmousedown="fitbit.app.user.friends.showFriendInvitationDialog('Dan', 'dan@fake.com', '', '');">Invite friends!</a>
2673
+ </li>
2674
+
2675
+ </ul>
2676
+
2677
+ </div>
2678
+
2679
+ </div>
2680
+
2681
+
2682
+
2683
+
2684
+
2685
+
2686
+
2687
+
2688
+
2689
+
2690
+
2691
+
2692
+
2693
+
2694
+
2695
+
2696
+
2697
+
2698
+
2699
+
2700
+
2701
+
2702
+
2703
+
2704
+
2705
+ <div id="myGroups" class="teaser">
2706
+ <h3 class="header">My Groups</h3>
2707
+
2708
+ <div class="content">
2709
+
2710
+
2711
+
2712
+ <p>You do not belong to any groups, yet.</p>
2713
+
2714
+
2715
+ </div>
2716
+
2717
+ </div>
2718
+
2719
+
2720
+ </div>
2721
+ </div>
2722
+ </div>
2723
+
2724
+
2725
+
2726
+
2727
+ <div id="friendInvitationModal" class="modal invisible" style="padding-top: 49px;">
2728
+ <div class="hd">
2729
+ <div class="header" style="line-height: 49px;">Invite friends!</div>
2730
+ <div class="closeButton" style="line-height: 49px;"><a href="#friendInvitationDialogCloseButton" onmousedown="fitbit.app.user.friends.onClose(); return false;" onclick="return false;">Close</a></div>
2731
+ </div>
2732
+ <div class="body" style="padding-bottom: 15px; padding-top: 15px;">
2733
+ <form id="friendInvitation" style="margin-bottom: 5px" name="friendInvitation" action="/friends/friendInvitation" method="post">
2734
+ <div id="friendInvitationModalErrors" class="error"></div>
2735
+ <div class="formline">
2736
+ <h3>From:</h3>
2737
+ <div id="from" class="text" style="font-weight: bold; width: 486px; padding: 3px; margin-top: 5px; margin-bottom: 5px; word-wrap: break-word;"></div>
2738
+ </div>
2739
+ <div id="nameTo" class="invisible">
2740
+ <div class="formline">
2741
+ <h3>To:</h3>
2742
+ <div id="displayName" class="text" style="font-weight: bold; width: 486px; padding: 3px; margin-top: 5px; margin-bottom: 5px; word-wrap: break-word;">Dan</div>
2743
+ </div>
2744
+ </div>
2745
+ <div id="emailsTo" class="invisible" style="margin-top: 10px; margin-bottom: 10px">
2746
+ <div class="formline">
2747
+ <h3 style="width: 100%;">To: <span style="font-size: smaller; font-weight: normal;">(Separate emails with commas.)</span><a href="#" onclick="showPlaxoABChooser('emails', '/tools/emailChooser'); return false;" style="float: right;">import from my address book</a></h3>
2748
+ <textarea id="emails" style="overflow: auto; width: 486px; padding: 3px;" name="emails" class="text" rows="5"></textarea>
2749
+ </div>
2750
+ </div>
2751
+ <div class="formline">
2752
+ <h3>Message:</h3>
2753
+
2754
+ <textarea id="message" style="overflow: auto; width: 486px; padding: 3px; margin-top: 5px" onblur="return fitbit.app.user.friends.isMaxLength(this)" name="message" onkeyup="return fitbit.app.user.friends.isMaxLength(this)" class="text" rows="8">
2755
+ Hi,
2756
+
2757
+ Help me become more fit.
2758
+
2759
+ Become friends with me on Fitbit.com and see who can walk the most steps per day, run the farthest, or be the most active.</textarea>
2760
+ </div>
2761
+ <input id="inviteeId" name="inviteeId" value="" type="hidden" />
2762
+ <input name="apiFormat" value="htmljson" type="hidden" />
2763
+ <input name="_eventName" value="send" type="hidden" />
2764
+ <div style="display: none;"><input type="hidden" name="_sourcePage" value="XFPX8J_bZgLGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKxV2RUoL5W60NfHjCnPkhut" /><input type="hidden" name="__fp" value="HO8JnqvsRg8=" /></div></form>
2765
+ </div>
2766
+ </div>
2767
+
2768
+
2769
+
2770
+
2771
+ <div id="messageBoxDialog" class="modal invisible smallModal">
2772
+ <div class="hd">
2773
+ <div id="messageBoxHeader" class="header">Message</div>
2774
+ </div>
2775
+ <div class="body">
2776
+ <div id="messageBoxBody"></div>
2777
+ </div>
2778
+ </div>
2779
+
2780
+
2781
+
2782
+
2783
+
2784
+
2785
+
2786
+
2787
+
2788
+ <div id="selectNewGoalModal" class="modal invisible">
2789
+ <div class="hd">
2790
+ <div class="header">Select Another Goal</div>
2791
+ <div class="closeButton"><a href="#primaryGoalCloseButton" onmousedown="fitbit.app.user.goal.primary.onClose(); return false;" onclick="return false;">Close</a></div>
2792
+ </div>
2793
+ <div class="body">
2794
+ <div id="fitnessGoals" class="section section1">
2795
+ <h2>Fitness Goals</h2>
2796
+
2797
+
2798
+
2799
+
2800
+ <div class="goal">
2801
+ <h3>Weekly Steps Goal of
2802
+ <span id="target.47476">70000</span>
2803
+ steps
2804
+ </h3>
2805
+ <div class="progressIndicator">
2806
+ <div class="bar">
2807
+ <div class="base"></div>
2808
+ <div class="marker" id="bar.47476" style="width: 11%;"></div>
2809
+ </div>
2810
+ <div class="label">
2811
+ <span id="percentComplete.47476">
2812
+ 11
2813
+ </span>% Complete
2814
+ </div>
2815
+ </div>
2816
+ <div class="actions">
2817
+ <span><a href="#" onclick="return false;" onmousedown="fitbit.app.user.goal.primary.onEdit( 'My goal is to walk or run more than', 'steps every week', 47476, 70000.0, 0, 0 );">Edit</a></span>
2818
+ <span>
2819
+
2820
+ &nbsp;Primary
2821
+
2822
+
2823
+ </span>
2824
+ </div>
2825
+ </div>
2826
+
2827
+ <div class="goal">
2828
+ <h3>
2829
+ Weekly Distance Goal of
2830
+ <span id="target.47477">
2831
+ 35
2832
+ </span>
2833
+ miles
2834
+ </h3>
2835
+ <div class="progressIndicator">
2836
+ <div class="bar">
2837
+ <div class="base"></div>
2838
+ <div class="marker" id="bar.47477" style="width: 10%;"></div>
2839
+ </div>
2840
+ <div class="label"><span id="percentComplete.47477">10</span>% Complete</div>
2841
+ </div>
2842
+ <div class="actions">
2843
+ <span><a href="#" onclick="return false;" onmousedown="fitbit.app.user.goal.primary.onEdit( 'My goal is to walk or run more than', 'miles every week', 47477, 35, 0, 0, false );">
2844
+ Edit
2845
+ </a></span>
2846
+ <span>
2847
+
2848
+
2849
+
2850
+ <a href="#" onclick="return false;" onmousedown="fitbit.app.user.goal.primary.onSelect( 47477 );">Select</a>
2851
+
2852
+
2853
+ </span>
2854
+ </div>
2855
+ </div>
2856
+
2857
+
2858
+ <div id="weightGoals" class="section section3">
2859
+ <h2>Weight Goals</h2>
2860
+ <div class="goal">
2861
+ <h3>
2862
+ My weight goal is to be <span id="target.47493">129 lbs</span>
2863
+ </h3>
2864
+ <div class="progressIndicator">
2865
+ <div class="bar">
2866
+ <div class="base"></div>
2867
+ <div class="marker" id="bar.47493" style="width: 40%;"></div>
2868
+ </div>
2869
+ <div class="label">
2870
+ <span id="percentComplete.47493">40</span>% Complete
2871
+ </div>
2872
+ </div>
2873
+ <div class="actions">
2874
+ <span><a href="#" onclick="return false;" onmousedown="fitbit.app.goal.weight.showGoalDialog( false, fitbit.app.user.goal.primary );">
2875
+ Edit
2876
+ </a></span>
2877
+ <span>
2878
+
2879
+
2880
+
2881
+ <a href="#" onclick="return false;" onmousedown="fitbit.app.user.goal.primary.onSelect( 47493 );">Select</a>
2882
+
2883
+
2884
+ </span>
2885
+ </div>
2886
+ </div>
2887
+ </div>
2888
+
2889
+
2890
+ <div class="form clearfix invisible">
2891
+ <span class="cancel"><a href="#pgCancel" onmousedown="fitbit.app.user.goal.primary.onClose(); return false;" onclick="return false;">Cancel</a></span>
2892
+ </div>
2893
+ <div style="margin-top: 15px;">
2894
+
2895
+
2896
+
2897
+
2898
+
2899
+
2900
+
2901
+
2902
+
2903
+
2904
+
2905
+
2906
+
2907
+
2908
+
2909
+
2910
+
2911
+
2912
+
2913
+
2914
+
2915
+
2916
+
2917
+
2918
+
2919
+
2920
+
2921
+
2922
+
2923
+
2924
+
2925
+
2926
+
2927
+
2928
+
2929
+
2930
+
2931
+
2932
+
2933
+
2934
+
2935
+ <div id="trainerPremiumModal" class="form modal invisible" style="padding-top: 49px;">
2936
+ <div class="hd">
2937
+ <div class="header" style="line-height: 49px;">Fitbit Trainer</div>
2938
+ <div class="closeButton" style="line-height: 49px;">
2939
+ <a href="#" onmousedown="fitbit.app.premium.trainer.onClose(); return false;" onclick="return false;">Close</a>
2940
+ </div>
2941
+ </div>
2942
+ <div class="body" style="padding-bottom: 15px; padding-top: 30px;">
2943
+ <div style="margin-bottom: 15px; text-align:justify;">
2944
+ The Fitbit trainer helps you set and track attainable goals to get more
2945
+ active. It does this by first learning your current activity level and then
2946
+ creating a personalized fitness plan that pushes you to gradually
2947
+ increase your movement over the course of 12 weeks. Like a fitness
2948
+ coach, it adapts the plan to meet your changing needs and help you
2949
+ attain your fitness goals.
2950
+ </div>
2951
+
2952
+
2953
+
2954
+ <div style="margin-bottom: 15px; text-align:justify;">
2955
+ The trainer comes as part of a premium membership but you are
2956
+ eligible to try it in a free week-long trial. At the end of the trial you can
2957
+ choose to sign up for a premium membership, but there is no
2958
+ commitment whatsoever.
2959
+ </div>
2960
+
2961
+
2962
+
2963
+ <div style="margin-bottom: 7px;">
2964
+ A premium membership unlocks many more site features:
2965
+ </div>
2966
+ <div style="float: left; clear: both; width: 100%; margin-bottom: 20px;">
2967
+ <div style="float: left; margin-left: 40px;">
2968
+ <ul style="list-style:disc inside none;">
2969
+ <li style="list-style:disc inside none; font-size: 12px;">Benchmarking</li>
2970
+ <li style="list-style:disc inside none; font-size: 12px;">Personalized reports</li>
2971
+ </ul>
2972
+ </div>
2973
+ <div style="float: left; margin-left: 40px;">
2974
+ <ul style="list-style:disc inside none;">
2975
+
2976
+ <li style="list-style:disc inside none; font-size: 12px;">Unlimited custom trackers</li>
2977
+ <li style="list-style:disc inside none; font-size: 12px;">Much more!</li>
2978
+ </ul>
2979
+ </div>
2980
+ </div>
2981
+ <div style=" margin-top: 4px; font-size:15px;">
2982
+ <a href="/premium/about">Learn more about premium</a>
2983
+ </div>
2984
+
2985
+ <div class="clearfix" style="margin: 25px 0 0 0;">
2986
+ <div id="buttonsContainer">
2987
+
2988
+ <div id="bGetFreeTrial">
2989
+ <a href="#" title="Get Free Report. No Credit Card Required."
2990
+ onmousedown="fitbit.app.premium.addTrialSubscription('TRIAL_ALGORITHMIC_TRAINER', '/trainer/trainerSetup', 'trialTrainer_dashPage_trainerUpsellDialog'); return false;"
2991
+ onclick="return false;">
2992
+ <span>Start Free Trial</span>
2993
+ <br/>
2994
+ <span style="font-size:8px;">NO CREDIT CARD REQUIRED</span>
2995
+ </a>
2996
+ </div>
2997
+
2998
+ <div id="bBuyPremium">
2999
+ <a href="#" title="Buy Premium"
3000
+ onmousedown="window.location='/order?packName=fitbit_premium&doneUrl=/trainer/trainerSetup&cancelUrl=/&linkId=premiumPack_dashPage_trainerUpsellDialog'; return false;"
3001
+ onclick="return false;">Buy Premium</a>
3002
+ </div>
3003
+ <div class="lOr">or</div>
3004
+ <div id="bNoThanks">
3005
+ <a title="Cancel" href="#" onclick="fitbit.app.premium.trainer.onClose(); return false;">No thanks</a>
3006
+ </div>
3007
+ </div>
3008
+
3009
+ </div>
3010
+ </div>
3011
+ </div>
3012
+
3013
+ <div style="float:left;margin-right:10px;font-size:12px;color:#000000;">Want to challenge yourself to be more active?</div>
3014
+ <a href="#" onmousedown="fitbit.app.premium.trainer.showDialog();" onclick="return false;"
3015
+ style="display: block; text-decoration: underline;font-size:12px;">Start a free week trial of the Fitbit trainer now!</a>
3016
+
3017
+
3018
+
3019
+
3020
+
3021
+
3022
+
3023
+
3024
+
3025
+ </div>
3026
+ </div>
3027
+
3028
+ </div>
3029
+ </div>
3030
+
3031
+
3032
+
3033
+
3034
+
3035
+
3036
+
3037
+
3038
+
3039
+
3040
+
3041
+
3042
+
3043
+
3044
+
3045
+
3046
+ <div id="weightGoalDialog" class="invisible modal smallModal">
3047
+ <div class="hd">
3048
+ <div class="header" style="width: 450px;">Set Weight Goal</div>
3049
+ <div class="closeButton"><a href="#" onmousedown="fitbit.app.goal.weight.onCancel(); return false;" onclick="return false;">Close</a></div>
3050
+ </div>
3051
+ <div class="body">
3052
+ <form id="weightGoalForm" name="weightGoalForm" action="/goal/edit" class="form" method="post">
3053
+ <div id="weightGoalDialogErrors" class="error"></div>
3054
+ <div class="formline" style="text-align: left;">
3055
+ I would like to
3056
+ <select id="weightObjectiveId" name="weightObjectiveId">
3057
+ <option selected="selected" value="1">lose weight</option><option value="2">gain weight</option><option value="0">maintain my weight</option>
3058
+ </select>
3059
+ </div>
3060
+ <div class="formline" style="margin-top: 5px; text-align: left;">
3061
+ <span>My target weight is</span>
3062
+
3063
+ <span style="position: relative;" id="usWeightBlock">
3064
+ <input id="goalTargetLbs" maxlength="6" style="width: 50px; padding-left:2px; padding-right:2px;" name="goalTargetLbs" value="129" class="erasable" type="text" onchange="fitbit.app.goal.weight.clearInputBoxes(['goalTargetStone', 'goalTargetStoneLbs', 'goalTargetKg']);" size="1" />&nbsp;lbs
3065
+ </span>
3066
+
3067
+ <span style="position: relative;" id="ukWeightBlock" class="invisible">
3068
+ <input id="goalTargetStone" maxlength="3" style="width: 25px; padding-left:2px; padding-right:2px;" name="goalTargetStone" value="9" class="erasable" type="text" onchange="fitbit.app.goal.weight.clearInputBoxes(['goalTargetLbs', 'goalTargetKg']);" size="1" />&nbsp;st
3069
+ <input id="goalTargetStoneLbs" maxlength="5" style="width: 40px; padding-left:2px; padding-right:2px;" name="goalTargetStoneLbs" value="3" class="erasable" type="text" onchange="fitbit.app.goal.weight.clearInputBoxes(['goalTargetLbs', 'goalTargetKg']);" size="1" />&nbsp;lbs
3070
+ </span>
3071
+
3072
+ <span style="position: relative;" id="metricWeightBlock" class="invisible">
3073
+ <input id="goalTargetKg" maxlength="6" style="width: 50px; padding-left:2px; padding-right:2px;" name="goalTargetKg" value="58.5" class="erasable" type="text" onchange="fitbit.app.goal.weight.clearInputBoxes(['goalTargetLbs', 'goalTargetStone', 'goalTargetStoneLbs']);" size="1" />&nbsp;kg
3074
+ </span>
3075
+
3076
+ <span class="unitSwitcher">
3077
+ <br/>Use
3078
+ <select id="weightSystem" name="weightSystem" onchange="fitbit.app.goal.weight.switchWeightSystem();">
3079
+ <option selected="selected" value="US">lbs.</option>
3080
+ <option value="UK">stone</option>
3081
+ <option value="METRIC">kg.</option>
3082
+ </select>
3083
+ </span>
3084
+
3085
+ </div>
3086
+ <div class="formline invisible" style="display: none;">
3087
+ <select id="weightGoalAccessLevelId" name="goalAccessLevelId">
3088
+ <option selected="selected" value="0">Private</option><option value="1">Public</option><option value="2">Friends</option>
3089
+ </select>
3090
+ </div>
3091
+
3092
+ <input name="goalId" value="47493" type="hidden" />
3093
+ <div style="display: none;"><input type="hidden" name="_sourcePage" value="rRiKCtaksRXGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKxV2RUoL5W60NfHjCnPkhut" /><input type="hidden" name="__fp" value="UjyGCIyQ6xvZSzk-BywpH6uz6d7GQgXeWokk34e_H-v4dpOCfXDsjnxKbRHu3kSr_CW75C6BPXAtjCOyW6lk3w==" /></div></form>
3094
+ </div>
3095
+
3096
+ <div class="ft" style="border:none;">
3097
+ <span class="button-group">
3098
+ <button class="default" type="button" onclick="fitbit.app.goal.weight.handleSubmit(); return false;">Set</button>
3099
+ </span>
3100
+ </div>
3101
+ <div style="margin: 15px;">
3102
+
3103
+
3104
+
3105
+
3106
+
3107
+
3108
+
3109
+
3110
+
3111
+
3112
+
3113
+
3114
+
3115
+
3116
+
3117
+
3118
+
3119
+
3120
+
3121
+
3122
+
3123
+
3124
+
3125
+
3126
+
3127
+
3128
+
3129
+
3130
+
3131
+
3132
+
3133
+
3134
+
3135
+
3136
+
3137
+
3138
+
3139
+
3140
+
3141
+
3142
+
3143
+ <div id="trainerPremiumModal" class="form modal invisible" style="padding-top: 49px;">
3144
+ <div class="hd">
3145
+ <div class="header" style="line-height: 49px;">Fitbit Trainer</div>
3146
+ <div class="closeButton" style="line-height: 49px;">
3147
+ <a href="#" onmousedown="fitbit.app.premium.trainer.onClose(); return false;" onclick="return false;">Close</a>
3148
+ </div>
3149
+ </div>
3150
+ <div class="body" style="padding-bottom: 15px; padding-top: 30px;">
3151
+ <div style="margin-bottom: 15px; text-align:justify;">
3152
+ The Fitbit trainer helps you set and track attainable goals to get more
3153
+ active. It does this by first learning your current activity level and then
3154
+ creating a personalized fitness plan that pushes you to gradually
3155
+ increase your movement over the course of 12 weeks. Like a fitness
3156
+ coach, it adapts the plan to meet your changing needs and help you
3157
+ attain your fitness goals.
3158
+ </div>
3159
+
3160
+
3161
+
3162
+ <div style="margin-bottom: 15px; text-align:justify;">
3163
+ The trainer comes as part of a premium membership but you are
3164
+ eligible to try it in a free week-long trial. At the end of the trial you can
3165
+ choose to sign up for a premium membership, but there is no
3166
+ commitment whatsoever.
3167
+ </div>
3168
+
3169
+
3170
+
3171
+ <div style="margin-bottom: 7px;">
3172
+ A premium membership unlocks many more site features:
3173
+ </div>
3174
+ <div style="float: left; clear: both; width: 100%; margin-bottom: 20px;">
3175
+ <div style="float: left; margin-left: 40px;">
3176
+ <ul style="list-style:disc inside none;">
3177
+ <li style="list-style:disc inside none; font-size: 12px;">Benchmarking</li>
3178
+ <li style="list-style:disc inside none; font-size: 12px;">Personalized reports</li>
3179
+ </ul>
3180
+ </div>
3181
+ <div style="float: left; margin-left: 40px;">
3182
+ <ul style="list-style:disc inside none;">
3183
+
3184
+ <li style="list-style:disc inside none; font-size: 12px;">Unlimited custom trackers</li>
3185
+ <li style="list-style:disc inside none; font-size: 12px;">Much more!</li>
3186
+ </ul>
3187
+ </div>
3188
+ </div>
3189
+ <div style=" margin-top: 4px; font-size:15px;">
3190
+ <a href="/premium/about">Learn more about premium</a>
3191
+ </div>
3192
+
3193
+ <div class="clearfix" style="margin: 25px 0 0 0;">
3194
+ <div id="buttonsContainer">
3195
+
3196
+ <div id="bGetFreeTrial">
3197
+ <a href="#" title="Get Free Report. No Credit Card Required."
3198
+ onmousedown="fitbit.app.premium.addTrialSubscription('TRIAL_ALGORITHMIC_TRAINER', '/trainer/trainerSetup', 'trialTrainer_dashPage_trainerUpsellDialog'); return false;"
3199
+ onclick="return false;">
3200
+ <span>Start Free Trial</span>
3201
+ <br/>
3202
+ <span style="font-size:8px;">NO CREDIT CARD REQUIRED</span>
3203
+ </a>
3204
+ </div>
3205
+
3206
+ <div id="bBuyPremium">
3207
+ <a href="#" title="Buy Premium"
3208
+ onmousedown="window.location='/order?packName=fitbit_premium&doneUrl=/trainer/trainerSetup&cancelUrl=/&linkId=premiumPack_dashPage_trainerUpsellDialog'; return false;"
3209
+ onclick="return false;">Buy Premium</a>
3210
+ </div>
3211
+ <div class="lOr">or</div>
3212
+ <div id="bNoThanks">
3213
+ <a title="Cancel" href="#" onclick="fitbit.app.premium.trainer.onClose(); return false;">No thanks</a>
3214
+ </div>
3215
+ </div>
3216
+
3217
+ </div>
3218
+ </div>
3219
+ </div>
3220
+
3221
+ <div style="float:left;margin-right:10px;font-size:12px;color:#000000;">Want to challenge yourself to be more active?</div>
3222
+ <a href="#" onmousedown="fitbit.app.premium.trainer.showDialog();" onclick="return false;"
3223
+ style="display: block; text-decoration: underline;font-size:12px;">Start a free week trial of the Fitbit trainer now!</a>
3224
+
3225
+
3226
+
3227
+
3228
+
3229
+
3230
+
3231
+
3232
+
3233
+ </div>
3234
+ </div>
3235
+
3236
+
3237
+
3238
+
3239
+
3240
+ <div id="goalDialog" class="modal invisible smallModal">
3241
+ <div class="hd">
3242
+ <div class="header">Set Goal</div>
3243
+ <div class="closeButton"><a href="#" onmousedown="fitbit.app.user.goal.onCancel(); return false;" onclick="return false;">Close</a></div>
3244
+ </div>
3245
+ <div class="body">
3246
+ <form id="goalForm" name="goalForm" action="/goal/edit" class="form" method="post">
3247
+ <div id="goalDialogErrors" class="error"></div>
3248
+ <div class="formline">
3249
+ <span id="predicateSpan"></span>
3250
+ <select id="goalEvaluationOperatorId" name="goalEvaluationOperatorId" class="field">
3251
+ <option value="0">more than</option><option value="1">less than</option>
3252
+ </select>
3253
+ </div>
3254
+ <div class="formline">
3255
+ <span id="prefix"></span>
3256
+ <input id="goalTarget" maxlength="6" style="width: 50px; margin-top: 5px;" name="goalTarget" value="129" class="field" type="text" />
3257
+ <span id="subject"></span>
3258
+ </div>
3259
+ <div class="formline invisible" style="display: none;">
3260
+ <select id="goalAccessLevelId" name="goalAccessLevelId">
3261
+ <option selected="selected" value="0">Private</option><option value="1">Public</option><option value="2">Friends</option>
3262
+ </select>
3263
+ </div>
3264
+ <div class="formline invisible" id="descriptionContainer">
3265
+ <br />
3266
+ <span id="descriptionSpan"></span>
3267
+ </div>
3268
+ <input id="goalId" name="goalId" value="47493" type="hidden" />
3269
+ <div style="display: none;"><input type="hidden" name="_sourcePage" value="3SYv03zTJDjGrJMFkFsv6XbX0f6OV1Ndj1zeGcz7OKxV2RUoL5W60NfHjCnPkhut" /><input type="hidden" name="__fp" value="7v2Zp_bRrrPZSzk-BywpH2PLYydv5fjWv6NNHK0I9EvtE2syIYzAC0EnBXPLV-hFevPFgJer4hI=" /></div></form>
3270
+ </div>
3271
+ </div>
3272
+
3273
+
3274
+
3275
+
3276
+
3277
+
3278
+
3279
+
3280
+
3281
+
3282
+
3283
+
3284
+
3285
+
3286
+
3287
+
3288
+
3289
+ <div id="footer">
3290
+ <div id="columns">
3291
+ <div class="column">
3292
+ <h4>Help</h4>
3293
+ <ul>
3294
+
3295
+ <li><a href="http://www.fitbit.com/forums">Forums</a></li>
3296
+
3297
+ <li><a href="http://www.fitbit.com/faq">FAQ</a></li>
3298
+ <li><a href="http://www.fitbit.com/manual">Product Manual</a></li>
3299
+ <li><a href="http://www.fitbit.com/returns">Returns and Warranty</a></li>
3300
+ <li><a href="http://www.fitbit.com/contact">Contact</a></li>
3301
+ </ul>
3302
+ </div>
3303
+ <div class="column">
3304
+ <h4>Downloads</h4>
3305
+ <ul>
3306
+ <li><a href="http://www.fitbit.com/start">Windows XP, Vista and 7</a></li>
3307
+ <li><a href="http://www.fitbit.com/start">Mac OS X</a></li>
3308
+ </ul>
3309
+ </div>
3310
+ <div class="column">
3311
+ <h4>Explore</h4>
3312
+ <ul>
3313
+ <li><a href="http://www.fitbit.com/premium/about">Premium Membership</a></li>
3314
+ <li><a href="http://www.fitbit.com/foods/categories">Calories in Foods</a></li>
3315
+ <li><a href="http://www.fitbit.com/foods/restaurants">Foods by Restaurant</a></li>
3316
+ <li><a href="http://www.fitbit.com/foods/brands">Foods By Brand</a></li>
3317
+ <li><a href="http://www.fitbit.com/foods/search">Search Foods</a></li>
3318
+
3319
+ <li><a href="http://www.fitbit.com/foods/private">My Foods</a></li>
3320
+
3321
+ <li><a href="http://www.fitbit.com/users/index">All Users</a></li>
3322
+
3323
+ </ul>
3324
+ </div>
3325
+ <div class="column">
3326
+ <h4>Company</h4>
3327
+ <ul>
3328
+ <li><a href="http://blog.fitbit.com">Fitbit Blog</a></li>
3329
+ <li><a href="http://www.fitbit.com/company">About Fitbit</a></li>
3330
+ <li><a href="http://www.fitbit.com/privacy">Privacy Policy</a></li>
3331
+ <li><a href="http://www.fitbit.com/terms">Terms of Use</a></li>
3332
+ </ul>
3333
+ </div>
3334
+ <div class="column last">
3335
+ <h4>Purchase Fitbit</h4>
3336
+ <p>Includes Fitbit Tracker, Base Station & Software</p>
3337
+ <h5><a href="http://www.fitbit.com/product">Buy Now &raquo;</a></h5>
3338
+ </div>
3339
+ <img src="/images/layout/product.jpg" alt="product" />
3340
+ </div>
3341
+ <div id="copyright">&copy; 2010 Fitbit, Inc. All rights reserved.</div>
3342
+ </div>
3343
+
3344
+ </div>
3345
+
3346
+
3347
+
3348
+ <script type="text/javascript" src="/pack?h=ace4c3c76cb4305cbad3160322007103&item=%2Fyui%2F2.7.0%2Fbuild%2Fyahoo-dom-event%2Fyahoo-dom-event.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fconnection%2Fconnection-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Felement%2Felement-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fjson%2Fjson-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fcontainer%2Fcontainer-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fcalendar%2Fcalendar-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fanimation%2Fanimation-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fdatasource%2Fdatasource-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fautocomplete%2Fautocomplete-min.js&item=%2Fyui%2F2.7.0%2Fbuild%2Fcookie%2Fcookie-min.js&item=%2Fjs%2Fantlr3-all-min.js&item=%2Fjs%2Fswfobject-1.5.js&item=%2Fjs%2Ffitbit.js&item=%2Fjs%2Fapp.js&item=%2Fjs%2Futil.js&item=%2Fjs%2Fpremium.js"></script>
3349
+
3350
+ <!--[if IE 6]>
3351
+ <script type="text/javascript">document.execCommand("BackgroundImageCache", false, true);</script>
3352
+ <![endif]-->
3353
+ <!--[if lt IE 9]>
3354
+ <script type="text/javascript" src="/pack?h=4db94e3559545453a61eca38533ab82c&item=%2Fjs%2Flib%2Fcurvycorners%2Fcurvycorners.src.js"></script>
3355
+ <![endif]-->
3356
+
3357
+ <script type="text/javascript" src="/pack?h=6c05a49f4c67752e0dc7c79b612cc403&item=%2Fjs%2Ffitbit%2Fapp%2FmessageBox.js&item=%2Fjs%2Ffitbit%2Fapp%2Fforums%2FmessageList.js&item=%2Fjs%2Ffitbit%2Fapp%2Fgoal%2Fuser%2FuserGoals.js&item=%2Fjs%2Ffitbit%2Fapp%2Fgoal%2Fuser%2FprimaryGoal.js&item=%2Fjs%2Ffitbit%2Fapp%2Fgoal%2Fweight%2FweightGoal.js&item=%2Fjs%2Ffitbit%2Fapp%2Fuser%2Ffriends%2FfriendInvitation.js&item=%2Fjs%2Ffitbit%2Fapp%2Fuser%2Fstats%2Frank.js&item=%2Fjs%2Ffitbit%2Fapp%2Fuser%2Fstats%2FweightStats.js&item=%2Fjs%2Ffitbit%2Fapp%2Fuser%2Fstats%2FpersonalBests.js&item=%2Fjs%2Ffitbit%2Fapp%2Fuser%2Ffriends%2FfriendStats.js&item=%2Fjs%2Ffitbit%2Fapp%2Fjournal%2Fjournal.js&item=%2Fjs%2Ffitbit%2Fapp%2Ftrainer%2Ftrainer.js"></script>
3358
+ <script type="text/javascript">
3359
+ function onABCommComplete() {
3360
+ // OPTIONAL: do something here after the new data has been populated in your text area
3361
+ }
3362
+ </script>
3363
+ <script type="text/javascript">
3364
+
3365
+ var smallTabs = new fitbit.app.TabSet("smallTabs", "active");
3366
+ smallTabs.tabChangeEvent.subscribe(function(type, args) {
3367
+ if ( args == "historical" ) {
3368
+ new fitbit.app.UIState().set( 11 );
3369
+ }
3370
+ else {
3371
+ new fitbit.app.UIState().clear( 11 );
3372
+ }
3373
+ });
3374
+
3375
+
3376
+ var fitnessPlanTabs = new fitbit.app.TabSet("fitnessPlanTabs", "active");
3377
+ fitnessPlanTabs.tabChangeEvent.subscribe(function(type, args) {
3378
+ if ( args == "fitnessPlanOverviewChart" ) {
3379
+ new fitbit.app.UIState().set( 15 );
3380
+
3381
+ var toActivate = Y.Dom.get("fitnessPlanOverviewCaption");
3382
+ var toDeactivate = Y.Dom.get("fitnessPlanWeekCaption");
3383
+ Y.Dom.addClass(toDeactivate, "invisible");
3384
+ Y.Dom.removeClass(toActivate, "invisible");
3385
+
3386
+ toActivate = Y.Dom.get("fitnessPlanOverviewDates");
3387
+ toDeactivate = Y.Dom.get("currentWeekText");
3388
+ Y.Dom.addClass(toDeactivate, "invisible");
3389
+ Y.Dom.removeClass(toActivate, "invisible");
3390
+
3391
+ toDeactivate = Y.Dom.get("fitnessPlanWeekNumber");
3392
+ Y.Dom.addClass(toDeactivate, "invisible");
3393
+ } else {
3394
+ new fitbit.app.UIState().clear( 15 );
3395
+
3396
+ var toActivate = Y.Dom.get("fitnessPlanWeekCaption");
3397
+ var toDeactivate = Y.Dom.get("fitnessPlanOverviewCaption");
3398
+ Y.Dom.addClass(toDeactivate, "invisible");
3399
+ Y.Dom.removeClass(toActivate, "invisible");
3400
+
3401
+ toActivate = Y.Dom.get("currentWeekText");
3402
+ toDeactivate = Y.Dom.get("fitnessPlanOverviewDates");
3403
+ Y.Dom.addClass(toDeactivate, "invisible");
3404
+ Y.Dom.removeClass(toActivate, "invisible");
3405
+
3406
+ toActivate = Y.Dom.get("fitnessPlanWeekNumber");
3407
+ Y.Dom.removeClass(toActivate, "invisible");
3408
+ }
3409
+ });
3410
+
3411
+ var intradayCaloriesTabs = new fitbit.app.TabSet("intradayCaloriesTabs", "active");
3412
+ intradayCaloriesTabs.tabChangeEvent.subscribe(function(type, args) {
3413
+ if ( args == "intradayCaloriesEatenChart" ) {
3414
+ new fitbit.app.UIState().set( 6 );
3415
+ }
3416
+ else {
3417
+ new fitbit.app.UIState().clear( 6 );
3418
+ }
3419
+ });
3420
+
3421
+ var historicalActivitiesTabs = new fitbit.app.TabSet("historicalActivitiesTabs", "active");
3422
+ historicalActivitiesTabs.tabChangeEvent.subscribe(function(type, args) {
3423
+ if ( args == "activeScoreHistoricalChart" ) {
3424
+ new fitbit.app.UIState().clearAndSet( 13, 12 );
3425
+ }
3426
+ else if ( args == "distanceHistoricalChart" ) {
3427
+ new fitbit.app.UIState().clearAndSet( 12, 13 );
3428
+ }
3429
+ else {
3430
+ new fitbit.app.UIState().clearAndSet( [12,13], null );
3431
+ }
3432
+ });
3433
+
3434
+
3435
+ var sleepInfoTabs = new fitbit.app.TabSet("sleepInfoTabs", "active");
3436
+ sleepInfoTabs.tabChangeEvent.subscribe(function(type, args) {
3437
+ if ( args == "timesAwakenedChart" ) {
3438
+ new fitbit.app.UIState().set( 14 );
3439
+ }
3440
+ else {
3441
+ new fitbit.app.UIState().clear( 14 );
3442
+ }
3443
+ });
3444
+
3445
+
3446
+
3447
+
3448
+ var sceneMeter = new SWFObject("/pack?h=9f6fc030d4dd99a18ee72a2502121ab6&item=%2Fflash%2Fgoal_scene%2Fgoal_scene.swf", "goal_scene", "336", "41", "8");
3449
+ sceneMeter.addParam("quality", "high");
3450
+ sceneMeter.addParam("wmode", "transparent");
3451
+ sceneMeter.addVariable("percentage", "11");
3452
+ sceneMeter.write("scene");
3453
+
3454
+ var dateTo = "";
3455
+
3456
+ dateTo = "&dateTo=" + "2010-07-18";
3457
+
3458
+
3459
+
3460
+
3461
+ new fitbit.app.AmChart( "caloriesInOutObject", "caloriesInOutChart", "line",
3462
+ "/graph/getGraphData?userId=22CJ7H&type=caloriesInOut" +
3463
+ "&period=1m&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3464
+ 530, 150, true
3465
+ );
3466
+
3467
+
3468
+ new fitbit.app.AmChart( "minutesActiveObject", "minutesActiveChart", "line",
3469
+ "/graph/getGraphData?userId=22CJ7H&type=minutesActive" +
3470
+ "&period=1m&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3471
+ 530, 150, true
3472
+ );
3473
+
3474
+
3475
+ new fitbit.app.AmChart( "activeScoreHistoricalObject", "activeScoreHistoricalChart", "column2d",
3476
+ "/graph/getGraphData?userId=22CJ7H&type=activeScore" +
3477
+ "&period=1m&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3478
+ 530, 150, true
3479
+ );
3480
+
3481
+ new fitbit.app.AmChart( "stepsTakenHistoricalObject", "stepsTakenHistoricalChart", "column2d",
3482
+ "/graph/getGraphData?userId=22CJ7H&type=stepsTaken" +
3483
+ "&period=1m&dataVersion=905&version=amchart" + dateTo,
3484
+ 530, 150, true
3485
+ );
3486
+
3487
+ new fitbit.app.AmChart( "distanceHistoricalObject", "distanceHistoricalChart", "column2d",
3488
+ "/graph/getGraphData?userId=22CJ7H&type=distanceFromSteps" +
3489
+ "&period=1m&dataVersion=905&version=amchart" + dateTo,
3490
+ 530, 150, true
3491
+ );
3492
+
3493
+
3494
+ new fitbit.app.AmChart( "timeAsleepObject", "timeAsleepChart", "column2d",
3495
+ "/graph/getGraphData?userId=22CJ7H&type=timeAsleep" +
3496
+ "&period=1m&dataVersion=905&version=amchart" + dateTo,
3497
+ 530, 150, true
3498
+ );
3499
+
3500
+ new fitbit.app.AmChart( "timesAwakenedObject", "timesAwakenedChart", "column2d",
3501
+ "/graph/getGraphData?userId=22CJ7H&type=timesWokenUp" +
3502
+ "&period=1m&dataVersion=905&version=amchart" + dateTo,
3503
+ 530, 150, true
3504
+ );
3505
+
3506
+
3507
+ new fitbit.app.AmChart( "weightObject", "weightChart", "line",
3508
+ "/graph/getGraphData?userId=22CJ7H&type=weight" +
3509
+ "&period=1m&dataVersion=905&version=amchart" + dateTo,
3510
+ 530, 150, true
3511
+ );
3512
+
3513
+
3514
+ new fitbit.app.AmChart( "intradayCaloriesBurnedObject", "intradayCaloriesBurnedChart", "column2d",
3515
+ "/graph/getGraphData?userId=22CJ7H&type=intradayCaloriesBurned" +
3516
+ "&period=1d&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3517
+ 530, 150, true
3518
+ );
3519
+
3520
+ new fitbit.app.AmChart( "intradayCaloriesEatenObject", "intradayCaloriesEatenChart", "column2d",
3521
+ "/graph/getGraphData?userId=22CJ7H&type=intradayCaloriesEaten" +
3522
+ "&period=1d&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3523
+ 530, 150, true
3524
+ );
3525
+
3526
+ new fitbit.app.AmChart( "intradayActiveScoreChartObject", "intradayActiveScoreChart", "column2d",
3527
+ "/graph/getGraphData?userId=22CJ7H&type=intradayActiveScore" +
3528
+ "&period=1d&dataVersion=905&version=amchart" + dateTo + "&ts=" + (new Date()).getTime(),
3529
+ 530, 150, true
3530
+ );
3531
+
3532
+ new fitbit.app.AmChart( "intradayStepsObject", "intradayStepsChart", "column2d",
3533
+ "/graph/getGraphData?userId=22CJ7H&type=intradaySteps" +
3534
+ "&period=1d&dataVersion=905&version=amchart" + dateTo,
3535
+ 530, 150, true
3536
+ );
3537
+
3538
+ new fitbit.app.AmChart( "activityPieObject", "activityPieChart", "pie",
3539
+ "/graph/getGraphData?userId=22CJ7H&type=activitiesBreakdown" +
3540
+ "&period=1d&dataVersion=905&version=amchart" + dateTo,
3541
+ 240, 200, true
3542
+ );
3543
+
3544
+ var tabs = new fitbit.app.TabSet("intradayTabs", "active");
3545
+ tabs.tabChangeEvent.subscribe(function(type, args) {
3546
+ if ( args == "intradayActiveScoreChart" ) {
3547
+ new fitbit.app.UIState().set( 10 );
3548
+ }
3549
+ else {
3550
+ new fitbit.app.UIState().clear( 10 );
3551
+ }
3552
+ });
3553
+
3554
+ // Uncomment this when activityBreakdownChartSelector is enabled
3555
+ //new fitbit.app.TabSet("activityBreakdownChartArea", "active");
3556
+
3557
+
3558
+ if ( Y.Dom.get("sleepPatternChart") ) {
3559
+ new fitbit.app.AmChart("sleepPatternObject", "sleepPatternChart", "column2d",
3560
+ "/graph/getGraphData?userId=22CJ7H&type=intradaySleep" +
3561
+ "&period=1d&dataVersion=905&version=amchart" + dateTo,
3562
+ 370, 110, true
3563
+ );
3564
+ }
3565
+
3566
+ function swapVisible(el1Name, el2Name) {
3567
+ Y.Dom.addClass(Y.Dom.get(el1Name), "invisible");
3568
+ Y.Dom.removeClass(Y.Dom.get(el2Name), "invisible");
3569
+ }
3570
+ </script>
3571
+ <script type="text/javascript" src="http://www.plaxo.com/css/m/js/util.js"></script>
3572
+ <script type="text/javascript" src="http://www.plaxo.com/css/m/js/basic.js"></script>
3573
+ <script type="text/javascript" src="http://www.plaxo.com/css/m/js/abc_launcher.js"></script>
3574
+
3575
+
3576
+
3577
+
3578
+ <script type="text/javascript">
3579
+ /*
3580
+ Inserts GA using DOM insertion of <script> tag and "script onload" method to
3581
+ initialize the pageTracker object. Prevents GA insertion from blocking I/O!
3582
+
3583
+ As suggested in Steve Souder's talk. See:
3584
+ http://google-code-updates.blogspot.com/2009/03/steve-souders-lifes-too-short-write.html
3585
+ */
3586
+
3587
+ /* acct is GA account number, i.e. "UA-5555555-1" */
3588
+ function gaSSDSLoad (acct) {
3589
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."),
3590
+ pageTracker,
3591
+ s;
3592
+ s = document.createElement('script');
3593
+ s.src = gaJsHost + 'google-analytics.com/ga.js';
3594
+ s.type = 'text/javascript';
3595
+ s.onloadDone = false;
3596
+ function init () {
3597
+ pageTracker = _gat._getTracker(acct);
3598
+
3599
+ pageTracker._setCustomVar(1, "visitorType", "trackerUser", 1);
3600
+
3601
+ pageTracker._setCustomVar(2, "gender", "male", 1);
3602
+ pageTracker._setCustomVar(3, "age", "25-34", 1);
3603
+ pageTracker._setCustomVar(4, "premium", "false", 1);
3604
+
3605
+
3606
+ pageTracker._trackPageview();
3607
+ }
3608
+ s.onload = function () {
3609
+ s.onloadDone = true;
3610
+ init();
3611
+ };
3612
+ s.onreadystatechange = function() {
3613
+ if (('loaded' === s.readyState || 'complete' === s.readyState) && !s.onloadDone) {
3614
+ s.onloadDone = true;
3615
+ init();
3616
+ }
3617
+ };
3618
+ document.getElementsByTagName('head')[0].appendChild(s);
3619
+ }
3620
+
3621
+ /* and run it */
3622
+ gaSSDSLoad("UA-2595270-1");
3623
+ </script>
3624
+ </body>
3625
+ </html>