sco-fakebook 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. data/{README → README.rdoc} +0 -0
  2. data/Rakefile +19 -2
  3. data/TODO +4 -2
  4. data/lib/fakebook-assets/attachments.js +60 -0
  5. data/lib/fakebook-assets/canvas.css +15 -11
  6. data/lib/fakebook-assets/canvas.js +14 -0
  7. data/lib/fakebook-assets/common.css +1225 -809
  8. data/lib/fakebook-assets/common.js +1878 -0
  9. data/lib/fakebook-assets/confirmation.js +18 -0
  10. data/lib/fakebook-assets/dialogpro.css +58 -0
  11. data/lib/fakebook-assets/drag.js +60 -0
  12. data/lib/fakebook-assets/edit_app_settings.css +31 -0
  13. data/lib/fakebook-assets/edit_app_settings.js +16 -0
  14. data/lib/fakebook-assets/editapps.js +12 -0
  15. data/lib/fakebook-assets/editprofile.css +42 -0
  16. data/lib/fakebook-assets/endscript.js +37 -0
  17. data/lib/fakebook-assets/fb_menubar.png +0 -0
  18. data/lib/fakebook-assets/fb_menubar_logo.gif +0 -0
  19. data/lib/fakebook-assets/fbml.js +63 -40
  20. data/lib/fakebook-assets/feedform.js +31 -0
  21. data/lib/fakebook-assets/firstscript.js +2 -0
  22. data/lib/fakebook-assets/flyout_menu.js +51 -0
  23. data/lib/fakebook-assets/friend_suggester.css +12 -0
  24. data/lib/fakebook-assets/friend_suggester.js +13 -0
  25. data/lib/fakebook-assets/ie6.css +715 -0
  26. data/lib/fakebook-assets/ie7.css +406 -0
  27. data/lib/fakebook-assets/js_strings.js +2 -0
  28. data/lib/fakebook-assets/link_controller.js +26 -0
  29. data/lib/fakebook-assets/livemessage.js +22 -0
  30. data/lib/fakebook-assets/pages.css +432 -0
  31. data/lib/fakebook-assets/profile.css +629 -0
  32. data/lib/fakebook-assets/quickling.js +71 -0
  33. data/lib/fakebook-assets/scrollarea.js +20 -0
  34. data/lib/fakebook-assets/search_friend_source.js +17 -0
  35. data/lib/fakebook-assets/search_typeaheadpro.js +20 -0
  36. data/lib/fakebook-assets/sort.js +30 -0
  37. data/lib/fakebook-assets/static_source.js +25 -0
  38. data/lib/fakebook-assets/tidied.html +439 -0
  39. data/lib/fakebook-assets/tour_tip.css +8 -0
  40. data/lib/fakebook-assets/typeahead_source.js +28 -0
  41. data/lib/fakebook-assets/typeaheadpro.css +84 -0
  42. data/lib/fakebook-assets/ubersearch.css +342 -0
  43. data/lib/fakebook-assets/webkit.css +10 -0
  44. data/lib/fakebook.rb +4 -4
  45. data/lib/templates/old.html.erb +62 -0
  46. data/lib/templates/standard.html.erb +69 -39
  47. metadata +51 -20
  48. data/Manifest +0 -20
  49. data/fakebook.gemspec +0 -39
  50. data/lib/fakebook-assets/base.js +0 -317
  51. data/lib/fakebook-assets/extended.js +0 -49
  52. data/lib/fakebook-assets/fakebook.js +0 -122
  53. data/lib/fakebook-assets/navigator_bg.gif +0 -0
  54. data/lib/fakebook-assets/shadow_gray.gif +0 -0
  55. data/lib/fakebook-assets/string.js +0 -61
  56. data/lib/fakebook-assets/white.gif +0 -0
  57. data/lib/templates/minimal.html.erb +0 -22
@@ -0,0 +1,10 @@
1
+ /* Source: Global Cache */
2
+ /* Location: css/webkit.css r99258 */
3
+ /* Machine: 10.16.139.105 */
4
+ /* Generated: July 9th 2008 3:45:17 PM PDT */
5
+ /* HTTP Host: static.ak.fbcdn.net */
6
+
7
+
8
+ .so_sound_player{left:-5px;}
9
+ select{border:1px solid;}
10
+ #presence #chat_tab_bar .chat_window_wrapper{position:absolute;}
@@ -9,7 +9,7 @@ require File.dirname(__FILE__) + '/node'
9
9
 
10
10
  class Fakebook
11
11
 
12
- Version = '0.1.1' # also see fakebook.gemspec
12
+ Version = '0.1.2' # also see fakebook.gemspec
13
13
 
14
14
  attr_accessor :callback, :canvas, :secret, :fb_params, :template
15
15
 
@@ -44,10 +44,10 @@ class Fakebook
44
44
  res["Content-Type"] = "text/json; charset=utf-8"
45
45
  res.write %Q({ "success":"true" })
46
46
  elsif path=='/fakebook-update'
47
- @fb_params[:user] = req.params['user'].to_i if req.params['user']
48
- @fb_params[:friends] = req.params['friends'].split(/, ?/).map{ |id| id.to_i } if req.params['friends']
47
+ @fb_params[:user] = req.params['user'].to_i if req.params['user']
48
+ @fb_params[:friends] = req.params['friends'].split(/, ?/).map{ |id| id.to_i } if req.params['friends']
49
49
  @fb_params[:in_canvas] = req.params['in_canvas'].to_i if req.params['in_canvas']
50
- @fb_params[:added] = req.params['added'].to_i if req.params['added']
50
+ @fb_params[:added] = req.params['added'].to_i if req.params['added']
51
51
  res.status = 302
52
52
  res["Location"] = req.env['HTTP_REFERER']
53
53
  elsif path=='/fakebook-install'
@@ -0,0 +1,62 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="facebook">
5
+
6
+ <head>
7
+ <title>Fakebook | Application | <%= title %></title>
8
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
9
+ <link rel="stylesheet" href="/fakebook-assets/common.css" type="text/css" media="all"/>
10
+ <link rel="stylesheet" href="/fakebook-assets/canvas.css" type="text/css"/>
11
+ <script type="text/javascript" src="/fakebook-assets/base.js"></script>
12
+ <script type="text/javascript" src="/fakebook-assets/fbml.js"></script>
13
+ <script type="text/javascript" src="/fakebook-assets/extended.js"></script>
14
+ <script type="text/javascript" src="/fakebook-assets/string.js"></script>
15
+ <script type="text/javascript" src="/fakebook-assets/fakebook.js"></script>
16
+ </head>
17
+
18
+ <body class="fbframe">
19
+
20
+ <div id="book">
21
+ <div id="sidebar">
22
+ <a href="http://www.facebook.com" class="go_home"></a>
23
+ <div id="sidebar_content" style="min-height:150px">
24
+ <form action="/fakebook-update" method="post" style="margin: 5px">
25
+ <p><label>fb_sig_user</label><br/><input type="text" name="user" value="<%= @fb_params[:user] %>" size="15" /></p>
26
+ <p><label>fb_sig_friends</label><br/><textarea name="friends" rows="3" cols="15"><%= @fb_params[:friends].join(',') %></textarea></p>
27
+ <p><label>fb_sig_in_canvas</label><br/><input type="text" name="in_canvas" value="<%= @fb_params[:in_canvas] %>" size="3" /></p>
28
+ <p><label>fb_sig_added</label><br/><input type="text" name="added" value="<%= @fb_params[:added] %>" size="3" /></p>
29
+ <p><input type="submit" value="Update" /></p>
30
+ </form>
31
+ </div>
32
+ </div>
33
+ <div id="widebar" class="clearfix">
34
+ <div id="navigator"></div>
35
+ <div id="page_body" class="pagebody fbframe">
36
+ <div id="content_shadow">
37
+ <div id="content" class="clearfix">
38
+ <div id="app_content_<%= @app_id %>" class="app_content_<%= @app_id %> canvas_rel_positioning"></div>
39
+ <%= body %>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <div id="pagefooter" class="clearfix"></div>
44
+ </div>
45
+ </div>
46
+
47
+ <!-- TODO: replace references to user ids, etc -->
48
+ <script type="text/javascript">
49
+ /*
50
+ FBML.Contexts["8e8502184f40"] = "O:16:\"CanvasFBMLFlavor\":1:{s:9:\"_fbml_env\";a:9:{s:4:\"user\";i:505421674;s:6:\"app_id\";s:10:\"<%= @app_id %>\";s:10:\"fb_page_id\";i:0;s:14:\"unfiltered_css\";b:0;s:10:\"canvas_url\";s:33:\"http:\/\/apps.facebook.com\/packrat\/\";s:10:\"source_url\";s:30:\"http:\/\/67.202.39.181\/facebook\/\";s:9:\"loggedout\";b:0;s:7:\"non-tos\";b:0;s:11:\"flavor_code\";i:3;}}";
51
+ FBML._mockAjaxProxyUrl = "http:\/\/apps.facebook.com\/fbml\/mock_ajax_proxy.php"
52
+ var app=new fbjs_sandbox(<%= @app_id %>);
53
+ app.validation_vars={"fb_sig_time":"1203052554.0774","fb_sig_added":1,"fb_sig_user":505421674,"fb_sig_profile_update_time":1202944208,"fb_sig_session_key":"2d5edb7749d7c3926b358f75-505421674","fb_sig_expires":0,"fb_sig_api_key":"1b2c477e39be0e0b9efa17e49c93954f","fb_sig":"db2b41794182b523b89a38b97cd9e05f"};
54
+ app.context='4d1a7d42f1dd';
55
+ app.contextd='O:16:\x22CanvasFBMLFlavor\x22:1:{s:9:\x22_fbml_env\x22;a:10:{s:4:\x22user\x22;i:505421674;s:6:\x22app_id\x22;s:10:\x22<%= @app_id %>\x22;s:10:\x22fb_page_id\x22;i:0;s:14:\x22unfiltered_css\x22;b:0;s:10:\x22canvas_url\x22;s:33:\x22http://apps.facebook.com/packrat/\x22;s:10:\x22source_url\x22;s:30:\x22http://67.202.39.181/facebook/\x22;s:9:\x22loggedout\x22;b:0;s:7:\x22non-tos\x22;b:0;s:11:\x22flavor_code\x22;i:3;s:14:\x22user_triggered\x22;b:0;}}';
56
+ app.data={"user":505421674,"installed":true,"loggedin":true};
57
+ app.bootstrap();
58
+ */
59
+ </script>
60
+
61
+ </body>
62
+ </html>
@@ -4,51 +4,81 @@
4
4
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="facebook">
5
5
 
6
6
  <head>
7
- <title>Fakebook | Application | <%= title %></title>
7
+ <title>Facebook | PackRat Design</title>
8
8
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
9
- <link rel="stylesheet" href="/fakebook-assets/common.css" type="text/css" media="all"/>
10
- <link rel="stylesheet" href="/fakebook-assets/canvas.css" type="text/css"/>
11
- <script type="text/javascript" src="/fakebook-assets/base.js"></script>
12
- <script type="text/javascript" src="/fakebook-assets/fbml.js"></script>
13
- <script type="text/javascript" src="/fakebook-assets/extended.js"></script>
14
- <script type="text/javascript" src="/fakebook-assets/string.js"></script>
15
- <script type="text/javascript" src="/fakebook-assets/fakebook.js"></script>
16
- </head>
17
9
 
18
- <body class="fbframe">
10
+ <script type="text/javascript" src="/fakebook-assets/firstscript.js"></script>
11
+ <script type="text/javascript" src="/fakebook-assets/js_strings.js"></script>
12
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/common.css" />
13
+ <%# app CSS goes here %>
14
+ <%# where does JS go? %>
15
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/dialogpro.css" />
16
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/editprofile.css" />
17
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/tour_tip.css" />
18
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/pages.css" />
19
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/canvas.css" />
20
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/ubersearch.css" />
21
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/typeaheadpro.css" />
22
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/friend_suggester.css" />
23
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/profile.css" />
24
+ <link type="text/css" rel="stylesheet" href="/fakebook-assets/edit_app_settings.css" />
25
+ <script type="text/javascript" src="/fakebook-assets/common.js"></script>
26
+ <script type="text/javascript" src="/fakebook-assets/link_controller.js"></script>
27
+ <script type="text/javascript" src="/fakebook-assets/flyout_menu.js"></script>
28
+ <script type="text/javascript" src="/fakebook-assets/canvas.js"></script>
29
+ <script type="text/javascript" src="/fakebook-assets/confirmation.js"></script>
30
+ <script type="text/javascript" src="/fakebook-assets/feedform.js"></script>
31
+ <script type="text/javascript" src="/fakebook-assets/quickling.js"></script>
32
+ <script type="text/javascript" src="/fakebook-assets/attachments.js"></script>
33
+ <script type="text/javascript" src="/fakebook-assets/fbml.js"></script>
34
+ <script type="text/javascript" src="/fakebook-assets/friend_suggester.js"></script>
35
+ <script type="text/javascript" src="/fakebook-assets/typeahead_source.js"></script>
36
+ <script type="text/javascript" src="/fakebook-assets/drag.js"></script>
37
+ <script type="text/javascript" src="/fakebook-assets/sort.js"></script>
38
+ <script type="text/javascript" src="/fakebook-assets/edit_app_settings.js"></script>
39
+ <script type="text/javascript" src="/fakebook-assets/editapps.js"></script>
40
+ <script type="text/javascript" src="/fakebook-assets/scrollarea.js"></script>
41
+ <script type="text/javascript" src="/fakebook-assets/search_typeaheadpro.js"></script>
42
+ <script type="text/javascript" src="/fakebook-assets/static_source.js"></script>
43
+ <script type="text/javascript" src="/fakebook-assets/search_friend_source.js"></script>
44
+ <script type="text/javascript" src="/fakebook-assets/livemessage.js"></script>
45
+ <!--[if lte IE 6]><style type="text/css" media="screen">/* <![CDATA[ */ @import url(/fakebook-assets/ie6.css); /* ]]> */</style><![endif]-->
46
+ <!--[if gte IE 7]><style type="text/css" media="screen">/* <![CDATA[ */ @import url(/fakebook-assets/ie7.css); /* ]]> */</style><![endif]-->
47
+ <link rel="stylesheet" href="/fakebook-assets/webkit.css" type="text/css"/>
48
+ </head>
19
49
 
20
- <div id="book">
21
- <div id="sidebar">
22
- <a href="http://www.facebook.com" class="go_home"></a>
23
- <div id="sidebar_content" style="height:150px"></div>
24
- </div>
25
- <div id="widebar" class="clearfix">
26
- <div id="navigator"></div>
27
- <div id="page_body" class="pagebody fbframe">
28
- <div id="content_shadow">
29
- <div id="content" class="clearfix">
30
- <div id="app_content_<%= @app_id %>" class="app_content_<%= @app_id %> canvas_rel_positioning"></div>
31
- <%= body %>
50
+ <body class="fbframe frame_wide widebook chat_body">
51
+ <div id="fb_nonfooter">
52
+ <div id="fb_nonfooter_content">
53
+ <div id="fb_dropmenu_container">
54
+ <div id="fb_menubar" class="clearfix">
55
+ <div id="fb_menubar_logo">
56
+ <a href="http://www.new.facebook.com/home.php?ref=logo" title="Go to Facebook Home"><span>&nbsp;</span></a>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <div id="book">
61
+ <div class="compatibility_frame">
62
+ <div id="content">
63
+ <div id="app_content_<%= @app_id %>" class="app_content_<%= @app_id %> canvas_rel_positioning">
64
+ <div>
65
+ <%= body %>
66
+ </div>
67
+ </div>
32
68
  </div>
33
69
  </div>
34
70
  </div>
35
- <div id="pagefooter" class="clearfix"></div>
36
71
  </div>
37
72
  </div>
38
-
39
- <!-- TODO: replace references to user ids, etc -->
40
- <script type="text/javascript">
41
- /*
42
- FBML.Contexts["8e8502184f40"] = "O:16:\"CanvasFBMLFlavor\":1:{s:9:\"_fbml_env\";a:9:{s:4:\"user\";i:505421674;s:6:\"app_id\";s:10:\"<%= @app_id %>\";s:10:\"fb_page_id\";i:0;s:14:\"unfiltered_css\";b:0;s:10:\"canvas_url\";s:33:\"http:\/\/apps.facebook.com\/packrat\/\";s:10:\"source_url\";s:30:\"http:\/\/67.202.39.181\/facebook\/\";s:9:\"loggedout\";b:0;s:7:\"non-tos\";b:0;s:11:\"flavor_code\";i:3;}}";
43
- FBML._mockAjaxProxyUrl = "http:\/\/apps.facebook.com\/fbml\/mock_ajax_proxy.php"
44
- var app=new fbjs_sandbox(<%= @app_id %>);
45
- app.validation_vars={"fb_sig_time":"1203052554.0774","fb_sig_added":1,"fb_sig_user":505421674,"fb_sig_profile_update_time":1202944208,"fb_sig_session_key":"2d5edb7749d7c3926b358f75-505421674","fb_sig_expires":0,"fb_sig_api_key":"1b2c477e39be0e0b9efa17e49c93954f","fb_sig":"db2b41794182b523b89a38b97cd9e05f"};
46
- app.context='4d1a7d42f1dd';
47
- app.contextd='O:16:\x22CanvasFBMLFlavor\x22:1:{s:9:\x22_fbml_env\x22;a:10:{s:4:\x22user\x22;i:505421674;s:6:\x22app_id\x22;s:10:\x22<%= @app_id %>\x22;s:10:\x22fb_page_id\x22;i:0;s:14:\x22unfiltered_css\x22;b:0;s:10:\x22canvas_url\x22;s:33:\x22http://apps.facebook.com/packrat/\x22;s:10:\x22source_url\x22;s:30:\x22http://67.202.39.181/facebook/\x22;s:9:\x22loggedout\x22;b:0;s:7:\x22non-tos\x22;b:0;s:11:\x22flavor_code\x22;i:3;s:14:\x22user_triggered\x22;b:0;}}';
48
- app.data={"user":505421674,"installed":true,"loggedin":true};
49
- app.bootstrap();
50
- */
51
- </script>
52
-
73
+ <div id="pagefooter">
74
+ <div class="pagefooter_topborder clearfix">
75
+ <div class="f_links">
76
+ <ul class="footer_links" id="nav_unused_3"><li>&nbsp;</li></ul>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <div id="js_buffer">
81
+ <script type="text/javascript" src="endscript.js"></script>
82
+ </div>
53
83
  </body>
54
- </html>
84
+ </html>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sco-fakebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Raymond
@@ -9,8 +9,8 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-09 00:00:00 -07:00
13
- default_executable:
12
+ date: 2008-07-17 00:00:00 -07:00
13
+ default_executable: fakebook
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -28,39 +28,70 @@ executables:
28
28
  extensions: []
29
29
 
30
30
  extra_rdoc_files:
31
- - Manifest
32
31
  - TODO
33
- - README
32
+ - README.rdoc
34
33
  - LICENSE
35
34
  files:
35
+ - LICENSE
36
+ - README.rdoc
37
+ - Rakefile
38
+ - TODO
39
+ - bin
36
40
  - bin/fakebook
37
- - fakebook.gemspec
38
- - lib/fakebook-assets/base.js
41
+ - lib
42
+ - lib/fakebook-assets
43
+ - lib/fakebook-assets/attachments.js
39
44
  - lib/fakebook-assets/canvas.css
45
+ - lib/fakebook-assets/canvas.js
40
46
  - lib/fakebook-assets/common.css
41
- - lib/fakebook-assets/extended.js
42
- - lib/fakebook-assets/fakebook.js
47
+ - lib/fakebook-assets/common.js
48
+ - lib/fakebook-assets/confirmation.js
49
+ - lib/fakebook-assets/dialogpro.css
50
+ - lib/fakebook-assets/drag.js
51
+ - lib/fakebook-assets/edit_app_settings.css
52
+ - lib/fakebook-assets/edit_app_settings.js
53
+ - lib/fakebook-assets/editapps.js
54
+ - lib/fakebook-assets/editprofile.css
55
+ - lib/fakebook-assets/endscript.js
56
+ - lib/fakebook-assets/fb_menubar.png
57
+ - lib/fakebook-assets/fb_menubar_logo.gif
43
58
  - lib/fakebook-assets/fbml.js
44
- - lib/fakebook-assets/navigator_bg.gif
45
- - lib/fakebook-assets/shadow_gray.gif
46
- - lib/fakebook-assets/string.js
47
- - lib/fakebook-assets/white.gif
59
+ - lib/fakebook-assets/feedform.js
60
+ - lib/fakebook-assets/firstscript.js
61
+ - lib/fakebook-assets/flyout_menu.js
62
+ - lib/fakebook-assets/friend_suggester.css
63
+ - lib/fakebook-assets/friend_suggester.js
64
+ - lib/fakebook-assets/ie6.css
65
+ - lib/fakebook-assets/ie7.css
66
+ - lib/fakebook-assets/js_strings.js
67
+ - lib/fakebook-assets/link_controller.js
68
+ - lib/fakebook-assets/livemessage.js
69
+ - lib/fakebook-assets/pages.css
70
+ - lib/fakebook-assets/profile.css
71
+ - lib/fakebook-assets/quickling.js
72
+ - lib/fakebook-assets/scrollarea.js
73
+ - lib/fakebook-assets/search_friend_source.js
74
+ - lib/fakebook-assets/search_typeaheadpro.js
75
+ - lib/fakebook-assets/sort.js
76
+ - lib/fakebook-assets/static_source.js
77
+ - lib/fakebook-assets/tidied.html
78
+ - lib/fakebook-assets/tour_tip.css
79
+ - lib/fakebook-assets/typeahead_source.js
80
+ - lib/fakebook-assets/typeaheadpro.css
81
+ - lib/fakebook-assets/ubersearch.css
82
+ - lib/fakebook-assets/webkit.css
48
83
  - lib/fakebook.rb
49
84
  - lib/node.rb
50
- - lib/templates/minimal.html.erb
85
+ - lib/templates
86
+ - lib/templates/old.html.erb
51
87
  - lib/templates/standard.html.erb
52
88
  - lib/tokenizer.rb
53
- - LICENSE
54
- - Manifest
55
- - Rakefile
56
- - README
57
- - TODO
58
89
  has_rdoc: true
59
90
  homepage: http://github.com/sco/fakebook
60
91
  post_install_message:
61
92
  rdoc_options:
62
93
  - --main
63
- - README
94
+ - README.rdoc
64
95
  require_paths:
65
96
  - lib
66
97
  required_ruby_version: !ruby/object:Gem::Requirement
data/Manifest DELETED
@@ -1,20 +0,0 @@
1
- bin/fakebook
2
- lib/fakebook-assets/base.js
3
- lib/fakebook-assets/canvas.css
4
- lib/fakebook-assets/common.css
5
- lib/fakebook-assets/extended.js
6
- lib/fakebook-assets/fakebook.js
7
- lib/fakebook-assets/fbml.js
8
- lib/fakebook-assets/navigator_bg.gif
9
- lib/fakebook-assets/shadow_gray.gif
10
- lib/fakebook-assets/string.js
11
- lib/fakebook-assets/white.gif
12
- lib/fakebook.rb
13
- lib/node.rb
14
- lib/templates/minimal.html.erb
15
- lib/templates/standard.html.erb
16
- lib/tokenizer.rb
17
- LICENSE
18
- Manifest
19
- README
20
- TODO
@@ -1,39 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = "fakebook"
3
- s.version = "0.1.1" # also see fakebook.rb
4
- s.date = "2008-07-09"
5
- s.summary = "Simple Facebook platform simulator, to aid in developing Facebook canvas apps offline."
6
- s.homepage = "http://github.com/sco/fakebook"
7
- s.author = "Scott Raymond"
8
- s.email = "sco@scottraymond.net"
9
- s.add_dependency "rack", ">=0.3.0"
10
- s.has_rdoc = true
11
- s.rdoc_options = ["--main", "README"]
12
- s.extra_rdoc_files = ["Manifest", "TODO", "README", "LICENSE"]
13
- s.executables = ['fakebook']
14
- s.files = ["bin/fakebook",
15
- "fakebook.gemspec",
16
- "lib/fakebook-assets/base.js",
17
- "lib/fakebook-assets/canvas.css",
18
- "lib/fakebook-assets/common.css",
19
- "lib/fakebook-assets/extended.js",
20
- "lib/fakebook-assets/fakebook.js",
21
- "lib/fakebook-assets/fbml.js",
22
- "lib/fakebook-assets/navigator_bg.gif",
23
- "lib/fakebook-assets/shadow_gray.gif",
24
- "lib/fakebook-assets/string.js",
25
- "lib/fakebook-assets/white.gif",
26
- "lib/fakebook.rb",
27
- "lib/node.rb",
28
- "lib/templates/minimal.html.erb",
29
- "lib/templates/standard.html.erb",
30
- "lib/tokenizer.rb",
31
- "LICENSE",
32
- "Manifest",
33
- "Rakefile",
34
- "README",
35
- "TODO",
36
- ]
37
- end
38
-
39
- #
@@ -1,317 +0,0 @@
1
- /* Source: Backing Store */
2
- /* Location: js/base.js r82827 */
3
- /* Machine: 10.1.0.62 */
4
- /* Generated: March 5th 2008 2:09:46 AM PST */
5
-
6
-
7
- try{if(window.fbJavascriptLibrariesHaveLoaded){Util.error('You have double-included base.js and possibly other Javascript files; '+'it may be in a package. This will cause you great unhappiness. Each '+'file should be included at most once.');}
8
- window.fbJavascriptLibrariesHaveLoaded=true;}catch(ignored){}
9
- function gen_unique(){return++gen_unique._counter;}
10
- gen_unique._counter=0;function ge(id){if(typeof(id)=='undefined'){Util.error('Tried to get an undefined element!');return null;}
11
- var obj;if(typeof(id)=='string'){obj=document.getElementById(id);if(!(ua.ie()>=7)){return obj;}
12
- if(!obj){return null;}else if(typeof(obj.id)=='string'&&obj.id==id){return obj;}else{var candidates=document.getElementsByName(id);if(!candidates||!candidates.length){return null;}
13
- var maybe=[];for(var ii=0;ii<candidates.length;ii++){var c=candidates[ii];if(!c.id&&id){continue;}
14
- if(typeof(c.id)=='string'&&c.id!=id){continue;}
15
- maybe.push(candidates[ii]);}
16
- if(!maybe.length){return null;}
17
- return maybe[0];}}else{return id;}
18
- return null;}
19
- function $(){var el=ge.apply(null,arguments);if(!el){Util.warn('Tried to get element %q, but it is not present in the page. (Use ge() '+'to test for the presence of an element.)',arguments[0]);}
20
- return el;}
21
- function show(){for(var i=0;i<arguments.length;i++){var element=ge(arguments[i]);if(element&&element.style)element.style.display='';}
22
- return false;}
23
- function hide(){for(var i=0;i<arguments.length;i++){var element=ge(arguments[i]);if(element&&element.style)element.style.display='none';}
24
- return false;}
25
- function shown(el){el=ge(el);return(el.style.display!='none'&&!(el.style.display==''&&el.offsetWidth==0));}
26
- function toggle(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);element.style.display=get_style(element,"display")=='block'?'none':'block';}
27
- return false;}
28
- function is_descendent(base_obj,target_id){var target_obj=ge(target_id);if(base_obj==null)return;while(base_obj!=target_obj){if(base_obj.parentNode){base_obj=base_obj.parentNode;}else{return false;}}
29
- return true;}
30
- function get_style(object,prop){function hyphenate(prop){return prop.replace(/[A-Z]/g,function(match){return'-'+match.toLowerCase();});}
31
- if(window.getComputedStyle){return window.getComputedStyle(object,null).getPropertyValue(hyphenate(prop));}
32
- if(document.defaultView&&document.defaultView.getComputedStyle){var computedStyle=document.defaultView.getComputedStyle(object,null);if(computedStyle)
33
- return computedStyle.getPropertyValue(hyphenate(prop));if(prop=="display")
34
- return"none";Util.error("Can't retrieve requested style %q due to a bug in Safari",prop);}
35
- if(object.currentStyle){return object.currentStyle[prop];}
36
- return object.style[prop];}
37
- function close_more_list(){var list_expander=ge('expandable_more');if(list_expander){list_expander.style.display='none';removeEventBase(document,'click',list_expander.offclick,list_expander.id);}
38
- var sponsor=ge('ssponsor');if(sponsor){sponsor.style.position='';}
39
- var link_obj=ge('more_link');if(link_obj){link_obj.innerHTML=tx('base01');link_obj.className='expand_link more_apps';}}
40
- function expand_more_list(){var list_expander=ge('expandable_more');var more_link=ge('more_section');if(more_link){remove_css_class_name(more_link,'highlight_more_link');}
41
- if(list_expander){list_expander.style.display='block';list_expander.offclick=function(e){if(!is_descendent(event_get_target(e),'sidebar_content')){close_more_list();}}.bind(list_expander);addEventBase(document,'click',list_expander.offclick,list_expander.id);}
42
- var sponsor=ge('ssponsor');if(sponsor){sponsor.style.position='static';}
43
- var link_obj=ge('more_link');if(link_obj){link_obj.innerHTML=tx('base02');link_obj.className='expand_link less_apps';}}
44
- function toggle_more_list(){var list_expander=ge('expandable_more');if(!list_expander){return false;}
45
- if(list_expander.style.display=='none'){expand_more_list();}else{close_more_list();}}
46
- function remove_node(node){if(node.removeNode){node.removeNode(true);}else{for(var ii=node.childNodes.length-1;ii>=0;ii--){remove_node(node.childNodes[ii]);}
47
- node.parentNode.removeChild(node);}
48
- return null;}
49
- function create_hidden_input(name,value){var new_input=document.createElement('input');new_input.name=name;new_input.id=name;new_input.value=value;new_input.type='hidden';return new_input;}
50
- function has_css_class_name(elem,cname){return(elem&&cname)?new RegExp('\\b'+trim(cname)+'\\b').test(elem.className):false;}
51
- function swap_css_class_name(elements,class1,class2){for(var i=0;i<elements.length;i++){var element=ge(elements[i]);if(element.className.indexOf(class1)!=-1){element.className=element.className.replace(class1,class2);}else{element.className=element.className.replace(class2,class1);}}}
52
- function add_css_class_name(elem,cname){if(elem&&cname){if(elem.className){if(has_css_class_name(elem,cname)){return false;}else{elem.className+=' '+trim(cname);return true;}}else{elem.className=cname;return true;}}else{return false;}}
53
- function remove_css_class_name(elem,cname){if(elem&&cname&&elem.className){cname=trim(cname);var old=elem.className;elem.className=elem.className.replace(new RegExp('\\b'+cname+'\\b'),'');return elem.className!=old;}else{return false;}}
54
- function toggle_css_class_name(elem,cname){if(has_css_class_name(elem,cname)){remove_css_class_name(elem,cname);}else{add_css_class_name(elem,cname);}}
55
- function set_inner_html(obj,html){var dummy='<span style="display:none">&nbsp</span>';html=html.replace('<style',dummy+'<style');html=html.replace('<STYLE',dummy+'<STYLE');html=html.replace('<script',dummy+'<script');html=html.replace('<SCRIPT',dummy+'<SCRIPT');obj.innerHTML=html;eval_inner_js(obj);addSafariLabelSupport(obj);}
56
- function eval_inner_js(obj){var scripts=obj.getElementsByTagName('script');for(var i=0;i<scripts.length;i++){if(scripts[i].src){var script=document.createElement('script');script.type='text/javascript';script.src=scripts[i].src;document.body.appendChild(script);}else{try{eval_global(scripts[i].innerHTML);}catch(e){if(typeof console!='undefined'){console.error(e);}}}}}
57
- function eval_global(js){var obj=document.createElement('script');obj.type='text/javascript';try{obj.innerHTML=js;}catch(e){obj.text=js;}
58
- document.body.appendChild(obj);}
59
- var KEYS={BACKSPACE:8,TAB:9,RETURN:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};var KeyCodes={Up:63232,Down:63233,Left:63234,Right:63235};function mouseX(event)
60
- {return event.pageX||(event.clientX+
61
- (document.documentElement.scrollLeft||document.body.scrollLeft));}
62
- function mouseY(event)
63
- {return event.pageY||(event.clientY+
64
- (document.documentElement.scrollTop||document.body.scrollTop));}
65
- function pageScrollX()
66
- {return document.body.scrollLeft||document.documentElement.scrollLeft;}
67
- function pageScrollY()
68
- {return document.body.scrollTop||document.documentElement.scrollTop;}
69
- function elementX(obj){if(ua.safari()<500&&obj.tagName=='TR'){obj=obj.firstChild;}
70
- var left=obj.offsetLeft;var op=obj.offsetParent;while(obj.parentNode&&document.body!=obj.parentNode){obj=obj.parentNode;left-=obj.scrollLeft;if(op==obj){if(ua.safari()<500&&obj.tagName=='TR'){left+=obj.firstChild.offsetLeft;}else{left+=obj.offsetLeft;}
71
- op=obj.offsetParent;}}
72
- return left;}
73
- function elementY(obj){if(ua.safari()<500&&obj.tagName=='TR'){obj=obj.firstChild;}
74
- var top=obj.offsetTop;var op=obj.offsetParent;while(obj.parentNode&&document.body!=obj.parentNode){obj=obj.parentNode;if(!isNaN(obj.scrollTop)){top-=obj.scrollTop;}
75
- if(op==obj){if(ua.safari()<500&&obj.tagName=='TR'){top+=obj.firstChild.offsetTop;}else{top+=obj.offsetTop;}
76
- op=obj.offsetParent;}}
77
- return top;}
78
- function getElementsByTagNames(list,obj){if(!obj)var obj=document;var tagNames=list.split(',');var resultArray=new Array();for(var i=0;i<tagNames.length;i++){var tags=obj.getElementsByTagName(tagNames[i]);for(var j=0;j<tags.length;j++){resultArray.push(tags[j]);}}
79
- var testNode=resultArray[0];if(!testNode)return[];if(testNode.sourceIndex){resultArray.sort(function(a,b){return a.sourceIndex-b.sourceIndex;});}
80
- else if(testNode.compareDocumentPosition){resultArray.sort(function(a,b){return 3-(a.compareDocumentPosition(b)&6);});}
81
- return resultArray;}
82
- function get_all_form_inputs(root_element){if(!root_element){root_element=document;}
83
- return getElementsByTagNames('input,select,textarea,button',root_element);}
84
- function get_form_select_value(select){return select.options[select.selectedIndex].value;}
85
- function set_form_select_value(select,value){for(var i=0;i<select.options.length;++i){if(select.options[i].value==value){select.selectedIndex=i;break;}}}
86
- function get_form_attr(form,attr){var val=form[attr];if(typeof val=='object'&&val.tagName=='INPUT'){var pn=val.parentNode,ns=val.nextSibling,node=val;pn.removeChild(node);val=form[attr];ns?pn.insertBefore(node,ns):pn.appendChild(node);}
87
- return val;}
88
- function serialize_form_helper(data,name,value){var match=/([^\]]+)\[([^\]]*)\](.*)/.exec(name);if(match){data[match[1]]=data[match[1]]||{};if(match[2]==''){var i=0;while(data[match[1]][i]!=undefined){i++;}}else{i=match[2];}
89
- if(match[3]==''){data[match[1]][i]=value;}else{serialize_form_helper(data[match[1]],i.concat(match[3]),value);}}else{data[name]=value;}}
90
- function serialize_form(obj){var data={};var elements=obj.tagName=='FORM'?obj.elements:get_all_form_inputs(obj);for(var i=elements.length-1;i>=0;i--){if(elements[i].name&&!elements[i].disabled){if(!(elements[i].type=='radio'||elements[i].type=='checkbox')||elements[i].checked||(!elements[i].type||elements[i].type=='text'||elements[i].type=='password'||elements[i].type=='hidden'||elements[i].tagName=='TEXTAREA'||elements[i].tagName=='SELECT')){serialize_form_helper(data,elements[i].name,elements[i].value);}}}
91
- return data;}
92
- function is_button(element){var tagName=element.tagName.toUpperCase();if(tagName=='BUTTON'){return true;}
93
- if(tagName=='INPUT'&&element.type){var type=element.type.toUpperCase();return type=='BUTTON'||type=='SUBMIT';}
94
- return false;}
95
- function autogrow_textarea(obj){var padding=15;var shadow_div_id='shadow_'+obj.id;var shadow_div;if(!(shadow_div=ge(shadow_div_id))){shadow_div=document.createElement('div');shadow_div.id=shadow_div_id;shadow_div.style.position="absolute";shadow_div.style.left="-10000px";shadow_div.style.top="-10000px";shadow_div.style.fontSize=parseInt(get_style(obj,'fontSize'))+'px';shadow_div.style.fontFamily=get_style(obj,'fontFamily');shadow_div.style.width=parseInt(obj.clientWidth-8)+'px';obj.setAttribute('startHeight',obj.clientHeight);obj.parentNode.appendChild(shadow_div);}
96
- var clientHeight=obj.clientHeight;shadow_div.innerHTML=htmlspecialchars(obj.value).replace(/[\n]/g,'<br />&nbsp;');var shadowHeight=shadow_div.clientHeight;var to_height;var startHeight=obj.getAttribute('startHeight');if(shadowHeight<startHeight){to_height=startHeight;}else{to_height=shadowHeight+padding;}
97
- if(to_height&&to_height!=clientHeight){obj.style.height=to_height+'px';}}
98
- function textarea_maxlength(obj,length){if(obj.maxlength||!length){return;}
99
- obj.maxlength=length;var callback=textarea_maxlength_truncate.bind(null,obj,length);addEventBase(obj,'keydown',callback);addEventBase(obj,'keypress',callback);addEventBase(obj,'keyup',callback);setInterval(callback,150);}
100
- function textarea_maxlength_truncate(obj,length,event){if(obj.value.length>length){obj.value=obj.value.substring(0,length);}else if(obj.value.length==length){var key=event_get_keypress_keycode(event);var ok_keys=[KEYS.LEFT,KEYS.RIGHT,KEYS.UP,KEYS.DOWN,KEYS.BACKSPACE,KEYS.DELETE,KEYS.ESC]
101
- if(ok_keys.indexOf(key)==-1){event_prevent(event);}}}
102
- function addEventBase(obj,type,fn,name_hash)
103
- {if(obj.addEventListener){obj.addEventListener(type,fn,false);}
104
- else if(obj.attachEvent)
105
- {var fn_name=type+fn+name_hash;obj["e"+fn_name]=fn;obj[fn_name]=function(){obj["e"+fn_name](window.event);}
106
- obj.attachEvent("on"+type,obj[fn_name]);}
107
- return fn;}
108
- function removeEventBase(obj,type,fn,name_hash)
109
- {if(obj.removeEventListener){obj.removeEventListener(type,fn,false);}
110
- else if(obj.detachEvent)
111
- {var fn_name=type+fn+name_hash;if(obj[fn_name]){obj.detachEvent("on"+type,obj[fn_name]);obj[fn_name]=null;obj["e"+fn_name]=null;}}}
112
- function placeholderSetup(id){var el=ge(id);if(!el)return;if(el.type=='search')return;var ph=el.getAttribute("placeholder");if(!ph||ph=="")
113
- return;if(el.value==ph)
114
- el.value="";el.is_focused=(el.value!="");if(!el.is_focused){el.value=ph;el.style.color='#777';el.is_focused=0;}
115
- addEventBase(el,'focus',placeholderFocus);addEventBase(el,'blur',placeholderBlur);}
116
- function placeholderFocus(){if(!this.is_focused){this.is_focused=1;this.value='';this.style.color='#000';var rs=this.getAttribute("radioselect");if(rs&&rs!=""){var re=document.getElementById(rs);if(!re){return;}
117
- if(re.type!='radio')return;re.checked=true;}}}
118
- function placeholderBlur(){var ph=this.getAttribute("placeholder")
119
- if(this.is_focused&&ph&&this.value==""){this.is_focused=0;this.value=ph;this.style.color='#777';}}
120
- function placeholderGetValue(id){var el=ge(id);if(!el){return;}
121
- return el.getAttribute("placeholder");}
122
- function setFlashFallback(id,required_version){var fallback=ge(id);var version=deconcept.SWFObjectUtil.getPlayerVersion();if(fallback&&version['major']>0){var current_version=version['major']+'.'+version['minor']+'.'+version['rev'];fallback.innerHTML=tx('flash:upgrade-explanation',{'required-version':required_version,'current-version':current_version});}}
123
- function getFlashPlayer(){goURI('http://adobe.com/go/getflashplayer');return false;}
124
- function optional_drop_down_menu(arrow,link,menu,event,arrow_class,arrow_old_class,on_click_callback,off_click_callback)
125
- {if(menu.style.display=='none'){menu.style.display='block';var old_arrow_classname=arrow_old_class?arrow_old_class:arrow.className;if(link){link.className='active';}
126
- arrow.className=arrow_class?arrow_class:'global_menu_arrow_active';var justChanged=true;var shim=ge(menu.id+'_iframe');if(shim){shim.style.top=menu.style.top;shim.style.right=menu.style.right;shim.style.display='block';shim.style.width=(menu.offsetWidth+2)+'px';shim.style.height=(menu.offsetHeight+2)+'px';}
127
- menu.offclick=function(e){if(!justChanged){hide(this);if(link){link.className='';}
128
- arrow.className=old_arrow_classname;var shim=ge(menu.id+'_iframe');if(shim){shim.style.display='none';shim.style.width=menu.offsetWidth+'px';shim.style.height=menu.offsetHeight+'px';}
129
- if(off_click_callback){off_click_callback(e);}
130
- removeEventBase(document,'click',this.offclick,menu.id);}else{justChanged=false;}}.bind(menu);if(on_click_callback){on_click_callback();}
131
- addEventBase(document,'click',menu.offclick,menu.id);}
132
- return false;}
133
- function position_app_switcher(){var switcher=ge('app_switcher');var menu=ge('app_switcher_menu');menu.style.top=(switcher.offsetHeight-1)+'px';menu.style.right='0px';}
134
- function hover_tooltip(object,hover_link,hover_class,offsetX,offsetY){if(object.tooltip){var tooltip=object.previousSibling;tooltip.style.display='block';return;}else{object.parentNode.style.position="relative";var tooltip=document.createElement('div');tooltip.className="tooltip_pro "+hover_class;tooltip.style.left=-9999+'px';tooltip.style.display='block';tooltip.innerHTML='<div class="tooltip_text"><span>'+hover_link+'</span></div>'+'<div class="tooltip_pointer"></div>';object.parentNode.insertBefore(tooltip,object);while(tooltip.firstChild.firstChild.offsetWidth<=0){1;}
135
- var TOOLTIP_PADDING=16;var offsetWidth=tooltip.firstChild.firstChild.offsetWidth+TOOLTIP_PADDING;tooltip.style.width=offsetWidth+'px';tooltip.style.display='none';tooltip.style.left=offsetX+object.offsetLeft-((offsetWidth-6-object.offsetWidth)/2)+'px';tooltip.style.top=offsetY+'px';tooltip.style.display='block';object.tooltip=true;object.onmouseout=function(e){hover_clear_tooltip(object)};}}
136
- function hover_clear_tooltip(object){var tooltip=object.previousSibling;tooltip.style.display='none';}
137
- function addSafariLabelSupport(base){if(ua.safari()<500){var labels=(base||document.body).getElementsByTagName("label");for(i=0;i<labels.length;i++){labels[i].addEventListener('click',addLabelAction,true);}}}
138
- function addLabelAction(event){var id=this.getAttribute('for');var item=null;if(id){item=document.getElementById(id);}else{item=this.getElementsByTagName('input')[0];}
139
- if(!item||event.srcElement==item){return;}
140
- if(item.type=='checkbox'){item.checked=!item.checked;}else if(item.type=='radio'){var radios=document.getElementsByTagName('input');for(i=0;i<radios.length;i++){if(radios[i].name==item.name&&radios[i].form==item.form){radios.checked=false;}}
141
- item.checked=true;}else{item.focus();}
142
- if(item.onclick){item.onclick(event);}}
143
- function escapeURI(u)
144
- {if(encodeURIComponent){return encodeURIComponent(u);}
145
- if(escape){return escape(u);}}
146
- function goURI(href){window.location.href=href;}
147
- function is_email(email){return/^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(email);}
148
- function getViewportWidth(){var width=0;if(document.documentElement&&document.documentElement.clientWidth){width=document.documentElement.clientWidth;}
149
- else if(document.body&&document.body.clientWidth){width=document.body.clientWidth;}
150
- else if(window.innerWidth){width=window.innerWidth-18;}
151
- return width;};function getViewportHeight(){var height=0;if(window.innerHeight){height=window.innerHeight-18;}
152
- else if(document.documentElement&&document.documentElement.clientHeight){height=document.documentElement.clientHeight;}
153
- else if(document.body&&document.body.clientHeight){height=document.body.clientHeight;}
154
- return height;};function getPageScrollHeight(){var height;if(typeof(window.pageYOffset)=='number'){height=window.pageYOffset;}else if(document.body&&document.body.scrollTop){height=document.body.scrollTop;}else if(document.documentElement&&document.documentElement.scrollTop){height=document.documentElement.scrollTop;}
155
- if(isNaN(height))return 0;return height;};function getRadioFormValue(obj){for(i=0;i<obj.length;i++){if(obj[i].checked){return obj[i].value;}}
156
- return null;}
157
- function getTableRowShownDisplayProperty(){if(ua.ie()){return'inline';}else{return'table-row';}}
158
- function showTableRow()
159
- {for(var i=0;i<arguments.length;i++){var element=ge(arguments[i]);if(element&&element.style)element.style.display=getTableRowShownDisplayProperty();}
160
- return false;}
161
- function getParentRow(el){el=ge(el);while(el.tagName&&el.tagName!="TR"){el=el.parentNode;}
162
- return el;}
163
- function stopPropagation(e){if(!e)var e=window.event;e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}}
164
- function show_standard_status(status){s=ge('standard_status');if(s){var header=s.firstChild;header.innerHTML=status;show('standard_status');}}
165
- function hide_standard_status(){s=ge('standard_status');if(s){hide('standard_status');}}
166
- function adjustImage(obj,stop_word,max){var block=obj.parentNode;while(get_style(block,'display')!='block'&&block.parentNode){block=block.parentNode;}
167
- var width=block.offsetWidth;if(obj.offsetWidth>width){try{if(ua.ie()){var img_div=document.createElement('div');img_div.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+obj.src.replace('"','%22')+'", sizingMethod="scale")';img_div.style.width=width+'px';img_div.style.height=Math.floor(((width/obj.offsetWidth)*obj.offsetHeight))+'px';if(obj.parentNode.tagName=='A'){img_div.style.cursor='pointer';}
168
- obj.parentNode.insertBefore(img_div,obj);obj.parentNode.removeChild(obj);}else{throw 1;}}catch(e){obj.style.width=width+'px';}}
169
- remove_css_class_name(obj,'img_loading');}
170
- function imageConstrainSize(src,maxX,maxY,placeholderid){var image=new Image();image.onload=function(){if(image.width>0&&image.height>0){var width=image.width;var height=image.height;if(width>maxX||height>maxY){var desired_ratio=maxY/maxX;var actual_ratio=height/width;if(actual_ratio>desired_ratio){width=width*(maxY/height);height=maxY;}else{height=height*(maxX/width);width=maxX;}}
171
- var placeholder=ge(placeholderid);var newimage=document.createElement('img');newimage.src=src;newimage.width=width;newimage.height=height;placeholder.parentNode.insertBefore(newimage,placeholder);placeholder.parentNode.removeChild(placeholder);}}
172
- image.src=src;}
173
- function set_opacity(obj,opacity){try{obj.style.opacity=(opacity==1?'':opacity);obj.style.filter=(opacity==1?'':'alpha(opacity='+opacity*100+')');}
174
- catch(e){}}
175
- function get_opacity(obj){var opacity=get_style(obj,'filter');var val=null;if(opacity&&(val=/(\d+(?:\.\d+)?)/.exec(opacity))){return parseFloat(val.pop())/100;}else if(opacity=get_style(obj,'opacity')){return parseFloat(opacity);}else{return 1;}}
176
- function get_caret_position(obj){obj.focus();if(document.selection){if(obj.tagName=='INPUT'){var range=document.selection.createRange();return{start:-range.moveStart('character',-obj.value.length),end:-range.moveEnd('character',-obj.value.length)};}else if(obj.tagName=='TEXTAREA'){var range=document.selection.createRange();var range2=range.duplicate();range2.moveToElementText(obj);range2.setEndPoint('StartToEnd',range);var end=obj.value.length-range2.text.length;range2.setEndPoint('StartToStart',range);return{start:obj.value.length-range2.text.length,end:end};}else{return{start:undefined,end:undefined};}}else{return{start:obj.selectionStart,end:obj.selectionEnd};}}
177
- function set_caret_position(obj,start,end){if(document.selection){if(obj.tagName=='TEXTAREA'){var i=obj.value.indexOf("\r",0);while(i!=-1&&i<end){end--;if(i<start){start--;}
178
- i=obj.value.indexOf("\r",i+1);}}
179
- var range=obj.createTextRange();range.collapse(true);range.moveStart('character',start);if(end!=undefined){range.moveEnd('character',end-start);}
180
- range.select();}else{obj.selectionStart=start;var sel_end=end==undefined?start:end;obj.selectionEnd=Math.min(sel_end,obj.value.length);obj.focus();}}
181
- function focus_login(){var email=ge("email");var pass=ge("pass");var dologin=ge("doquicklogin");if(email&&pass){if(email.value!=""&&pass.value==""){pass.focus();}else if(email.value==""){email.focus();}else if(email.value!=""&&pass.value!=""){dologin.focus();}}}
182
- function login_form_change(){var persistent=ge('persistent');if(persistent){persistent.checked=false;}}
183
- function require_password_confirmation(onsuccess,oncancel){if((!getCookie('sid')||getCookie('sid')=='0')||getCookie('pk')){onsuccess();return;}
184
- require_password_confirmation.onsuccess=onsuccess;require_password_confirmation.oncancel=oncancel;(new pop_dialog()).show_ajax_dialog('/ajax/password_check_dialog.php');}
185
- function search_onsubmit(form){form.submit();}
186
- function search_submit(){var search_form=ge('qsearchform');var search_input=ge('q');if(search_input.value!=""){search_form.submit();}else{search_input.focus();}
187
- return;}
188
- var ua={ie:function(){return this._ie;},firefox:function(){return this._firefox;},opera:function(){return this._opera;},safari:function(){return this._safari;},windows:function(){return this._windows;},osx:function(){return this._osx;},populate:function(){var agent=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera.(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))/.exec(navigator.userAgent);var os=/(Mac OS X;)|(Windows;)/.exec(navigator.userAgent);if(agent){ua._ie=agent[1]?parseFloat(agent[1]):NaN;ua._firefox=agent[2]?parseFloat(agent[2]):NaN;ua._opera=agent[3]?parseFloat(agent[3]):NaN;ua._safari=agent[4]?parseFloat(agent[4]):NaN;}else{ua._ie=ua._firefox=ua._opera=ua._safari=NaN;}
189
- if(os){ua._osx=!!os[1];ua._windows=!!os[2];}else{ua._osx=ua._windows=false;}},adjustBehaviors:function(){onloadRegister(addSafariLabelSupport);if(ua.ie()<7){try{document.execCommand('BackgroundImageCache',false,true);}catch(ignored){}}}};function is_scalar(v){switch(typeof(v)){case'string':case'number':case'null':case'boolean':return true;}
190
- return false;}
191
- function is_empty(obj){for(var i in obj){return false;}
192
- return true;}
193
- function is_node(o,of_type){if(typeof(Node)=='undefined'){Node=null;}
194
- try{if(!o||!((Node!=undefined&&o instanceof Node)||o.nodeName)){return false;}}catch(ignored){return false;}
195
- if(typeof(of_type)!=="undefined"){if(!(of_type instanceof Array)){of_type=[of_type];}
196
- var name;try{name=new String(o.nodeName).toUpperCase();}catch(ignored){return false;}
197
- for(var ii=0;ii<of_type.length;ii++){try{if(name==of_type[ii].toUpperCase()){return true;}}catch(ignored){}}
198
- return false;}
199
- return true;}
200
- var DOM={setText:function(el,text){if(ua.firefox()){el.textContent=text;}else{el.innerText=text;}},getText:function(el){if(ua.firefox()){return el.textContent;}else{return el.innerText;}},setContent:function(el,content){if(ua.ie()){for(var ii=el.childNodes.length-1;ii>=0;--ii){DOM.remove(el.childNodes[ii]);}}else{el.innerHTML='';}
201
- if(content instanceof HTML){set_inner_html(el,content.toString());}else if(is_scalar(content)){content=document.createTextNode(content);el.appendChild(content);}else if(is_node(content)){el.appendChild(content);}else if(content instanceof Array){for(var ii=0;ii<content.length;ii++){var node=content[ii];if(!is_node(node)){node=document.createTextNode(node);}
202
- el.appendChild(node);}}else{Util.error('No way to set content %q.',content);}},remove:function(el){return remove_node(el);},create:function(element,attributes,children){element=document.createElement(element);if(attributes){attributes=copy_properties({},attributes);if(attributes.style){copy_properties(element.style,attributes.style);delete attributes.style;}
203
- copy_properties(element,attributes);}
204
- if(children!=undefined){DOM.setContent(element,children);}
205
- return element;},scry:function(element,pattern){pattern=pattern.split('.');var tag=pattern[0]||null;if(!tag){return[];}
206
- var cls=pattern[1]||null;var candidates=element.getElementsByTagName(tag);if(cls!==null){var satisfy=[];for(var ii=0;ii<candidates.length;ii++){if(CSS.hasClass(candidates[ii],cls)){satisfy.push(candidates[ii]);}}
207
- candidates=satisfy;}
208
- return candidates;}};$N=DOM.create;var CSS={removeClass:function(element,className){return remove_css_class_name(element,className);},hasClass:function(element,className){return has_css_class_name(element,className);},addClass:function(element,className){return add_css_class_name(element,className);},setClass:function(element,className){element.className=className;return CSS;},Cursor:{kGrabbable:'grabbable',kGrabbing:'grabbing',kEditable:'editable',set:function(element,name){element=element||document.body;switch(name){case CSS.Cursor.kEditable:name='text';break;case CSS.Cursor.kGrabbable:if(ua.firefox()){name='-moz-grab';}else{name='move';}
209
- break;case CSS.Cursor.kGrabbing:if(ua.firefox()){name='-moz-grabbing';}else{name='move';}
210
- break;}
211
- element.style.cursor=name;}}};if(Object.prototype.eval){window.eval=Object.prototype.eval;}
212
- delete Object.prototype.eval;delete Object.prototype.valueOf;Array.prototype.forEach=null;Array.prototype.every=null;Array.prototype.map=null;Array.prototype.some=null;Array.prototype.reduce=null;Array.prototype.reduceRight=null;Array.prototype.filter=null;Array.prototype.sort=(function(sort){return function(callback){return(this==window)?null:(callback?sort.call(this,function(a,b){return callback(a,b)}):sort.call(this));}})(Array.prototype.sort);Array.prototype.reverse=(function(reverse){return function(){return(this==window)?null:reverse.call(this);}})(Array.prototype.reverse);Array.prototype.concat=(function(concat){return function(){return(this==window)?null:concat.apply(this,arguments);}})(Array.prototype.concat);Array.prototype.slice=(function(slice){return function(){return(this==window)?null:slice.apply(this,arguments);}})(Array.prototype.slice);if(!Array.prototype.indexOf){Array.prototype.indexOf=function(val,index){if(!index||index<0){index=0;}
213
- for(var i=index;i<this.length;i++){if(this[i]==val){return i;}}
214
- return-1;};}
215
- Array.prototype.each=function(callback){if(this==window){return;}
216
- for(var i=0;i<this.length;i++){callback.call(this,this[i],i);}}
217
- Array.prototype.clone=Array.prototype.slice;Function.prototype.extend=function(superclass){var superprototype=__metaprototype(superclass,0);var subprototype=__metaprototype(this,superprototype.prototype.__level+1);subprototype.parent=superprototype;}
218
- function __metaprototype(obj,level){if(obj.__metaprototype){return obj.__metaprototype;}
219
- var metaprototype=new Function();metaprototype.construct=__metaprototype_construct;metaprototype.prototype.construct=__metaprototype_wrap(obj,level,true);metaprototype.prototype.__level=level;metaprototype.base=obj;obj.prototype.parent=metaprototype;obj.__metaprototype=metaprototype;return metaprototype;}
220
- function __metaprototype_construct(instance){__metaprototype_init(instance.parent);var parents=[];var obj=instance;while(obj.parent){parents.push(new_obj=new obj.parent());new_obj.__instance=instance;obj=obj.parent;}
221
- instance.parent=parents[1];parents.reverse();parents.pop();instance.__parents=parents;instance.__instance=instance;return instance.parent.construct.apply(instance.parent,arguments);}
222
- window.aiert=(function(a){var aiert=function _aiert(m){a(m);}
223
- return aiert;})(window.alert);window.alert=function _alert(m){if(m!==undefined){(new Image()).src='/ajax/typeahead_callback.php?l='+escapeURI(document.location)+'&m='+
224
- escapeURI(m)+(typeof Env!='undefined'?'&t='+Math.round(((new Date()).getTime()-Env.start)/100):'')+'&d='+escapeURI((typeof fbpd!='undefined')?fbpd:'')+'&s='+escapeURI(typeof Util!='undefined'?Util.stack():'');return window.aiert(m);}}
225
- function __metaprototype_init(metaprototype){if(metaprototype.initialized)return;var base=metaprototype.base.prototype;if(metaprototype.parent){__metaprototype_init(metaprototype.parent);var parent_prototype=metaprototype.parent.prototype;for(i in parent_prototype){if(i!='__level'&&i!='construct'&&base[i]===undefined){base[i]=metaprototype.prototype[i]=parent_prototype[i]}}}
226
- metaprototype.initialized=true;var level=metaprototype.prototype.__level;for(i in base){if(i!='parent'){base[i]=metaprototype.prototype[i]=__metaprototype_wrap(base[i],level);}}}
227
- function __metaprototype_wrap(method,level,shift){if(typeof method!='function'||method.__prototyped){return method;}
228
- var func=function(){var instance=this.__instance;if(instance){var old_parent=instance.parent;instance.parent=level?instance.__parents[level-1]:null;if(shift){var args=[];for(var i=1;i<arguments.length;i++){args.push(arguments[i]);}
229
- var ret=method.apply(instance,args);}else{var ret=method.apply(instance,arguments);}
230
- instance.parent=old_parent;return ret;}else{return method.apply(this,arguments);}}
231
- func.__prototyped=true;return func;}
232
- function xdp(object)
233
- {var descString="";var n=20;for(var value in object){try{descString+=(value+" => "+object[value]+"\n");}catch(exception){descString+=(value+" => "+exception+"\n");}
234
- if(!n--){aiert(descString);descString='';n=20;}}
235
- if(descString!="")
236
- aiert(descString);else
237
- aiert(object);}
238
- function adClick(id)
239
- {ajax=new Ajax();ajax.get('/ajax/redirect.php',{'id':id},true);return true;}
240
- function abTest(data,inline)
241
- {AsyncRequest.pingURI('/ajax/abtest.php',{data:data,"post_form_id":null},true);if(!inline){return true;}}
242
- function ac(metadata)
243
- {AsyncRequest.pingURI('/ajax/ac.php',{'meta':metadata},true);return true;}
244
- function bagofholding(){return undefined;};function id(input){return input;}
245
- function setCookie(cookieName,cookieValue,nDays){if(nDays){var today=new Date();var expire=new Date();expire.setTime(today.getTime()+3600000*24*nDays);}
246
- document.cookie=cookieName+"="+escape(cookieValue)+"; "+
247
- (nDays?"expires="+expire.toGMTString()+"; ":"")+"path=/; domain=.facebook.com";}
248
- function clearCookie(cookieName){document.cookie=cookieName+"=; expires=Mon, 26 Jul 1997 05:00:00 GMT; path=/; domain=.facebook.com";}
249
- function getCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0){return unescape(c.substring(nameEQ.length,c.length));}}
250
- return null;}
251
- function do_post(url){var pieces=/(^([^?])+)\??(.*)$/.exec(url);var form=document.createElement('form');form.action=pieces[1];form.method='post';form.style.display='none';var sparam=/([\w]+)(?:=([^&]+)|&|$)/g;var param=null;if(ge('post_form_id'))
252
- pieces[3]+='&post_form_id='+$('post_form_id').value;while(param=sparam.exec(pieces[3])){var input=document.createElement('input');input.type='hidden';input.name=param[1];input.value=param[2];form.appendChild(input);}
253
- document.body.appendChild(form);form.submit();return false;}
254
- function dynamic_post(url,params){var form=document.createElement('form');form.action=url;form.method='POST';form.style.display='none';if(ge('post_form_id')){params['post_form_id']=$('post_form_id').value;}
255
- for(var param in params){var input=document.createElement('input');input.type='hidden';input.name=param;input.value=params[param];form.appendChild(input);}
256
- document.body.appendChild(form);form.submit();return false;}
257
- function rand32(){return Math.floor(Math.random()*4294967295);}
258
- function play_sound(path,loop){loop=loop||false;var s;document.body.appendChild(s=document.createElement('span'));s.innerHTML='<embed src="'+path+'" autostart="true" hidden="true" '+'loop="'+(loop?"true":"false")+'" />';}
259
- function image_has_loaded(obj){if((obj.mimeType!=null&&obj.complete&&obj.mimeType!='')||(obj.naturalHeight!=null&&obj.complete&&obj.naturalHeight!=0)){return true;}else if(ua.safari()<3){var new_image=new Image();new_image.src=obj.src;if(new_image.complete==true){return true;}
260
- delete new_image;}}
261
- function image_has_failed(obj){if((obj.complete==null&&obj.width==20&&obj.height==20)||(obj.mimeType!=null&&obj.complete&&obj.mimeType=='')||(obj.naturalHeight!=null&&obj.complete&&obj.naturalHeight==0)){return true;}}
262
- function anchor_set(anchor){window.location=window.location.href.split('#')[0]+'#'+anchor;}
263
- function anchor_get(){return window.location.href.split('#')[1]||null;}
264
- function event_get(e){return e||window.event;}
265
- function event_get_target(e){return(e=event_get(e))&&(e['target']||e['srcElement']);}
266
- function event_abort(e){(e=event_get(e))&&(e.cancelBubble=true)&&e.stopPropagation&&e.stopPropagation();return false;}
267
- function event_prevent(e){(e=event_get(e))&&!(e.returnValue=false)&&e.preventDefault&&e.preventDefault();return false;}
268
- function event_get_keypress_keycode(event){event=event_get(event);if(!event){return false;}
269
- switch(event.keyCode){case 63232:return 38;case 63233:return 40;case 63234:return 37;case 63235:return 39;case 63272:case 63273:case 63275:return null;case 63276:return 33;case 63277:return 34;}
270
- if(event.shiftKey){switch(event.keyCode){case 33:case 34:case 37:case 38:case 39:case 40:return null;}}else{return event.keyCode;}}
271
- function env_get(k){return typeof(window['Env'])!='undefined'&&Env[k];}
272
- function cavalry_log(cohort){var _end=new Date();var flashVersion;try{flashVersion=deconcept.SWFObjectUtil.getPlayerVersion();}catch(x){flashVersion={major:0,minor:0,rev:666};}
273
- (new Image()).src="/common/instrument_endpoint.php?g="+cohort
274
- +"&uri="+encodeURIComponent(window.location)
275
- +"&d="+(_end.getTime()-Env.start)
276
- +"&c="+Env.cache
277
- +"&p="+Env.pkgv
278
- +"&k="+(document.cookie.length)
279
- +"&fmj="+flashVersion.major
280
- +"&fmn="+flashVersion.minor
281
- +"&frv="+flashVersion.rev
282
- +"&"+Math.random();}
283
- function ScriptInventory(){}
284
- ScriptInventory._inventory=[];ScriptInventory.addScript=function(name,version,time){ScriptInventory._inventory.push([name,version,time].join(':'));}
285
- ScriptInventory.getInventory=function(){return ScriptInventory._inventory.join(';');}
286
- function chain(u,v){var calls=[];for(var ii=0;ii<arguments.length;ii++){calls.push(arguments[ii]);}
287
- return function(){for(var ii=0;ii<calls.length;ii++){if(calls[ii]&&calls[ii].apply(null,arguments)===false){return false;}}
288
- return true;}}
289
- function onloadRegister(handler){window.loaded?_runHook(handler):_addHook('onloadhooks',handler);}
290
- function onafterloadRegister(handler){window.loaded?_runHook(handler):_addHook('onafterloadhooks',handler);}
291
- function onbeforeunloadRegister(handler){_addHook('onbeforeunloadhooks',handler);}
292
- function onunloadRegister(handler){_addHook('onunloadhooks',handler);}
293
- function _onloadHook(){_runHooks('onloadhooks');window.loaded=true;}
294
- function _runHook(handler){try{handler();}catch(ex){Util.error('Uncaught exception in hook (run after page load): %x',ex);}}
295
- function _runHooks(hooks){var isbeforeunload=(hooks=='onbeforeunloadhooks');var warn=null;do{var h=window[hooks];if(!isbeforeunload){window[hooks]=null;}
296
- if(!h){break;}
297
- for(var ii=0;ii<h.length;ii++){if(isbeforeunload){warn=warn||h[ii]();}else{h[ii]();}}
298
- if(isbeforeunload){break;}}while(window[hooks]);if(isbeforeunload){if(warn){return warn;}else{window.loaded=false;}}}
299
- function _addHook(hooks,handler){(window[hooks]?window[hooks]:(window[hooks]=[])).push(handler);}
300
- function _bootstrapEventHandlers(){if(document.addEventListener){if(ua.safari()){var timeout=setInterval(function(){if(/loaded|complete/.test(document.readyState)){_onloadHook();clearTimeout(timeout);}},10);}else{document.addEventListener("DOMContentLoaded",_onloadHook,true);}}else{var src='javascript:void(0)';if(window.location.protocol=='https:'){src='//:';}
301
- document.write('<script onreadystatechange="if (this.readyState==\'complete\') {'+'this.parentNode.removeChild(this);_onloadHook();}" defer="defer" '+'src="'+src+'"><\/script\>');}
302
- window.onload=chain(window.onload,function(){_onloadHook();_runHooks('onafterloadhooks');});window.onbeforeunload=function(){return _runHooks('onbeforeunloadhooks');};window.onunload=chain(window.onunload,function(){_runHooks('onunloadhooks');});}
303
- function iterTraverseDom(root,visitCb){var c=root,n=null;var it=0;do{n=c.firstChild;if(!n){if(visitCb(c)==false)
304
- return;n=c.nextSibling;}
305
- if(!n){var tmp=c;do{n=tmp.parentNode;if(n==root)
306
- break;if(visitCb(n)==false)
307
- return;tmp=n;n=n.nextSibling;}
308
- while(!n);}
309
- c=n;}
310
- while(c!=root);}
311
- function prependChild(parent,elem){if(parent.firstChild){parent.insertBefore(elem,parent.firstChild);}else{parent.appendChild(elem);}}
312
- function insertAfter(parent,child,elem){if(parent!=child.parentNode){Util.error('child is not really a child of parent - wtf, seriously.');}
313
- if(child.nextSibling){var ret=parent.insertBefore(elem,child.nextSibling);}else{var ret=parent.appendChild(elem);}
314
- if(!ret){return null;}
315
- return elem;}
316
- ua.populate();_bootstrapEventHandlers();ua.adjustBehaviors();if(navigator&&navigator.userAgent&&!(parseInt((/Gecko\/([0-9]+)/.exec(navigator.userAgent)||[]).pop())<=20060508)){document.domain='facebook.com';}
317
- if(typeof(ScriptInventory)!='undefined'){ScriptInventory.addScript("\/var\/releases\/thefacebook-r82587-02122008\/www\/html\/js\/base.js", "82827", 1202888131);}