Google Doc Embedder - Version 2.4

Version Description

  • Added: Allow native upload/insert of all supported file types
  • Added: Shortcode inserted from Media Library for supported files
  • Added: Localization support (translations welcome)
  • Added: Ability to use mobile theme with Enhanced Viewer
  • Fixed: Toolbar customization on mobile with Enhanced Viewer
  • Fixed: Editor integration No longer loads its own TinyMCE/jquery libs
  • Fixed: URL changes for plugin, help links, beta checking
  • Fixed: "Moved Temporarily" error in Enhanced Viewer (thanks webmonkeywatts)
Download this release

Release Info

Developer k3davis
Plugin Icon wp plugin Google Doc Embedder
Version 2.4
Comparing to
See all releases

Code changes from version 2.3 to 2.4

bootstrap.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // bootstrap for getting ABSPATH constant to wp-load.php outside the admin screen
4
+ if (!defined('WP_LOAD_PATH')) {
5
+ $classic_root = dirname(dirname(dirname(dirname(__FILE__)))).'/';
6
+ if (file_exists($classic_root.'wp-load.php') ) {
7
+ define('WP_LOAD_PATH', $classic_root);
8
+ } else {
9
+ if (file_exists($path.'wp-load.php')) {
10
+ define('WP_LOAD_PATH', $path);
11
+ } else {
12
+ exit(__('Could not find wp-load.php', 'gde'));
13
+ }
14
+ }
15
+ }
16
+
17
+ //Load wp-load.php
18
+ require_once(WP_LOAD_PATH.'wp-load.php');
19
+
20
+ ?>
gde-dialog.php CHANGED
@@ -1,13 +1,16 @@
1
  <?php
2
- //require_once("../../../wp-config.php");
 
 
 
3
  ?>
4
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
  <html xmlns="http://www.w3.org/1999/xhtml">
6
  <head>
7
  <title>Google Doc Embedder</title>
8
- <script type="text/javascript" src="js/tiny_mce_popup.js"></script>
 
9
  <script type="text/javascript" src="js/dialog.js"></script>
10
- <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
11
 
12
  <style type="text/css">
13
  h2 {
@@ -28,55 +31,57 @@
28
  <form onsubmit="GDEInsertDialog.insert();return false;" action="#">
29
  <p>
30
  <input name="diy" type="checkbox" value="1" class="diy"/>
31
- I'll insert the shortcode myself
32
  </p>
33
- <h2 class="gray">GDE Shortcode Options</h2></td>
34
  </tr>
35
 
36
  <fieldset>
37
- <legend class="gray dwl_gray">Required</legend>
38
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
39
  <tr>
40
- <td align="right" class="gray dwl_gray"><strong>URL or Filename</strong><br />Full URL or filename to append to File Base URL</td>
41
  <td valign="top"><input name="url" type="text" class="opt dwl" id="url" style="width:200px;" /><br/>
42
- <span id="uri-note"></span></td>
 
 
43
  </tr>
44
  </table>
45
  </fieldset>
46
 
47
  <br/>
48
  <fieldset>
49
- <legend class="gray dwl_gray">Optional (Override Global Settings)</legend>
50
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
51
  <tr>
52
- <td align="right" class="gray dwl_gray"><strong>Height</strong><br/>(format: 40% or 300px)</td>
53
  <td valign="top" style="width:200px;"><input name="height" type="text" class="opt dwl" id="height" size="6" /></td>
54
  </tr>
55
  <tr>
56
- <td align="right" class="gray dwl_gray"><strong>Width</strong><br/>(format: 40% or 300px)</td>
57
  <td valign="top"><input name="width" type="text" class="opt dwl" id="width" size="6" /></td>
58
  </tr>
59
  <tr>
60
- <td align="right" class="gray dwl_gray"><strong>Show Download Link</strong></td>
61
- <td valign="top" class="gray dwl_gray"><input name="save" type="radio" class="opt dwl save" value="1" /> Yes <input name="save" type="radio" class="opt dwl save" value="0" /> No</td>
62
  </tr>
63
  <tr>
64
  <td colspan="2" class="gray dwl_gray">
65
  <input name="restrict_dl" type="checkbox" value="-1" class="restrict_dl dwl opt" />
66
- Show download link only if user is logged in
67
  </td>
68
  </tr>
69
  <tr>
70
  <td colspan="2" class="gray dwl_gray">
71
  <input name="disable_cache" type="checkbox" value="-1" class="disable_cache dwl opt" />
72
- Disable caching (this document is frequently overwritten)
73
  </td>
74
  </tr>
75
  <tr>
76
  <tr>
77
  <td colspan="2" class="gray dwl_gray">
78
  <input name="bypass_error" type="checkbox" value="-1" class="bypass_error opt" />
79
- Disable internal error checking (try if URL is confirmed good but document doesn't display)
80
  </td>
81
  </tr>
82
  </table>
@@ -86,8 +91,8 @@
86
  <tr>
87
  <td colspan="2">
88
  <br />
89
- Shortcode Preview
90
- <textarea name="shortcode" cols="72" rows="2" id="shortcode"></textarea>
91
  </td>
92
  </tr>
93
 
@@ -95,11 +100,11 @@
95
 
96
  <div class="mceActionPanel">
97
  <div style="float: left">
98
- <input type="button" id="insert" name="insert" value="{#insert}" onclick="GDEInsertDialog.insert();" />
99
  </div>
100
 
101
  <div style="float: right">
102
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
103
  </div>
104
  </div>
105
  </form>
1
  <?php
2
+
3
+ // access wp functions externally
4
+ require_once('bootstrap.php');
5
+
6
  ?>
7
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
8
  <html xmlns="http://www.w3.org/1999/xhtml">
9
  <head>
10
  <title>Google Doc Embedder</title>
11
+ <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-includes/js/tinymce/tiny_mce_popup.js"></script>
12
+ <script language="javascript" type="text/javascript" src="<?php echo get_option('siteurl'); ?>/wp-includes/js/jquery/jquery.js"></script>
13
  <script type="text/javascript" src="js/dialog.js"></script>
 
14
 
15
  <style type="text/css">
16
  h2 {
31
  <form onsubmit="GDEInsertDialog.insert();return false;" action="#">
32
  <p>
33
  <input name="diy" type="checkbox" value="1" class="diy"/>
34
+ <?php _e('I\'ll insert the shortcode myself', 'gde'); ?>
35
  </p>
36
+ <h2 class="gray"><?php _e('GDE Shortcode Options', 'gde'); ?></h2></td>
37
  </tr>
38
 
39
  <fieldset>
40
+ <legend class="gray dwl_gray"><?php _e('Required', 'gde'); ?></legend>
41
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
42
  <tr>
43
+ <td align="right" class="gray dwl_gray"><strong><?php _e('URL or Filename', 'gde'); ?></strong><br /><?php _e('Full URL or filename to append to File Base URL', 'gde'); ?></td>
44
  <td valign="top"><input name="url" type="text" class="opt dwl" id="url" style="width:200px;" /><br/>
45
+ <span id="uri-note-base" style="display:none;color:#2B6FB6;"><?php _e('File Base URL will be prefixed', 'gde'); ?></span>
46
+ <span id="uri-note-file" style="display:none;color:red;"><?php _e('Unsupported file type', 'gde'); ?></span>
47
+ </td>
48
  </tr>
49
  </table>
50
  </fieldset>
51
 
52
  <br/>
53
  <fieldset>
54
+ <legend class="gray dwl_gray"><?php _e('Optional (Override Global Settings)', 'gde'); ?></legend>
55
  <table width="100%" border="0" cellspacing="0" cellpadding="5">
56
  <tr>
57
+ <td align="right" class="gray dwl_gray"><strong><?php _e('Height', 'gde'); ?></strong><br/>(<?php _e('format:', 'gde'); ?> 40% <?php _e('or', 'gde'); ?> 300px)</td>
58
  <td valign="top" style="width:200px;"><input name="height" type="text" class="opt dwl" id="height" size="6" /></td>
59
  </tr>
60
  <tr>
61
+ <td align="right" class="gray dwl_gray"><strong><?php _e('Width', 'gde'); ?></strong><br/>(<?php _e('format:', 'gde'); ?> 40% <?php _e('or', 'gde'); ?> 300px)</td>
62
  <td valign="top"><input name="width" type="text" class="opt dwl" id="width" size="6" /></td>
63
  </tr>
64
  <tr>
65
+ <td align="right" class="gray dwl_gray"><strong><?php _e('Show Download Link', 'gde'); ?></strong></td>
66
+ <td valign="top" class="gray dwl_gray"><input name="save" type="radio" class="opt dwl save" value="1" /> <?php _e('Yes', 'gde'); ?> <input name="save" type="radio" class="opt dwl save" value="0" /> <?php _e('No', 'gde'); ?></td>
67
  </tr>
68
  <tr>
69
  <td colspan="2" class="gray dwl_gray">
70
  <input name="restrict_dl" type="checkbox" value="-1" class="restrict_dl dwl opt" />
71
+ <?php _e('Show download link only if user is logged in', 'gde'); ?>
72
  </td>
73
  </tr>
74
  <tr>
75
  <td colspan="2" class="gray dwl_gray">
76
  <input name="disable_cache" type="checkbox" value="-1" class="disable_cache dwl opt" />
77
+ <?php _e('Disable caching (this document is frequently overwritten)', 'gde'); ?>
78
  </td>
79
  </tr>
80
  <tr>
81
  <tr>
82
  <td colspan="2" class="gray dwl_gray">
83
  <input name="bypass_error" type="checkbox" value="-1" class="bypass_error opt" />
84
+ <?php _e('Disable internal error checking (try if URL is confirmed good but document doesn\'t display)', 'gde'); ?>
85
  </td>
86
  </tr>
87
  </table>
91
  <tr>
92
  <td colspan="2">
93
  <br />
94
+ <?php _e('Shortcode Preview', 'gde'); ?>
95
+ <textarea name="shortcode" cols="72" rows="2" id="shortcode"readonly="readonly"></textarea>
96
  </td>
97
  </tr>
98
 
100
 
101
  <div class="mceActionPanel">
102
  <div style="float: left">
103
+ <input type="button" id="insert" name="insert" value="<?php _e('Insert', 'gde'); ?>" onclick="GDEInsertDialog.insert();" />
104
  </div>
105
 
106
  <div style="float: right">
107
+ <input type="button" id="cancel" name="cancel" value="<?php _e('Cancel', 'gde'); ?>" onclick="tinyMCEPopup.close();" />
108
  </div>
109
  </div>
110
  </form>
gde-functions.php CHANGED
@@ -1,16 +1,17 @@
1
  <?php
2
 
3
  // external urls (help, etc.)
4
- @define('GDE_VIEWOPT_URL', 'http://davismetro.com/gde/settings/viewer-options/');
5
- @define('GDE_LINKOPT_URL', 'http://davismetro.com/gde/settings/download-link-options/');
6
- @define('GDE_ADVOPT_URL', 'http://davismetro.com/gde/settings/advanced-options/');
7
- @define('GDE_SUPPORT_URL', 'http://davismetro.com/gde/contact/');
8
- @define('GDE_BETA_URL', 'http://davismetro.com/gde/beta-program/');
9
- @define('GDE_BETA_CHKFILE', 'http://davismetro.com/gde/beta/gde-beta.chk');
10
 
11
- if ( ! defined( 'GDE_PLUGIN_URL' ) ) define( 'GDE_PLUGIN_URL', WP_PLUGIN_URL . '/google-document-embedder');
12
 
13
  function gde_init($reset = NULL) {
 
14
  $baseurl = get_bloginfo('url')."/wp-content/uploads/";
15
 
16
  // define global default settings
@@ -26,10 +27,12 @@ function gde_init($reset = NULL) {
26
  'show_dl' => 'yes',
27
  'restrict_dl' => 'no',
28
  'enable_ga' => 'no',
29
- 'link_text' => 'Download (%FT, %FS)',
30
  'link_pos' => 'below',
31
  'link_func' => 'default',
32
  'disable_proxy' => 'yes',
 
 
33
  'disable_editor' => 'no',
34
  'disable_caching' => 'no',
35
  'disable_hideerrors' => 'no',
@@ -58,6 +61,8 @@ function gde_init($reset = NULL) {
58
  foreach ($defaults as $key => $value) {
59
  if($gdeoptions[$key]) {
60
  $defaults[$key] = $gdeoptions[$key];
 
 
61
  }
62
  }
63
  }
@@ -223,7 +228,79 @@ function gde_add_tinymce_plugin($plugin_array) {
223
  return $plugin_array;
224
  }
225
 
226
- function gde_e($message) {
227
- _e($message, basename(dirname(__FILE__)));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  ?>
1
  <?php
2
 
3
  // external urls (help, etc.)
4
+ @define('GDE_VIEWOPT_URL', 'http://www.davistribe.org/gde/settings/viewer-options/');
5
+ @define('GDE_LINKOPT_URL', 'http://www.davistribe.org/gde/settings/download-link-options/');
6
+ @define('GDE_ADVOPT_URL', 'http://www.davistribe.org/gde/settings/advanced-options/');
7
+ @define('GDE_SUPPORT_URL', 'http://wordpress.org/tags/google-document-embedder?forum_id=10');
8
+ @define('GDE_BETA_URL', 'http://www.davistribe.org/gde/beta-program/');
9
+ @define('GDE_BETA_CHKFILE', 'http://dev.davismetro.com/beta/gde/beta.chk');
10
 
11
+ //if ( ! defined( 'GDE_PLUGIN_URL' ) ) define( 'GDE_PLUGIN_URL', WP_PLUGIN_URL . '/google-document-embedder');
12
 
13
  function gde_init($reset = NULL) {
14
+ // set default base url
15
  $baseurl = get_bloginfo('url')."/wp-content/uploads/";
16
 
17
  // define global default settings
27
  'show_dl' => 'yes',
28
  'restrict_dl' => 'no',
29
  'enable_ga' => 'no',
30
+ 'link_text' => __('Download', 'gde').' (%FT, %FS)',
31
  'link_pos' => 'below',
32
  'link_func' => 'default',
33
  'disable_proxy' => 'yes',
34
+ 'ed_extend_upload' => 'yes',
35
+ 'ed_embed_sc' => 'yes',
36
  'disable_editor' => 'no',
37
  'disable_caching' => 'no',
38
  'disable_hideerrors' => 'no',
61
  foreach ($defaults as $key => $value) {
62
  if($gdeoptions[$key]) {
63
  $defaults[$key] = $gdeoptions[$key];
64
+ } else {
65
+ $gdeoptions[$key] = $defaults[$key];
66
  }
67
  }
68
  }
228
  return $plugin_array;
229
  }
230
 
231
+ // modify the media insertion if requested
232
+ function gde_media_insert($html, $id, $attachment) {
233
+ global $supported_exts;
234
+
235
+ //get the mime-type
236
+ $mime_type = get_post_mime_type($id);
237
+
238
+ if (in_array($mime_type, $supported_exts)) {
239
+ // insert shortcode instead of link
240
+ $output = '[gview file="'.$attachment['url'].'"]';
241
+ return $output;
242
+ } else {
243
+ // default behavior
244
+ //return $html;
245
+ $output = "$mime_type not a value in supported_exts";
246
+ return $output;
247
+ }
248
  }
249
+
250
+ function gde_upload_mimes ( $existing_mimes=array() ) {
251
+ global $supported_exts;
252
+
253
+ // add upload support for natively unsupported mimetypes used by this plugin
254
+ foreach ($supported_exts as $ext => $mimetype) {
255
+ if (!array_key_exists($ext, gde_mimes_expanded($existing_mimes))) {
256
+ $existing_mimes[$ext] = $mimetype;
257
+ }
258
+ }
259
+ return gde_mimes_collapsed($existing_mimes);
260
+ }
261
+
262
+ function gde_mimes_expanded(array $types) {
263
+ // expand the supported mime types so that every ext is its own key
264
+ foreach ($types as $k => $v) {
265
+ if (substr("|", $k)) {
266
+ $subtypes = explode("|", $k);
267
+ foreach ($subtypes as $type) {
268
+ $newtypes[$type] = $v;
269
+ unset($types[$k]);
270
+ }
271
+ $types = array_merge($types, $newtypes);
272
+ }
273
+ }
274
+ return $types;
275
+ }
276
+
277
+ function gde_mimes_collapsed($types) {
278
+ // collapes the supported mime types so that each mime is listed once with combined key (default)
279
+ $newtypes = array();
280
+
281
+ foreach ($types as $k => $v) {
282
+ if (isset($newtypes[$v])) {
283
+ $newtypes[$v] .= '|' . $k;
284
+ } else {
285
+ $newtypes[$v] = $k;
286
+ }
287
+ }
288
+ return array_flip($newtypes);
289
+ }
290
+
291
+ /**
292
+ * Get plugin data
293
+ *
294
+ * @since 2.4.0.1
295
+ * @return array Array of plugin data parsed from main plugin file
296
+ */
297
+ function gde_get_plugin_data() {
298
+ if ( ! function_exists( 'get_plugin_data' ) ) {
299
+ require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
300
+ }
301
+ $plugin_data = get_plugin_data( GDE_PLUGIN_DIR . 'gviewer.php' );
302
+
303
+ return $plugin_data;
304
+ }
305
+
306
  ?>
gviewer.php CHANGED
@@ -2,15 +2,17 @@
2
 
3
  /*
4
  Plugin Name: Google Doc Embedder
5
- Plugin URI: http://www.davismetro.com/gde/
6
  Description: Lets you embed MS Office, PDF, TIFF, and many other file types in a web page using the Google Docs Viewer (no Flash or PDF browser plug-ins required).
7
  Author: Kevin Davis
8
- Author URI: http://www.davismetro.com/
9
- Version: 2.3
 
 
10
  License: GPLv2
11
  */
12
 
13
- $gde_ver = "2.3.0.98";
14
 
15
  /**
16
  * LICENSE
@@ -34,39 +36,43 @@ $gde_ver = "2.3.0.98";
34
  * @author Kevin Davis <kev@tnw.org>
35
  * @copyright Copyright 2012 Kevin Davis
36
  * @license http://www.gnu.org/licenses/gpl.txt GPL 2.0
37
- * @link http://davismetro.com/gde/
38
  */
39
 
 
 
 
 
 
40
  include_once('gde-functions.php');
41
  $gdeoptions = get_option('gde_options');
42
  $pUrl = plugins_url(plugin_basename(dirname(__FILE__)));
43
 
44
- // supported file types
45
- // note: updates here should also be added to js/dialog.js
46
- $exts = array(
47
- // ext => mime_type
48
- "ai" => "application/postscript", // upload not supported
49
- "doc" => "application/msword",
50
- "docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
51
- "dxf" => "application/dxf", // upload not supported
52
- "eps" => "application/postscript", // upload not supported
53
- "pdf" => "application/pdf",
54
- "pages" => "application/x-iwork-pages-sffpages", // upload not supported
55
- "ppt" => "application/vnd.ms-powerpoint",
56
- "pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
57
- "ps" => "application/postscript", // upload not supported
58
- "psd" => "image/photoshop", // upload not supported
59
- "rar" => "application/x-rar-compressed",
60
- "svg" => "image/svg+xml", // upload not supported
61
- "tif" => "image/tiff", // upload not supported
62
- "tiff" => "image/tiff", // upload not supported
63
- "ttf" => "application/x-font-ttf", // upload not supported
64
- "xls" => "application/vnd.ms-excel",
65
- "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
66
- "xps" => "application/vnd.ms-xpsdocument", // upload not supported
67
- "zip" => "application/zip"
68
  );
69
- $allowed_exts = implode("|",array_keys($exts));
70
 
71
  // basic usage: [gview file="http://path.to/file.pdf"]
72
  function gde_gviewer_func($atts) {
@@ -128,7 +134,7 @@ function gde_gviewer_func($atts) {
128
  if (($gdeoptions['disable_hideerrors'] == "no") || !$gdeoptions['disable_hideerrors']) {
129
  $code = "\n<!-- GDE EMBED ERROR: $status -->\n";
130
  } else {
131
- $code = "\n".'<div class="gde-error">Google Doc Embedder Error: '.$status."</div>\n";
132
  }
133
  } else {
134
  $code = "";
@@ -152,19 +158,24 @@ HERE;
152
  } else {
153
  $uefile = $file;
154
  }
 
155
  if ($gdeoptions['disable_proxy'] == "no") {
156
- $gdet = $gdeoptions['restrict_tb'];
157
- $lnk = $pUrl."/proxy.php?url=".$uefile."&hl=".$lang."&gdet=".$gdet."&embedded=true";
 
 
 
 
 
158
  } else {
159
- $lnk = "http://docs.google.com/viewer?url=".$uefile."&hl=".$lang."&embedded=true";
160
  }
 
161
  if (is_numeric($page)) {
162
  // jump to selected page - experimental (works on refresh but not initial page load)
163
  $page = (int) $page-1;
164
  $lnk = $lnk."#:0.page.".$page;
165
  }
166
- $linkcode = "";
167
-
168
  // hide download link for anonymous users
169
  get_currentuserinfo();
170
  $dlRestrict = $gdeoptions['restrict_dl'];
@@ -175,6 +186,7 @@ HERE;
175
  }
176
  }
177
 
 
178
  if ($save == "yes" || $save == "1") {
179
 
180
  $dlMethod = $gdeoptions['link_func'];
@@ -232,6 +244,8 @@ HERE;
232
 
233
  // activate plugin
234
  register_activation_hook( __FILE__, 'gde_activate');
 
 
235
 
236
  function gde_activate() {
237
  global $wpdb;
@@ -245,23 +259,23 @@ add_action('admin_menu', 'gde_option_page');
245
  function gde_option_page() {
246
  global $gde_settings_page;
247
 
248
- $gde_settings_page = add_options_page(gde_t('GDE Settings'), gde_t('GDE Settings'), 'manage_options', basename(__FILE__), 'gde_options');
249
 
250
  // enable settings jQuery
251
  add_action( 'admin_enqueue_scripts', 'gde_admin_custom_js' );
252
  }
253
  function gde_options() {
254
- if ( function_exists('current_user_can') && !current_user_can('manage_options') ) die(t('An error occurred.'));
255
- if (! user_can_access_admin_page()) wp_die( gde_t('You do not have sufficient permissions to access this page') );
256
 
257
- require(ABSPATH. '/wp-content/plugins/google-document-embedder/options.php');
258
  add_action('in_admin_footer', 'gde_admin_footer');
259
  }
260
 
261
  // add additional links, for convenience
262
  $plugin = plugin_basename(__FILE__);
263
  function gde_actlinks($links) {
264
- $settings_link = '<a href="options-general.php?page=gviewer.php">Settings</a>';
265
  array_unshift($links, $settings_link);
266
  return $links;
267
  }
@@ -269,7 +283,7 @@ function gde_metalinks($links, $file) {
269
  global $debug;
270
  $plugin = plugin_basename(__FILE__);
271
  if ($file == $plugin) {
272
- $support_link = '<a href="'.GDE_SUPPORT_URL.'">Support</a>';
273
  $links[] = $support_link;
274
  }
275
  return $links;
@@ -281,6 +295,12 @@ add_filter("plugin_row_meta", 'gde_metalinks', 10, 2);
281
  function gde_checkforBeta($plugin) {
282
  global $gde_ver, $pUrl, $gdeoptions;
283
 
 
 
 
 
 
 
284
  $pdata = get_plugin_data(__FILE__);
285
  if (preg_match('/-dev$/i', $pdata['Version'])) { $isbeta = 1; }
286
 
@@ -296,26 +316,26 @@ function gde_checkforBeta($plugin) {
296
  $message = $status[3];
297
 
298
  if ($isbeta) {
299
- $titleStr = "Updated beta";
300
- $msgStr = "A newer beta has been released. Please deactivate the plug-in and install the current version. Thanks for your help!";
301
  } else {
302
- $titleStr = "Beta";
303
- $msgStr = "Please deactivate the plug-in and install the current version if you wish to participate. Otherwise, you can turn off beta version checking in GDE Settings. Testers appreciated!";
304
  }
305
  $message = str_replace("%msg", $msgStr, $message);
306
 
307
  if ((version_compare(strval($rver), strval($lver), '>') == 1)) {
308
- $msg = __("$titleStr version available: ", "gde").'<strong>v'.$rver.'</strong> - '.$message;
309
- echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="background:#A2F099;border:1px solid #4FE23F; padding:2px; font-weight:bold;">'.__("$titleStr version available.", "gde").' <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">'.__("(more info)", "gde").'</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;" >'.$msg.'</div></td>';
310
  } elseif ($isbeta) {
311
- $msg = __("Thank you for running a test version of Google Doc Embedder. You are running the most current beta version. Please give feedback on this version using the &quot;Support&quot; link above. Thanks for your help!", "gde");
312
- echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="border:1px solid; padding:2px; font-weight:bold;">'.__("You're running a beta version. Please give feedback.", "gde").' <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">'.__("(more info)", "gde").'</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;" >'.$msg.'</div></td>';
313
  } else {
314
  return;
315
  }
316
  } elseif ($isbeta) {
317
- $msg = __("Thank you for running a test version of Google Doc Embedder. You are running the most current beta version. Please give feedback on this version using the &quot;Support&quot; link above. Thanks for your help!", "gde");
318
- echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="border:1px solid; padding:2px; font-weight:bold;">'.__("You're running a beta version. Please give feedback.", "gde").' <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">'.__("(more info)", "gde").'</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;" >'.$msg.'</div></td>';
319
  }
320
  }
321
  }
@@ -331,17 +351,24 @@ if ($gdeoptions['disable_editor'] !== "yes") {
331
 
332
  // add tinymce button
333
  add_action('admin_init','gde_mce_addbuttons');
 
 
 
 
 
 
 
 
 
 
334
  }
335
 
336
  // footer credit
337
  function gde_admin_footer() {
338
  $pdata = get_plugin_data(__FILE__);
339
- printf('%1$s plugin | Version %2$s<br />', $pdata['Title'], $pdata['Version']);
340
- }
341
-
342
- // leave this function here to workaround NGG incompatibility
343
- function gde_t($message) {
344
- return __($message, basename(dirname(__FILE__)));
345
  }
346
 
347
  ?>
2
 
3
  /*
4
  Plugin Name: Google Doc Embedder
5
+ Plugin URI: http://www.davistribe.org/gde/
6
  Description: Lets you embed MS Office, PDF, TIFF, and many other file types in a web page using the Google Docs Viewer (no Flash or PDF browser plug-ins required).
7
  Author: Kevin Davis
8
+ Author URI: http://www.davistribe.org/
9
+ Text Domain: gde
10
+ Domain Path: /languages/
11
+ Version: 2.4
12
  License: GPLv2
13
  */
14
 
15
+ $gde_ver = "2.4.0.98";
16
 
17
  /**
18
  * LICENSE
36
  * @author Kevin Davis <kev@tnw.org>
37
  * @copyright Copyright 2012 Kevin Davis
38
  * @license http://www.gnu.org/licenses/gpl.txt GPL 2.0
39
+ * @link http://www.davistribe.org/gde/
40
  */
41
 
42
+ if ( ! defined( 'GDE_PLUGIN_DIR' ) )
43
+ define( 'GDE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
44
+ if ( ! defined( 'GDE_PLUGIN_URL' ) )
45
+ define( 'GDE_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
46
+
47
  include_once('gde-functions.php');
48
  $gdeoptions = get_option('gde_options');
49
  $pUrl = plugins_url(plugin_basename(dirname(__FILE__)));
50
 
51
+ // note: updates here should also be reflected in js/dialog.js
52
+ $supported_exts = array(
53
+ // ext => mime_type
54
+ "ai" => "application/postscript",
55
+ "doc" => "application/msword",
56
+ "docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml",
57
+ "dxf" => "application/dxf",
58
+ "eps" => "application/postscript",
59
+ "pages" => "application/x-iwork-pages-sffpages",
60
+ "pdf" => "application/pdf",
61
+ "ppt" => "application/vnd.ms-powerpoint",
62
+ "pptx" => "application/vnd.openxmlformats-officedocument.presentationml",
63
+ "ps" => "application/postscript",
64
+ "psd" => "image/photoshop",
65
+ "rar" => "application/rar",
66
+ "svg" => "image/svg+xml",
67
+ "tif" => "image/tiff",
68
+ "tiff" => "image/tiff",
69
+ "ttf" => "application/x-font-ttf",
70
+ "xls" => "application/vnd.ms-excel",
71
+ "xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml",
72
+ "xps" => "application/vnd.ms-xpsdocument",
73
+ "zip" => "application/zip"
 
74
  );
75
+ $allowed_exts = implode("|",array_keys($supported_exts));
76
 
77
  // basic usage: [gview file="http://path.to/file.pdf"]
78
  function gde_gviewer_func($atts) {
134
  if (($gdeoptions['disable_hideerrors'] == "no") || !$gdeoptions['disable_hideerrors']) {
135
  $code = "\n<!-- GDE EMBED ERROR: $status -->\n";
136
  } else {
137
+ $code = "\n".'<div class="gde-error">Google Doc Embedder '.__('Error', 'gde').": ".$status."</div>\n";
138
  }
139
  } else {
140
  $code = "";
158
  } else {
159
  $uefile = $file;
160
  }
161
+ // check for proxy
162
  if ($gdeoptions['disable_proxy'] == "no") {
163
+ $lnk = $pUrl."/proxy.php?url=".$uefile."&hl=".$lang;
164
+ } else {
165
+ $lnk = "http://docs.google.com/viewer?url=".$uefile."&hl=".$lang;
166
+ }
167
+ // check for mobile
168
+ if (strstr($gdeoptions['gdet'], 'm') !== false) {
169
+ $lnk .= "&mobile=true";
170
  } else {
171
+ $lnk .= "&embedded=true";
172
  }
173
+ // check for page
174
  if (is_numeric($page)) {
175
  // jump to selected page - experimental (works on refresh but not initial page load)
176
  $page = (int) $page-1;
177
  $lnk = $lnk."#:0.page.".$page;
178
  }
 
 
179
  // hide download link for anonymous users
180
  get_currentuserinfo();
181
  $dlRestrict = $gdeoptions['restrict_dl'];
186
  }
187
  }
188
 
189
+ $linkcode = "";
190
  if ($save == "yes" || $save == "1") {
191
 
192
  $dlMethod = $gdeoptions['link_func'];
244
 
245
  // activate plugin
246
  register_activation_hook( __FILE__, 'gde_activate');
247
+ // allow localisation
248
+ load_plugin_textdomain('gde', false, basename( dirname( __FILE__ ) ) . '/languages' );
249
 
250
  function gde_activate() {
251
  global $wpdb;
259
  function gde_option_page() {
260
  global $gde_settings_page;
261
 
262
+ $gde_settings_page = add_options_page('GDE '.__('Settings', 'gde'), 'GDE '.__('Settings', 'gde'), 'manage_options', basename(__FILE__), 'gde_options');
263
 
264
  // enable settings jQuery
265
  add_action( 'admin_enqueue_scripts', 'gde_admin_custom_js' );
266
  }
267
  function gde_options() {
268
+ if ( function_exists('current_user_can') && !current_user_can('manage_options') ) wp_die('You don\'t have access to this page.');
269
+ if (! user_can_access_admin_page()) wp_die( __('You do not have sufficient permissions to access this page', 'gde') );
270
 
271
+ require(plugin_dir_path(__FILE__).'/options.php');
272
  add_action('in_admin_footer', 'gde_admin_footer');
273
  }
274
 
275
  // add additional links, for convenience
276
  $plugin = plugin_basename(__FILE__);
277
  function gde_actlinks($links) {
278
+ $settings_link = '<a href="options-general.php?page=gviewer.php">'.__('Settings', 'gde').'</a>';
279
  array_unshift($links, $settings_link);
280
  return $links;
281
  }
283
  global $debug;
284
  $plugin = plugin_basename(__FILE__);
285
  if ($file == $plugin) {
286
+ $support_link = '<a href="'.GDE_SUPPORT_URL.'">'.__('Support', 'gde').'</a>';
287
  $links[] = $support_link;
288
  }
289
  return $links;
295
  function gde_checkforBeta($plugin) {
296
  global $gde_ver, $pUrl, $gdeoptions;
297
 
298
+ // beta messages
299
+ $beta_msg['avail'] = array(__('Beta version available', 'gde'), __('Please deactivate the plug-in and install the current version if you wish to participate. Otherwise, you can turn off beta version checking in GDE Settings. Testers appreciated!', 'gde'));
300
+ $beta_msg['newer'] = array(__('Updated beta version available', 'gde'), __('A newer beta has been released. Please deactivate the plug-in and install the current version. Thanks for your help!', 'gde'));
301
+ $beta_msg['current'] = array(__('You\'re running a beta version. Please give feedback.', 'gde'), __('Thank you for running a test version of Google Doc Embedder. You are running the most current beta version. Please give feedback on this version using the &quot;Support&quot; link above. Thanks for your help!', 'gde'));
302
+ $beta_msg['link'] = __('more info', 'gde');
303
+
304
  $pdata = get_plugin_data(__FILE__);
305
  if (preg_match('/-dev$/i', $pdata['Version'])) { $isbeta = 1; }
306
 
316
  $message = $status[3];
317
 
318
  if ($isbeta) {
319
+ $titleStr = $beta_msg['newer'][0];
320
+ $msgStr = $beta_msg['newer'][1];
321
  } else {
322
+ $titleStr = $beta_msg['avail'][0];
323
+ $msgStr = $beta_msg['avail'][1];
324
  }
325
  $message = str_replace("%msg", $msgStr, $message);
326
 
327
  if ((version_compare(strval($rver), strval($lver), '>') == 1)) {
328
+ $msg = "$titleStr: <strong>v".$rver."</strong> - ".$message;
329
+ echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="background:#A2F099;border:1px solid #4FE23F; padding:2px; font-weight:bold;">'.$titleStr.'. <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">('.$beta_msg['link'].')</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;">'.$msg.'</div></td>';
330
  } elseif ($isbeta) {
331
+ $msg = $beta_msg['current'][0];
332
+ echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="border:1px solid; padding:2px; font-weight:bold;">'.$beta_msg['current'][1].' <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">('.$beta_msg['link'].')</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;" >'.$msg.'</div></td>';
333
  } else {
334
  return;
335
  }
336
  } elseif ($isbeta) {
337
+ $msg = $beta_msg['current'][1];
338
+ echo '<td colspan="5" class="plugin-update" style="line-height:1.2em; font-size:11px; padding:1px;"><div style="border:1px solid; padding:2px; font-weight:bold;">'.$beta_msg['current'][0].' <a href="javascript:void(0);" onclick="jQuery(\'#gde-beta-msg\').toggle();">('.$beta_msg['link'].')</a></div><div id="gde-beta-msg" style="display:none; padding:10px; text-align:center;" >'.$msg.'</div></td>';
339
  }
340
  }
341
  }
351
 
352
  // add tinymce button
353
  add_action('admin_init','gde_mce_addbuttons');
354
+
355
+ // extend media upload support to natively unsupported mime types
356
+ if ($gdeoptions['ed_extend_upload'] == "yes") {
357
+ add_filter('upload_mimes', 'gde_upload_mimes');
358
+ }
359
+
360
+ // embed shortcode instead of link from media library for supported types
361
+ if ($gdeoptions['ed_embed_sc'] == "yes") {
362
+ add_filter('media_send_to_editor', 'gde_media_insert', 20, 3);
363
+ }
364
  }
365
 
366
  // footer credit
367
  function gde_admin_footer() {
368
  $pdata = get_plugin_data(__FILE__);
369
+ $plugin_str = __('plugin', 'gde');
370
+ $version_str = __('Version', 'gde');
371
+ printf('%1$s %2$s | %3$s %4$s<br />', $pdata['Title'], $plugin_str, $version_str, $pdata['Version']);
 
 
 
372
  }
373
 
374
  ?>
img/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // mum's the word.
3
+ ?>
js/dialog.js CHANGED
@@ -6,11 +6,11 @@ var GDEInsertDialog = {
6
  var shortcode;
7
 
8
  jQuery('.diy').click(function(){
9
- // diy option selected
10
- var dis = jQuery('.opt').attr('disabled');
11
 
12
- if (dis) {
13
- jQuery('.opt').attr('disabled', '');
14
  jQuery('.gray').css('color','black');
15
  jQuery('#shortcode').val('');
16
  check_uri();
@@ -44,6 +44,7 @@ var GDEInsertDialog = {
44
  });
45
  jQuery('#url').blur(function(){
46
  update_sc();
 
47
  });
48
 
49
  function check_uri() {
@@ -51,14 +52,17 @@ var GDEInsertDialog = {
51
  var path_regex = /^http/i;
52
 
53
  if(!(type_regex.test( jQuery('#url').val() )) & ( jQuery('#url').val() !=0 )) {
54
- jQuery('#uri-note').attr('style', 'color:red;');
55
- jQuery('#uri-note').html('Unsupported file type');
 
56
  } else {
57
  if(!(path_regex.test( jQuery('#url').val() )) & ( jQuery('#url').val() !=0 )) {
58
- jQuery('#uri-note').attr('style', 'color:#2B6FB6;');
59
- jQuery('#uri-note').html('File Base URL will be prefixed');
 
60
  } else {
61
- jQuery('#uri-note').html('');
 
62
  }
63
  }
64
  }
6
  var shortcode;
7
 
8
  jQuery('.diy').click(function(){
9
+ // diy option selected
10
+ var dis = jQuery(this).prop("checked");
11
 
12
+ if (dis == false) {
13
+ jQuery('.opt').removeAttr('disabled');
14
  jQuery('.gray').css('color','black');
15
  jQuery('#shortcode').val('');
16
  check_uri();
44
  });
45
  jQuery('#url').blur(function(){
46
  update_sc();
47
+ check_uri();
48
  });
49
 
50
  function check_uri() {
52
  var path_regex = /^http/i;
53
 
54
  if(!(type_regex.test( jQuery('#url').val() )) & ( jQuery('#url').val() !=0 )) {
55
+ // unsupported file type
56
+ jQuery('#uri-note-file').show();
57
+ jQuery('#uri-note-base').hide();
58
  } else {
59
  if(!(path_regex.test( jQuery('#url').val() )) & ( jQuery('#url').val() !=0 )) {
60
+ // file base url appended
61
+ jQuery('#uri-note-file').hide();
62
+ jQuery('#uri-note-base').show();
63
  } else {
64
+ jQuery('#uri-note-file').hide();
65
+ jQuery('#uri-note-base').hide();
66
  }
67
  }
68
  }
js/editor_plugin.js CHANGED
@@ -1,21 +1,20 @@
1
  (function() {
2
  tinymce.PluginManager.requireLangPack('gde');
3
- tinymce.create('tinymce.plugins.GDEPlugin', {
4
  init : function(ed,url) {
5
- ed.addCommand('mceGDE', function() {
6
  ed.windowManager.open( {
7
  file : url + '/../gde-dialog.php',
8
  width : 420 + parseInt(ed.getLang('gde.delta_width',0)),
9
  height : 540 + parseInt(ed.getLang('gde.delta_height',0)),
10
  inline : 1}, {
11
- plugin_url : url,
12
- some_custom_arg : 'custom arg'
13
  }
14
  )}
15
  );
16
  ed.addButton('gde', {
17
  title : 'Google Doc Embedder',
18
- cmd : 'mceGDE',
19
  image : url + '/../img/gde-button.png'
20
  });
21
  ed.onNodeChange.add
@@ -30,10 +29,10 @@
30
  return {
31
  longname : 'Google Doc Embedder',
32
  author : 'Kevin Davis',
33
- authorurl : 'http://www.davismetro.com/gde',
34
- infourl : 'http://www.davismetro.com/gde',
35
- version : "1.1"}
36
  }
37
  });
38
- tinymce.PluginManager.add('gde',tinymce.plugins.GDEPlugin)
39
  })();
1
  (function() {
2
  tinymce.PluginManager.requireLangPack('gde');
3
+ tinymce.create('tinymce.plugins.gde', {
4
  init : function(ed,url) {
5
+ ed.addCommand('gde_cmd', function() {
6
  ed.windowManager.open( {
7
  file : url + '/../gde-dialog.php',
8
  width : 420 + parseInt(ed.getLang('gde.delta_width',0)),
9
  height : 540 + parseInt(ed.getLang('gde.delta_height',0)),
10
  inline : 1}, {
11
+ plugin_url : url
 
12
  }
13
  )}
14
  );
15
  ed.addButton('gde', {
16
  title : 'Google Doc Embedder',
17
+ cmd : 'gde_cmd',
18
  image : url + '/../img/gde-button.png'
19
  });
20
  ed.onNodeChange.add
29
  return {
30
  longname : 'Google Doc Embedder',
31
  author : 'Kevin Davis',
32
+ authorurl : 'http://www.davistribe.org/gde',
33
+ infourl : 'http://www.davistribe.org/gde',
34
+ version : "1.2"}
35
  }
36
  });
37
+ tinymce.PluginManager.add('gde',tinymce.plugins.gde);
38
  })();
js/gde-jquery.js CHANGED
@@ -1,4 +1,3 @@
1
- //(function($jQuery){
2
  jQuery(function ($) {
3
 
4
  /* jQuery library for GDE */
@@ -36,4 +35,27 @@ jQuery(function ($) {
36
  $("#adv-editor").toggle();
37
  });
38
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  });
 
1
  jQuery(function ($) {
2
 
3
  /* jQuery library for GDE */
35
  $("#adv-editor").toggle();
36
  });
37
 
38
+ $("#disable_editor").click(function() {
39
+ var edopt = $(this).prop("checked");
40
+ if (edopt == true) {
41
+ gdeHideEdOpt();
42
+ } else {
43
+ gdeShowEdOpt();
44
+ }
45
+ });
46
+
47
+ function gdeHideEdOpt() {
48
+ $("#ed_embed_sc").removeAttr("checked");
49
+ $("#ed_extend_upload").removeAttr("checked");
50
+ $("#ed_embed_sc").attr("disabled","true");
51
+ $("#ed_extend_upload").attr("disabled","true");
52
+ }
53
+
54
+ function gdeShowEdOpt() {
55
+ $("#ed_embed_sc").removeAttr("disabled");
56
+ $("#ed_embed_sc").attr("checked","true");
57
+ $("#ed_extend_upload").removeAttr("disabled");
58
+ $("#ed_extend_upload").attr("checked","true");
59
+ }
60
+
61
  });
js/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+ // mum's the word.
3
+ ?>
js/jquery-1.3.2.min.js DELETED
@@ -1,19 +0,0 @@
1
- /*
2
- * jQuery JavaScript Library v1.3.2
3
- * http://jquery.com/
4
- *
5
- * Copyright (c) 2009 John Resig
6
- * Dual licensed under the MIT and GPL licenses.
7
- * http://docs.jquery.com/License
8
- *
9
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
10
- * Revision: 6246
11
- */
12
- (function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
13
- /*
14
- * Sizzle CSS Selector Engine - v0.9.3
15
- * Copyright 2009, The Dojo Foundation
16
- * Released under the MIT, BSD, and GPL Licenses.
17
- * More information: http://sizzlejs.com/
18
- */
19
- (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/tiny_mce_popup.js DELETED
@@ -1,5 +0,0 @@
1
-
2
- // Uncomment and change this document.domain value if you are loading the script cross subdomains
3
- // document.domain = 'moxiecode.com';
4
-
5
- var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window.dialogArguments||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var e=this,g,a=document.body,c=e.dom.getViewPort(window),d,f;d=e.getWindowArg("mce_width")-c.w;f=e.getWindowArg("mce_height")-c.h;if(e.isWindow){window.resizeBy(d,f)}else{e.editor.windowManager.resizeBy(d,f,e.id)}},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
 
 
 
 
 
languages/gde-en_US.mo ADDED
Binary file
languages/gde-en_US.po ADDED
@@ -0,0 +1,372 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Google Doc Embedder\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2012-05-02 14:16-0600\n"
6
+ "PO-Revision-Date: 2012-05-02 14:19-0600\n"
7
+ "Last-Translator: Kevin Davis <kev@tnw.org>\n"
8
+ "Language-Team: Kevin Davis <kev@tnw.org>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: _e;__\n"
13
+ "X-Poedit-Basepath: C:\\Projects\\SVN\\Personal\\gde-dev\\trunk\n"
14
+ "X-Poedit-Language: English\n"
15
+ "X-Poedit-Country: UNITED STATES\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ #: bootstrap.php:12
19
+ msgid "Could not find wp-load.php"
20
+ msgstr ""
21
+
22
+ #: gde-dialog.php:34
23
+ msgid "I'll insert the shortcode myself"
24
+ msgstr ""
25
+
26
+ #: gde-dialog.php:36
27
+ msgid "GDE Shortcode Options"
28
+ msgstr ""
29
+
30
+ #: gde-dialog.php:40
31
+ msgid "Required"
32
+ msgstr ""
33
+
34
+ #: gde-dialog.php:43
35
+ msgid "URL or Filename"
36
+ msgstr ""
37
+
38
+ #: gde-dialog.php:43
39
+ msgid "Full URL or filename to append to File Base URL"
40
+ msgstr ""
41
+
42
+ #: gde-dialog.php:45
43
+ msgid "File Base URL will be prefixed"
44
+ msgstr ""
45
+
46
+ #: gde-dialog.php:46
47
+ msgid "Unsupported file type"
48
+ msgstr ""
49
+
50
+ #: gde-dialog.php:54
51
+ msgid "Optional (Override Global Settings)"
52
+ msgstr ""
53
+
54
+ #: gde-dialog.php:57
55
+ #: options.php:163
56
+ msgid "Height"
57
+ msgstr ""
58
+
59
+ #: gde-dialog.php:57
60
+ #: gde-dialog.php:61
61
+ msgid "format:"
62
+ msgstr ""
63
+
64
+ #: gde-dialog.php:57
65
+ #: gde-dialog.php:61
66
+ msgid "or"
67
+ msgstr ""
68
+
69
+ #: gde-dialog.php:61
70
+ #: options.php:159
71
+ msgid "Width"
72
+ msgstr ""
73
+
74
+ #: gde-dialog.php:65
75
+ msgid "Show Download Link"
76
+ msgstr ""
77
+
78
+ #: gde-dialog.php:66
79
+ msgid "Yes"
80
+ msgstr ""
81
+
82
+ #: gde-dialog.php:66
83
+ msgid "No"
84
+ msgstr ""
85
+
86
+ #: gde-dialog.php:71
87
+ msgid "Show download link only if user is logged in"
88
+ msgstr ""
89
+
90
+ #: gde-dialog.php:77
91
+ msgid "Disable caching (this document is frequently overwritten)"
92
+ msgstr ""
93
+
94
+ #: gde-dialog.php:84
95
+ msgid "Disable internal error checking (try if URL is confirmed good but document doesn't display)"
96
+ msgstr ""
97
+
98
+ #: gde-dialog.php:94
99
+ msgid "Shortcode Preview"
100
+ msgstr ""
101
+
102
+ #: gde-dialog.php:103
103
+ msgid "Insert"
104
+ msgstr ""
105
+
106
+ #: gde-dialog.php:107
107
+ msgid "Cancel"
108
+ msgstr ""
109
+
110
+ #: gde-functions.php:30
111
+ msgid "Download"
112
+ msgstr ""
113
+
114
+ #: gviewer.php:137
115
+ msgid "Error"
116
+ msgstr ""
117
+
118
+ #: gviewer.php:262
119
+ #: gviewer.php:278
120
+ #: options.php:122
121
+ msgid "Settings"
122
+ msgstr ""
123
+
124
+ #: gviewer.php:269
125
+ msgid "You do not have sufficient permissions to access this page"
126
+ msgstr ""
127
+
128
+ #: gviewer.php:286
129
+ msgid "Support"
130
+ msgstr ""
131
+
132
+ #: gviewer.php:299
133
+ msgid "Beta version available"
134
+ msgstr ""
135
+
136
+ #: gviewer.php:299
137
+ msgid "Please deactivate the plug-in and install the current version if you wish to participate. Otherwise, you can turn off beta version checking in GDE Settings. Testers appreciated!"
138
+ msgstr ""
139
+
140
+ #: gviewer.php:300
141
+ msgid "Updated beta version available"
142
+ msgstr ""
143
+
144
+ #: gviewer.php:300
145
+ msgid "A newer beta has been released. Please deactivate the plug-in and install the current version. Thanks for your help!"
146
+ msgstr ""
147
+
148
+ #: gviewer.php:301
149
+ msgid "You're running a beta version. Please give feedback."
150
+ msgstr ""
151
+
152
+ #: gviewer.php:301
153
+ msgid "Thank you for running a test version of Google Doc Embedder. You are running the most current beta version. Please give feedback on this version using the &quot;Support&quot; link above. Thanks for your help!"
154
+ msgstr ""
155
+
156
+ #: gviewer.php:302
157
+ msgid "more info"
158
+ msgstr ""
159
+
160
+ #: gviewer.php:369
161
+ msgid "plugin"
162
+ msgstr ""
163
+
164
+ #: gviewer.php:370
165
+ msgid "Version"
166
+ msgstr ""
167
+
168
+ #: options.php:20
169
+ msgid "Options reset to defaults"
170
+ msgstr ""
171
+
172
+ #: options.php:117
173
+ msgid "Options updated"
174
+ msgstr ""
175
+
176
+ #: options.php:133
177
+ msgid "Viewer Options"
178
+ msgstr ""
179
+
180
+ #: options.php:138
181
+ msgid "Viewer Selection"
182
+ msgstr ""
183
+
184
+ #: options.php:139
185
+ #: options.php:245
186
+ #: options.php:292
187
+ msgid "Help"
188
+ msgstr ""
189
+
190
+ #: options.php:141
191
+ msgid "Google Standard Viewer"
192
+ msgstr ""
193
+
194
+ #: options.php:142
195
+ msgid "Embed the standard Google Viewer."
196
+ msgstr ""
197
+
198
+ #: options.php:143
199
+ msgid "Enhanced Viewer"
200
+ msgstr ""
201
+
202
+ #: options.php:144
203
+ msgid "Use this option to enable toolbar customization and fix some display problems (experimental)."
204
+ msgstr ""
205
+
206
+ #: options.php:148
207
+ msgid "Customize Toolbar"
208
+ msgstr ""
209
+
210
+ #: options.php:152
211
+ msgid "Hide Zoom In/Out"
212
+ msgstr ""
213
+
214
+ #: options.php:153
215
+ msgid "Hide Open in New Window"
216
+ msgstr ""
217
+
218
+ #: options.php:154
219
+ msgid "Always Use Mobile Theme"
220
+ msgstr ""
221
+
222
+ #: options.php:158
223
+ msgid "Default Size"
224
+ msgstr ""
225
+
226
+ #: options.php:169
227
+ msgid "Default Language"
228
+ msgstr ""
229
+
230
+ #: options.php:227
231
+ msgid "Inline (Default)"
232
+ msgstr ""
233
+
234
+ #: options.php:228
235
+ msgid "Collapsible (Open)"
236
+ msgstr ""
237
+
238
+ #: options.php:229
239
+ msgid "Collapsible (Closed)"
240
+ msgstr ""
241
+
242
+ #: options.php:241
243
+ msgid "Download Link Options"
244
+ msgstr ""
245
+
246
+ #: options.php:246
247
+ msgid "Display the download link by default"
248
+ msgstr ""
249
+
250
+ #: options.php:247
251
+ msgid "Only display download link to logged in users"
252
+ msgstr ""
253
+
254
+ #: options.php:248
255
+ msgid "Track downloads in Google Analytics (tracking script must be installed on your site)"
256
+ msgstr ""
257
+
258
+ #: options.php:251
259
+ msgid "File Base URL"
260
+ msgstr ""
261
+
262
+ #: options.php:253
263
+ msgid "Any file not starting with <em>http</em> will be prefixed by this value"
264
+ msgstr ""
265
+
266
+ #: options.php:256
267
+ msgid "Link Text"
268
+ msgstr ""
269
+
270
+ #: options.php:258
271
+ msgid "You can further customize text using these dynamic replacements:"
272
+ msgstr ""
273
+
274
+ #: options.php:259
275
+ msgid "filename"
276
+ msgstr ""
277
+
278
+ #: options.php:260
279
+ msgid "file type"
280
+ msgstr ""
281
+
282
+ #: options.php:261
283
+ msgid "file size"
284
+ msgstr ""
285
+
286
+ #: options.php:264
287
+ msgid "Link Position"
288
+ msgstr ""
289
+
290
+ #: options.php:266
291
+ msgid "Above Viewer"
292
+ msgstr ""
293
+
294
+ #: options.php:267
295
+ msgid "Below Viewer"
296
+ msgstr ""
297
+
298
+ #: options.php:272
299
+ msgid "Link Behavior"
300
+ msgstr ""
301
+
302
+ #: options.php:274
303
+ msgid "Browser Default"
304
+ msgstr ""
305
+
306
+ #: options.php:275
307
+ msgid "Force Download"
308
+ msgstr ""
309
+
310
+ #: options.php:276
311
+ msgid "Force Download (Mask URL)"
312
+ msgstr ""
313
+
314
+ #: options.php:290
315
+ msgid "Advanced Options"
316
+ msgstr ""
317
+
318
+ #: options.php:293
319
+ msgid "Plugin Behavior"
320
+ msgstr ""
321
+
322
+ #: options.php:294
323
+ msgid "Editor Behavior"
324
+ msgstr ""
325
+
326
+ #: options.php:296
327
+ msgid "Display error messages inline (not hidden)"
328
+ msgstr ""
329
+
330
+ #: options.php:297
331
+ msgid "Disable internal error checking"
332
+ msgstr ""
333
+
334
+ #: options.php:298
335
+ msgid "Disable document caching"
336
+ msgstr ""
337
+
338
+ #: options.php:299
339
+ msgid "Disable beta version notifications"
340
+ msgstr ""
341
+
342
+ #: options.php:302
343
+ msgid "Disable all editor integration"
344
+ msgstr ""
345
+
346
+ #: options.php:307
347
+ msgid "Insert shortcode from Media Library"
348
+ msgstr ""
349
+
350
+ #: options.php:309
351
+ msgid "Allow uploads of all supported media types"
352
+ msgstr ""
353
+
354
+ #: options.php:319
355
+ msgid "Save Options"
356
+ msgstr ""
357
+
358
+ #: options.php:321
359
+ msgid "Reset to Defaults"
360
+ msgstr ""
361
+
362
+ #: options.php:321
363
+ msgid "Are you sure you want to reset all settings to defaults?"
364
+ msgstr ""
365
+
366
+ #: proxy.php:29
367
+ msgid ""
368
+ "This function is not supported on your web server. Please add\n"
369
+ "\t\t\t<code>allow_url_fopen = 1</code> to your php.ini or enable cURL library.\n"
370
+ "\t\t\tIf you are unable to do this, please switch to Google Standard Viewer in GDE Options."
371
+ msgstr ""
372
+
languages/gde.mo ADDED
Binary file
languages/gde.pot ADDED
@@ -0,0 +1,369 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Google Doc Embedder\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2012-05-02 14:16-0600\n"
6
+ "PO-Revision-Date: 2012-05-02 14:17-0600\n"
7
+ "Last-Translator: Kevin Davis <kev@tnw.org>\n"
8
+ "Language-Team: Kevin Davis <kev@tnw.org>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: _e;__\n"
13
+ "X-Poedit-SearchPath-0: .\n"
14
+
15
+ #: bootstrap.php:12
16
+ msgid "Could not find wp-load.php"
17
+ msgstr ""
18
+
19
+ #: gde-dialog.php:34
20
+ msgid "I'll insert the shortcode myself"
21
+ msgstr ""
22
+
23
+ #: gde-dialog.php:36
24
+ msgid "GDE Shortcode Options"
25
+ msgstr ""
26
+
27
+ #: gde-dialog.php:40
28
+ msgid "Required"
29
+ msgstr ""
30
+
31
+ #: gde-dialog.php:43
32
+ msgid "URL or Filename"
33
+ msgstr ""
34
+
35
+ #: gde-dialog.php:43
36
+ msgid "Full URL or filename to append to File Base URL"
37
+ msgstr ""
38
+
39
+ #: gde-dialog.php:45
40
+ msgid "File Base URL will be prefixed"
41
+ msgstr ""
42
+
43
+ #: gde-dialog.php:46
44
+ msgid "Unsupported file type"
45
+ msgstr ""
46
+
47
+ #: gde-dialog.php:54
48
+ msgid "Optional (Override Global Settings)"
49
+ msgstr ""
50
+
51
+ #: gde-dialog.php:57
52
+ #: options.php:163
53
+ msgid "Height"
54
+ msgstr ""
55
+
56
+ #: gde-dialog.php:57
57
+ #: gde-dialog.php:61
58
+ msgid "format:"
59
+ msgstr ""
60
+
61
+ #: gde-dialog.php:57
62
+ #: gde-dialog.php:61
63
+ msgid "or"
64
+ msgstr ""
65
+
66
+ #: gde-dialog.php:61
67
+ #: options.php:159
68
+ msgid "Width"
69
+ msgstr ""
70
+
71
+ #: gde-dialog.php:65
72
+ msgid "Show Download Link"
73
+ msgstr ""
74
+
75
+ #: gde-dialog.php:66
76
+ msgid "Yes"
77
+ msgstr ""
78
+
79
+ #: gde-dialog.php:66
80
+ msgid "No"
81
+ msgstr ""
82
+
83
+ #: gde-dialog.php:71
84
+ msgid "Show download link only if user is logged in"
85
+ msgstr ""
86
+
87
+ #: gde-dialog.php:77
88
+ msgid "Disable caching (this document is frequently overwritten)"
89
+ msgstr ""
90
+
91
+ #: gde-dialog.php:84
92
+ msgid "Disable internal error checking (try if URL is confirmed good but document doesn't display)"
93
+ msgstr ""
94
+
95
+ #: gde-dialog.php:94
96
+ msgid "Shortcode Preview"
97
+ msgstr ""
98
+
99
+ #: gde-dialog.php:103
100
+ msgid "Insert"
101
+ msgstr ""
102
+
103
+ #: gde-dialog.php:107
104
+ msgid "Cancel"
105
+ msgstr ""
106
+
107
+ #: gde-functions.php:30
108
+ msgid "Download"
109
+ msgstr ""
110
+
111
+ #: gviewer.php:137
112
+ msgid "Error"
113
+ msgstr ""
114
+
115
+ #: gviewer.php:262
116
+ #: gviewer.php:278
117
+ #: options.php:122
118
+ msgid "Settings"
119
+ msgstr ""
120
+
121
+ #: gviewer.php:269
122
+ msgid "You do not have sufficient permissions to access this page"
123
+ msgstr ""
124
+
125
+ #: gviewer.php:286
126
+ msgid "Support"
127
+ msgstr ""
128
+
129
+ #: gviewer.php:299
130
+ msgid "Beta version available"
131
+ msgstr ""
132
+
133
+ #: gviewer.php:299
134
+ msgid "Please deactivate the plug-in and install the current version if you wish to participate. Otherwise, you can turn off beta version checking in GDE Settings. Testers appreciated!"
135
+ msgstr ""
136
+
137
+ #: gviewer.php:300
138
+ msgid "Updated beta version available"
139
+ msgstr ""
140
+
141
+ #: gviewer.php:300
142
+ msgid "A newer beta has been released. Please deactivate the plug-in and install the current version. Thanks for your help!"
143
+ msgstr ""
144
+
145
+ #: gviewer.php:301
146
+ msgid "You're running a beta version. Please give feedback."
147
+ msgstr ""
148
+
149
+ #: gviewer.php:301
150
+ msgid "Thank you for running a test version of Google Doc Embedder. You are running the most current beta version. Please give feedback on this version using the &quot;Support&quot; link above. Thanks for your help!"
151
+ msgstr ""
152
+
153
+ #: gviewer.php:302
154
+ msgid "more info"
155
+ msgstr ""
156
+
157
+ #: gviewer.php:369
158
+ msgid "plugin"
159
+ msgstr ""
160
+
161
+ #: gviewer.php:370
162
+ msgid "Version"
163
+ msgstr ""
164
+
165
+ #: options.php:20
166
+ msgid "Options reset to defaults"
167
+ msgstr ""
168
+
169
+ #: options.php:117
170
+ msgid "Options updated"
171
+ msgstr ""
172
+
173
+ #: options.php:133
174
+ msgid "Viewer Options"
175
+ msgstr ""
176
+
177
+ #: options.php:138
178
+ msgid "Viewer Selection"
179
+ msgstr ""
180
+
181
+ #: options.php:139
182
+ #: options.php:245
183
+ #: options.php:292
184
+ msgid "Help"
185
+ msgstr ""
186
+
187
+ #: options.php:141
188
+ msgid "Google Standard Viewer"
189
+ msgstr ""
190
+
191
+ #: options.php:142
192
+ msgid "Embed the standard Google Viewer."
193
+ msgstr ""
194
+
195
+ #: options.php:143
196
+ msgid "Enhanced Viewer"
197
+ msgstr ""
198
+
199
+ #: options.php:144
200
+ msgid "Use this option to enable toolbar customization and fix some display problems (experimental)."
201
+ msgstr ""
202
+
203
+ #: options.php:148
204
+ msgid "Customize Toolbar"
205
+ msgstr ""
206
+
207
+ #: options.php:152
208
+ msgid "Hide Zoom In/Out"
209
+ msgstr ""
210
+
211
+ #: options.php:153
212
+ msgid "Hide Open in New Window"
213
+ msgstr ""
214
+
215
+ #: options.php:154
216
+ msgid "Always Use Mobile Theme"
217
+ msgstr ""
218
+
219
+ #: options.php:158
220
+ msgid "Default Size"
221
+ msgstr ""
222
+
223
+ #: options.php:169
224
+ msgid "Default Language"
225
+ msgstr ""
226
+
227
+ #: options.php:227
228
+ msgid "Inline (Default)"
229
+ msgstr ""
230
+
231
+ #: options.php:228
232
+ msgid "Collapsible (Open)"
233
+ msgstr ""
234
+
235
+ #: options.php:229
236
+ msgid "Collapsible (Closed)"
237
+ msgstr ""
238
+
239
+ #: options.php:241
240
+ msgid "Download Link Options"
241
+ msgstr ""
242
+
243
+ #: options.php:246
244
+ msgid "Display the download link by default"
245
+ msgstr ""
246
+
247
+ #: options.php:247
248
+ msgid "Only display download link to logged in users"
249
+ msgstr ""
250
+
251
+ #: options.php:248
252
+ msgid "Track downloads in Google Analytics (tracking script must be installed on your site)"
253
+ msgstr ""
254
+
255
+ #: options.php:251
256
+ msgid "File Base URL"
257
+ msgstr ""
258
+
259
+ #: options.php:253
260
+ msgid "Any file not starting with <em>http</em> will be prefixed by this value"
261
+ msgstr ""
262
+
263
+ #: options.php:256
264
+ msgid "Link Text"
265
+ msgstr ""
266
+
267
+ #: options.php:258
268
+ msgid "You can further customize text using these dynamic replacements:"
269
+ msgstr ""
270
+
271
+ #: options.php:259
272
+ msgid "filename"
273
+ msgstr ""
274
+
275
+ #: options.php:260
276
+ msgid "file type"
277
+ msgstr ""
278
+
279
+ #: options.php:261
280
+ msgid "file size"
281
+ msgstr ""
282
+
283
+ #: options.php:264
284
+ msgid "Link Position"
285
+ msgstr ""
286
+
287
+ #: options.php:266
288
+ msgid "Above Viewer"
289
+ msgstr ""
290
+
291
+ #: options.php:267
292
+ msgid "Below Viewer"
293
+ msgstr ""
294
+
295
+ #: options.php:272
296
+ msgid "Link Behavior"
297
+ msgstr ""
298
+
299
+ #: options.php:274
300
+ msgid "Browser Default"
301
+ msgstr ""
302
+
303
+ #: options.php:275
304
+ msgid "Force Download"
305
+ msgstr ""
306
+
307
+ #: options.php:276
308
+ msgid "Force Download (Mask URL)"
309
+ msgstr ""
310
+
311
+ #: options.php:290
312
+ msgid "Advanced Options"
313
+ msgstr ""
314
+
315
+ #: options.php:293
316
+ msgid "Plugin Behavior"
317
+ msgstr ""
318
+
319
+ #: options.php:294
320
+ msgid "Editor Behavior"
321
+ msgstr ""
322
+
323
+ #: options.php:296
324
+ msgid "Display error messages inline (not hidden)"
325
+ msgstr ""
326
+
327
+ #: options.php:297
328
+ msgid "Disable internal error checking"
329
+ msgstr ""
330
+
331
+ #: options.php:298
332
+ msgid "Disable document caching"
333
+ msgstr ""
334
+
335
+ #: options.php:299
336
+ msgid "Disable beta version notifications"
337
+ msgstr ""
338
+
339
+ #: options.php:302
340
+ msgid "Disable all editor integration"
341
+ msgstr ""
342
+
343
+ #: options.php:307
344
+ msgid "Insert shortcode from Media Library"
345
+ msgstr ""
346
+
347
+ #: options.php:309
348
+ msgid "Allow uploads of all supported media types"
349
+ msgstr ""
350
+
351
+ #: options.php:319
352
+ msgid "Save Options"
353
+ msgstr ""
354
+
355
+ #: options.php:321
356
+ msgid "Reset to Defaults"
357
+ msgstr ""
358
+
359
+ #: options.php:321
360
+ msgid "Are you sure you want to reset all settings to defaults?"
361
+ msgstr ""
362
+
363
+ #: proxy.php:29
364
+ msgid ""
365
+ "This function is not supported on your web server. Please add\n"
366
+ "\t\t\t<code>allow_url_fopen = 1</code> to your php.ini or enable cURL library.\n"
367
+ "\t\t\tIf you are unable to do this, please switch to Google Standard Viewer in GDE Options."
368
+ msgstr ""
369
+
options.php CHANGED
@@ -1,4 +1,4 @@
1
- <?php
2
  include_once('gde-functions.php');
3
 
4
  global $gdeoptions;
@@ -17,7 +17,7 @@ if(isset($_REQUEST['defaults'])) {
17
 
18
  $set = gde_init('reset');
19
  $gdeoptions = get_option('gde_options');
20
- gde_showMessage("Options reset to defaults");
21
 
22
  } elseif(isset($_REQUEST['submit'])) {
23
 
@@ -57,10 +57,9 @@ if(isset($_REQUEST['defaults'])) {
57
  //if(isset($_POST['default_display'])) {
58
  // $gdeoptions['default_display'] = $_POST['default_display'];
59
  //}
60
- //if(isset($_POST['gdet_i'])) { $newgdet .= "i"; } // no longer visible in standard viewer
61
- //if(isset($_POST['gdet_p'])) { $newgdet .= "p"; }
62
  if(isset($_POST['gdet_z'])) { $newgdet .= "z"; }
63
  if(isset($_POST['gdet_n'])) { $newgdet .= "n"; }
 
64
  $gdeoptions['restrict_tb'] = $newgdet;
65
  if(isset($_POST['base_url'])) {
66
  $gdeoptions['base_url'] = $_POST['base_url'];
@@ -88,6 +87,16 @@ if(isset($_REQUEST['defaults'])) {
88
  } else {
89
  $gdeoptions['disable_editor'] = "no";
90
  }
 
 
 
 
 
 
 
 
 
 
91
  if(isset($_POST['disable_caching'])) {
92
  $gdeoptions['disable_caching'] = "yes";
93
  } else {
@@ -105,13 +114,12 @@ if(isset($_REQUEST['defaults'])) {
105
  }
106
 
107
  update_option('gde_options', $gdeoptions);
108
- gde_showMessage("Options updated");
109
  }
110
  ?>
 
111
  <div class="wrap">
112
- <?php
113
- echo "<h2>".__('Google Doc Embedder Settings')."</h2>";
114
- ?>
115
 
116
  <form action="" method="post">
117
  <?php wp_nonce_field('update-options'); ?>
@@ -122,92 +130,93 @@ echo "<h2>".__('Google Doc Embedder Settings')."</h2>";
122
  <div class="meta-box-sortabless">
123
  <div id="gde_vieweroptions" class="postbox">
124
 
125
- <h3 class="hndle"><span>Viewer Options</span></h3>
126
  <div class="inside">
127
 
128
  <table class="form-table">
129
  <tr valign="top">
130
- <th scope="row">Viewer Selection</th>
131
- <td><div style="float:right;"><a href="<?php echo GDE_VIEWOPT_URL; ?>" target="_blank" title="Help"><img src="<?php echo $himg; ?>"></a></div>
132
  <?php
133
- gde_showRadio('yes', 'std-view', 'disable_proxy', gde_t('Google Standard Viewer'), $event); ?><br />
134
- <em>Embed the standard Google Viewer.</em><br/>
135
- <?php gde_showRadio('no', 'enh-view', 'disable_proxy', gde_t('Enhanced Viewer'), $event); ?><br />
136
- <em>Use this option to enable toolbar customization and fix some display problems (experimental).</em><br/>
137
  </td>
138
  </tr>
139
  <tr valign="top" id="tbedit" style="<?php echo $tbdisplay; ?>">
140
- <th scope="row">Hide Toolbar Buttons</th>
141
  <td>
142
- <?php //gde_showCheckTb('gdet_i', gde_t('Google Logo')); ?>
143
- <?php //gde_showCheckTb('gdet_p', gde_t('Single/Double Page View')); ?>
144
- <?php gde_showCheckTb('gdet_z', gde_t('Zoom In/Out')); ?> &nbsp;&nbsp;
145
- <?php gde_showCheckTb('gdet_n', gde_t('Open in New Window')); ?>
 
146
  </td>
147
  </tr>
148
  <tr valign="top">
149
- <th scope="row">Default Size</th>
150
- <td><strong>Width </strong><input type="text" size="5" name="default_width" value="<?php echo $gdeoptions['default_width']; ?>" /> <select name="width_type" style="padding-right:2px;">
151
- <?php gde_showOption('px', 'width_type', gde_t('px')); ?>
152
- <?php gde_showOption('pc', 'width_type', gde_t('%')); ?>
153
  </select> &nbsp;&nbsp;&nbsp;&nbsp;
154
- <strong>Height </strong><input type="text" size="5" name="default_height" value="<?php echo $gdeoptions['default_height']; ?>" /> <select name="height_type" style="padding-right:2px;">
155
- <?php gde_showOption('px', 'height_type', gde_t('px')); ?>
156
- <?php gde_showOption('pc', 'height_type', gde_t('%')); ?>
157
  </select></td>
158
  </tr>
159
  <tr valign="top">
160
- <th scope="row">Default Language</th>
161
  <td><select name="default_lang">
162
 
163
- <?php gde_showOption('cs', 'default_lang', gde_t('&#268;esky')); ?>
164
- <?php gde_showOption('sr', 'default_lang', gde_t('&#x0421;&#x0440;&#x043F;&#x0441;&#x043A;&#x0438;')); ?>
165
- <?php gde_showOption('uk', 'default_lang', gde_t('&#x0423;&#x043A;&#x0440;&#x0430;&#x0457;&#x043D;&#x0441;&#x044C;&#x043A;&#x0430;')); ?>
166
- <?php gde_showOption('el', 'default_lang', gde_t('&Epsilon;&lambda;&lambda;&eta;&nu;&iota;&kappa;ά')); ?>
167
- <?php gde_showOption('ar', 'default_lang', gde_t('Arabic')); ?>
168
- <?php gde_showOption('in', 'default_lang', gde_t('Bahasa Indonesia')); ?>
169
- <?php gde_showOption('ca', 'default_lang', gde_t('Catal&agrave;')); ?>
170
- <?php gde_showOption('da', 'default_lang', gde_t('Dansk')); ?>
171
- <?php gde_showOption('de', 'default_lang', gde_t('Deutsch')); ?>
172
- <?php gde_showOption('en_GB', 'default_lang', gde_t('English (UK)')); ?>
173
- <?php gde_showOption('en_US', 'default_lang', gde_t('English (US)')); ?>
174
- <?php gde_showOption('es', 'default_lang', gde_t('Espa&ntilde;ol')); ?>
175
- <?php gde_showOption('fil', 'default_lang', gde_t('Filipino')); ?>
176
- <?php gde_showOption('fr', 'default_lang', gde_t('Fran&ccedil;ais')); ?>
177
- <?php gde_showOption('iw', 'default_lang', gde_t('Hebrew')); ?>
178
- <?php gde_showOption('hr', 'default_lang', gde_t('Hrvatski')); ?>
179
- <?php gde_showOption('it', 'default_lang', gde_t('Italiano')); ?>
180
- <?php gde_showOption('lv', 'default_lang', gde_t('Latvie&scaron;u')); ?>
181
- <?php gde_showOption('lt', 'default_lang', gde_t('Lietuvių')); ?>
182
- <?php gde_showOption('hu', 'default_lang', gde_t('Magyar')); ?>
183
- <?php gde_showOption('nl', 'default_lang', gde_t('Nederlands')); ?>
184
- <?php gde_showOption('no', 'default_lang', gde_t('Norsk (bokmål)')); ?>
185
- <?php gde_showOption('pl', 'default_lang', gde_t('Polski')); ?>
186
- <?php gde_showOption('pt_BR', 'default_lang', gde_t('Portugu&ecirc;s (Brasil)')); ?>
187
- <?php gde_showOption('pt_PT', 'default_lang', gde_t('Portugu&ecirc;s (Portugal)')); ?>
188
- <?php gde_showOption('ro', 'default_lang', gde_t('Rom&acirc;n&#x0103;')); ?>
189
- <?php gde_showOption('sl', 'default_lang', gde_t('Sloven&#x0161;&#x010D;ina')); ?>
190
- <?php gde_showOption('sk', 'default_lang', gde_t('Slovensk&yacute;')); ?>
191
- <?php gde_showOption('fi', 'default_lang', gde_t('Suomi')); ?>
192
- <?php gde_showOption('sv', 'default_lang', gde_t('Svenska')); ?>
193
- <?php gde_showOption('tr', 'default_lang', gde_t('T&uuml;rk&ccedil;e')); ?>
194
- <?php gde_showOption('vi', 'default_lang', gde_t('Tiếng Việt')); ?>
195
- <?php gde_showOption('ru', 'default_lang', gde_t('Русский')); ?>
196
- <?php gde_showOption('bg', 'default_lang', gde_t('български')); ?>
197
- <?php gde_showOption('mr', 'default_lang', gde_t('मराठी')); ?>
198
- <?php gde_showOption('hi', 'default_lang', gde_t('हिन्दी')); ?>
199
- <?php gde_showOption('bn', 'default_lang', gde_t('বাংলা')); ?>
200
- <?php gde_showOption('gu', 'default_lang', gde_t('ગુજરાતી')); ?>
201
- <?php gde_showOption('or', 'default_lang', gde_t('ଓଡିଆ')); ?>
202
- <?php gde_showOption('ta', 'default_lang', gde_t('தமிழ்')); ?>
203
- <?php gde_showOption('te', 'default_lang', gde_t('తెలుగు')); ?>
204
- <?php gde_showOption('kn', 'default_lang', gde_t('ಕನ್ನಡ')); ?>
205
- <?php gde_showOption('ml', 'default_lang', gde_t('മലയാളം')); ?>
206
- <?php gde_showOption('th', 'default_lang', gde_t('ภาษาไทย')); ?>
207
- <?php gde_showOption('zh_CN', 'default_lang', gde_t('中文(简体)')); ?>
208
- <?php gde_showOption('zh_TW', 'default_lang', gde_t('中文(繁體)')); ?>
209
- <?php gde_showOption('ja', 'default_lang', gde_t('日本語')); ?>
210
- <?php gde_showOption('ko', 'default_lang', gde_t('한국어')); ?>
211
 
212
  </select></td>
213
  </tr>
@@ -215,9 +224,9 @@ echo "<h2>".__('Google Doc Embedder Settings')."</h2>";
215
  <th scope="row">Default Viewer Display</th>
216
  <td><select name="default_display">
217
 
218
- <?php gde_showOption('inline', 'default_display', gde_t('Inline (Default)')); ?>
219
- <?php gde_showOption('inline-open', 'default_display', gde_t('Collapsible (Open)')); ?>
220
- <?php gde_showOption('inline-close', 'default_display', gde_t('Collapsible (Closed)')); ?>
221
 
222
  </select></td>
223
  </tr-->
@@ -229,41 +238,42 @@ echo "<h2>".__('Google Doc Embedder Settings')."</h2>";
229
 
230
  <div id="gde_linkoptions" class="postbox">
231
 
232
- <h3 class="hndle"><span>Download Link Options</span></h3>
233
  <div class="inside">
234
  <table class="form-table">
235
  <tr valign="top">
236
- <td colspan="2"><div style="float:right;"><a href="<?php echo GDE_LINKOPT_URL; ?>" target="_blank" title="Help"><img src="<?php echo $himg; ?>"></a></div><?php gde_showCheck('show_dl', gde_t('Display the download link by default')); ?><br/>
237
- <?php gde_showCheck('restrict_dl', gde_t('Only display download link to logged in users')); ?><br/>
238
- <?php gde_showCheck('enable_ga', gde_t('Track downloads in Google Analytics (tracking script must be installed on your site)')); ?></td>
 
239
  </tr>
240
  <tr valign="top">
241
- <th scope="row">File Base URL</th>
242
  <td><input type="text" size="50" name="base_url" value="<?php echo $gdeoptions['base_url']; ?>" /><br/>
243
- Any file not starting with <em>http</em> will be prefixed by this value</td>
244
  </tr>
245
  <tr valign="top">
246
- <th scope="row">Link Text</th>
247
  <td><input type="text" size="50" name="link_text" value="<?php echo $gdeoptions['link_text']; ?>" /><br/>
248
- <em>You can further customize text using these dynamic replacements:</em><br/>
249
- <code>%FN</code> : filename &nbsp;&nbsp;&nbsp;
250
- <code>%FT</code> : file type &nbsp;&nbsp;&nbsp;
251
- <code>%FS</code> : file size</td>
252
  </tr>
253
  <tr valign="top">
254
- <th scope="row">Link Position</th>
255
  <td><select name="link_pos">
256
- <?php gde_showOption('above', 'link_pos', gde_t('Above Viewer')); ?>
257
- <?php gde_showOption('below', 'link_pos', gde_t('Below Viewer')); ?>
258
  </select>
259
  </td>
260
  </tr>
261
  <tr valign="top">
262
- <th scope="row">Link Behavior</th>
263
  <td><select name="link_func">
264
- <?php gde_showOption('default', 'link_func', gde_t('Browser Default')); ?>
265
- <?php gde_showOption('force', 'link_func', gde_t('Force Download')); ?>
266
- <?php gde_showOption('force-mask', 'link_func', gde_t('Force Download (Mask URL)')); ?>
267
  </select>
268
  </td>
269
  </tr>
@@ -277,19 +287,26 @@ Any file not starting with <em>http</em> will be prefixed by this value</td>
277
  </div>
278
 
279
  <div id="gde_linkoptions" class="postbox">
280
- <h3 class="hndle"><span>Advanced Options</span></h3>
281
  <div class="inside">
282
- <div style="float:right;"><a href="<?php echo GDE_ADVOPT_URL; ?>" target="_blank" title="Help"><img src="<?php echo $himg; ?>"></a></div>
283
- <a href="javascript:void(0);" id="advopt-plugin">Plugin Behavior</a> |
284
- <a href="javascript:void(0);" id="advopt-editor">Editor Integration</a>
285
  <div id="adv-plugin" style="display:none;padding-left:235px;margin-top:-16px;">
286
- <?php gde_showCheck('disable_hideerrors', gde_t('Display error messages inline (not hidden)')); ?><br />
287
- <?php gde_showCheck('bypass_check', gde_t('Disable internal error checking')); ?><br />
288
- <?php gde_showCheck('disable_caching', gde_t('Disable document caching')); ?><br />
289
- <?php gde_showCheck('suppress_beta', gde_t('Disable beta version notifications')); ?>
290
  </div>
291
  <div id="adv-editor" style="display:none;padding-left:235px;margin-top:-16px;">
292
- <?php gde_showCheck('disable_editor', gde_t('Disable all editor integration')); ?><br />
 
 
 
 
 
 
 
293
  </div>
294
  </div>
295
  </div>
@@ -299,9 +316,9 @@ Any file not starting with <em>http</em> will be prefixed by this value</td>
299
 
300
  <p class="submit" style="padding:0 10px;">
301
  <input type="hidden" id="user-id" name="user_ID" value="<?php echo (int) $user_ID ?>" />
302
- <input class="button-primary" type="submit" name="submit" value="<?php gde_e('Save Options') ?>" />
303
  &nbsp;&nbsp;&nbsp;
304
- <input class="button-secondary" type="submit" name="defaults" value="<?php gde_e('Reset to Defaults') ?>" onClick="javascript:return confirm('Are you sure you want to reset all settings to defaults?')" />
305
  </p>
306
 
307
  </form>
@@ -315,16 +332,17 @@ function gde_showRadio($value, $id, $option, $title, $event = NULL) {
315
  if ($gdeoptions[$option] == $value) { $chk = ' checked="checked"'; }
316
  ?>
317
  <input type="radio" name="<?php echo $option; ?>" value="<?php echo $value; ?>" id="<?php echo $id; ?>"<?php echo $chk; echo $event; ?> />
318
- <label for="<?php echo $id; ?>"><strong><?php gde_e($title) ?></strong></label>
319
  <?php
320
  }
321
 
322
- function gde_showCheck($option, $title, $link = NULL) {
323
  global $gdeoptions;
324
  if ($gdeoptions[$option] == "yes") { $chk = ' checked="checked"'; }
 
325
  ?>
326
- <input type="checkbox" name="<?php echo $option; ?>" value="1" id="<?php echo $option; ?>"<?php echo $chk; ?> />
327
- <label for="<?php echo $option; ?>"><?php gde_e($title) ?></label>
328
  <?php
329
  if ($link) {
330
  echo ' (<a href="'.$link.'" target="_blank">info</a>)';
@@ -340,7 +358,7 @@ function gde_showCheckTb($option, $title) {
340
  if (strstr($gdet, $option) !== false) { $chk = ' checked="checked"'; }
341
  ?>
342
  <input type="checkbox" name="gdet_<?php echo $option; ?>" value="1" id="gdet_<?php echo $option; ?>"<?php echo $chk; ?> />
343
- <label for="gdet_<?php echo $option; ?>"><?php gde_e($title) ?></label>
344
  <?php
345
  }
346
 
@@ -357,7 +375,7 @@ function gde_showMessage($message, $type='updated') {
357
  elseif($type == 'error') $class = 'updated error';
358
  else $class = $type;
359
 
360
- print '<div id="message" class="'.$class.'"><p>' . __($message, basename(dirname(__FILE__))) . '</p></div>';
361
  }
362
 
363
  ?>
1
+ <?php
2
  include_once('gde-functions.php');
3
 
4
  global $gdeoptions;
17
 
18
  $set = gde_init('reset');
19
  $gdeoptions = get_option('gde_options');
20
+ gde_showMessage(__('Options reset to defaults', 'gde'));
21
 
22
  } elseif(isset($_REQUEST['submit'])) {
23
 
57
  //if(isset($_POST['default_display'])) {
58
  // $gdeoptions['default_display'] = $_POST['default_display'];
59
  //}
 
 
60
  if(isset($_POST['gdet_z'])) { $newgdet .= "z"; }
61
  if(isset($_POST['gdet_n'])) { $newgdet .= "n"; }
62
+ if(isset($_POST['gdet_m'])) { $newgdet .= "m"; }
63
  $gdeoptions['restrict_tb'] = $newgdet;
64
  if(isset($_POST['base_url'])) {
65
  $gdeoptions['base_url'] = $_POST['base_url'];
87
  } else {
88
  $gdeoptions['disable_editor'] = "no";
89
  }
90
+ if(isset($_POST['ed_extend_upload'])) {
91
+ $gdeoptions['ed_extend_upload'] = "yes";
92
+ } else {
93
+ $gdeoptions['ed_extend_upload'] = "no";
94
+ }
95
+ if(isset($_POST['ed_embed_sc'])) {
96
+ $gdeoptions['ed_embed_sc'] = "yes";
97
+ } else {
98
+ $gdeoptions['ed_embed_sc'] = "no";
99
+ }
100
  if(isset($_POST['disable_caching'])) {
101
  $gdeoptions['disable_caching'] = "yes";
102
  } else {
114
  }
115
 
116
  update_option('gde_options', $gdeoptions);
117
+ gde_showMessage(__('Options updated', 'gde'));
118
  }
119
  ?>
120
+
121
  <div class="wrap">
122
+ <h2>Google Doc Embedder <?php _e('Settings', 'gde'); ?></h2>
 
 
123
 
124
  <form action="" method="post">
125
  <?php wp_nonce_field('update-options'); ?>
130
  <div class="meta-box-sortabless">
131
  <div id="gde_vieweroptions" class="postbox">
132
 
133
+ <h3 class="hndle"><span><?php _e('Viewer Options', 'gde'); ?></span></h3>
134
  <div class="inside">
135
 
136
  <table class="form-table">
137
  <tr valign="top">
138
+ <th scope="row"><?php _e('Viewer Selection', 'gde'); ?></th>
139
+ <td><div style="float:right;"><a href="<?php echo GDE_VIEWOPT_URL; ?>" target="_blank" title="<?php echo __('Help', 'gde'); ?>"><img src="<?php echo $himg; ?>"></a></div>
140
  <?php
141
+ gde_showRadio('yes', 'std-view', 'disable_proxy', __('Google Standard Viewer', 'gde'), $event); ?><br />
142
+ <em><?php echo __('Embed the standard Google Viewer.', 'gde'); ?></em><br/>
143
+ <?php gde_showRadio('no', 'enh-view', 'disable_proxy', __('Enhanced Viewer', 'gde'), $event); ?><br />
144
+ <em><?php echo __('Use this option to enable toolbar customization and fix some display problems (experimental).', 'gde'); ?></em><br/>
145
  </td>
146
  </tr>
147
  <tr valign="top" id="tbedit" style="<?php echo $tbdisplay; ?>">
148
+ <th scope="row"><?php _e('Customize Toolbar', 'gde'); ?></th>
149
  <td>
150
+ <?php //gde_showCheckTb('gdet_i', __('Google Logo', 'gde')); ?>
151
+ <?php //gde_showCheckTb('gdet_p', __('Single/Double Page View', 'gde')); ?>
152
+ <?php gde_showCheckTb('gdet_z', __('Hide Zoom In/Out', 'gde')); ?> &nbsp;&nbsp;
153
+ <?php gde_showCheckTb('gdet_n', __('Hide Open in New Window', 'gde')); ?> &nbsp;&nbsp;
154
+ <?php gde_showCheckTb('gdet_m', __('Always Use Mobile Theme', 'gde')); ?>
155
  </td>
156
  </tr>
157
  <tr valign="top">
158
+ <th scope="row"><?php _e('Default Size', 'gde'); ?></th>
159
+ <td><strong><?php echo __('Width', 'gde'); ?> </strong><input type="text" size="5" name="default_width" value="<?php echo $gdeoptions['default_width']; ?>" /> <select name="width_type" style="padding-right:2px;">
160
+ <?php gde_showOption('px', 'width_type', 'px'); ?>
161
+ <?php gde_showOption('pc', 'width_type', '%'); ?>
162
  </select> &nbsp;&nbsp;&nbsp;&nbsp;
163
+ <strong><?php echo __('Height', 'gde'); ?> </strong><input type="text" size="5" name="default_height" value="<?php echo $gdeoptions['default_height']; ?>" /> <select name="height_type" style="padding-right:2px;">
164
+ <?php gde_showOption('px', 'height_type', 'px'); ?>
165
+ <?php gde_showOption('pc', 'height_type', '%'); ?>
166
  </select></td>
167
  </tr>
168
  <tr valign="top">
169
+ <th scope="row"><?php _e('Default Language', 'gde'); ?></th>
170
  <td><select name="default_lang">
171
 
172
+ <?php gde_showOption('cs', 'default_lang', '&#268;esky'); ?>
173
+ <?php gde_showOption('sr', 'default_lang', '&#x0421;&#x0440;&#x043F;&#x0441;&#x043A;&#x0438;'); ?>
174
+ <?php gde_showOption('uk', 'default_lang', '&#x0423;&#x043A;&#x0440;&#x0430;&#x0457;&#x043D;&#x0441;&#x044C;&#x043A;&#x0430;'); ?>
175
+ <?php gde_showOption('el', 'default_lang', '&Epsilon;&lambda;&lambda;&eta;&nu;&iota;&kappa;ά'); ?>
176
+ <?php gde_showOption('ar', 'default_lang', 'Arabic'); ?>
177
+ <?php gde_showOption('in', 'default_lang', 'Bahasa Indonesia'); ?>
178
+ <?php gde_showOption('ca', 'default_lang', 'Catal&agrave;'); ?>
179
+ <?php gde_showOption('da', 'default_lang', 'Dansk'); ?>
180
+ <?php gde_showOption('de', 'default_lang', 'Deutsch'); ?>
181
+ <?php gde_showOption('en_GB', 'default_lang', 'English (UK)'); ?>
182
+ <?php gde_showOption('en_US', 'default_lang', 'English (US)'); ?>
183
+ <?php gde_showOption('es', 'default_lang', 'Espa&ntilde;ol'); ?>
184
+ <?php gde_showOption('fil', 'default_lang', 'Filipino'); ?>
185
+ <?php gde_showOption('fr', 'default_lang', 'Fran&ccedil;ais'); ?>
186
+ <?php gde_showOption('iw', 'default_lang', 'Hebrew'); ?>
187
+ <?php gde_showOption('hr', 'default_lang', 'Hrvatski'); ?>
188
+ <?php gde_showOption('it', 'default_lang', 'Italiano'); ?>
189
+ <?php gde_showOption('lv', 'default_lang', 'Latvie&scaron;u'); ?>
190
+ <?php gde_showOption('lt', 'default_lang', 'Lietuvių'); ?>
191
+ <?php gde_showOption('hu', 'default_lang', 'Magyar'); ?>
192
+ <?php gde_showOption('nl', 'default_lang', 'Nederlands'); ?>
193
+ <?php gde_showOption('no', 'default_lang', 'Norsk (bokmål)'); ?>
194
+ <?php gde_showOption('pl', 'default_lang', 'Polski'); ?>
195
+ <?php gde_showOption('pt_BR', 'default_lang', 'Portugu&ecirc;s (Brasil)'); ?>
196
+ <?php gde_showOption('pt_PT', 'default_lang', 'Portugu&ecirc;s (Portugal)'); ?>
197
+ <?php gde_showOption('ro', 'default_lang', 'Rom&acirc;n&#x0103;'); ?>
198
+ <?php gde_showOption('sl', 'default_lang', 'Sloven&#x0161;&#x010D;ina'); ?>
199
+ <?php gde_showOption('sk', 'default_lang', 'Slovensk&yacute;'); ?>
200
+ <?php gde_showOption('fi', 'default_lang', 'Suomi'); ?>
201
+ <?php gde_showOption('sv', 'default_lang', 'Svenska'); ?>
202
+ <?php gde_showOption('tr', 'default_lang', 'T&uuml;rk&ccedil;e'); ?>
203
+ <?php gde_showOption('vi', 'default_lang', 'Tiếng Việt'); ?>
204
+ <?php gde_showOption('ru', 'default_lang', 'Русский'); ?>
205
+ <?php gde_showOption('bg', 'default_lang', 'български'); ?>
206
+ <?php gde_showOption('mr', 'default_lang', 'मराठी'); ?>
207
+ <?php gde_showOption('hi', 'default_lang', 'हिन्दी'); ?>
208
+ <?php gde_showOption('bn', 'default_lang', 'বাংলা'); ?>
209
+ <?php gde_showOption('gu', 'default_lang', 'ગુજરાતી'); ?>
210
+ <?php gde_showOption('or', 'default_lang', 'ଓଡିଆ'); ?>
211
+ <?php gde_showOption('ta', 'default_lang', 'தமிழ்'); ?>
212
+ <?php gde_showOption('te', 'default_lang', 'తెలుగు'); ?>
213
+ <?php gde_showOption('kn', 'default_lang', 'ಕನ್ನಡ'); ?>
214
+ <?php gde_showOption('ml', 'default_lang', 'മലയാളം'); ?>
215
+ <?php gde_showOption('th', 'default_lang', 'ภาษาไทย'); ?>
216
+ <?php gde_showOption('zh_CN', 'default_lang', '中文(简体)'); ?>
217
+ <?php gde_showOption('zh_TW', 'default_lang', '中文(繁體)'); ?>
218
+ <?php gde_showOption('ja', 'default_lang', '日本語'); ?>
219
+ <?php gde_showOption('ko', 'default_lang', '한국어'); ?>
220
 
221
  </select></td>
222
  </tr>
224
  <th scope="row">Default Viewer Display</th>
225
  <td><select name="default_display">
226
 
227
+ <?php gde_showOption('inline', 'default_display', __('Inline (Default)', 'gde')); ?>
228
+ <?php gde_showOption('inline-open', 'default_display', __('Collapsible (Open)', 'gde')); ?>
229
+ <?php gde_showOption('inline-close', 'default_display', __('Collapsible (Closed)', 'gde')); ?>
230
 
231
  </select></td>
232
  </tr-->
238
 
239
  <div id="gde_linkoptions" class="postbox">
240
 
241
+ <h3 class="hndle"><span><?php _e('Download Link Options', 'gde'); ?></span></h3>
242
  <div class="inside">
243
  <table class="form-table">
244
  <tr valign="top">
245
+ <td colspan="2"><div style="float:right;"><a href="<?php echo GDE_LINKOPT_URL; ?>" target="_blank" title="<?php echo __('Help', 'gde'); ?>"><img src="<?php echo $himg; ?>"></a></div>
246
+ <?php gde_showCheck('show_dl', __('Display the download link by default', 'gde')); ?><br/>
247
+ <?php gde_showCheck('restrict_dl', __('Only display download link to logged in users', 'gde')); ?><br/>
248
+ <?php gde_showCheck('enable_ga', __('Track downloads in Google Analytics (tracking script must be installed on your site)', 'gde')); ?></td>
249
  </tr>
250
  <tr valign="top">
251
+ <th scope="row"><?php _e('File Base URL', 'gde'); ?></th>
252
  <td><input type="text" size="50" name="base_url" value="<?php echo $gdeoptions['base_url']; ?>" /><br/>
253
+ <?php echo __('Any file not starting with <em>http</em> will be prefixed by this value', 'gde'); ?></td>
254
  </tr>
255
  <tr valign="top">
256
+ <th scope="row"><?php _e('Link Text', 'gde'); ?></th>
257
  <td><input type="text" size="50" name="link_text" value="<?php echo $gdeoptions['link_text']; ?>" /><br/>
258
+ <em><?php echo __('You can further customize text using these dynamic replacements:', 'gde'); ?></em><br/>
259
+ <code>%FN</code> : <?php echo __('filename', 'gde'); ?> &nbsp;&nbsp;&nbsp;
260
+ <code>%FT</code> : <?php echo __('file type', 'gde'); ?> &nbsp;&nbsp;&nbsp;
261
+ <code>%FS</code> : <?php echo __('file size', 'gde'); ?></td>
262
  </tr>
263
  <tr valign="top">
264
+ <th scope="row"><?php _e('Link Position', 'gde'); ?></th>
265
  <td><select name="link_pos">
266
+ <?php gde_showOption('above', 'link_pos', __('Above Viewer', 'gde')); ?>
267
+ <?php gde_showOption('below', 'link_pos', __('Below Viewer', 'gde')); ?>
268
  </select>
269
  </td>
270
  </tr>
271
  <tr valign="top">
272
+ <th scope="row"><?php _e('Link Behavior', 'gde'); ?></th>
273
  <td><select name="link_func">
274
+ <?php gde_showOption('default', 'link_func', __('Browser Default', 'gde')); ?>
275
+ <?php gde_showOption('force', 'link_func', __('Force Download', 'gde')); ?>
276
+ <?php gde_showOption('force-mask', 'link_func', __('Force Download (Mask URL)', 'gde')); ?>
277
  </select>
278
  </td>
279
  </tr>
287
  </div>
288
 
289
  <div id="gde_linkoptions" class="postbox">
290
+ <h3 class="hndle"><span><?php _e('Advanced Options', 'gde'); ?></span></h3>
291
  <div class="inside">
292
+ <div style="float:right;"><a href="<?php echo GDE_ADVOPT_URL; ?>" target="_blank" title="<?php echo __('Help', 'gde'); ?>"><img src="<?php echo $himg; ?>"></a></div>
293
+ <a href="javascript:void(0);" id="advopt-plugin"><?php echo __('Plugin Behavior', 'gde'); ?></a> |
294
+ <a href="javascript:void(0);" id="advopt-editor"><?php echo __('Editor Behavior', 'gde'); ?></a>
295
  <div id="adv-plugin" style="display:none;padding-left:235px;margin-top:-16px;">
296
+ <?php gde_showCheck('disable_hideerrors', __('Display error messages inline (not hidden)', 'gde')); ?><br />
297
+ <?php gde_showCheck('bypass_check', __('Disable internal error checking', 'gde')); ?><br />
298
+ <?php gde_showCheck('disable_caching', __('Disable document caching', 'gde')); ?><br />
299
+ <?php gde_showCheck('suppress_beta', __('Disable beta version notifications', 'gde')); ?>
300
  </div>
301
  <div id="adv-editor" style="display:none;padding-left:235px;margin-top:-16px;">
302
+ <?php gde_showCheck('disable_editor', __('Disable all editor integration', 'gde')); ?><br />
303
+ <?php
304
+ if ($gdeoptions['disable_editor'] == "yes") {
305
+ $disabled = "true";
306
+ } else { $disabled = "false"; }
307
+ gde_showCheck('ed_embed_sc', __('Insert shortcode from Media Library', 'gde'), null, $disabled);
308
+ ?><br />
309
+ <?php gde_showCheck('ed_extend_upload', __('Allow uploads of all supported media types', 'gde'), null, $disabled); ?>
310
  </div>
311
  </div>
312
  </div>
316
 
317
  <p class="submit" style="padding:0 10px;">
318
  <input type="hidden" id="user-id" name="user_ID" value="<?php echo (int) $user_ID ?>" />
319
+ <input class="button-primary" type="submit" name="submit" value="<?php _e('Save Options', 'gde') ?>" />
320
  &nbsp;&nbsp;&nbsp;
321
+ <input class="button-secondary" type="submit" name="defaults" value="<?php _e('Reset to Defaults', 'gde') ?>" onClick="javascript:return confirm('<?php echo __('Are you sure you want to reset all settings to defaults?', 'gde'); ?>')" />
322
  </p>
323
 
324
  </form>
332
  if ($gdeoptions[$option] == $value) { $chk = ' checked="checked"'; }
333
  ?>
334
  <input type="radio" name="<?php echo $option; ?>" value="<?php echo $value; ?>" id="<?php echo $id; ?>"<?php echo $chk; echo $event; ?> />
335
+ <label for="<?php echo $id; ?>"><strong><?php echo $title; ?></strong></label>
336
  <?php
337
  }
338
 
339
+ function gde_showCheck($option, $title, $link = NULL, $disable = false) {
340
  global $gdeoptions;
341
  if ($gdeoptions[$option] == "yes") { $chk = ' checked="checked"'; }
342
+ if ($disable == "true") { $dis = ' disabled="true"'; }
343
  ?>
344
+ <input type="checkbox" name="<?php echo $option; ?>" value="1" id="<?php echo $option; ?>"<?php echo $chk; ?><?php echo $dis; ?> />
345
+ <label for="<?php echo $option; ?>"><?php echo $title; ?></label>
346
  <?php
347
  if ($link) {
348
  echo ' (<a href="'.$link.'" target="_blank">info</a>)';
358
  if (strstr($gdet, $option) !== false) { $chk = ' checked="checked"'; }
359
  ?>
360
  <input type="checkbox" name="gdet_<?php echo $option; ?>" value="1" id="gdet_<?php echo $option; ?>"<?php echo $chk; ?> />
361
+ <label for="gdet_<?php echo $option; ?>"><?php echo $title; ?></label>
362
  <?php
363
  }
364
 
375
  elseif($type == 'error') $class = 'updated error';
376
  else $class = $type;
377
 
378
+ print '<div id="message" class="'.$class.'"><p>' . $message . '</p></div>';
379
  }
380
 
381
  ?>
proxy.php CHANGED
@@ -1,5 +1,12 @@
1
  <?php
2
 
 
 
 
 
 
 
 
3
  # This proxy code is a bypass for an existing flaw in Google Docs Viewer that breaks the functionality
4
  # for some IE users. If you do not wish to use this code, select Google Standard Viewer rather than
5
  # Enhanced Viewer in GDE Settings. Note that viewer toolbar customization options depend on this
@@ -16,118 +23,124 @@
16
 
17
  // test for allow_url_fopen in php config; try curl for function if disabled
18
  if (ini_get('allow_url_fopen') !== "1") {
19
- if (function_exists('curl_version')) {
20
- $curl = 1;
21
- } else {
22
- $err = "This function is not supported on your web server. Please add ";
23
- $err .= "<code>allow_url_fopen = 1</code> to your php.ini or enable cURL library. ";
24
- $err .= "If you are unable to do this, please switch to Google Standard ";
25
- $err .= "Viewer in GDE Options.";
26
- echo $err;
27
- exit;
28
- }
29
  }
30
 
31
- if (isset($_GET['embedded'])) {
32
- // get the src page, change relative path to absolute
33
- if (isset($curl)) {
34
- $code = curl_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
35
- } else {
36
- $code = file_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
37
- }
38
-
39
- // fix path to images
40
- $search[] = "/viewer/images";
41
- $replace[] = "http://docs.google.com/viewer/images";
42
- $search[] = "/gview/images";
43
- $replace[] = "http://docs.google.com/viewer/images";
44
-
45
- // proxy the javascript file
46
- $search[] = "gview/resources_gview/client/js";
47
- $replace[] = "?jsfile=gview/resources_gview/client/js";
48
-
49
- if (isset($_GET['gdet'])) {
50
- $gdet = $_GET['gdet'];
51
 
52
- # hide google icon (i)
53
- /* These are no longer visible by default - not necessary
54
- if (strstr($gdet, 'i') !== false) {
55
- $search[] = ".goog-logo-small {";
56
- $replace[] = ".goog-logo-small { display: none !important;";
 
 
57
  }
58
- # hide single/double page view (p)
59
- if (strstr($gdet, 'p') !== false) {
60
- $search[] = ".controlbar-two-up-image {";
61
- $replace[] = ".controlbar-two-up-image { display: none !important;";
62
- $search[] = ".controlbar-one-up-image {";
63
- $replace[] = ".controlbar-one-up-image { display: none !important;";
64
- }
65
- */
 
 
 
66
  # hide zoom in/out (z)
67
- if (strstr($gdet, 'z') !== false) {
68
- $search[] = "#zoomOutToolbarButtonIcon {";
69
- $replace[] = "#zoomOutToolbarButtonIcon { display: none !important;";
70
- $search[] = "#zoomInToolbarButtonIcon {";
71
- $replace[] = "#zoomInToolbarButtonIcon { display: none !important;";
 
 
 
 
 
 
 
72
  }
73
  # hide open in new window (n)
74
- if (strstr($gdet, 'n') !== false) {
75
- $search[] = "#openInViewerButtonIcon {";
76
- $replace[] = "#openInViewerButtonIcon { display: none !important;";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
- }
79
-
80
- $code = str_replace($search, $replace, $code);
81
-
82
- header('Content-type: text/html');
83
- echo $code;
84
-
85
- } else if (isset($_GET['a']) && $_GET['a'] == 'gt') {
86
- // get text coordinates file, can not redirect because of same origin policy
87
- if (isset($curl)) {
88
- $code = curl_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
89
- } else {
90
- $code = file_get_contents("http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
91
- }
92
-
93
- header('Content-type: text/xml; charset=UTF-8');
94
- echo $code;
95
-
96
- } else if (isset($_GET['a']) && $_GET['a'] == 'bi') {
97
- // redirect to images
98
- header("Location: http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
99
- header('Content-type: image/png');
100
-
101
- } else if (isset($_GET['jsfile'])) {
102
- // proxy javascript files and replace navigator.cookieEnabled with false
103
- if (isset($curl)) {
104
- $code = curl_get_contents("http://docs.google.com/" . $_GET['jsfile']);
105
- } else {
106
- $code = file_get_contents("http://docs.google.com/" . $_GET['jsfile']);
107
- }
108
-
109
- $search = array("navigator.cookieEnabled");
110
- $replace = array("false");
111
- $code = str_replace($search, $replace, $code);
112
-
113
- header('Content-type: text/javascript');
114
- echo $code;
115
-
116
  } else {
117
- // everything else, of which there isn't!
118
- header("Location: http://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
119
  }
120
 
121
  function curl_get_contents($url) {
122
- $ch = curl_init();
123
- $timeout = 5; // set to zero for no timeout
124
- curl_setopt ($ch, CURLOPT_URL, $url);
125
- curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
126
- curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
127
- $file_contents = curl_exec($ch);
128
- curl_close($ch);
129
-
130
- return $file_contents;
 
131
  }
132
 
133
  ?>
1
  <?php
2
 
3
+ // access wp functions externally
4
+ require_once('bootstrap.php');
5
+
6
+ // get settings
7
+ $gdeoptions = get_option('gde_options');
8
+ $tb = $gdeoptions['restrict_tb'];
9
+
10
  # This proxy code is a bypass for an existing flaw in Google Docs Viewer that breaks the functionality
11
  # for some IE users. If you do not wish to use this code, select Google Standard Viewer rather than
12
  # Enhanced Viewer in GDE Settings. Note that viewer toolbar customization options depend on this
23
 
24
  // test for allow_url_fopen in php config; try curl for function if disabled
25
  if (ini_get('allow_url_fopen') !== "1") {
26
+ if (function_exists('curl_version')) {
27
+ $curl = 1;
28
+ } else {
29
+ $err = _e('This function is not supported on your web server. Please add
30
+ <code>allow_url_fopen = 1</code> to your php.ini or enable cURL library.
31
+ If you are unable to do this, please switch to Google Standard Viewer in GDE Options.', 'gde');
32
+ exit;
33
+ }
 
 
34
  }
35
 
36
+ // check for mobile (m)
37
+ if (strstr($_SERVER['QUERY_STRING'], 'mobile=true') !== false) {
38
+ $mobile = true;
39
+ } elseif (strstr($tb, 'm') !== false) {
40
+ $_SERVER['QUERY_STRING'] .= "&mobile=true";
41
+ $mobile = true;
42
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
+ if (isset($_GET['embedded']) || $_GET['mobile']) {
45
+
46
+ // get the src page, change relative path to absolute
47
+ if (isset($curl)) {
48
+ $code = curl_get_contents("https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
49
+ } else {
50
+ $code = file_get_contents("https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
51
  }
52
+
53
+ // fix path to images - full URL in current viewer makes these unnecessary
54
+ //$search[] = "/viewer/images";
55
+ //$replace[] = "https://www.gstatic.com/docs/gview/images/icon_sprites_6.png";
56
+ //$search[] = "/gview/images";
57
+ //$replace[] = "https://docs.google.com/viewer/images";
58
+
59
+ // proxy the javascript file
60
+ $search[] = "gview/resources_gview/client/js";
61
+ $replace[] = "?jsfile=gview/resources_gview/client/js";
62
+
63
  # hide zoom in/out (z)
64
+ if (strstr($tb, 'z') !== false) {
65
+ if ($mobile) {
66
+ $search[] = ".mobile-button-zoom-out {";
67
+ $replace[] = ".mobile-button-zoom-out { display: none !important;";
68
+ $search[] = ".mobile-button-zoom-in {";
69
+ $replace[] = ".mobile-button-zoom-in { display: none !important;";
70
+ } else {
71
+ $search[] = "#zoomOutToolbarButtonIcon {";
72
+ $replace[] = "#zoomOutToolbarButtonIcon { display: none !important;";
73
+ $search[] = "#zoomInToolbarButtonIcon {";
74
+ $replace[] = "#zoomInToolbarButtonIcon { display: none !important;";
75
+ }
76
  }
77
  # hide open in new window (n)
78
+ if (!$mobile) {
79
+ if (strstr($tb, 'n') !== false) {
80
+ $search[] = "#openInViewerButtonIcon {";
81
+ $replace[] = "#openInViewerButtonIcon { display: none !important;";
82
+ }
83
+ }
84
+ # hide mobile footer (always)
85
+ if ($mobile) {
86
+ $search[] = "#page-footer {";
87
+ $replace[] = "#page-footer { display: none !important;";
88
+ }
89
+
90
+ // perform replacements
91
+ $code = str_replace($search, $replace, $code);
92
+
93
+ // output page
94
+ header('Content-type: text/html');
95
+ echo $code;
96
+
97
+ } elseif (isset($_GET['a']) && $_GET['a'] == 'gt') {
98
+ // get text coordinates file, can not redirect because of same origin policy
99
+ if (isset($curl)) {
100
+ $code = curl_get_contents("https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
101
+ } else {
102
+ $code = file_get_contents("https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
103
+ }
104
+
105
+ header('Content-type: text/xml; charset=UTF-8');
106
+ echo $code;
107
+
108
+ } elseif (isset($_GET['a']) && $_GET['a'] == 'bi') {
109
+ // redirect to images
110
+ header("Location: https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
111
+ header('Content-type: image/png');
112
+
113
+ } elseif (isset($_GET['jsfile'])) {
114
+ // proxy javascript files and replace navigator.cookieEnabled with false
115
+ if (isset($curl)) {
116
+ $code = curl_get_contents("https://docs.google.com/" . $_GET['jsfile']);
117
+ } else {
118
+ $code = file_get_contents("https://docs.google.com/" . $_GET['jsfile']);
119
  }
120
+
121
+ $search = array("navigator.cookieEnabled");
122
+ $replace = array("false");
123
+ $code = str_replace($search, $replace, $code);
124
+
125
+ header('Content-type: text/javascript');
126
+ echo $code;
127
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  } else {
129
+ // everything else, of which there isn't!
130
+ header("Location: https://docs.google.com/viewer?" . $_SERVER['QUERY_STRING']);
131
  }
132
 
133
  function curl_get_contents($url) {
134
+ $ch = curl_init();
135
+ $timeout = 5; // set to zero for no timeout
136
+ curl_setopt ($ch, CURLOPT_URL, $url);
137
+ curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
138
+ curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
139
+ curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
140
+ $file_contents = curl_exec($ch);
141
+ curl_close($ch);
142
+
143
+ return $file_contents;
144
  }
145
 
146
  ?>
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
  === Google Doc Embedder ===
2
  Contributors: k3davis
3
  Tags: doc, docx, pdf, ppt, pptx, xls, psd, zip, rar, tiff, office, powerpoint, google docs, google
4
- Author URI: http://www.davismetro.com/code/
5
  Donate link: http://pledgie.com/campaigns/6048
6
  Requires at least: 2.8
7
  Tested up to: 3.4
@@ -28,7 +28,7 @@ Google Doc Embedder lets you embed several types of files into your WordPress pa
28
  * XML Paper Specification (XPS)
29
  * Archive Files (ZIP/RAR)
30
 
31
- Similar to services like Scribd, Google Doc Embedder will allow you to embed these files directly into your page or post, not requiring the user to have Microsoft Word, Adobe Reader, PowerPoint, or other software installed to view the contents. Unlike Scribd, the files do not need to be uploaded to any service first - including Google Documents - but can exist anywhere publicly accessible on your site or the internet.
32
 
33
  Note: Use of this plug-in implies your agreement with Google's published <a href="http://docs.google.com/viewer/TOS?hl=en" target="_blank">Terms of Service</a>.
34
 
@@ -40,7 +40,7 @@ Note: Use of this plug-in implies your agreement with Google's published <a href
40
 
41
  Upload the documents to your site using the media upload facility built into WordPress, via FTP, or link to documents on another (public) site. Use the Google Doc Embedder button in the Visual editor to build the appropriate shortcode.
42
 
43
- For basic manual instructions, please see the FAQ. For advanced usage (including codes not exposed in the editor), see the <a href="http://www.davismetro.com/gde/usage/">web site</a>.
44
 
45
  Go to "GDE Settings" (under "Settings" in the admin panel) to change defaults, or override individually using the shortcode syntax in the FAQ.
46
 
@@ -67,7 +67,12 @@ This plug-in currently can embed the following:
67
  The file to embed must first be publicly available somewhere on the internet. You can upload it to your WordPress site using the standard techniques, or link to a file on another site.
68
 
69
  = How do I embed a file in my page or post? =
70
- Use the Google Doc Embedder button in the Visual editor to insert the `[gview]` shortcode as described below. Alternately, you can paste the URL into the HTML editor, select it, and click the "GDE" quicktag button.
 
 
 
 
 
71
 
72
  To manually insert the `[gview]` shortcode into your page or post to embed the file, use the syntax below (use of the HTML tab in the editor recommended):
73
 
@@ -82,7 +87,7 @@ Common optional attributes:
82
  * `height=` : To override the default height of the viewer, enter a new height value - e.g., "400" (px) or "80%"
83
  * `cache=` : Set to 0 to bypass the viewer's internal caching (useful only for frequently updated files with the same name)
84
 
85
- For a list of all available attributes, see <a href="http://www.davismetro.com/gde/usage/">Usage</a>.
86
 
87
  = Will it embed files that are password-protected or stored in protected folders/sites? =
88
  Most likely, no. If your file requires a login to view - such as being saved in a password-protected directory, or behind a firewall (on your intranet, etc.), the viewer will probably not be able to access the file. This is what is meant above, that the document should be "publicly available." Please save the file in a publicly accessible location for best results.
@@ -94,7 +99,7 @@ View the source on the web page where you've embedded the viewer. In order to de
94
  This plug-in utilizes the viewer from Google Docs in a standalone fashion. There is no direct integration with Google Docs and even those documents stored there and shared publicly do not embed reliably with their viewer (ironically), so at this time that use is not supported by the plug-in. Please store your original documents somewhere on your web site in their native supported formats.
95
 
96
  = I wish the plug-in had feature XYZ... =
97
- That's not a question ;) but if you have any particular ideas on further development of this plug-in, please post <a href="http://wordpress.org/tags/google-document-embedder?forum_id=10#postform">on the forum</a> or privately using the <a href="http://www.davismetro.com/gde/support/">support form</a> and I'll see what I can do.
98
 
99
  == Screenshots ==
100
 
@@ -104,6 +109,16 @@ That's not a question ;) but if you have any particular ideas on further develop
104
 
105
  == Changelog ==
106
 
 
 
 
 
 
 
 
 
 
 
107
  = 2.3 =
108
  * Added: Option to set base URL for embedded files (thanks KevEd)
109
  * Added: Option to show error messages inline instead of as HTML comments
@@ -161,9 +176,9 @@ That's not a question ;) but if you have any particular ideas on further develop
161
  * Fixed: Filenames with spaces wouldn't load
162
  * Fixed: Suppress beta notification option not honored
163
 
164
- <a href="http://davismetro.com/gde/changelog/" target="_blank">Full history...</a>
165
 
166
  == Upgrade Notice ==
167
 
168
- = 2.3.0 =
169
- New options and editor bug fix.
1
  === Google Doc Embedder ===
2
  Contributors: k3davis
3
  Tags: doc, docx, pdf, ppt, pptx, xls, psd, zip, rar, tiff, office, powerpoint, google docs, google
4
+ Author URI: http://www.davistribe.org/code/
5
  Donate link: http://pledgie.com/campaigns/6048
6
  Requires at least: 2.8
7
  Tested up to: 3.4
28
  * XML Paper Specification (XPS)
29
  * Archive Files (ZIP/RAR)
30
 
31
+ Similar to services like Scribd, Google Doc Embedder will allow you to embed these files directly into your page or post, not requiring the user to have Microsoft Word, Adobe Reader, PowerPoint, or other software installed to view the contents. Unlike Scribd, the files do not need to be uploaded to any service first - including Google Docs - but can exist anywhere publicly accessible on your site or the internet.
32
 
33
  Note: Use of this plug-in implies your agreement with Google's published <a href="http://docs.google.com/viewer/TOS?hl=en" target="_blank">Terms of Service</a>.
34
 
40
 
41
  Upload the documents to your site using the media upload facility built into WordPress, via FTP, or link to documents on another (public) site. Use the Google Doc Embedder button in the Visual editor to build the appropriate shortcode.
42
 
43
+ For basic manual instructions, please see the FAQ. For advanced usage (including codes not exposed in the editor), see the <a href="http://www.davistribe.org/gde/usage/">web site</a>.
44
 
45
  Go to "GDE Settings" (under "Settings" in the admin panel) to change defaults, or override individually using the shortcode syntax in the FAQ.
46
 
67
  The file to embed must first be publicly available somewhere on the internet. You can upload it to your WordPress site using the standard techniques, or link to a file on another site.
68
 
69
  = How do I embed a file in my page or post? =
70
+ There are several ways you can insert a supported document, depending on your preference:
71
+
72
+ * Manually enter the shortcode (explained below).
73
+ * Upload a supported file type from a page or post, and from the Media Library, click the "Insert" button.
74
+ * Use the Google Doc Embedder button in the Visual editor to insert the `[gview]` shortcode.
75
+ * Paste the URL into the HTML editor, select it, and click the "GDE" quicktag button (HTML editor).
76
 
77
  To manually insert the `[gview]` shortcode into your page or post to embed the file, use the syntax below (use of the HTML tab in the editor recommended):
78
 
87
  * `height=` : To override the default height of the viewer, enter a new height value - e.g., "400" (px) or "80%"
88
  * `cache=` : Set to 0 to bypass the viewer's internal caching (useful only for frequently updated files with the same name)
89
 
90
+ For a list of all available attributes, see <a href="http://www.davistribe.org/gde/usage/">Usage</a>.
91
 
92
  = Will it embed files that are password-protected or stored in protected folders/sites? =
93
  Most likely, no. If your file requires a login to view - such as being saved in a password-protected directory, or behind a firewall (on your intranet, etc.), the viewer will probably not be able to access the file. This is what is meant above, that the document should be "publicly available." Please save the file in a publicly accessible location for best results.
99
  This plug-in utilizes the viewer from Google Docs in a standalone fashion. There is no direct integration with Google Docs and even those documents stored there and shared publicly do not embed reliably with their viewer (ironically), so at this time that use is not supported by the plug-in. Please store your original documents somewhere on your web site in their native supported formats.
100
 
101
  = I wish the plug-in had feature XYZ... =
102
+ That's not a question ;) but if you have any particular ideas on further development of this plug-in, please post <a href="http://wordpress.org/tags/google-document-embedder?forum_id=10#postform">on the forum</a> and I'll see what I can do.
103
 
104
  == Screenshots ==
105
 
109
 
110
  == Changelog ==
111
 
112
+ = 2.4 =
113
+ * Added: Allow native upload/insert of all supported file types
114
+ * Added: Shortcode inserted from Media Library for supported files
115
+ * Added: Localization support (translations welcome)
116
+ * Added: Ability to use mobile theme with Enhanced Viewer
117
+ * Fixed: Toolbar customization on mobile with Enhanced Viewer
118
+ * Fixed: Editor integration No longer loads its own TinyMCE/jquery libs
119
+ * Fixed: URL changes for plugin, help links, beta checking
120
+ * Fixed: "Moved Temporarily" error in Enhanced Viewer (thanks webmonkeywatts)
121
+
122
  = 2.3 =
123
  * Added: Option to set base URL for embedded files (thanks KevEd)
124
  * Added: Option to show error messages inline instead of as HTML comments
176
  * Fixed: Filenames with spaces wouldn't load
177
  * Fixed: Suppress beta notification option not honored
178
 
179
+ <a href="http://www.davistribe.org/gde/changelog/" target="_blank">Full history...</a>
180
 
181
  == Upgrade Notice ==
182
 
183
+ = 2.4 =
184
+ Localization, deeper Media Library and editor integration, and more