import flash.external.ExternalInterface; class f4a { static var app : f4a; function Log(txt) { return; _root.tf2.text += '\r'+txt; } function ping(callback) { Log('(ping)'); if (callback) flash.external.ExternalInterface.call(callback, 'pang'); return 'pong'; } function xmlhttp(location, callbackName, verb, body, headers) { if (body == 'null') body = ''; Log('body:'+body); var c = new _global.HTTPConnection(location); c.setVerb(verb); c.setBody(body); c.addRequestHeader(headers); c.onData = function (src) { if (callbackName) { flash.external.ExternalInterface.call(callbackName, src); } }; c.send(); } function f4a() { if (!_global.HTTPConnection) { _global.HTTPConnection = function (_url) { this.url = _url; this.verb = 'GET'; this.body = ''; this.sendAndLoad = LoadVars.prototype.sendAndLoad; this.addRequestHeader = LoadVars.prototype.addRequestHeader; this.load = LoadVars.prototype.load; this.setVerb = function (_verb) { if (!_verb) return; this.verb = _verb; }; this.setBody = function (_body) { if (!_body) return; this.body = _body; var current_url = ExternalInterface.call('function(){return location.href}'); var current_domain = ExternalInterface.call('function(t){var r=t.replace(/http:\\/\\//,\'\');r=r.replace(/\\/.*/,\'\');return r}', current_url); this.body += '&f4a_domain='+current_domain; }; this.toString = function () { return this.body; }; this.send = function () { if (this.verb == 'GET') { this.load(this.url); } else { var sendObj = {}; sendObj.body = this.body; sendObj.onData = this.onData; this.sendAndLoad(this.url, sendObj, this.verb); } }; }; } //_root.createTextField("tf2",0,0,0,8000,200); // for logging Log(ExternalInterface); Log(flash.external.ExternalInterface); Log(flash.external.ExternalInterface.available); flash.external.ExternalInterface.addCallback('ping', this, ping); flash.external.ExternalInterface.addCallback('xmlhttp', this, xmlhttp); Log('ping: '+ping()); Log('finished!'); } // entry point static function main(mc) { System.security.allowDomain('*'); app = new f4a(); } }