1	package com.yahoo.util
2	{
3		import flash.display.Stage;
4		import flash.external.ExternalInterface;
5
6		public class YUIBridge extends Object
7		{
8			private var _stage:Stage;
9			public var flashvars:Object;
10			private var _jsHandler:String;
11			private var _swfID:String;
12
13			public function YUIBridge(stage:Stage)
14			{
15				_stage = stage;
16				flashvars = _stage.loaderInfo.parameters;
17				if (flashvars["YUIBridgeCallback"] && flashvars["YUISwfId"] && ExternalInterface.available) {
18					_jsHandler = flashvars["YUIBridgeCallback"];
19					var jsCheck:RegExp = /^[A-Za-z0-9.]*$/g;
20					if (!jsCheck.test(_jsHandler)) {
21				 		_jsHandler = "";
22					}
23
24					_swfID = flashvars["YUISwfId"];
25					var idCheck:RegExp = /^yuiswf[0-9]*$/g;
26					if (!idCheck.test(_swfID)) {
27  						_swfID = "";
28					}
29				}
30			}
31
32			public function addCallbacks (callbacks:Object) : void {
33				if (ExternalInterface.available) {
34					for (var callback:String in callbacks) {
35	 					ExternalInterface.addCallback(callback, callbacks[callback]);
36	 					trace("Added callback for " + callbacks[callback] + " named " + callback);
37	 				}
38	 				sendEvent({type:"swfReady"});
39	 			}
40			}
41
42			public function sendEvent (evt:Object) : void {
43				if(ExternalInterface.available) {
44					trace("Sending event " + evt.type);
45					ExternalInterface.call("YAHOO.widget.SWF.eventHandler", _swfID, evt);
46				}
47
48			}
49		}
50	}