//class ExternalInterface
package flash.external
{
import flash.system.*;
import flash.utils.*;
public final class ExternalInterface extends Object
{
public function ExternalInterface()
{
super();
return;
}
public static function get available():Boolean
{
}
public static function addCallback(arg1:String, arg2:Function):void
{
var functionName:String;
var closure:Function;
var hasNullCallback:Boolean;
var wrapperClosure:Function;
var loc1:*;
hasNullCallback = false;
wrapperClosure = null;
functionName = arg1;
closure = arg2;
if (available)
{
_initJS();
hasNullCallback = closure == null;
wrapperClosure = function (arg1:String, arg2:Array):String
{
return _callIn(closure, arg1, arg2);
}
_addCallback(functionName, wrapperClosure, hasNullCallback);
if (activeX == true && !(objectID == null))
{
_evalJS("__flash__addCallback(document.getElementById(\"" + objectID + "\"), \"" + functionName + "\");");
}
}
else
{
Error.throwError(Error, 2067);
}
return;
}
public static function call(arg1:String, ... rest):*
{
var loc1:*=null;
var loc2:*=null;
var loc3:*=false;
var loc4:*=0;
var loc5:*=null;
var loc6:*=null;
var loc7:*=false;
var loc8:*=null;
if (available)
{
loc1 = "";
_initJS();
loc1 = loc1 + "try { ";
loc2 = objectID;
loc3 = activeX;
if (loc3 == true && !(loc2 == null))
{
loc1 = loc1 + ("document.getElementById(\"" + loc2 + "\").SetReturnValue(");
}
loc1 = loc1 + ("__flash__toXML(" + arg1 + "(");
loc4 = 0;
while (loc4 < rest.length)
{
if (loc4 != 0)
{
loc1 = loc1 + ",";
}
loc1 = loc1 + _toJS(rest[loc4]);
++loc4;
}
loc1 = loc1 + ")) ";
if (loc3 == true && !(loc2 == null))
{
loc1 = loc1 + ")";
}
loc1 = loc1 + "; } catch (e) { ";
if (loc3 == true && !(loc2 == null))
{
if (marshallExceptions)
{
loc1 = loc1 + ("document.getElementById(\"" + loc2 + "\").SetReturnValue(\"\" + e + \"\");");
}
else
{
loc1 = loc1 + ("document.getElementById(\"" + loc2 + "\").SetReturnValue(\"\");");
}
}
else if (marshallExceptions)
{
loc1 = loc1 + "\"\" + e + \"\";";
}
else
{
loc1 = loc1 + "\"\";";
}
loc1 = loc1 + " }";
loc5 = _evalJS(loc1);
if (loc5 == null)
{
loc6 = "" + _argumentsToXML(rest) + "";
loc5 = _callOut(loc6);
}
if (loc5 == null)
{
return null;
}
loc7 = XML.ignoreWhitespace;
if (Capabilities.version.split(new RegExp("[\\ ,]"))[1] > 9)
{
XML.ignoreWhitespace = false;
}
loc8 = XML(loc5);
XML.ignoreWhitespace = loc7;
return _toAS(loc8);
}
Error.throwError(Error, 2067);
return;
}
private static function _initJS():void
{
}
private static function _getPropNames(arg1:Object):Array
{
}
public static function get objectID():String
{
}
private static function get activeX():Boolean
{
}
private static function _addCallback(arg1:String, arg2:Function, arg3:Boolean):void
{
}
private static function _evalJS(arg1:String):String
{
}
private static function _callOut(arg1:String):String
{
}
private static function _callIn(arg1:Function, arg2:String, arg3:Array):String
{
var closure:Function;
var request:String;
var args:Array;
var arguments:Array;
var oldIgnoreWhitespace:Boolean;
var xml:XML;
var result:*;
var loc1:*;
result = undefined;
closure = arg1;
request = arg2;
args = arg3;
arguments = arguments;
if (args != null)
{
try
{
result = closure.apply(null, args);
}
catch (e:Error)
{
if (marshallExceptions)
{
result = e;
}
else
{
throw e;
}
}
return _toJS(result);
}
oldIgnoreWhitespace = XML.ignoreWhitespace;
XML.ignoreWhitespace = false;
xml = XML(request);
XML.ignoreWhitespace = oldIgnoreWhitespace;
try
{
result = closure.apply(null, _argumentsToAS(xml.arguments));
}
catch (e:Error)
{
if (marshallExceptions)
{
result = e;
}
else
{
throw e;
}
}
return xml.@returntype != "javascript" ? _toXML(result) : _toJS(result);
}
private static function _arrayToXML(arg1:Array):String
{
var loc1:*="";
var loc2:*=0;
while (loc2 < arg1.length)
{
loc1 = loc1 + ("" + _toXML(arg1[loc2]) + "");
++loc2;
}
return loc1 + "";
}
private static function _argumentsToXML(arg1:Array):String
{
var loc1:*="";
var loc2:*=0;
while (loc2 < arg1.length)
{
loc1 = loc1 + _toXML(arg1[loc2]);
++loc2;
}
return loc1 + "";
}
private static function _objectToXML(arg1:*):String
{
var loc2:*=null;
var loc1:*="";
}
private static function _escapeXML(arg1:String):String
{
return arg1.replace(new RegExp("&", "g"), "&").replace(new RegExp("<", "g"), "<").replace(new RegExp(">", "g"), ">").replace(new RegExp("\"", "g"), """).replace(new RegExp("\'", "g"), "'");
}
private static function _toXML(arg1:*):String
{
var loc1:*=typeof arg1;
if (loc1 == "string")
{
return "" + _escapeXML(arg1) + "";
}
if (loc1 == "undefined")
{
return "";
}
if (loc1 == "number")
{
return "" + arg1 + "";
}
if (arg1 == null)
{
return "";
}
if (loc1 == "boolean")
{
return arg1 ? "" : "";
}
if (arg1.hasOwnProperty("length"))
{
return _arrayToXML(arg1);
}
if (arg1 is Date)
{
return "" + arg1.time + "";
}
if (arg1 is Error && marshallExceptions)
{
return "" + arg1 + "";
}
if (loc1 == "object")
{
return _objectToXML(arg1);
}
return "";
}
private static function _objectToAS(arg1:Object):*
{
var loc2:*=null;
var loc1:*={};
var loc3:*=0;
var loc4:*=arg1.property;
for each (loc2 in loc4)
{
loc1[loc2.@id] = _toAS(loc2.children());
}
return loc1;
}
private static function _arrayToAS(arg1:Object):*
{
var loc2:*=null;
var loc1:*=[];
var loc3:*=0;
var loc4:*=arg1.children();
for each (loc2 in loc4)
{
loc1[loc2.@id] = _toAS(loc2.children());
}
return loc1;
}
private static function _toAS(arg1:Object):*
{
var loc1:*=arg1.name();
if (loc1 == "number")
{
return Number(arg1.children());
}
if (loc1 == "string")
{
return String(arg1.children());
}
if (loc1 == "false")
{
return false;
}
if (loc1 == "true")
{
return true;
}
if (loc1 == "null")
{
return null;
}
if (loc1 == "undefined")
{
return undefined;
}
if (loc1 == "date")
{
return new Date(Number(arg1.children()));
}
if (loc1 == "object")
{
return _objectToAS(arg1);
}
if (loc1 == "array")
{
return _arrayToAS(arg1);
}
if (loc1 == "class")
{
return getDefinitionByName(String(arg1.children()));
}
if (loc1 == "exception" && marshallExceptions)
{
throw new Error(arg1.children());
}
return undefined;
}
private static function _argumentsToAS(arg1:*):Array
{
var loc2:*=null;
var loc1:*=[];
var loc3:*=0;
var loc4:*=arg1.children();
for each (loc2 in loc4)
{
loc1.push(_toAS(loc2));
}
return loc1;
}
private static function _arrayToJS(arg1:Array):String
{
var loc1:*="[";
var loc2:*=0;
while (loc2 < arg1.length)
{
if (loc2 != 0)
{
loc1 = loc1 + ",";
}
loc1 = loc1 + _toJS(arg1[loc2]);
++loc2;
}
return loc1 + "]";
}
private static function _objectToJS(arg1:*):String
{
var loc1:*=_getPropNames(arg1);
var loc2:*="({";
var loc3:*=0;
while (loc3 < loc1.length)
{
if (loc3 > 0)
{
loc2 = loc2 + ",";
}
loc2 = loc2 + (loc1[loc3] + ":" + _toJS(arg1[loc1[loc3]]));
++loc3;
}
return loc2 + "})";
}
private static function _toJS(arg1:*):String
{
if (arg1 is Error && marshallExceptions)
{
return "throw \"" + arg1 + "\"";
}
if (typeof arg1 == "string")
{
return "\"" + arg1.replace(new RegExp("\\\"", "g"), "\\\"").replace(new RegExp("\\n", "g"), "\\n").replace(new RegExp("\\r", "g"), "\\r") + "\"";
}
if (arg1 === null)
{
return "null";
}
if (arg1 is Date)
{
return "new Date (" + arg1.time + ")";
}
if (typeof arg1 == "object")
{
if (arg1 is Array)
{
return _arrayToJS(arg1);
}
return _objectToJS(arg1);
}
return String(arg1);
}
{
marshallExceptions = false;
}
public static var marshallExceptions:Boolean=false;
}
}