//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:*=""; var loc3:*=0; var loc4:*=arg1; for (loc2 in loc4) { loc1 = loc1 + ("" + _toXML(arg1[loc2]) + ""); } return 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; } }