Section 1
//MonsterDebugger (nl.demonsters.debugger.MonsterDebugger)
package nl.demonsters.debugger {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
import flash.geom.*;
public class MonsterDebugger {
private const TYPE_BOOLEAN:String = "Boolean";
private const COMMAND_GET_DISPLAYOBJECT:String = "GET_DISPLAYOBJECT";
private const TYPE_VECTOR:String = "Vector";
private const TYPE_XMLLIST:String = "XMLList";
private const COMMAND_TRACE:String = "TRACE";
private const ACCESS_METHOD:String = "method";
private const TYPE_XMLVALUE:String = "XMLValue";
private const COMMAND_NOTFOUND:String = "NOTFOUND";
protected const MAX_BUFFER_SIZE:int = 500;
private const COMMAND_MONITOR:String = "MONITOR";
private const ACCESS_CONSTANT:String = "constant";
protected const HIGHLIGHT_BORDER:int = 4;
private const TYPE_FUNCTION:String = "Function";
private const TYPE_UINT:String = "uint";
private const TYPE_INT:String = "int";
protected const MAX_PACKAGE_BYTES:int = 40000;
private const LINE_IN:String = "_debuggerBlue";
private const TYPE_XMLATTRIBUTE:String = "XMLAttribute";
private const COMMAND_SNAPSHOT:String = "SNAPSHOT";
private const ALLOWED_DOMAIN:String = "*";
private const ICON_VARIABLE_READONLY:String = "iconVariableReadonly";
private const ICON_DEFAULT:String = "iconDefault";
private const LINE_OUT:String = "_debuggerRed";
private const COMMAND_BASE:String = "BASE";
private const COMMAND_SHOW_HIGHLIGHT:String = "SHOW_HIGHLIGHT";
private const COMMAND_HIDE_HIGHLIGHT:String = "HIDE_HIGHLIGHT";
private const TYPE_BYTEARRAY:String = "ByteArray";
private const ICON_VARIABLE_WRITEONLY:String = "iconVariableWriteonly";
private const COMMAND_GET_PROPERTIES:String = "GET_PROPERTIES";
private const TYPE_XML:String = "XML";
private const TYPE_XMLNODE:String = "XMLNode";
private const COMMAND_ROOT:String = "ROOT";
private const TYPE_WARNING:String = "Warning";
private const TYPE_VOID:String = "void";
private const PERMISSION_WRITEONLY:String = "writeonly";
private const PERMISSION_READWRITE:String = "readwrite";
private const ICON_VARIABLE:String = "iconVariable";
private const TYPE_METHOD:String = "MethodClosure";
private const ICON_XMLATTRIBUTE:String = "iconXMLAttribute";
private const COMMAND_HELLO:String = "HELLO";
private const COMMAND_GET_FUNCTIONS:String = "GET_FUNCTIONS";
private const PERMISSION_READONLY:String = "readonly";
private const ICON_XMLNODE:String = "iconXMLNode";
private const COMMAND_CLEAR_TRACES:String = "CLEAR_TRACES";
protected const VERSION:Number = 2.51;
private const COMMAND_HELLO_RESPONSE:String = "HELLO_RESPONSE";
private const TYPE_STRING:String = "String";
private const ICON_XMLVALUE:String = "iconXMLValue";
private const ACCESS_ACCESSOR:String = "accessor";
private const COMMAND_SET_PROPERTY:String = "SET_PROPERTY";
private const COMMAND_CALL_METHOD:String = "CALL_METHOD";
private const ICON_FUNCTION:String = "iconFunction";
protected const HIGHLIGHT_COLOR:uint = 0xFFFF00;
private const COMMAND_INSPECT:String = "INSPECT";
private const ICON_WARNING:String = "iconWarning";
private const TYPE_OBJECT:String = "Object";
private const TYPE_NUMBER:String = "Number";
private const ICON_ROOT:String = "iconRoot";
private const TYPE_ARRAY:String = "Array";
private const ACCESS_VARIABLE:String = "variable";
private const COMMAND_GET_OBJECT:String = "GET_OBJECT";
protected const FPS_UPDATE:int = 500;
protected var isConnected:Boolean;// = false
protected var monitorStart:Number;
private var lineIn:LocalConnection;
protected var buffer:Array;
protected var monitorTime:Number;
protected var monitor:Timer;
public var logger:Function;
protected var monitorFrames:uint;
private var lineOut:LocalConnection;
protected var highlight:Sprite;// = null
protected var monitorSprite:Sprite;
protected var isEnabled:Boolean;// = true
protected var root:Object;// = null
public static const COLOR_WARNING:uint = 0xFF3300;
public static const COLOR_NORMAL:uint = 0x111111;
public static const COLOR_ERROR:uint = 0xFF0000;
private static var instance:MonsterDebugger = null;
public function MonsterDebugger(_arg1:Object=null){
var target = _arg1;
root = null;
highlight = null;
buffer = new Array();
isEnabled = true;
isConnected = false;
super();
if (instance == null){
instance = this;
lineOut = new LocalConnection();
lineOut.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler, false, 0, true);
lineOut.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
lineOut.addEventListener(StatusEvent.STATUS, statusHandler, false, 0, true);
lineIn = new LocalConnection();
lineIn.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler, false, 0, true);
lineIn.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler, false, 0, true);
lineIn.addEventListener(StatusEvent.STATUS, statusHandler, false, 0, true);
lineIn.allowDomain(ALLOWED_DOMAIN);
lineIn.client = this;
monitorTime = new Date().time;
monitorStart = new Date().time;
monitorFrames = 0;
monitorSprite = new Sprite();
monitorSprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
monitor = new Timer(FPS_UPDATE);
monitor.addEventListener(TimerEvent.TIMER, monitorHandler, false, 0, true);
monitor.start();
try {
lineIn.connect(LINE_IN);
} catch(error:ArgumentError) {
};
};
instance.root = target;
instance.send({text:COMMAND_HELLO, version:VERSION});
}
private function asyncErrorHandler(_arg1:AsyncErrorEvent):void{
isConnected = false;
}
protected function htmlEscape(_arg1:String):String{
var _local2:XML;
if (_arg1){
if (_arg1.indexOf("&") != -1){
_arg1 = _arg1.split("&").join("&");
};
if (_arg1.indexOf("<") != -1){
_arg1 = _arg1.split("<").join("<");
};
if (_arg1.indexOf(">") != -1){
_arg1 = _arg1.split(">").join(">");
};
if (_arg1.indexOf("'") != -1){
_arg1 = _arg1.split("'").join("'");
};
if (_arg1.indexOf("\"") != -1){
_arg1 = _arg1.split("\"").join(""");
};
_local2 = new XML((("<a>" + ??esc_xelem
) + "</a>"));
return (_local2.toXMLString().replace(/(^<a>)|(<\/a>$)|(^<a\/>$)/g, ""));
//unresolved jump
};
return ("");
}
protected function sendBuffer():void{
if (buffer.length > 0){
while (buffer.length != 0) {
send(buffer.shift());
};
};
}
private function statusHandler(_arg1:StatusEvent):void{
if (_arg1.level == "error"){
isConnected = false;
};
}
protected function createNode(_arg1:String, _arg2:Object=null, _arg3:Boolean=false):String{
var _local4:String;
var _local5:*;
_local4 = "";
_local4 = (_local4 + ("<" + _arg1));
if (_arg2){
for (_local5 in _arg2) {
_local4 = (_local4 + ((((" " + _local5) + "=\"") + _arg2[_local5]) + "\""));
};
};
if (_arg3){
_local4 = (_local4 + (("></" + _arg1) + ">"));
} else {
_local4 = (_local4 + ">");
};
return (_local4);
}
protected function enterFrameHandler(_arg1:Event):void{
if (isEnabled){
monitorFrames++;
};
}
protected function traceInternal(_arg1:Object, _arg2, _arg3:uint=0x111111, _arg4:Boolean=false, _arg5:int=4):void{
var _local6:XML;
var _local7:uint;
var _local8:Object;
if (isEnabled){
_local6 = XML(parseObject(_arg2, "", _arg4, 1, _arg5));
_local7 = System.totalMemory;
_local8 = {text:COMMAND_TRACE, date:new Date(), target:String(_arg1), xml:_local6, color:_arg3, memory:_local7};
if (isConnected){
send(_local8);
} else {
sendToBuffer(_local8);
};
};
}
protected function getObject(_arg1:String="", _arg2:int=0){
var object:*;
var splitted:Array;
var i:int;
var index:Number;
var obj:Object;
var target = _arg1;
var parent = _arg2;
object = instance.root;
if (target != ""){
splitted = target.split(".");
i = 0;
while (i < (splitted.length - parent)) {
if (splitted[i] != ""){
try {
if (splitted[i] == "children()"){
object = object.children();
} else {
if (splitted[i].indexOf("getChildAt(") == 0){
index = splitted[i].substring(11, splitted[i].indexOf(")", 11));
object = DisplayObjectContainer(object).getChildAt(index);
} else {
object = object[splitted[i]];
};
};
} catch(error:ReferenceError) {
obj = {text:COMMAND_NOTFOUND, target:target};
if (isConnected){
send(obj);
} else {
sendToBuffer(obj);
};
break;
};
};
i = (i + 1);
};
};
return (object);
}
protected function sendToBuffer(_arg1:Object):void{
buffer.push(_arg1);
if (buffer.length > MAX_BUFFER_SIZE){
buffer.shift();
};
}
protected function printObject(_arg1, _arg2:String):String{
var _local3:String;
_local3 = "";
if (_arg2 == TYPE_BYTEARRAY){
_local3 = (_arg1["length"] + " bytes");
} else {
_local3 = htmlEscape(String(_arg1));
};
return (_local3);
}
protected function clearTracesInternal():void{
var _local1:Object;
if (isEnabled){
_local1 = {text:COMMAND_CLEAR_TRACES};
if (isConnected){
send(_local1);
} else {
sendToBuffer(_local1);
};
};
}
protected function parseXML(_arg1, _arg2:String="", _arg3:int=1, _arg4:int=-1):String{
var _local5:String;
var _local6:int;
var _local7:String;
_local5 = "";
_local6 = 0;
if ((((_arg4 == -1)) || ((_arg3 <= _arg4)))){
if (_arg2.indexOf("@") != -1){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:_arg1, name:"", type:TYPE_XMLATTRIBUTE, value:_arg1, target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if (_arg1.name() == null){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLVALUE, label:((("(" + TYPE_XMLVALUE) + ") = ") + printObject(_arg1, TYPE_XMLVALUE)), name:"", type:TYPE_XMLVALUE, value:printObject(_arg1, TYPE_XMLVALUE), target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if (_arg1.hasSimpleContent()){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLNODE, label:(((_arg1.name() + " (") + TYPE_XMLNODE) + ")"), name:_arg1.name(), type:TYPE_XMLNODE, value:"", target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
if (_arg1 != ""){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLVALUE, label:((("(" + TYPE_XMLVALUE) + ") = ") + printObject(_arg1, TYPE_XMLVALUE)), name:"", type:TYPE_XMLVALUE, value:printObject(_arg1, TYPE_XMLVALUE), target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
};
_local6 = 0;
while (_local6 < _arg1.attributes().length()) {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:((((("@" + _arg1.attributes()[_local6].name()) + " (") + TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local6]), name:"", type:TYPE_XMLATTRIBUTE, value:_arg1.attributes()[_local6], target:(((_arg2 + ".") + "@") + _arg1.attributes()[_local6].name()), access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
_local6++;
};
_local5 = (_local5 + createNode("/node"));
} else {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLNODE, label:(((_arg1.name() + " (") + TYPE_XMLNODE) + ")"), name:_arg1.name(), type:TYPE_XMLNODE, value:"", target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
_local6 = 0;
while (_local6 < _arg1.attributes().length()) {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:((((("@" + _arg1.attributes()[_local6].name()) + " (") + TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local6]), name:"", type:TYPE_XMLATTRIBUTE, value:_arg1.attributes()[_local6], target:(((_arg2 + ".") + "@") + _arg1.attributes()[_local6].name()), access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
_local6++;
};
_local6 = 0;
while (_local6 < _arg1.children().length()) {
_local7 = ((((_arg2 + ".") + "children()") + ".") + _local6);
_local5 = (_local5 + parseXML(_arg1.children()[_local6], _local7, (_arg3 + 1), _arg4));
_local6++;
};
_local5 = (_local5 + createNode("/node"));
};
};
};
};
return (_local5);
}
protected function send(_arg1:Object):void{
var item:ByteArray;
var dataPackages:Array;
var i:int;
var bytesAvailable:int;
var offset:int;
var total:int;
var length:int;
var tmp:ByteArray;
var data = _arg1;
if (isEnabled){
item = new ByteArray();
item.writeObject(data);
item.compress();
dataPackages = new Array();
i = 0;
if (item.length > MAX_PACKAGE_BYTES){
bytesAvailable = item.length;
offset = 0;
total = Math.ceil((item.length / MAX_PACKAGE_BYTES));
i = 0;
while (i < total) {
length = bytesAvailable;
if (length > MAX_PACKAGE_BYTES){
length = MAX_PACKAGE_BYTES;
};
tmp = new ByteArray();
tmp.writeBytes(item, offset, length);
dataPackages.push({total:total, nr:(i + 1), bytes:tmp});
bytesAvailable = (bytesAvailable - length);
offset = (offset + length);
i = (i + 1);
};
} else {
dataPackages.push({total:1, nr:1, bytes:item});
};
i = 0;
while (i < dataPackages.length) {
try {
lineOut.send(LINE_OUT, "onReceivedData", dataPackages[i]);
} catch(error:Error) {
break;
};
i = (i + 1);
};
};
}
private function securityErrorHandler(_arg1:SecurityErrorEvent):void{
isConnected = false;
}
protected function monitorHandler(_arg1:TimerEvent):void{
var _local2:uint;
var _local3:Number;
var _local4:Number;
var _local5:uint;
var _local6:Object;
if (isEnabled){
_local2 = System.totalMemory;
_local3 = new Date().time;
_local4 = (_local3 - monitorTime);
_local5 = ((monitorFrames / _local4) * 1000);
monitorFrames = 0;
monitorTime = _local3;
_local6 = {text:COMMAND_MONITOR, memory:_local2, fps:_local5, time:_local3, start:monitorStart};
if (isConnected){
send(_local6);
} else {
sendToBuffer(_local6);
};
};
}
protected function snapshotInternal(_arg1:DisplayObject, _arg2:uint=0x111111):void{
var _local3:BitmapData;
var _local4:ByteArray;
var _local5:uint;
var _local6:Object;
if (isEnabled){
_local3 = new BitmapData(_arg1.width, _arg1.height);
_local3.draw(_arg1);
_local4 = _local3.getPixels(new Rectangle(0, 0, _arg1.width, _arg1.height));
_local5 = System.totalMemory;
_local6 = {text:COMMAND_SNAPSHOT, date:new Date(), target:String(_arg1), bytes:_local4, width:_arg1.width, height:_arg1.height, color:_arg2, memory:_local5};
if (isConnected){
send(_local6);
} else {
sendToBuffer(_local6);
};
_local3.dispose();
_local4 = null;
};
}
protected function isDisplayObject(_arg1):Boolean{
return ((((_arg1 is DisplayObject)) || ((_arg1 is DisplayObjectContainer))));
}
public function onReceivedData(_arg1:ByteArray):void{
var object:*;
var method:Function;
var xml:XML;
var command:Object;
var bounds:Rectangle;
var data = _arg1;
if (isEnabled){
data.uncompress();
command = data.readObject();
switch (command["text"]){
case COMMAND_HELLO:
isConnected = true;
send({text:COMMAND_HELLO, version:VERSION});
break;
case COMMAND_HELLO_RESPONSE:
isConnected = true;
sendBuffer();
break;
case COMMAND_ROOT:
object = getObject("", 0);
if (object != null){
xml = XML(parseObject(object, "", command["functions"], 1, 2));
send({text:COMMAND_ROOT, xml:xml});
if (isDisplayObject(object)){
xml = XML(parseDisplayObject(object, "", command["functions"], 1, 2));
send({text:COMMAND_BASE, xml:xml});
};
};
break;
case COMMAND_GET_OBJECT:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(parseObject(object, command["target"], command["functions"], 1, 2));
send({text:COMMAND_GET_OBJECT, xml:xml});
};
break;
case COMMAND_GET_DISPLAYOBJECT:
object = getObject(command["target"], 0);
if (object != null){
if (isDisplayObject(object)){
xml = XML(parseDisplayObject(object, command["target"], command["functions"], 1, 2));
send({text:COMMAND_GET_DISPLAYOBJECT, xml:xml});
};
};
break;
case COMMAND_GET_PROPERTIES:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(parseObject(object, command["target"], false, 1, 1));
send({text:COMMAND_GET_PROPERTIES, xml:xml});
};
break;
case COMMAND_GET_FUNCTIONS:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(getFunctions(object, command["target"]));
send({text:COMMAND_GET_FUNCTIONS, xml:xml});
};
break;
case COMMAND_SET_PROPERTY:
object = getObject(command["target"], 1);
if (object != null){
try {
object[command["name"]] = command["value"];
send({text:COMMAND_SET_PROPERTY, value:object[command["name"]]});
} catch(error:Error) {
send({text:COMMAND_NOTFOUND, target:command["target"]});
break;
};
};
break;
case COMMAND_CALL_METHOD:
method = getObject(command["target"], 0);
if (method != null){
if (command["returnType"] == TYPE_VOID){
method.apply(this, command["arguments"]);
} else {
object = method.apply(this, command["arguments"]);
xml = XML(parseObject(object, "", false, 1, 4));
send({text:COMMAND_CALL_METHOD, id:command["id"], xml:xml});
};
};
break;
case COMMAND_SHOW_HIGHLIGHT:
if (highlight != null){
try {
highlight.parent.removeChild(highlight);
highlight = null;
} catch(error:Error) {
};
};
object = getObject(command["target"], 0);
if (((isDisplayObject(object)) && (isDisplayObject(object["parent"])))){
bounds = object.getBounds(object["parent"]);
highlight = new Sprite();
highlight.x = 0;
highlight.y = 0;
highlight.graphics.beginFill(0, 0);
highlight.graphics.lineStyle(HIGHLIGHT_BORDER, HIGHLIGHT_COLOR);
highlight.graphics.drawRect(bounds.x, bounds.y, bounds.width, bounds.height);
highlight.graphics.endFill();
highlight.mouseChildren = false;
highlight.mouseEnabled = false;
try {
object["parent"].addChild(highlight);
} catch(error:Error) {
highlight = null;
};
};
break;
case COMMAND_HIDE_HIGHLIGHT:
if (highlight != null){
try {
highlight.parent.removeChild(highlight);
highlight = null;
} catch(error:Error) {
};
};
break;
};
};
}
protected function parseDisplayObject(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:int=1, _arg5:int=4):String{
var xml:String;
var childs:Array;
var child:DisplayObject;
var childType:String;
var childIcon:String;
var childName:String;
var childTarget:String;
var childChildren:String;
var i:int;
var ojectName:String;
var msg:String;
var obj:Object;
var object = _arg1;
var target = _arg2;
var functions = _arg3;
var currentDepth = _arg4;
var maxDepth = _arg5;
xml = "";
childType = "";
childIcon = "";
childName = "";
childTarget = "";
childChildren = "";
i = 0;
if ((((maxDepth == -1)) || ((currentDepth <= maxDepth)))){
if (currentDepth == 1){
xml = (xml + createNode("root"));
};
try {
if (currentDepth == 1){
ojectName = DisplayObject(object).name;
if ((((ojectName == null)) || ((ojectName == "null")))){
ojectName = "DisplayObject";
};
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + ojectName) + ")"), target:target}));
};
childs = new Array();
i = 0;
while (i < DisplayObjectContainer(object).numChildren) {
childs.push(DisplayObjectContainer(object).getChildAt(i));
i = (i + 1);
};
i = 0;
while (i < childs.length) {
child = childs[i];
childName = describeType(child).@name;
childType = parseType(childName);
childTarget = ((((target + ".") + "getChildAt(") + i) + ")");
childIcon = ((child is DisplayObjectContainer)) ? ICON_ROOT : ICON_VARIABLE;
childChildren = ((child is DisplayObjectContainer)) ? String(DisplayObjectContainer(child).numChildren) : "";
xml = (xml + createNode("node", {icon:childIcon, label:((((child.name + " (") + childType) + ") ") + childChildren), name:child.name, type:childType, value:printObject(child, childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseDisplayObject(child, childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} catch(error:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
obj = {text:COMMAND_NOTFOUND, target:target, xml:XML(msg)};
if (isConnected){
send(obj);
} else {
sendToBuffer(obj);
};
};
if (currentDepth == 1){
xml = (xml + createNode("/root"));
};
};
return (xml);
}
protected function parseType(_arg1:String):String{
var _local2:String;
_local2 = _arg1;
if (_arg1.lastIndexOf("::") != -1){
_local2 = _arg1.substring((_arg1.lastIndexOf("::") + 2), _arg1.length);
};
if (_local2.lastIndexOf(".") != -1){
_local2 = _local2.substring(0, _local2.lastIndexOf("."));
};
if (_local2 == TYPE_METHOD){
_local2 = TYPE_FUNCTION;
};
return (htmlEscape(_local2));
}
protected function parseObject(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:int=1, _arg5:int=4):String{
var xml:String;
var childType:String;
var childName:String;
var childTarget:String;
var description:XML;
var type:String;
var base:String;
var isXML:Boolean;
var isXMLString:XML;
var i:int;
var n:int;
var keys:Array;
var key:*;
var properties:Array;
var prop:*;
var variables:XMLList;
var accessors:XMLList;
var constants:XMLList;
var methods:XMLList;
var variablesArr:Array;
var methodsArr:Array;
var double:Boolean;
var permission:String;
var icon:String;
var returnType:String;
var parameters:XMLList;
var args:Array;
var msg:String;
var obj:Object;
var object = _arg1;
var target = _arg2;
var functions = _arg3;
var currentDepth = _arg4;
var maxDepth = _arg5;
xml = "";
childType = "";
childName = "";
childTarget = "";
description = new XML();
type = "";
base = "";
isXML = false;
i = 0;
n = 0;
if ((((maxDepth == -1)) || ((currentDepth <= maxDepth)))){
if (currentDepth == 1){
xml = (xml + createNode("root"));
};
try {
description = describeType(object);
type = parseType(description.@name);
base = parseType(description.@base);
if (((functions) && ((base == TYPE_FUNCTION)))){
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:"(Function)", name:"", type:TYPE_FUNCTION, value:"", target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if ((((type == TYPE_ARRAY)) || ((type == TYPE_VECTOR)))){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("length" + " (") + TYPE_UINT) + ") = ") + object["length"]), name:"length", type:TYPE_UINT, value:object["length"], target:((target + ".") + "length"), access:ACCESS_VARIABLE, permission:PERMISSION_READONLY}, true));
keys = new Array();
for (key in object) {
keys.push(key);
};
keys.sort();
i = 0;
while (i < keys.length) {
childType = parseType(describeType(object[keys[i]]).@name);
childTarget = ((target + ".") + String(keys[i]));
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[keys[i]]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((((("[" + keys[i]) + "] (") + childType) + ") = ") + printObject(object[keys[i]], childType)), name:(("[" + keys[i]) + "]"), type:childType, value:printObject(object[keys[i]], childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("[" + keys[i]) + "] (") + childType) + ")"), name:(("[" + keys[i]) + "]"), type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error:Error) {
};
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("[" + keys[i]) + "] (") + childType) + ")"), name:(("[" + keys[i]) + "]"), type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseObject(object[keys[i]], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_OBJECT){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
properties = new Array();
for (prop in object) {
properties.push(prop);
};
properties.sort();
i = 0;
while (i < properties.length) {
childType = parseType(describeType(object[properties[i]]).@name);
childTarget = ((target + ".") + properties[i]);
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[properties[i]]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((((properties[i] + " (") + childType) + ") = ") + printObject(object[properties[i]], childType)), name:properties[i], type:childType, value:printObject(object[properties[i]], childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((properties[i] + " (") + childType) + ")"), name:properties[i], type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error:Error) {
};
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((properties[i] + " (") + childType) + ")"), name:properties[i], type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseObject(object[properties[i]], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_XML){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + parseXML(object, ((target + ".") + "cildren()"), currentDepth, maxDepth));
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_XMLLIST){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("length" + " (") + TYPE_UINT) + ") = ") + object.length()), name:"length", type:TYPE_UINT, value:object.length(), target:((target + ".") + "length"), access:ACCESS_VARIABLE, permission:PERMISSION_READONLY}, true));
i = 0;
while (i < object.length()) {
xml = (xml + parseXML(object[i], (((target + ".") + String(i)) + ".children()"), currentDepth, maxDepth));
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if ((((((((((type == TYPE_STRING)) || ((type == TYPE_BOOLEAN)))) || ((type == TYPE_NUMBER)))) || ((type == TYPE_INT)))) || ((type == TYPE_UINT)))){
isXML = false;
isXMLString = new XML();
if (type == TYPE_STRING){
try {
isXMLString = new XML(object);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((("(" + type) + ") = ") + printObject(object, type)), name:"", type:type, value:printObject(object, type), target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(("(" + type) + ")"), name:"", type:type, value:"", target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((target + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error:Error) {
};
} else {
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
variables = description..variable;
accessors = description..accessor;
constants = description..constant;
methods = description..method;
variablesArr = new Array();
methodsArr = new Array();
double = false;
permission = "";
icon = "";
double = false;
i = 0;
while (i < variables.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == variables[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:variables[i].@name, xml:variables[i], access:ACCESS_VARIABLE});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < accessors.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == accessors[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:accessors[i].@name, xml:accessors[i], access:ACCESS_ACCESSOR});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < constants.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == constants[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:constants[i].@name, xml:constants[i], access:ACCESS_CONSTANT});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < methods.length()) {
n = 0;
while (n < methodsArr.length) {
if (methodsArr[n].name == methods[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
methodsArr.push({name:methods[i].@name, xml:methods[i], access:ACCESS_METHOD});
};
i = (i + 1);
};
variablesArr.sortOn("name");
methodsArr.sortOn("name");
i = 0;
while (i < variablesArr.length) {
childType = parseType(variablesArr[i].xml.@type);
childName = variablesArr[i].xml.@name;
childTarget = ((target + ".") + childName);
permission = PERMISSION_READWRITE;
icon = ICON_VARIABLE;
if (variablesArr[i].access == ACCESS_CONSTANT){
permission = PERMISSION_READONLY;
icon = ICON_VARIABLE_READONLY;
};
if (variablesArr[i].xml.@access == PERMISSION_READONLY){
permission = PERMISSION_READONLY;
icon = ICON_VARIABLE_READONLY;
};
if (variablesArr[i].xml.@access == PERMISSION_WRITEONLY){
permission = PERMISSION_WRITEONLY;
icon = ICON_VARIABLE_WRITEONLY;
};
if (permission != PERMISSION_WRITEONLY){
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[childName]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:icon, label:((((childName + " (") + childType) + ") = ") + printObject(object[childName], childType)), name:childName, type:childType, value:printObject(object[childName], childType), target:childTarget, access:variablesArr[i].access, permission:permission}, true));
} else {
xml = (xml + createNode("node", {icon:icon, label:(((childName + " (") + childType) + ")"), name:childName, type:childType, value:"", target:childTarget, access:variablesArr[i].access, permission:permission}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error:Error) {
};
} else {
xml = (xml + createNode("node", {icon:icon, label:(((childName + " (") + childType) + ")"), name:childName, type:childType, target:childTarget, access:variablesArr[i].access, permission:permission}));
try {
xml = (xml + parseObject(object[childName], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
};
i = (i + 1);
};
if (functions){
i = 0;
while (i < methodsArr.length) {
childType = TYPE_FUNCTION;
childName = methodsArr[i].xml.@name;
childTarget = ((target + ".") + childName);
returnType = parseType(methodsArr[i].xml.@returnType);
parameters = methodsArr[i].xml..parameter;
args = new Array();
n = 0;
while (n < parameters.length()) {
args.push(parseType(parameters[n].@type));
n = (n + 1);
};
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:((((childName + "(") + args.join(", ")) + "):") + returnType), args:args.join(", "), name:childName, type:TYPE_FUNCTION, access:variablesArr[i].access, returnType:returnType, target:childTarget}, true));
i = (i + 1);
};
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
};
};
};
};
};
};
} catch(error:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
obj = {text:COMMAND_NOTFOUND, target:target, xml:XML(msg)};
if (isConnected){
send(obj);
} else {
sendToBuffer(obj);
};
};
if (currentDepth == 1){
xml = (xml + createNode("/root"));
};
};
return (xml);
}
protected function getFunctions(_arg1, _arg2:String=""):String{
var xml:String;
var description:XML;
var type:String;
var childType:String;
var childName:String;
var childTarget:String;
var methods:XMLList;
var methodsArr:Array;
var returnType:String;
var parameters:XMLList;
var args:Array;
var argsString:String;
var optional:Boolean;
var double:Boolean;
var i:int;
var n:int;
var msg:String;
var obj:Object;
var object = _arg1;
var target = _arg2;
xml = "";
xml = (xml + createNode("root"));
try {
description = describeType(object);
type = parseType(description.@name);
childType = "";
childName = "";
childTarget = "";
methods = description..method;
methodsArr = new Array();
optional = false;
double = false;
i = 0;
n = 0;
xml = (xml + createNode("node", {icon:ICON_DEFAULT, label:(("(" + type) + ")"), target:target}));
i = 0;
while (i < methods.length()) {
n = 0;
while (n < methodsArr.length) {
if (methodsArr[n].name == methods[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
methodsArr.push({name:methods[i].@name, xml:methods[i], access:ACCESS_METHOD});
};
i = (i + 1);
};
methodsArr.sortOn("name");
i = 0;
while (i < methodsArr.length) {
childType = TYPE_FUNCTION;
childName = methodsArr[i].xml.@name;
childTarget = ((target + ".") + childName);
returnType = parseType(methodsArr[i].xml.@returnType);
parameters = methodsArr[i].xml..parameter;
args = new Array();
argsString = "";
optional = false;
n = 0;
while (n < parameters.length()) {
if ((((parameters[n].@optional == "true")) && (!(optional)))){
optional = true;
args.push("[");
};
args.push(parseType(parameters[n].@type));
n = (n + 1);
};
if (optional){
args.push("]");
};
argsString = args.join(", ");
argsString = argsString.replace("[, ", "[");
argsString = argsString.replace(", ]", "]");
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:((((childName + "(") + argsString) + "):") + returnType), args:argsString, name:childName, type:TYPE_FUNCTION, access:ACCESS_METHOD, returnType:returnType, target:childTarget}));
n = 0;
while (n < parameters.length()) {
xml = (xml + createNode("parameter", {type:parseType(parameters[n].@type), index:parameters[n].@index, optional:parameters[n].@optional}, true));
n = (n + 1);
};
xml = (xml + createNode("/node"));
i = (i + 1);
};
xml = (xml + createNode("/node"));
} catch(error:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
obj = {text:COMMAND_NOTFOUND, target:target, xml:XML(msg)};
if (isConnected){
send(obj);
} else {
sendToBuffer(obj);
};
};
xml = (xml + createNode("/root"));
return (xml);
}
public static function get enabled():Boolean{
if (instance == null){
instance = new MonsterDebugger(null);
};
return (instance.isEnabled);
}
public static function snapshot(_arg1:DisplayObject, _arg2:uint=0x111111):void{
if (instance == null){
instance = new MonsterDebugger(null);
};
if (MonsterDebugger.enabled){
instance.snapshotInternal(_arg1, _arg2);
};
}
public static function trace(_arg1:Object, _arg2, _arg3:uint=0x111111, _arg4:Boolean=false, _arg5:int=4):void{
if (instance == null){
instance = new MonsterDebugger(_arg1);
};
if (MonsterDebugger.enabled){
instance.traceInternal(_arg1, _arg2, _arg3, _arg4, _arg5);
};
}
public static function set enabled(_arg1:Boolean):void{
if (instance == null){
instance = new MonsterDebugger(null);
};
instance.isEnabled = _arg1;
}
public static function inspect(_arg1:Object):void{
var _local2:*;
var _local3:XML;
var _local4:Object;
if (((!((instance == null))) && (!((_arg1 == null))))){
instance.root = _arg1;
_local2 = instance.getObject("", 0);
if (_local2 != null){
_local3 = XML(instance.parseObject(_local2, "", false, 1, 2));
_local4 = {text:instance.COMMAND_INSPECT, xml:_local3};
if (instance.isConnected){
instance.send(_local4);
} else {
instance.sendToBuffer(_local4);
};
if (instance.isDisplayObject(_local2)){
_local3 = XML(instance.parseDisplayObject(_local2, "", false, 1, 2));
_local4 = {text:instance.COMMAND_BASE, xml:_local3};
if (instance.isConnected){
instance.send(_local4);
} else {
instance.sendToBuffer(_local4);
};
};
};
};
}
public static function clearTraces():void{
if (instance == null){
instance = new MonsterDebugger(null);
};
if (MonsterDebugger.enabled){
instance.clearTracesInternal();
};
}
}
}//package nl.demonsters.debugger
Section 2
//DebugTypes (uk.co.inbox.debug.DebugTypes)
package uk.co.inbox.debug {
public class DebugTypes {
public static const SIMPLE_OUTPUT:String = "simpleOutPut";
public static const COMPLETE_OUTPUT:String = "completeOutPut";
}
}//package uk.co.inbox.debug
Section 3
//outPut (uk.co.inbox.debug.outPut)
package uk.co.inbox.debug {
import nl.demonsters.debugger.*;
public function outPut(_arg1=null, _arg2=null, _arg3:int=0, _arg4:String=null):void{
MonsterDebugger.trace(_arg2, _arg1);
switch (_arg4){
case DebugTypes.COMPLETE_OUTPUT:
trace((((_arg2)!=null) ? (_arg2 + " - ") : "" + _arg1));
printr(_arg2);
break;
case DebugTypes.SIMPLE_OUTPUT:
trace((((_arg2)!=null) ? (_arg2 + " - ") : "" + _arg1));
default:
trace(_arg1);
break;
};
}
}//package uk.co.inbox.debug
Section 4
//printr (uk.co.inbox.debug.printr)
package uk.co.inbox.debug {
import flash.display.*;
import flash.utils.*;
import flash.text.*;
public function printr(_arg1, _arg2:int=1, _arg3:String=null):void{
var _local4:String;
var _local5:int;
var _local6:String;
var _local7:*;
if (_arg3 == null){
_arg3 = "======= ReadObject =======";
};
_local4 = "";
_local5 = 0;
while (_local5 < _arg2) {
_local4 = (_local4 + " ");
_local5++;
};
_local6 = getQualifiedClassName(_arg1);
if ((((_local6 == "Array")) || ((_local6 == "Object")))){
outPut(((((_local4 + "[") + _arg3) + "] => ") + _local6));
for (_local7 in _arg1) {
printr(_arg1[_local7], (_arg2 + 1), _local7);
};
} else {
if ((_arg1 is DisplayObjectContainer)){
if ((_arg1 is MovieClip)){
outPut(((((((((_local4 + "[") + _arg3) + "] => ") + _local6) + " -- Frame: ") + _arg1.currentFrame) + "/") + _arg1.totalFrames));
} else {
outPut(((((_local4 + "[") + _arg3) + "] => ") + _local6));
};
_local5 = 0;
while (_local5 < _arg1.numChildren) {
printr(_arg1.getChildAt(_local5), (_arg2 + 1), _local6);
_local5++;
};
} else {
if ((_arg1 is TextField)){
outPut(((((((_local4 + "[") + _arg3) + "] => ") + _arg1) + " -- Text: ") + _arg1.text));
} else {
outPut(((((_local4 + "[") + _arg3) + "] => ") + _arg1));
};
};
};
}
}//package uk.co.inbox.debug
Section 5
//HubLink (uk.co.inbox.hub.HubLink)
package uk.co.inbox.hub {
import flash.events.*;
import flash.net.*;
public class HubLink {
private static var outbound:LocalConnection = new LocalConnection();
private static function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "status":
trace("HubLink.send() succeeded");
break;
case "error":
trace("HubLink.send() failed");
break;
};
}
public static function showAlert(_arg1:String, _arg2:String, _arg3:int=2, _arg4:Number=5):void{
outbound.send("_inboxHub", "onShowAlert", _arg1, _arg2, _arg3, _arg4);
}
outbound.addEventListener(StatusEvent.STATUS, onStatus);
}
}//package uk.co.inbox.hub
Section 6
//InboxTag (uk.co.inbox.tracking.InboxTag)
package uk.co.inbox.tracking {
import flash.display.*;
import flash.events.*;
import uk.co.inbox.hub.*;
import uk.co.inbox.debug.*;
import flash.net.*;
import flash.system.*;
public class InboxTag {
private static var timeOut:int = 600;
public static var hubDebugLength:Number = 7;
private static var tagHolder:Sprite;
public static var isHubDebug:Boolean = true;
public static var isDebugMode:Boolean = true;
private static var overrideClientId:int = -1;
private static var isInit:Boolean = false;
private static var tagPath:String = "http://www.inboxtag.com/";
public static function setClientId(_arg1:int):void{
overrideClientId = _arg1;
}
public static function init(_arg1:DisplayObjectContainer):void{
Security.allowDomain(tagPath);
if (!isInit){
tagHolder = new Sprite();
_arg1.addChild(tagHolder);
};
isInit = true;
}
private static function debugTrace(_arg1):void{
if (isDebugMode){
outPut(("InboxTag - " + _arg1));
};
}
public static function callTag(_arg1:int, _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:Number=NaN, _arg8:Number=NaN, _arg9:Number=NaN, _arg10:int=0, _arg11:int=-1):void{
var _local13:int;
var _local14:String;
var _local15:String;
var _local16:int;
var _local17:Loader;
var _local18:URLRequest;
var _local19:URLVariables;
if (!isInit){
if (isHubDebug){
HubLink.showAlert("InboxTag Error", ("Couldn't find id: " + _arg1), 0, hubDebugLength);
};
debugTrace("callTag error. Check that InboxTag.init() has been called");
} else {
debugTrace("callTag start---------------------");
_local13 = ((overrideClientId == -1)) ? InboxTagData.clientId : overrideClientId;
_local14 = (((("<b>" + InboxTagData.getTagNameById(_arg1)) + "</b> (") + _arg1) + ")");
debugTrace((((" ID:" + _arg1) + " - ") + InboxTagData.getTagNameById(_arg1)));
_local15 = InboxTagData.getTagNameById(_arg1);
_local16 = 1;
while (_local16 <= 5) {
if (arguments[_local16] != undefined){
if (arguments[_local16] != ""){
_local14 = (_local14 + ((("<br> <b>P" + _local16) + "</b>: ") + arguments[_local16]));
debugTrace((((" P" + _local16) + ": ") + arguments[_local16]));
};
};
_local16++;
};
_local16 = 1;
while (_local16 <= 3) {
if (arguments[(_local16 + 5)] != undefined){
if (!isNaN(arguments[(_local16 + 5)])){
_local14 = (_local14 + ((("<br> <b>I" + _local16) + "</b>: ") + arguments[(_local16 + 5)]));
debugTrace((((" I" + _local16) + ": ") + arguments[(_local16 + 5)]));
};
};
_local16++;
};
if (isHubDebug){
HubLink.showAlert((("InboxTag (Client ID: " + _local13) + ")"), _local14, 2, hubDebugLength);
};
debugTrace("callTag end---------------------------------");
_local17 = new Loader();
_local18 = new URLRequest((tagPath + "tag.swf"));
_local19 = new URLVariables();
_local19.js = "yes";
_local19.isFlashCall = true;
_local19.ti = timeOut;
_local19.cl = _local13;
_local19.pg = _arg1;
if (_arg10 != 0){
_local19.sc = _arg10;
};
_local16 = 1;
while (_local16 <= 5) {
if (arguments[_local16] != undefined){
_local19[("p" + _local16)] = arguments[_local16];
};
_local16++;
};
_local16 = 1;
while (_local16 <= 3) {
if (arguments[(_local16 + 5)] != undefined){
if (!isNaN(arguments[(_local16 + 5)])){
_local19[("i" + _local16)] = arguments[(_local16 + 5)];
};
};
_local16++;
};
_local19.rnd = new Date().getTime();
_local18.data = _local19;
_local17.load(_local18);
tagHolder.addChild(_local17);
};
}
}
}//package uk.co.inbox.tracking
Section 7
//InboxTagData (uk.co.inbox.tracking.InboxTagData)
package uk.co.inbox.tracking {
import flash.utils.*;
public class InboxTagData {
public static const INIT_WRAPPER_LOAD:int = 4438;
public static const INIT_FLASH_LOAD:int = 4431;
public static const SURVEY_GENDER:int = 4436;
public static const CHANGE_LANGUAGE:int = 0;
public static const HTML_LOAD:int = 4430;
public static const SUBMIT_SCORE:int = 0;
public static const ENTER_GAME:int = 4432;
public static const PLAY_GAME:int = 4433;
public static const CREATE_LEAGUE:int = 0;
public static const CLICK_SMARTNEWHOMES:int = 4434;
public static const JOIN_LEAGUE:int = 0;
public static const CLICK_WHYBUY:int = 4435;
public static const SURVEY_AGE:int = 4437;
private static var _clientId:int = 254;
public static function get clientId():int{
return (_clientId);
}
public static function getTagNameById(_arg1:int):String{
var _local2:XMLList;
var _local3:int;
_local2 = describeType(InboxTagData)..constant;
while (_local3 < _local2.length()) {
if (InboxTagData[_local2[_local3].@name] == _arg1){
return (_local2[_local3].@name);
};
_local3++;
};
return ("");
}
}
}//package uk.co.inbox.tracking
Section 8
//MainTimeline (wrapper_fla.MainTimeline)
package wrapper_fla {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import uk.co.inbox.tracking.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.geom.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.media.*;
import flash.ui.*;
public dynamic class MainTimeline extends MovieClip {
public var cloudUrl:String;
public var i:String;
public var url:URLRequest;
public var variables:URLVariables;
public var gameLoader:Loader;
public var flashVarsObject:Object;
public function MainTimeline(){
addFrameScript(0, frame1);
}
public function getInterfaceURL(_arg1:String):String{
var str:String;
var js = _arg1;
str = null;
try {
str = getFormattedURL(ExternalInterface.call(js));
} catch(e:Error) {
str = null;
};
return (((str == null)) ? null : escape(str));
}
public function stripFromIndex(_arg1:String, _arg2:int):String{
_arg1 = _arg1.substr(_arg2, ((_arg1.indexOf("/", _arg2) == -1)) ? 0xFF : _arg1.indexOf("/", _arg2));
if (_arg1.substr(0, _arg1.indexOf(".")) == _arg1.substr(0, _arg1.indexOf(".")).replace(RegExp(/[^0-9]/g), "")){
} else {
_arg1 = ((_arg1.indexOf(".") == -1)) ? _arg1 : ((_arg1.substr(0, _arg1.indexOf(".")).replace(RegExp(/[^w0-9]/g), ""))!=_arg1.substr(0, _arg1.indexOf("."))) ? _arg1 : _arg1.substr((_arg1.indexOf(".") + 1));
};
_arg1 = _arg1.substr(0, ((_arg1.indexOf("/") == -1)) ? 0xFF : _arg1.indexOf("/"));
return (_arg1);
}
public function stripWithPrefix(_arg1:String, _arg2:String):String{
var _local3:int;
_local3 = _arg2.length;
if (_arg1.substr(0, _local3) != _arg2){
return (_arg1);
};
_arg1 = ((_arg1.substr(0, _local3) == _arg2)) ? _arg1.substr(0, ((_arg1.indexOf("/", _local3) == -1)) ? 0xFF : _arg1.indexOf("/", _local3)) : _arg1.substr(0, ((_arg1.indexOf("/") == -1)) ? 0xFF : _arg1.indexOf("/"));
return (_arg1);
}
function frame1(){
InboxTag.init(stage);
cloudUrl = "http://www.inbox.co.uk/smartnewhomes/wrapper_cloud.swf";
InboxTag.callTag(InboxTagData.INIT_WRAPPER_LOAD, escape(getFormattedURL(loaderInfo.url)), escape(loaderInfo.url), (ExternalInterface.available) ? getInterfaceURL("function(){return location.href;}") : "", (ExternalInterface.available) ? getInterfaceURL("function(){return top.location.href;}") : "", "", NaN, NaN, NaN);
Security.allowDomain("*");
url = new URLRequest(cloudUrl);
variables = new URLVariables();
flashVarsObject = loaderInfo.parameters;
for (i in flashVarsObject) {
variables[i] = flashVarsObject[i];
};
variables["hostingUrl"] = cloudUrl;
url.method = URLRequestMethod.GET;
url.data = variables;
gameLoader = new Loader();
gameLoader.load(url);
addChild(gameLoader);
}
public function getFormattedURL(_arg1:String):String{
var _local2:int;
if (_arg1 == null){
return (_arg1);
};
_local2 = ((_arg1.indexOf("://") == -1)) ? 0 : (_arg1.indexOf("://") + 3);
_arg1 = ((stripWithPrefix(_arg1, "file://"))!=_arg1) ? "local" : stripFromIndex(_arg1, _local2);
if (_arg1 == "local"){
return (_arg1);
};
_arg1 = ((_arg1.indexOf("?") == -1)) ? _arg1 : _arg1.substr(0, _arg1.indexOf("?"));
_arg1 = ((_arg1.indexOf("#") == -1)) ? _arg1 : _arg1.substr(0, _arg1.indexOf("#"));
if (_arg1.indexOf(".") == -1){
return (null);
};
return (_arg1);
}
}
}//package wrapper_fla