<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>javascripts/jquery-1.2.6.pack.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -23,8 +23,7 @@
       &lt;select id=&quot;font-family&quot;&gt;
         &lt;option value=&quot;---&quot;&gt;---&lt;/option&gt;        
       &lt;/select&gt;
-      &lt;input id=&quot;font-family-list&quot; type=&quot;submit&quot; value=&quot;Load font list&quot; /&gt;      
-      &lt;span id=&quot;font-detect-swf&quot;&gt;&lt;/span&gt;
+      &lt;input id=&quot;font-family-list&quot; type=&quot;submit&quot; value=&quot;Load font list&quot; /&gt;            
       &lt;p id=&quot;status&quot;&gt;&amp;nbsp;&lt;/p&gt;
     &lt;/form&gt;
 
@@ -35,6 +34,7 @@
       &lt;input id=&quot;text-load-all&quot; type=&quot;submit&quot; value=&quot;Add all fonts&quot; /&gt;      
     &lt;/form&gt;    
     
+    &lt;div style=&quot;display:none&quot; id=&quot;font-detect-swf&quot;&gt;&lt;/div&gt;
     &lt;br class=&quot;clear&quot; /&gt;
   &lt;/div&gt;
   
@@ -42,44 +42,45 @@
     
   &lt;/div&gt;
 
-  &lt;script src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;javascripts/jquery-1.2.6.pack.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;javascripts/swfobject.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;javascripts/font-detect.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;javascripts/font-detect-edit.js&quot;&gt;&lt;/script&gt;
   &lt;script&gt;
-    google.load(&quot;jquery&quot;, &quot;1&quot;);
-    google.setOnLoadCallback(function() { 
+    $(document).ready(function() {
+      
+      var editFontDetect = newEditFontDetect();
       
       $(&quot;#font-text-set&quot;).bind(&quot;submit&quot;, function(e) { 
-        fontDetectEdit.updateText($(&quot;#font-text&quot;).val(), $(&quot;#font-size&quot;).val()); 
+        newEditFontDetect().updateText($(&quot;#font-text&quot;).val(), $(&quot;#font-size&quot;).val()); 
         return false;
       });
       
       $(&quot;#font-family-list&quot;).click(function(e) {
         $(&quot;#status&quot;).html(&quot;Loading SWF...&quot;);
-        var fontDetect = newFontDetect(&quot;font-detect-swf&quot;);
-        fontDetect.loadSWF();
-        var fonts = fontDetect.fonts();
-                
-        var editFontDetect = newEditFontDetect();
-        editFontDetect.setFonts(fonts);
-        editFontDetect.updateSelect(fonts);
+        
+        var fontDetect = newFontDetect(&quot;font-detect-swf&quot;, &quot;flash/FontList.swf&quot;, function() {        
+          var fonts = fontDetect.fonts();
+
+          editFontDetect.setFonts(fonts);
+          editFontDetect.updateSelect(fonts);
+        });
         return false;
-      });
-      
+      });      
+            
       $(&quot;#text-clear&quot;).click(function(e) {
-        fontDetectEdit.clearText(); 
+        editFontDetect.clearText(); 
         return false;
       });
       
       $(&quot;#text-add&quot;).click(function(e) {
-        fontDetectEdit.addText($('#font-text').val(), $('#font-size').val(), $('#font-family').val(), false); 
+        editFontDetect.addText($('#font-text').val(), $('#font-size').val(), $('#font-family').val(), false); 
         return false;
       });
       
       $(&quot;#text-load-all&quot;).click(function(e) {
-        fontDetectEdit.clearText(); 
-        fontDetectEdit.addAll($('#font-text').val(), $('#font-size').val()); 
+        editFontDetect.clearText(); 
+        editFontDetect.addAll($('#font-text').val(), $('#font-size').val()); 
         return false;
       });
       </diff>
      <filename>edit.html</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>flash/FontList.swf</filename>
    </modified>
    <modified>
      <diff>@@ -7,29 +7,25 @@ package {
   
   public class FontList extends Sprite {
     
-    public function FontList() {      
-      ExternalInterface.marshallExceptions = true;
-      ExternalInterface.addCallback(&quot;fontsAsJSON&quot;, fontsAsJSON);
-      ExternalInterface.addCallback(&quot;fontsWithCallback&quot;, fontsWithCallback);
+    public function FontList() {   
+      var params:Object = loadParams();
+      loadExternalInterface(params);
     }    
     
-    // Use corelib JSON encoding for something generic
-    private function fontsToJSON(fonts:Array):String {
-      var items:Array = fonts.map(function(font:*, index:int, arr:Array):String {
-        return &quot;{ fontName:'&quot; + font.fontName + &quot;', fontStyle:'&quot; + font.fontStyle + &quot;', fontType:'&quot; + font.fontType + &quot;'}&quot;;
-      });
-      return &quot;[&quot; + items.join(&quot;,&quot;) + &quot;]&quot;
+    private function loadParams():Object {
+      return LoaderInfo(this.root.loaderInfo).parameters;
     }
     
-    public function fontsAsJSON():String {
-      return fontsToJSON(Font.enumerateFonts(true).sortOn(&quot;fontName&quot;, Array.CASEINSENSITIVE));            
+    private function loadExternalInterface(params:Object):void {
+      ExternalInterface.marshallExceptions = true;
+      ExternalInterface.addCallback(&quot;fonts&quot;, fonts);      
+      ExternalInterface.call(params.onReady, params.swfObjectId);
     }
     
-    public function fontsWithCallback(callback:String):void {
-      if (ExternalInterface.available)  
-        ExternalInterface.call(callback, fontsAsJSON());
+    public function fonts():Array {
+      return Font.enumerateFonts(true).sortOn(&quot;fontName&quot;, Array.CASEINSENSITIVE);
     }
-    
+        
   }
   
 }
\ No newline at end of file</diff>
      <filename>flash/src/FontList.as</filename>
    </modified>
    <modified>
      <diff>@@ -15,12 +15,11 @@
 
   &lt;div id=&quot;font-detect-swf&quot;&gt;&lt;/div&gt;
   
-  &lt;script src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;javascripts/jquery-1.2.6.pack.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;javascripts/swfobject.js&quot;&gt;&lt;/script&gt;
   &lt;script src=&quot;javascripts/font-detect.js&quot;&gt;&lt;/script&gt;  
   &lt;script&gt;
-    google.load(&quot;jquery&quot;, &quot;1&quot;);
-    google.setOnLoadCallback(function() { 
+    $(document).ready(function() {
       
       // Check Flash version
       if (!swfobject.hasFlashPlayerVersion(&quot;9.0.0&quot;))
@@ -28,28 +27,29 @@
       else
         $(&quot;#status span&quot;).html(&quot;Loading... (this may beach ball your browser for ~10 seconds)&quot;)
       
-      FontDetect.loadSWF(&quot;font-detect-swf&quot;);
-      
-      
-        $(&quot;#status span&quot;).html(&quot;Loaded &quot; + fonts.length + &quot; fonts&quot;);
+        var fontDetect = newFontDetect(&quot;font-detect-swf&quot;, &quot;flash/FontList.swf&quot;, function() {        
+          var fonts = fontDetect.fonts();
+            
+          $(&quot;#status span&quot;).html(&quot;Loaded &quot; + fonts.length + &quot; fonts&quot;);
         
-        var text = &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&quot;;
-        var size = &quot;32px&quot;;
+          var text = &quot;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.&quot;;
+          var size = &quot;32px&quot;;
         
-        for(var i = 0; i &lt; fonts.length; i++) {
-          var node = document.createElement(&quot;p&quot;);        
-          $(node).css(&quot;font-family&quot;, &quot;'&quot; + fonts[i].fontName + &quot;'&quot;);
-          $(node).css(&quot;font-size&quot;, size);
-          $(node).addClass(&quot;sample-text&quot;);
-          $(node).html(text);
-          $(&quot;#content&quot;).append(node);
+          for(var i = 0; i &lt; fonts.length; i++) {
+            var node = document.createElement(&quot;p&quot;);        
+            $(node).css(&quot;font-family&quot;, &quot;'&quot; + fonts[i].fontName + &quot;'&quot;);
+            $(node).css(&quot;font-size&quot;, size);
+            $(node).addClass(&quot;sample-text&quot;);
+            $(node).html(text);
+            $(&quot;#content&quot;).append(node);
 
-          var nameNode = document.createElement(&quot;p&quot;);
-          $(nameNode).addClass(&quot;sample-text-name&quot;);
-          $(nameNode).html(&quot;[&quot; + fonts[i].fontName + &quot;]&quot;);
-          $(&quot;#content&quot;).append(nameNode);
-        }
+            var nameNode = document.createElement(&quot;p&quot;);
+            $(nameNode).addClass(&quot;sample-text-name&quot;);
+            $(nameNode).html(&quot;[&quot; + fonts[i].fontName + &quot;]&quot;);
+            $(&quot;#content&quot;).append(nameNode);
+          }
       });
+      
     });    
     
   &lt;/script&gt;</diff>
      <filename>index.html</filename>
    </modified>
    <modified>
      <diff>@@ -3,29 +3,44 @@
  *
  * @author Gabriel Handford
  * @website http://rel.me
+ * 
+ * @see http://www.lalit.org/lab/javascript-css-font-detect
  */
 
-var newFontDetect = function(swfId) {
+// Callback for Flash
+var onFontDetectReady = function(swfObjectId) {
+  var swfObj = document.getElementById(swfObjectId);
+  swfObj.onFontDetectReady();
+  swfObj.onFontDetectReady = null;
+};
+
+var newFontDetect = function(swfId, swfLocation, onReady) {
   
   var _swfId = swfId;
-  var _swfObjectId = swfId + &quot;-object&quot;;
+  var _swfObjectId = swfId;
   var _fallbackWidthCache = null;
     
-  // Load SWF
   var _loadSWF = function() {
-    var flashvars = { };
+    var flashvars = { onReady: &quot;onFontDetectReady&quot;, swfObjectId: _swfObjectId };
     var params = { allowScriptAccess: &quot;always&quot;, menu: &quot;false&quot; };
-    var attributes = { id: _swfObjectId };
-    console.log(&quot;Load swf: &quot; +  _swfId);
-    swfobject.embedSWF(&quot;flash/FontList.swf&quot;, _swfId, &quot;1&quot;, &quot;1&quot;, &quot;9.0.0&quot;, false, flashvars, params, attributes);  
+    var attributes = { id: _swfObjectId, name: _swfObjectId };
+    swfobject.embedSWF(swfLocation, _swfId, &quot;1&quot;, &quot;1&quot;, &quot;9.0.0&quot;, false, flashvars, params, attributes);
+    
+    // Attach onReady to element
+    document.getElementById(_swfObjectId).onFontDetectReady = onReady;
   };
   
+  // Init
+  _loadSWF();
+  
   var _checkOffsetWidth = function(family, size) {
     var node = document.createElement(&quot;p&quot;);        
     $(node).css(&quot;font-family&quot;, &quot;'&quot; + family + &quot;', Times New Roman&quot;);    
     $(node).css(&quot;font-size&quot;, size);
     $(node).css(&quot;display&quot;, &quot;inline&quot;);
     $(node).addClass(&quot;font-test&quot;)
+    
+    // This was from http://www.lalit.org/lab/javascript-css-font-detect
     $(node).html(&quot;mmmmmmmmml&quot;); // m or w take up max width
     $(&quot;body&quot;).append(node);
     var width = node.offsetWidth;
@@ -66,19 +81,12 @@ var newFontDetect = function(swfId) {
     },
     
     fonts: function() {
-      //_loadSWF();
-      
       // Use when doing static publishing
       //var swf = swfobject.getObjectById(_swfObjectId);
       
       // Works with dynamic publishing
-      var swf = document.getElementById(_swfObjectId);
-      
-      console.log(&quot;Calling actionscript with swfObjectId: &quot; + _swfObjectId + &quot;, method: &quot; + swf.fontsAsJSON);
-      var fontsJSON = swf.fontsAsJSON();     
-      console.log(&quot;Got fonts: &quot; + fontsJSON);     
-      var fonts = eval(fontsJSON);
-      console.log(&quot;Evaled fonts: &quot; + fonts);
+      var swfObj = document.getElementById(_swfObjectId);
+      var fonts = swfObj.fonts();
       return _filterFonts(fonts);
     }
   }</diff>
      <filename>javascripts/font-detect.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>169a98a6410269c734e25163144729fff2eb7bcf</id>
    </parent>
  </parents>
  <author>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </author>
  <url>http://github.com/gabriel/font-detect-js/commit/561deeb249903369690d4d10da7aa8e569e3a1e6</url>
  <id>561deeb249903369690d4d10da7aa8e569e3a1e6</id>
  <committed-date>2008-07-25T20:12:22-07:00</committed-date>
  <authored-date>2008-07-25T20:12:22-07:00</authored-date>
  <message>updating to use javascript -&gt; flash direct and not through callbacks</message>
  <tree>054c8a02170c47401f24b4db858562b7de74a236</tree>
  <committer>
    <name>Gabriel Handford</name>
    <email>gabrielh@gmail.com</email>
  </committer>
</commit>
