home *** CD-ROM | disk | FTP | other *** search
/ Ice Age Fan CD 1 / CD1_Scrat.iso / flash / data / game.swf / scripts / com / google / analytics / external / JavascriptProxy.as < prev   
Encoding:
Text File  |  2012-07-04  |  7.5 KB  |  235 lines

  1. package com.google.analytics.external
  2. {
  3.    import com.google.analytics.debug.DebugConfiguration;
  4.    import flash.external.ExternalInterface;
  5.    import flash.system.Capabilities;
  6.    
  7.    public class JavascriptProxy
  8.    {
  9.       public static var hasProperty_js:XML = <script>
  10.                 <![CDATA[
  11.                     function( path )
  12.                     {
  13.                         var paths;
  14.                         if( path.indexOf(".") > 0 )
  15.                         {
  16.                             paths = path.split(".");
  17.                         }
  18.                         else
  19.                         {
  20.                             paths = [path];
  21.                         }
  22.                         var target = window ;
  23.                         var len    = paths.length ;
  24.                         for( var i = 0 ; i < len ; i++ )
  25.                         {
  26.                             target = target[ paths[i] ] ;
  27.                         }
  28.                         if( target )
  29.                         {
  30.                             return true;
  31.                         }
  32.                         else
  33.                         {
  34.                             return false;
  35.                         }
  36.                     }
  37.                 ]]>
  38.             </script>;
  39.       
  40.       public static var setProperty_js:XML = <script>
  41.                 <![CDATA[
  42.                     function( path , value )
  43.                     {
  44.                         var paths;
  45.                         var prop;
  46.                         if( path.indexOf(".") > 0 )
  47.                         {
  48.                             paths = path.split(".");
  49.                             prop  = paths.pop() ;
  50.                         }
  51.                         else
  52.                         {
  53.                             paths = [];
  54.                             prop  = path;
  55.                         }
  56.                         var target = window ;
  57.                         var len    = paths.length ;
  58.                         for( var i = 0 ; i < len ; i++ )
  59.                         {
  60.                             target = target[ paths[i] ] ;
  61.                         }
  62.                         
  63.                         target[ prop ] = value ;
  64.                     }
  65.                 ]]>
  66.             </script>;
  67.       
  68.       public static var setPropertyRef_js:XML = <script>
  69.                 <![CDATA[
  70.                     function( path , target )
  71.                     {
  72.                         var paths;
  73.                         var prop;
  74.                         if( path.indexOf(".") > 0 )
  75.                         {
  76.                             paths = path.split(".");
  77.                             prop  = paths.pop() ;
  78.                         }
  79.                         else
  80.                         {
  81.                             paths = [];
  82.                             prop  = path;
  83.                         }
  84.                         alert( "paths:"+paths.length+", prop:"+prop );
  85.                         var targets;
  86.                         var name;
  87.                         if( target.indexOf(".") > 0 )
  88.                         {
  89.                             targets = target.split(".");
  90.                             name    = targets.pop();
  91.                         }
  92.                         else
  93.                         {
  94.                             targets = [];
  95.                             name    = target;
  96.                         }
  97.                         alert( "targets:"+targets.length+", name:"+name );
  98.                         var root = window;
  99.                         var len  = paths.length;
  100.                         for( var i = 0 ; i < len ; i++ )
  101.                         {
  102.                             root = root[ paths[i] ] ;
  103.                         }
  104.                         var ref   = window;
  105.                         var depth = targets.length;
  106.                         for( var j = 0 ; j < depth ; j++ )
  107.                         {
  108.                             ref = ref[ targets[j] ] ;
  109.                         }
  110.                         root[ prop ] = ref[name] ;
  111.                     }
  112.                 ]]>
  113.             </script>;
  114.       
  115.       private var _notAvailableWarning:Boolean = true;
  116.       
  117.       private var _debug:DebugConfiguration;
  118.       
  119.       public function JavascriptProxy(param1:DebugConfiguration)
  120.       {
  121.          super();
  122.          _debug = param1;
  123.       }
  124.       
  125.       public function getProperty(param1:String) : *
  126.       {
  127.          return call(param1 + ".valueOf");
  128.       }
  129.       
  130.       public function hasProperty(param1:String) : Boolean
  131.       {
  132.          return call(hasProperty_js,param1);
  133.       }
  134.       
  135.       public function setProperty(param1:String, param2:*) : void
  136.       {
  137.          call(setProperty_js,param1,param2);
  138.       }
  139.       
  140.       public function executeBlock(param1:String) : void
  141.       {
  142.          var data:String = param1;
  143.          if(isAvailable())
  144.          {
  145.             try
  146.             {
  147.                ExternalInterface.call(data);
  148.             }
  149.             catch(e:SecurityError)
  150.             {
  151.                if(_debug.javascript)
  152.                {
  153.                   _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
  154.                }
  155.             }
  156.             catch(e:Error)
  157.             {
  158.                if(_debug.javascript)
  159.                {
  160.                   _debug.warning("ExternalInterface failed to make the call\nreason: " + e.message);
  161.                }
  162.             }
  163.          }
  164.       }
  165.       
  166.       public function getPropertyString(param1:String) : String
  167.       {
  168.          return call(param1 + ".toString");
  169.       }
  170.       
  171.       public function setPropertyByReference(param1:String, param2:String) : void
  172.       {
  173.          call(setPropertyRef_js,param1,param2);
  174.       }
  175.       
  176.       public function call(param1:String, ... rest) : *
  177.       {
  178.          var output:String = null;
  179.          var functionName:String = param1;
  180.          var args:Array = rest;
  181.          if(isAvailable())
  182.          {
  183.             try
  184.             {
  185.                if(_debug.javascript && _debug.verbose)
  186.                {
  187.                   output = "";
  188.                   output = "Flash->JS: " + functionName;
  189.                   output += "( ";
  190.                   if(args.length > 0)
  191.                   {
  192.                      output += args.join(",");
  193.                   }
  194.                   output += " )";
  195.                   _debug.info(output);
  196.                }
  197.                args.unshift(functionName);
  198.                return ExternalInterface.call.apply(ExternalInterface,args);
  199.             }
  200.             catch(e:SecurityError)
  201.             {
  202.                if(_debug.javascript)
  203.                {
  204.                   _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
  205.                }
  206.             }
  207.             catch(e:Error)
  208.             {
  209.                if(_debug.javascript)
  210.                {
  211.                   _debug.warning("ExternalInterface failed to make the call\nreason: " + e.message);
  212.                }
  213.             }
  214.          }
  215.          return null;
  216.       }
  217.       
  218.       public function isAvailable() : Boolean
  219.       {
  220.          var _loc1_:Boolean = ExternalInterface.available;
  221.          if(_loc1_ && Capabilities.playerType == "External")
  222.          {
  223.             _loc1_ = false;
  224.          }
  225.          if(!_loc1_ && _debug.javascript && _notAvailableWarning)
  226.          {
  227.             _debug.warning("ExternalInterface is not available.");
  228.             _notAvailableWarning = false;
  229.          }
  230.          return _loc1_;
  231.       }
  232.    }
  233. }
  234.  
  235.