Index: syntaxhighlighter.js
===================================================================
--- syntaxhighlighter.js	(revision 0)
+++ syntaxhighlighter.js	(revision 0)
@@ -0,0 +1,40 @@
+/* $Id$ */
+
+/**
+ * @file
+ * SyntaxHighlighter JavaScript.
+ *
+ * @author: Matthew Young <www.hddigitalworks.com/contact>
+ * @author: Tom Kirkpatrick (mrfelton), www.kirkdesigns.co.uk
+ */
+
+SyntaxHighlighter.config.strings.expandSource = Drupal.t('expand source');
+SyntaxHighlighter.config.strings.viewSource = Drupal.t('view source');
+SyntaxHighlighter.config.strings.copyToClipboard = Drupal.t('copy to clipboard');
+SyntaxHighlighter.config.strings.copyToClipboardConfirmation = Drupal.t('The code is in your clipboard now');
+SyntaxHighlighter.config.strings.print = Drupal.t('print');
+SyntaxHighlighter.config.strings.help = Drupal.t('?');
+
+SyntaxHighlighter.config.strings.alert = Drupal.t('SyntaxHighlighter\n\n');
+SyntaxHighlighter.config.strings.noBrush = Drupal.t('Can\'t find brush for: ');
+SyntaxHighlighter.config.strings.brushNotHtmlScript = Drupal.t('Brush wasn\'t made for html-script option: ');
+
+if (Drupal.settings.syntaxhighlighter.tagname != undefined) {
+  SyntaxHighlighter.config.tagName = Drupal.settings.syntaxhighlighter.tagname;
+}
+
+if (Drupal.settings.syntaxhighlighter.clipboard != undefined) {
+  SyntaxHighlighter.config.clipboardSwf = Drupal.settings.syntaxhighlighter.clipboard;
+}
+
+/**
+ * Core behavior for syntaxHighlighter.
+ *
+ */
+Drupal.behaviors.syntaxhighlighter = function(context) {
+  SyntaxHighlighter.highlight();
+  if (Drupal.settings.syntaxhighlighter.legacy_mode) {
+    dp.SyntaxHighlighter.HighlightAll('code');
+  }
+};
+
Index: syntaxhighlighter.module
===================================================================
--- syntaxhighlighter.module	(revision 998)
+++ syntaxhighlighter.module	(working copy)
@@ -68,44 +68,25 @@
       drupal_add_js($scripts_path . $lang, 'module');
     }
   }
+
+  // Performance: Defer execution.
+  drupal_add_js(drupal_get_path('module', 'syntaxhighlighter') .'/syntaxhighlighter.js', 'module', 'header', TRUE);
+  
   $tag_name = variable_get('syntaxhighlighter_tagname', 'pre');
   if ($tag_name !== 'pre') {
-    $code[] = "SyntaxHighlighter.config.tagName = '$tag_name';";
+    $settings['tagname'] = $tag_name;
   }
-
-  $code[] = 'SyntaxHighlighter.config.strings.expandSource = "'. t('+ expand source') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.viewSource = "'. t('view source') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.copyToClipboard = "'. t('copy to clipboard') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.copyToClipboardConfirmation = "'. t('The code is in your clipboard now') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.print = "'. t('print') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.help = "'. t('?') .'";';
-  // Reminder: don't change ' to " in t(), we want the \n char to show up in javascript!
-  $code[] = 'SyntaxHighlighter.config.strings.alert = "'. t('SyntaxHighlighter\n\n') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.noBrush = "'. t('Can\'t find brush for: ') .'";';
-  $code[] = 'SyntaxHighlighter.config.strings.brushNotHtmlScript = "'. t('Brush wasn\'t made for html-script option: ') .'";';
-
   if (file_exists($scripts_path .'clipboard.swf')) {
-    $code[] = "SyntaxHighlighter.config.clipboardSwf = '" .base_path(). "$scripts_path"."clipboard.swf';";
+    $settings['clipboard'] = base_path(). $scripts_path .'clipboard.swf';
   }
-
-  $code[] = variable_get('syntaxhighlighter_default_expressions', '');
-
-  $code[] = 'jQuery(function ($) {';
-  $code[] = '  SyntaxHighlighter.highlight();';
-
-  if (variable_get('syntaxhighlighter_legacy_mode', 0)) {
-    $code[] = "  dp.SyntaxHighlighter.HighlightAll('code');";
+  if ($setting = variable_get('syntaxhighlighter_legacy_mode', 0)) {
+    $settings['legacy_mode'] = TRUE;
   }
-
-  $code[] = '});';
-
-  // For AJAX DOM update
-  $code[] = "\n";
-  $code[] = 'Drupal.behaviors.syntaxhighlighter = function(context) {';
-  $code[] = '  SyntaxHighlighter.highlight();';
-  $code[] = '}';
-
-  drupal_add_js(join("\n", $code), 'inline');
+  drupal_add_js(array('syntaxhighlighter' => $settings), 'setting');
+  
+  if ($setting = variable_get('syntaxhighlighter_default_expressions', '')) {
+    drupal_add_js($setting, 'inline');
+  }
 }
 
 
