home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / mx / managers / BrowserManagerImpl.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  7.3 KB  |  245 lines

  1. package mx.managers
  2. {
  3.    import flash.display.Stage;
  4.    import flash.events.Event;
  5.    import flash.events.EventDispatcher;
  6.    import flash.external.ExternalInterface;
  7.    import flash.net.URLRequest;
  8.    import flash.net.navigateToURL;
  9.    import mx.core.ApplicationGlobals;
  10.    import mx.core.mx_internal;
  11.    import mx.events.BrowserChangeEvent;
  12.    
  13.    use namespace mx_internal;
  14.    
  15.    public class BrowserManagerImpl extends EventDispatcher implements IBrowserManager
  16.    {
  17.       private static var instance:IBrowserManager;
  18.       
  19.       mx_internal static const VERSION:String = "3.5.0.12683";
  20.       
  21.       private var _title:String;
  22.       
  23.       private var _isFirefoxMac:Boolean;
  24.       
  25.       private var browserMode:Boolean = true;
  26.       
  27.       private var _fragment:String;
  28.       
  29.       private var _base:String;
  30.       
  31.       private var _browserUserAgent:String;
  32.       
  33.       private var _url:String;
  34.       
  35.       private var _defaultFragment:String = "";
  36.       
  37.       private var _browserPlatform:String;
  38.       
  39.       public function BrowserManagerImpl()
  40.       {
  41.          var systemManager:Object;
  42.          var sandboxRoot:Object = null;
  43.          var parent:Object = null;
  44.          super();
  45.          systemManager = SystemManagerGlobals.topLevelSystemManagers;
  46.          if(systemManager)
  47.          {
  48.             systemManager = systemManager[0];
  49.          }
  50.          if(systemManager)
  51.          {
  52.             sandboxRoot = systemManager.getSandboxRoot();
  53.             if(!sandboxRoot.dispatchEvent(new Event("mx.managers::BrowserManager",false,true)))
  54.             {
  55.                browserMode = false;
  56.                return;
  57.             }
  58.             try
  59.             {
  60.                parent = sandboxRoot.parent;
  61.                while(parent)
  62.                {
  63.                   if(sandboxRoot.parent is Stage)
  64.                   {
  65.                      break;
  66.                   }
  67.                   parent = parent.parent;
  68.                }
  69.             }
  70.             catch(e:Error)
  71.             {
  72.                browserMode = false;
  73.                return;
  74.             }
  75.             sandboxRoot.addEventListener("mx.managers::BrowserManager",sandboxBrowserManagerHandler,false,0,true);
  76.          }
  77.          try
  78.          {
  79.             ExternalInterface.addCallback("browserURLChange",browserURLChangeBrowser);
  80.             ExternalInterface.addCallback("debugTrace",debugTrace);
  81.          }
  82.          catch(e:Error)
  83.          {
  84.             browserMode = false;
  85.          }
  86.       }
  87.       
  88.       public static function getInstance() : IBrowserManager
  89.       {
  90.          if(!instance)
  91.          {
  92.             instance = new BrowserManagerImpl();
  93.          }
  94.          return instance;
  95.       }
  96.       
  97.       public function initForHistoryManager() : void
  98.       {
  99.          setup("","");
  100.       }
  101.       
  102.       private function setup(param1:String, param2:String) : void
  103.       {
  104.          if(!browserMode)
  105.          {
  106.             return;
  107.          }
  108.          _defaultFragment = param1;
  109.          _url = ExternalInterface.call("BrowserHistory.getURL");
  110.          if(!_url)
  111.          {
  112.             browserMode = false;
  113.             return;
  114.          }
  115.          _browserUserAgent = ExternalInterface.call("BrowserHistory.getUserAgent");
  116.          _browserPlatform = ExternalInterface.call("BrowserHistory.getPlatform");
  117.          _isFirefoxMac = _browserUserAgent && _browserPlatform && _browserUserAgent.indexOf("Firefox") > -1 && _browserPlatform.indexOf("Mac") > -1;
  118.          var _loc3_:int = int(_url.indexOf("#"));
  119.          if(_loc3_ == -1 || _loc3_ == _url.length - 1)
  120.          {
  121.             _base = _url;
  122.             _fragment = "";
  123.             _title = param2;
  124.             ExternalInterface.call("BrowserHistory.setDefaultURL",param1);
  125.             setTitle(param2);
  126.          }
  127.          else
  128.          {
  129.             _base = _url.substring(0,_loc3_);
  130.             _fragment = _url.substring(_loc3_ + 1);
  131.             _title = ExternalInterface.call("BrowserHistory.getTitle");
  132.             ExternalInterface.call("BrowserHistory.setDefaultURL",_fragment);
  133.             if(_fragment != _defaultFragment)
  134.             {
  135.                browserURLChange(_fragment,true);
  136.             }
  137.          }
  138.       }
  139.       
  140.       private function browserURLChange(param1:String, param2:Boolean = false) : void
  141.       {
  142.          var _loc3_:String = null;
  143.          if(param1 != null && decodeURI(_fragment) != decodeURI(param1) || param2)
  144.          {
  145.             _fragment = param1;
  146.             _loc3_ = url;
  147.             _url = _base + "#" + param1;
  148.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.BROWSER_URL_CHANGE,false,false,url,_loc3_));
  149.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.URL_CHANGE,false,false,url,_loc3_));
  150.          }
  151.       }
  152.       
  153.       [Bindable("urlChange")]
  154.       public function get base() : String
  155.       {
  156.          return _base;
  157.       }
  158.       
  159.       public function setFragment(param1:String) : void
  160.       {
  161.          var _loc4_:URLRequest = null;
  162.          if(!browserMode)
  163.          {
  164.             return;
  165.          }
  166.          var _loc2_:String = _url;
  167.          var _loc3_:String = _fragment;
  168.          _url = base + "#" + param1;
  169.          _fragment = param1;
  170.          if(dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.APPLICATION_URL_CHANGE,false,true,_url,_loc2_)))
  171.          {
  172.             if(!_isFirefoxMac)
  173.             {
  174.                ExternalInterface.call("BrowserHistory.setBrowserURL",param1,ExternalInterface.objectID);
  175.             }
  176.             else
  177.             {
  178.                _loc4_ = new URLRequest("javascript:BrowserHistory.setBrowserURL(\'" + param1 + "\',\'" + ExternalInterface.objectID + "\');");
  179.                navigateToURL(_loc4_,"_self");
  180.             }
  181.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.URL_CHANGE,false,false,_url,_loc2_));
  182.          }
  183.          else
  184.          {
  185.             _fragment = _loc3_;
  186.             _url = _loc2_;
  187.          }
  188.       }
  189.       
  190.       private function debugTrace(param1:String) : void
  191.       {
  192.          trace(param1);
  193.       }
  194.       
  195.       [Bindable("urlChange")]
  196.       public function get fragment() : String
  197.       {
  198.          if(Boolean(_fragment) && Boolean(_fragment.length))
  199.          {
  200.             return _fragment;
  201.          }
  202.          return _defaultFragment;
  203.       }
  204.       
  205.       [Bindable("urlChange")]
  206.       public function get title() : String
  207.       {
  208.          return _title;
  209.       }
  210.       
  211.       public function setTitle(param1:String) : void
  212.       {
  213.          if(!browserMode)
  214.          {
  215.             return;
  216.          }
  217.          ExternalInterface.call("BrowserHistory.setTitle",param1);
  218.          _title = ExternalInterface.call("BrowserHistory.getTitle");
  219.       }
  220.       
  221.       public function init(param1:String = "", param2:String = "") : void
  222.       {
  223.          ApplicationGlobals.application.historyManagementEnabled = false;
  224.          setup(param1,param2);
  225.       }
  226.       
  227.       private function sandboxBrowserManagerHandler(param1:Event) : void
  228.       {
  229.          param1.preventDefault();
  230.       }
  231.       
  232.       private function browserURLChangeBrowser(param1:String) : void
  233.       {
  234.          browserURLChange(param1,false);
  235.       }
  236.       
  237.       [Bindable("urlChange")]
  238.       public function get url() : String
  239.       {
  240.          return _url;
  241.       }
  242.    }
  243. }
  244.  
  245.