--- google_website_optimizer-old.module	2009-04-25 18:00:27.000000000 -0400
+++ google_website_optimizer.module	2009-07-29 15:58:02.000000000 -0400
@@ -20,10 +20,20 @@ function google_website_optimizer_menu($
       'access' => user_access('administer google_website_optimizer'),
     );
   }
+  else {
+    google_website_optimizer_add_js('header');
+  }
   return $items;
 }
 
 /**
+ * Implementation of hook_footer().
+ */
+function google_website_optimizer_footer($main = 0) {
+  return google_website_optimizer_add_js('footer');
+}
+
+/**
  * Implementation of hook_help().
  */
 function google_website_optimizer_help($section) {
@@ -82,6 +92,7 @@ function google_website_optimizer_admin(
       if (google_website_optimizer_test_validate($edit)) {
         google_website_optimizer_test_save($edit);
         $edit['old_name'] ? drupal_set_message(t('Your Google Website Optimizer test has been updated.')) : drupal_set_message(t('Your Google Website Optimizer test has been created.'));
+        if (module_exists('devel')) drupal_set_message(t('You should probably ') . l('clear your cache now', 'devel/cache/clear', array(), 'destination=admin/settings/google_website_optimizer'));
         drupal_goto('admin/settings/google_website_optimizer');
       }
       else {
@@ -128,6 +139,13 @@ function google_website_optimizer_test_f
     '#description' => t('Enter a name for this test. This should correspond to the name of your test in Google Website Optimizer to make it easy to identify.'),
     '#required' => TRUE
   );
+  
+  $form['control_page_path'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Control Page'),
+    '#description' => t('The control page for an A/B expirment. Leave blank for a multivariate test.'),
+    '#default_value' => $edit->control_page_path,
+  );
 
   $form['testing_page'] = array(
     '#type' => 'fieldset',
@@ -201,8 +219,6 @@ function google_website_optimizer_test_f
  */
 function google_website_optimizer_test_load($tid = '') {
   static $tests = array();
-  require_once './includes/path.inc';
-  require_once './includes/common.inc';
 
   if (!$tests) {
     $result = db_query('SELECT * FROM {google_website_optimizer_tests}');
@@ -241,10 +257,10 @@ function google_website_optimizer_test_o
  */
 function google_website_optimizer_test_save($edit) {
   if ($edit['tid']) { //It's an existing test
-    db_query("UPDATE {google_website_optimizer_tests} SET name = '%s', test_page_path = '%s', conversion_page_path = '%s', control_script = '%s', tracking_script = '%s', conversion_script = '%s' WHERE tid = '%d'", $edit['name'], $edit['test_page_path'], $edit['conversion_page_path'], $edit['control_script'], $edit['tracking_script'], $edit['conversion_script'], $edit['tid']);
+    db_query("UPDATE {google_website_optimizer_tests} SET name = '%s', control_page_path = '%s', test_page_path = '%s', conversion_page_path = '%s', control_script = '%s', tracking_script = '%s', conversion_script = '%s' WHERE tid = '%d'", $edit['name'], $edit['control_page_path'], $edit['test_page_path'], $edit['conversion_page_path'], $edit['control_script'], $edit['tracking_script'], $edit['conversion_script'], $edit['tid']);
   } 
   else { //It's a new test
-    db_query("INSERT INTO {google_website_optimizer_tests} (tid, name, test_page_path, conversion_page_path, control_script, tracking_script, conversion_script) VALUES ('%d', '%s', '%s', '%s', '%s', '%s', '%s')", db_next_id('{google_website_optimizer_tests}_tid'), $edit['name'], $edit['test_page_path'], $edit['conversion_page_path'], $edit['control_script'], $edit['tracking_script'], $edit['conversion_script']);
+    db_query("INSERT INTO {google_website_optimizer_tests} (tid, name, control_page_path, test_page_path, conversion_page_path, control_script, tracking_script, conversion_script) VALUES ('%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", db_next_id('{google_website_optimizer_tests}_tid'), $edit['name'], $edit['control_page_path'], $edit['test_page_path'], $edit['conversion_page_path'], $edit['control_script'], $edit['tracking_script'], $edit['conversion_script']);
   }
 }
 
@@ -289,33 +305,29 @@ function google_website_optimizer_test_v
  * Implementation of hook_init() to insert Javascript on the page
  * I don't know if this is the hook to use
  */
-function google_website_optimizer_init() {
+function google_website_optimizer_add_js($location) {
+  
+  $footer = '';
   $tests = google_website_optimizer_test_load();
+  
   foreach ($tests as $test) {
+    $control_page = _google_website_optimizer_page_match($test->control_page_path);
     $testing_page = _google_website_optimizer_page_match($test->test_page_path);
     $conversion_page = _google_website_optimizer_page_match($test->conversion_page_path);
+    if ($control_page) {
+      if ($location == 'header') drupal_set_html_head($test->control_script);
+      else $footer .= $test->tracking_script;
+    }
     if ($testing_page) {
-      // The additional <script> tags are used because drupal_add_js automatically adds script tags
-      // This is a crude solution until I work out how to do it more elegantly
-      drupal_add_js('
-        /* Start Google Website Optimizer Control Script code */
-        </script>'. $test->control_script .'<script type="text/javascript">
-        /* End Google Website Optimizer Control Script code */
-        ', 'inline', 'header', FALSE);
-      drupal_add_js('
-        /* Start Google Website Optimizer Tracking Script code */
-        </script>'. $test->tracking_script .'<script type="text/javascript">
-        /* End Google Website Optimizer Tracking Script code */
-        ', 'inline', 'footer', FALSE);
+      if ($location == 'header' && !$test->control_page_path) drupal_set_html_head($test->control_script);
+      else $footer .= $test->tracking_script;
     }
-    if ($conversion_page) {
-      drupal_add_js('
-        /* Start Google Website Optimizer Conversion Script code */
-        </script>'. $test->conversion_script .'<script type="text/javascript">
-        /* End Google Website Optimizer Conversion Script code */
-        ', 'inline', 'footer', FALSE);
+    if ($conversion_page && $location == 'footer') {
+      $footer .= $test->conversion_script;
     }
   }
+  
+  return $footer;
 }
 
 
