BrowserHistory.as

Go to the documentation of this file.
00001 import flash.external.ExternalInterface;
00002 
00003 import gugga.events.EventDispatcher;
00004 
00005 [Event("changed")]
00006 class gugga.browser.BrowserHistory extends EventDispatcher
00007 {
00008         private static var mInstance : BrowserHistory = null;
00009         public static function get Instance() : BrowserHistory
00010         {
00011                 if(mInstance == null)
00012                 {
00013                         mInstance = new BrowserHistory();
00014                 }
00015                 return mInstance;
00016         }
00017         
00018         private function BrowserHistory()
00019         {
00020                 super();
00021                 
00022                 ExternalInterface.addCallback("changeHistory", this, this.changeHistory);       
00023         }
00024         
00025         public static function get available() : Boolean
00026         {
00027                 return ExternalInterface.available;
00028         }
00029         
00030         public function addHistory(aRecord : Object) : Void
00031         {
00032                 ExternalInterface.call("addHistory", formatHisoryRecord(aRecord));
00033         }
00034         
00035         private function changeHistory(aRecord : String) : Void
00036         {
00037                 dispatchEvent({type : "changed", target : this, record : parseHistoryRecord(aRecord)});
00038         }
00039         
00040         private function formatHisoryRecord(aRecordObject : Object) : String
00041         {
00042                 var result : String = "";
00043                 for (var key : String in aRecordObject)
00044                 {
00045                         if(result != "")
00046                         {
00047                                 result += "&";
00048                         }
00049                         result += (key + "=" + aRecordObject[key]);
00050                 }
00051                 return result;  
00052         }
00053         
00054         private function parseHistoryRecord(aRecord : String) : Object
00055         {
00056                 var result : Object = new Object();
00057                 var pairs : Array = aRecord.split("&");
00058                 for (var i : Number = 0; i < pairs.length; i++)
00059                 {
00060                         var pair : Array = pairs[i].split("=");
00061                         result[unescape(pair[0])] = unescape(pair[1]);
00062                 }
00063                 return result;
00064         }
00065 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2