### Eclipse Workspace Patch 1.0
#P asset
Index: asset_bonus/asset_bonus.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/asset/asset_bonus/Attic/asset_bonus.module,v
retrieving revision 1.1.2.16
diff -u -r1.1.2.16 asset_bonus.module
--- asset_bonus/asset_bonus.module	16 Mar 2008 19:13:14 -0000	1.1.2.16
+++ asset_bonus/asset_bonus.module	16 Jun 2008 22:05:04 -0000
@@ -261,6 +261,7 @@
   $div_id = 'swfobject-'. $asset->aid;
   $addVariable = '';
   $addParam = '';
+  $func_name = 'asset_swfobject_'. $asset->aid;
   
   // build a list of addVariable statements for each flashVar
   foreach ((array)$options['vars'] as $k => $v) {
@@ -295,15 +296,39 @@
   // We're not using drupal_add_js(drupal_get_path('module','asset_bonus').'/swfobject/swfobject.js') because of caching issues
   $swfobject = base_path() . drupal_get_path('module', 'asset_bonus') .'/swfobject/swfobject.js';
   $output = <<<OUT
-  <script type="text/javascript" src="{$swfobject}"></script>
+  <script type="text/javascript">
+  var asset_scripts = document.getElementsByTagName("script");
+  var asset_swfswitch = false;
+  for (var i = 0; i < asset_scripts.length; i++) {
+    if (asset_scripts[i].src == "$swfobject") {
+      asset_swfswitch = true;
+    }
+  }
+  if (asset_swfswitch == false) {
+    var newjs=document.createElement('script');
+    newjs.type='text/javascript';
+    newjs.src='$swfobject';
+    document.getElementsByTagName('head')[0].appendChild(newjs);
+  }
+  var swfobject_loaded_$func_name = false;
+  function $func_name() {
+    swfobject_loaded_$func_name = ((typeof SWFObject) == "undefined") ? false : true;
+    if (swfobject_loaded_$func_name) {
+      var oSwf = new SWFObject("{$asset->url}","$embed_id","{$options['width']}","{$options['height']}","{$options['version']}","{$options['bgcolor']}");
+      $addVariable
+      $addParam
+      oSwf.write("$div_id");
+      oSwf = null;
+    }
+    else {
+      setTimeout("$func_name()", 10);
+    }
+  }
+  </script>
   <div id="$div_id" class="asset-swfobject">Video placeholder</div>
   <script type="text/javascript" defer="defer">
-    var oSwf = new SWFObject("{$asset->url}","$embed_id","{$options['width']}","{$options['height']}","{$options['version']}","{$options['bgcolor']}");
-    $addVariable
-    $addParam
-    oSwf.write("$div_id");
-    oSwf = null;
-  </script>      
+  $func_name();
+  </script>  
 OUT;
   return $output;
 }
@@ -330,6 +355,7 @@
   $audobject = base_path() . drupal_get_path('module','asset_bonus') . '/audioplayer/audio-player.js';
   $swffile   = base_path() . drupal_get_path('module','asset_bonus') . '/audioplayer/player.swf';
   $colors = asset_bonus_mp3player_colors();
+  $func_name = 'asset_swfobject_'. $asset->aid;
   foreach($colors as $key => $color_data){
     $color = variable_get('asset_bonus_mp3player_'.$key,$color_data['default']);
     if($color){
@@ -338,18 +364,50 @@
     }
   }
   $output = <<<OUT
-  <script type="text/javascript" src="{$swfobject}"></script>
-  <script type="text/javascript" src="{$audobject}"></script>
+  <script type="text/javascript">
+  var asset_scripts = document.getElementsByTagName("script");
+  var asset_swfswitch = false;
+  var asset_playerswitch = false;
+  for (var i = 0; i < asset_scripts.length; i++) {
+    if (asset_scripts[i].src == "$swfobject") {
+      asset_swfswitch = true;
+    }
+    else if (asset_scripts[i].src == "$audobject") {
+      asset_playerswitch = true;
+    }
+  }
+  if (asset_swfswitch == false) {
+    var newjs=document.createElement('script');
+    newjs.type='text/javascript';
+    newjs.src='$swfobject';
+    document.getElementsByTagName('head')[0].appendChild(newjs);
+  }
+  if (asset_playerswitch == false) {
+    var newjs=document.createElement('script');
+    newjs.type='text/javascript';
+    newjs.src='$audobject';
+    document.getElementsByTagName('head')[0].appendChild(newjs);
+  }
+  function $func_name() {
+    swfobject_loaded_$func_name = ((typeof SWFObject) == "undefined") ? false : true;
+    if (swfobject_loaded_$func_name) {
+      var oSwf = new SWFObject("$swffile","mp3player-object-{$asset->aid}","290","24","7","#FFFFFF");    
+      oSwf.addVariable('playerID','{$asset->aid}');
+      oSwf.addVariable('soundFile','{$asset->url}');
+      $colorvars
+      oSwf.addParam('wmode','transparent');
+      oSwf.addParam('menu','false');
+      oSwf.write("mp3player-{$asset->aid}");
+      oSwf = null;
+    }
+    else {
+      setTimeout("$func_name()", 10);
+    }
+  }
+  </script>
   <div id="mp3player-{$asset->aid}" class="asset-swfobject">Audio placeholder</div>
   <script type="text/javascript" defer="defer">
-    var oSwf = new SWFObject("$swffile","mp3player-object-{$asset->aid}","290","24","7","#FFFFFF");    
-    oSwf.addVariable('playerID','{$asset->aid}');
-    oSwf.addVariable('soundFile','{$asset->url}');
-    $colorvars
-    oSwf.addParam('wmode','transparent');
-    oSwf.addParam('menu','false');
-    oSwf.write("mp3player-{$asset->aid}");
-    oSwf = null;
+    $func_name();
   </script>      
 OUT;
   return $output;
