Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zopim {
- import flash.events.*;
- import zopim.events.*;
- import flash.net.*;
- import com.adobe.serialization.json.*;
- public class ZURLLoader extends URLLoader {
- private var callback:Function;
- private var reuse:Boolean;
- private var _eventToListenerMap:Object;
- public function ZURLLoader(_arg1:URLRequest=null, _arg2:Boolean=false, _arg3:Function=null){
- _eventToListenerMap = {};
- this.reuse = _arg2;
- if ((_arg3 is Function)){
- this.callback = _arg3;
- };
- addEventListener(Event.COMPLETE, onComplete, false, 0, true);
- addEventListener(IOErrorEvent.IO_ERROR, onErrorEvent, false, 0, true);
- addEventListener(SecurityErrorEvent.SECURITY_ERROR, onErrorEvent, false, 0, true);
- super(_arg1);
- }
- public static function getURLRequest(_arg1:String, _arg2:String, _arg3:Object):URLRequest{
- var _local6:String;
- ZConfig.traceTime(("httpSocket sending >> " + JSON.encode(_arg3)));
- var _local4:URLRequest = new URLRequest(_arg1);
- _local4.method = _arg2;
- var _local5:URLVariables = new URLVariables();
- for (_local6 in _arg3) {
- _local5[_local6] = _arg3[_local6];
- };
- if (_local4.method == URLRequestMethod.GET){
- _local5["random"] = Math.random();
- };
- _local4.data = _local5;
- return (_local4);
- }
- private function onErrorEvent(_arg1:ErrorEvent):void{
- ZConfig.traceTime(("ZURLLoader: " + _arg1));
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.HTTPSOCKET_ERROR, _arg1));
- }
- private function cleanUp():void{
- if (!reuse){
- removeAllListeners();
- callback = null;
- };
- }
- private function onComplete(_arg1:Event):void{
- var loader:* = null;
- var str:* = null;
- var json:* = null;
- var e:* = _arg1;
- if ((callback is Function)){
- loader = (e.target as ZURLLoader);
- str = loader.data;
- if (((!(str)) || (!(str.length)))){
- cleanUp();
- return;
- };
- try {
- json = JSON.decode(str);
- } catch(error:Error) {
- ZConfig.traceTime(("Error >> " + error.toString()));
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.JSON_PARSE_ERROR, error));
- cleanUp();
- return;
- };
- ZConfig.traceTime(("ZURLLoader received: " + str));
- callback(json);
- };
- cleanUp();
- }
- override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
- super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
- if (_arg5){
- return;
- };
- if (_eventToListenerMap[_arg1]){
- (_eventToListenerMap[_arg1] as Array).push(_arg2);
- } else {
- _eventToListenerMap[_arg1] = [_arg2];
- };
- }
- public function removeAllListeners():void{
- var _local1:String;
- var _local2:Array;
- var _local3:Function;
- for (_local1 in _eventToListenerMap) {
- _local2 = _eventToListenerMap[_local1];
- for each (_local3 in _local2) {
- super.removeEventListener(_local1, _local3);
- };
- };
- }
- override public function load(_arg1:URLRequest):void{
- var request:* = _arg1;
- try {
- super.load(request);
- } catch(error:Error) {
- ZConfig.traceTime("Unable to load requested document.");
- };
- }
- }
- }//package zopim
- package zopim {
- import zopim.net.*;
- import com.adobe.crypto.*;
- import flash.external.*;
- public class ZConfig {
- private static const DEFAULT_ACCOUNT_KEY:String = ((DEBUG) ? "demo" : null);
- ;
- public static const DEFAULT_HOST:String = "zopim.com";
- private static const _MAP = {
- machineID:String,
- displayName:String,
- sessionID:String,
- name:String,
- meta:String
- };
- public static var DEBUG:Boolean = false;
- public static var ZDASHBOARD_CONFIG:String = "zdashboard_config";
- public static var ZCLIENT_CONFIG:String = "zclient_config";
- private static var zopSO:ZSharedObject = new ZSharedObject("ZopConfig");
- public static var type:String = ZCLIENT_CONFIG;
- protected static var _baseDomain:String;
- protected static var _isSecure:Boolean;
- protected static var _uriScheme:String;
- private static var _accountKey:String;
- private static var _secretKey:String;
- private static var _locationHost:String;
- private static var _tabIdentifier:String;
- private static var _ua:String;
- private static var _pageTitle:String;
- public static var logs:Array = [];
- private static var MAX_LINES:uint = 500;
- private static var _start:String = "";
- private static var _end:String = "*********************************************";
- public static function init(_arg1:String):void{
- type = _arg1;
- if (DEBUG){
- };
- }
- public static function get baseDomain():String{
- if (!_baseDomain){
- _baseDomain = ((type)==ZCLIENT_CONFIG) ? getScriptDomain() : getURLDomain();
- };
- return (_baseDomain);
- }
- private static function getScriptDomain():String{
- try {
- _baseDomain = ExternalInterface.call("eval", "__$$__meshim__Config.baseDomain");
- _baseDomain = _baseDomain.replace(/https?:\/\//i, "");
- if (((!(_baseDomain)) || (!(_baseDomain.length)))){
- return ((_baseDomain = DEFAULT_HOST));
- };
- _baseDomain = ((_baseDomain.search("livechat."))==0) ? _baseDomain : "zopim.com";
- return (_baseDomain);
- } catch(e:Error) {
- };
- return ((_baseDomain = DEFAULT_HOST));
- }
- private static function getURLDomain():String{
- try {
- _baseDomain = ExternalInterface.call("eval", "document.location.host");
- if (((!(_baseDomain)) || (!(_baseDomain.length)))){
- return ((_baseDomain = DEFAULT_HOST));
- };
- _baseDomain = _baseDomain.replace(/^(dashboard|desktop|labs)./i, "");
- _baseDomain = ((_baseDomain.search("livechat."))==0) ? _baseDomain : "zopim.com";
- return (_baseDomain);
- } catch(e:Error) {
- };
- return ((_baseDomain = DEFAULT_HOST));
- }
- public static function get zSocketHost():String{
- return (("g88.talk." + baseDomain));
- }
- protected static function checkUriScheme():void{
- var _local1:String;
- var _local2:String;
- try {
- _local1 = ExternalInterface.call("eval", "__$$__meshim__Config.baseURL");
- if (_local1){
- _local2 = _local1.split(":")[0];
- if (_local2.toLowerCase() == "https"){
- _isSecure = true;
- _uriScheme = "https://";
- return;
- };
- } else {
- if (ExternalInterface.call("eval", "document.location.protocol == 'https:'")){
- _isSecure = true;
- _uriScheme = "https://";
- return;
- };
- };
- } catch(e:Error) {
- };
- _uriScheme = "http://";
- _isSecure = false;
- }
- public static function get isSecure():Boolean{
- if (_uriScheme){
- return (_isSecure);
- };
- checkUriScheme();
- return (_isSecure);
- }
- public static function get uriScheme():String{
- if (_uriScheme){
- return (_uriScheme);
- };
- checkUriScheme();
- return (_uriScheme);
- }
- public static function loadValue(_arg1:String):String{
- return (zopSO.data[_arg1]);
- }
- public static function saveValue(_arg1:String, _arg2):void{
- zopSO.data[_arg1] = _arg2;
- zopSO.flush();
- }
- public static function clear():void{
- zopSO.clear();
- }
- public static function get accountKey():String{
- if (!_accountKey){
- try {
- _accountKey = ((ExternalInterface.call("eval", "__$$__meshim__Config.accountKey")) || (DEFAULT_ACCOUNT_KEY));
- } catch(e:Error) {
- _accountKey = "";
- };
- };
- return (_accountKey);
- }
- public static function get secretKey():String{
- if (_secretKey){
- return (_secretKey);
- };
- _secretKey = loadValue("secretKey");
- if (((!(_secretKey)) || (!(_secretKey.match(/[a-zA-Z0-9]{40}/))))){
- _secretKey = SHA1.hash((("fuck adobe" + Math.random()) + new Date().getTime()));
- traceTime(("Creating secret >> " + _secretKey));
- saveValue("secretKey", _secretKey);
- };
- return (_secretKey);
- }
- public static function get machineID():String{
- return (loadValue("machineID"));
- }
- public static function get sessionID():String{
- return (loadValue(("sessionID_" + accountKey)));
- }
- public static function get locationHost():String{
- var _local1:String;
- var _local2:String;
- var _local3:String;
- var _local4:Array;
- try {
- if (_locationHost){
- return (_locationHost);
- };
- _local1 = ExternalInterface.call("eval", "location.host");
- _local2 = ExternalInterface.call("eval", "location.protocol");
- _local3 = ExternalInterface.call("eval", "location.pathname");
- _local4 = _local3.match(new RegExp("/.+/"));
- _local3 = ((((_local4) && (_local4.length))) ? _local4[0].substr(0, (_local4[0].length - 1)) : "");
- if (((((_local1) && (_local1.length))) && (!((_local2.toLowerCase() == "file:"))))){
- return ((_locationHost = (((_local2 + "//") + _local1) + _local3)));
- };
- } catch(e:Error) {
- };
- return ((_locationHost = "http://dashboard.zopim.com"));
- }
- public static function get pageUrl():String{
- try {
- return (ExternalInterface.call("eval", "location.href"));
- } catch(e:Error) {
- };
- return ("");
- }
- public static function get referrer():String{
- try {
- return (ExternalInterface.call("eval", "document.referrer"));
- } catch(e:Error) {
- };
- return ("");
- }
- public static function get tabIdentifier():String{
- if (!_tabIdentifier){
- try {
- _tabIdentifier = ExternalInterface.call("eval", "window.name");
- if (!_tabIdentifier){
- _tabIdentifier = ("_flash_" + SHA1.hash((("fuck adobe" + Math.random()) + new Date().getTime())));
- ExternalInterface.call("eval", (("window.name = \"" + _tabIdentifier) + "\""));
- };
- } catch(e:Error) {
- _tabIdentifier = ("_flash_" + SHA1.hash((("fuck adobe" + Math.random()) + new Date().getTime())));
- };
- };
- return (_tabIdentifier);
- }
- public static function get ua():String{
- if (_ua){
- return (_ua);
- };
- try {
- _ua = ((ExternalInterface.call("eval", "navigator.userAgent")) || (""));
- } catch(e:Error) {
- _ua = "";
- };
- return (_ua);
- }
- public static function get pageTitle():String{
- if (_pageTitle){
- return (_pageTitle);
- };
- try {
- _pageTitle = ((ExternalInterface.call("eval", "document.title")) || (""));
- } catch(e:Error) {
- _pageTitle = "";
- };
- return (_pageTitle);
- }
- public static function update(_arg1:Object):void{
- var _local2:String;
- for (_local2 in _arg1) {
- if ((((_local2 in _MAP)) && ((_arg1[_local2] is _MAP[_local2])))){
- saveValue(_local2, _arg1[_local2]);
- traceTime(((("Saved " + _local2) + "-> ") + _arg1[_local2]));
- };
- };
- }
- public static function traceTime(_arg1):void{
- var _local2:String;
- if (DEBUG){
- _start = (("\n******** " + new Date().toUTCString()) + " ********");
- _local2 = new String(_arg1);
- logs = logs.concat(_start, _local2.split(/[\r\n]/g), _end);
- if (logs.length > MAX_LINES){
- logs.splice(MAX_LINES, (logs.length - MAX_LINES));
- };
- };
- }
- }
- }//package zopim
- package zopim {
- import flash.events.*;
- import zopim.events.*;
- import flash.utils.*;
- import flash.net.*;
- import com.adobe.serialization.json.*;
- import flash.external.*;
- public class HTTPSocket extends EventDispatcher {
- private static const CROSSDOMAIN_FILE:String = "crossdomain.xml";
- private static const TYPES_WHICH_REQUIRES_ERROR_EVENTS_TO_BE_FIRED:Object = {
- reattach:true,
- login:true,
- register:true,
- poll:true,
- ping:true
- };
- private static var _httpGenericUrl:String;
- private static var _httpServicesUrl:String;
- private static var _pollingUrl:String;
- private static var _sendURL:String;
- private static var _registerUrl:String;
- public static var shortPollingDelay:uint = 3000;
- public static var longPollingDelay:uint = 500;
- public static var longPollingDuration:uint = 0;
- private static var POLL_TIMEOUT:uint = 55000;
- public static var pollingUrl:String;
- public static var sendURL:String;
- private var _host:String;
- private var ak:String;
- private var shortPoll:Boolean;
- public var evt:uint = 0;
- private var pollingConnection:ZURLLoader;
- private var zSocket:ZSocket;
- public var sid:String;
- private var pollTimeoutId:uint = 0;
- private var requestsBuffer:Array;
- public function HTTPSocket(_arg1:String=""){
- var host:String = _arg1;
- requestsBuffer = [];
- super();
- this.host = ((host) || (ZConfig.zSocketHost));
- ak = ZConfig.accountKey;
- try {
- shortPoll = ExternalInterface.call(((((((("function(){" + "var ua = navigator.userAgent.toLowerCase(), ") + "isIE = ua.indexOf('msie') > -1, ") + "isIE8 = ua.indexOf('msie 8') > -1,") + "isIE7 = ua.indexOf('msie 7') > -1 && !isIE8,") + "isIE6 = ua.indexOf('msie 6') > -1 && !isIE8 && !isIE7;") + "return isIE6 || isIE7;") + "}"));
- } catch(e:Error) {
- shortPoll = false;
- };
- }
- public static function get httpGenericUrl():String{
- if (!_httpGenericUrl){
- _httpGenericUrl = (((ZConfig.uriScheme + "www.") + ZConfig.baseDomain) + "/");
- };
- return (_httpGenericUrl);
- }
- public static function get httpServicesUrl():String{
- if (!_httpServicesUrl){
- _httpServicesUrl = (((ZConfig.uriScheme + "init.") + ZConfig.baseDomain) + "/");
- };
- return (_httpServicesUrl);
- }
- public static function get registerUrl():String{
- if (!_registerUrl){
- _registerUrl = (((ZConfig.uriScheme + "init.") + ZConfig.baseDomain) + "/register");
- };
- return (_registerUrl);
- }
- public static function sendJson(_arg1:String, _arg2:Object, _arg3:String="POST", _arg4:Function=null):ZURLLoader{
- var _local5:URLRequest = ZURLLoader.getURLRequest(_arg1, _arg3, _arg2);
- return (new ZURLLoader(_local5, false, _arg4));
- }
- public function set host(_arg1:String):void{
- _host = _arg1;
- pollingUrl = ((ZConfig.uriScheme + _host) + "/poll");
- sendURL = ((ZConfig.uriScheme + _host) + "/send");
- }
- public function get host():String{
- return (_host);
- }
- private function onURLLoaderErrorEvent(_arg1:Event):void{
- var _local2:ZURLLoader = ZURLLoader(_arg1.target);
- if (_local2 == pollingConnection){
- pollingConnection = null;
- };
- ZConfig.traceTime(("onURLLoaderErrorEvent: " + _arg1));
- dispatchConnectionError({
- __status:"failed",
- type:_arg1.type
- });
- _local2.removeAllListeners();
- }
- private function configureListeners(_arg1:ZURLLoader):void{
- _arg1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onURLLoaderErrorEvent, false, 0, true);
- _arg1.addEventListener(IOErrorEvent.IO_ERROR, onURLLoaderErrorEvent, false, 0, true);
- _arg1.addEventListener(HTTPSocketEvent.JSON_PARSE_ERROR, onURLLoaderErrorEvent, false, 0, true);
- }
- public function send(_arg1:String, _arg2:Object, _arg3:String="POST"):void{
- if (requestsBuffer.length){
- requestsBuffer.push(_arg2);
- } else {
- requestsBuffer.push(_arg2);
- setTimeout(_send, 50, _arg1, requestsBuffer, _arg3);
- };
- }
- private function _send(_arg1:String, _arg2:Object, _arg3:String="POST"){
- var callback:* = null;
- var type:* = _arg1;
- var obj:* = _arg2;
- var method:String = _arg3;
- callback = function (_arg1:Object):void{
- var _local2:Object;
- if ((_arg1 is Array)){
- for each (_local2 in _arg1) {
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.HTTPSOCKET_DATA_READY, _local2));
- };
- } else {
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.HTTPSOCKET_DATA_READY, _arg1));
- };
- };
- var urlLoader:* = sendJson(sendURL, ((sid) ? {
- sid:sid,
- msg:JSON.encode(obj)
- } : {msg:JSON.encode(obj)}), method, callback);
- configureListeners(urlLoader);
- requestsBuffer.splice(0, requestsBuffer.length);
- }
- public function sendRegister(_arg1:Object, _arg2:Function=null, _arg3:Function=null):void{
- var _local4:ZURLLoader = sendJson(registerUrl, _arg1, URLRequestMethod.POST, _arg2);
- _local4.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _arg3, false, 0, true);
- _local4.addEventListener(IOErrorEvent.IO_ERROR, _arg3, false, 0, true);
- _local4.addEventListener(HTTPSocketEvent.JSON_PARSE_ERROR, _arg3, false, 0, true);
- }
- private function dispatchConnectionError(_arg1:Object=null):void{
- stopPoll();
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.HTTPSOCKET_ERROR, _arg1));
- }
- public function startPoll(_arg1:Object=null):void{
- _arg1 = ((_arg1) || ({}));
- ZConfig.traceTime(("start polling @ " + host));
- if (isPolling){
- return;
- };
- pollingConnection = new ZURLLoader(null, true, polled);
- configureListeners(pollingConnection);
- evt = ((evt) || (_arg1.evt));
- sid = ((_arg1.sid) || (sid));
- poll();
- }
- public function stopPoll():void{
- if (!isPolling){
- return;
- };
- ZConfig.traceTime("stop polling");
- clearTimeout(pollTimeoutId);
- pollingConnection.close();
- pollingConnection.removeAllListeners();
- pollingConnection = null;
- sid = null;
- evt = 0;
- }
- private function onPollTimeout():void{
- dispatchConnectionError({
- __status:"failed",
- type:"poll_timeout"
- });
- }
- public function get isPolling():Boolean{
- return ((pollingConnection is ZURLLoader));
- }
- private function poll():void{
- if (!isPolling){
- return;
- };
- ZConfig.traceTime("poll!");
- var _local1:URLRequest = ZURLLoader.getURLRequest(pollingUrl, URLRequestMethod.POST, ((shortPoll) ? {
- evt:evt,
- ak:ak,
- sid:sid,
- short:1
- } : ((longPollingDuration) ? {
- evt:evt,
- ak:ak,
- sid:sid,
- long:longPollingDuration
- } : {
- evt:evt,
- ak:ak,
- sid:sid
- })));
- pollingConnection.load(_local1);
- clearTimeout(pollTimeoutId);
- pollTimeoutId = setTimeout(onPollTimeout, POLL_TIMEOUT);
- }
- private function polled(_arg1:Object):void{
- var i:* = 0;
- var events:* = _arg1;
- clearTimeout(pollTimeoutId);
- ZConfig.traceTime("polled");
- try {
- if (events.__status != "ok"){
- dispatchConnectionError(events);
- return;
- };
- if (events.evt){
- evt = events.evt;
- };
- if (((events.events) && (events.events.length))){
- i = 0;
- while (i < events.events.length) {
- ZConfig.traceTime(("dispatching :" + JSON.encode(events.events[i])));
- dispatchEvent(new HTTPSocketEvent(HTTPSocketEvent.HTTPSOCKET_DATA_READY, events.events[i]));
- i = (i + 1);
- };
- };
- } catch(error:Error) {
- ZConfig.traceTime("bad json");
- };
- setTimeout(poll, ((shortPoll) ? shortPollingDelay : longPollingDelay));
- }
- }
- }//package zopim
- package zopim {
- import flash.events.*;
- import zopim.net.*;
- import zopim.events.*;
- import flash.utils.*;
- import flash.net.*;
- import flash.system.*;
- import flash.errors.*;
- public class ZSocket extends EventDispatcher {
- protected static const KEEP_ALIVE_PERIOD:int = 240000;
- protected static const SECURITY_POLICY_PORT:int = 843;
- public static const NO_CONNECTION:uint = 0;
- public static const SOCKET_CONNECTION:uint = 1;
- public static const POLLING_CONNECTION:uint = 2;
- public static const ZSOCKET_PORT:uint = 20913;
- public const DEFAULT_RECONNECT_DELAY:uint = 1000;
- protected const MAX_RECONNECT_DELAY:uint = 60000;
- public var sid:String;
- protected var socket:_ZSocket;
- protected var httpSocket:HTTPSocket;
- protected var _nick:String;
- protected var callbacks:Array;
- protected var messageID:uint;
- protected var keepAliveIntervalId:uint = 0;
- protected var reconnectDelay:uint = 1000;
- private var _host:String;
- public var port:uint = 20913;
- protected var _connectionMode:uint = 0;
- protected var connectTimeoutId:uint = 0;
- public function ZSocket(){
- _host = ZConfig.zSocketHost;
- super();
- callbacks = [];
- messageID = (Math.random() * 10000);
- ZConfig.traceTime(("Sandbox: " + Security.sandboxType));
- httpSocket = new HTTPSocket();
- socket = new _ZSocket();
- }
- public function get connected():Boolean{
- if (connectionMode == POLLING_CONNECTION){
- return (httpSocket.isPolling);
- };
- if (connectionMode == SOCKET_CONNECTION){
- return (socket.connected);
- };
- return (false);
- }
- public function set host(_arg1:String):void{
- _host = (httpSocket.host = _arg1);
- }
- public function get host():String{
- return (_host);
- }
- public function set longPollingDuration(_arg1:uint):void{
- HTTPSocket.longPollingDuration = _arg1;
- }
- public function set shortPollingDelay(_arg1:uint):void{
- HTTPSocket.shortPollingDelay = _arg1;
- }
- public function connect(_arg1:String="", _arg2:uint=0):void{
- if (this.connected){
- return;
- };
- if (_arg1){
- this.host = _arg1;
- };
- if (_arg2){
- this.port = _arg2;
- };
- if (ZConfig.isSecure){
- httpFallback();
- } else {
- configureListeners();
- socket.connect(this.host, this.port);
- setTimeout(httpFallback, 5000);
- };
- }
- public function send(_arg1:String, _arg2:Object=null, _arg3:Function=null):void{
- if (((((((!((_arg1 == "login"))) && (!((_arg1 == "register"))))) && (!((_arg1 == "reattach"))))) && (!(connected)))){
- ZConfig.traceTime("Send failed > ZSocket not connected");
- return;
- };
- if ((_arg3 is Function)){
- callbacks[messageID] = _arg3;
- _arg2["__messageID"] = messageID++;
- };
- _arg2 = ((_arg2) || (new Object()));
- _arg2["__type"] = _arg1;
- if (_connectionMode == SOCKET_CONNECTION){
- socket.send(_arg2);
- } else {
- if (_connectionMode == POLLING_CONNECTION){
- httpSocket.send(_arg1, _arg2, URLRequestMethod.POST);
- };
- };
- }
- public function disconnect():void{
- if (((socket) && (socket.connected))){
- ZConfig.traceTime("Closing socket connection");
- socket.close();
- };
- if (httpSocket.isPolling){
- ZConfig.traceTime("Closing polling connection");
- httpSocket.stopPoll();
- };
- connectionMode = NO_CONNECTION;
- sid = null;
- httpSocket.evt = 0;
- removeHttpSocketEventListeners();
- removeSocketEventListeners();
- clearTimeout(connectTimeoutId);
- }
- protected function keepAlive():void{
- send("ping");
- }
- public function dispatchConnectionError(_arg1:Object=null):void{
- socket.stopReconnecting();
- connectionMode = NO_CONNECTION;
- if (!_arg1){
- _arg1 = {};
- };
- _arg1["__type"] = "connection.error";
- ZConfig.traceTime(_arg1["__type"]);
- dispatchObject(_arg1);
- }
- public function dispatchObject(_arg1:Object):void{
- var _local3:Function;
- var _local4:ZEvent;
- if (!_arg1){
- return;
- };
- var _local2:String = _arg1["__type"];
- if (_local2 == "response"){
- _local3 = callbacks[_arg1["__messageID"]];
- if ((_local3 is Function)){
- _local3(_arg1);
- callbacks[_arg1["__messageID"]] = null;
- };
- } else {
- _local4 = jsonMap.jsonToEvent(_arg1);
- dispatchEvent(_local4);
- };
- }
- public function get nick():String{
- return (_nick);
- }
- protected function set connectionMode(_arg1:uint):void{
- ZConfig.traceTime(("_connectionMode set >> " + (((_arg1 == 0)) ? "NO_CONNECTION" : (((_arg1 == 1)) ? "SOCKET_CONNECTION" : "POLLING_CONNECTION"))));
- _connectionMode = _arg1;
- }
- protected function get connectionMode():uint{
- return (_connectionMode);
- }
- protected function httpFallback():void{
- if (connectionMode != NO_CONNECTION){
- return;
- };
- ZConfig.traceTime("Falling back to HTTP Polling Connection");
- removeHttpSocketEventListeners();
- addHttpSocketEventListeners();
- connectionMode = POLLING_CONNECTION;
- }
- private function removeHttpSocketEventListeners():void{
- httpSocket.removeEventListener(HTTPSocketEvent.HTTPSOCKET_ERROR, onHTTPSocketEvents);
- httpSocket.removeEventListener(HTTPSocketEvent.HTTPSOCKET_DATA_READY, onHTTPSocketEvents);
- }
- private function addHttpSocketEventListeners():void{
- httpSocket.addEventListener(HTTPSocketEvent.HTTPSOCKET_ERROR, onHTTPSocketEvents, false, 0, true);
- httpSocket.addEventListener(HTTPSocketEvent.HTTPSOCKET_DATA_READY, onHTTPSocketEvents, false, 0, true);
- }
- private function onHTTPSocketEvents(_arg1:HTTPSocketEvent):void{
- if (_arg1.type == HTTPSocketEvent.HTTPSOCKET_DATA_READY){
- dispatchObject(_arg1.response);
- } else {
- if (_arg1.type == HTTPSocketEvent.HTTPSOCKET_ERROR){
- if (connectionMode == POLLING_CONNECTION){
- dispatchConnectionError(_arg1.response);
- };
- };
- };
- }
- protected function configureListeners():void{
- removeSocketEventListeners();
- addSocketEventListeners();
- }
- private function removeSocketEventListeners():void{
- socket.removeEventListener(Event.CONNECT, onConnect);
- socket.removeEventListener(ZSocketEvent.SOCKET_ERROR, onSocketEvents);
- socket.removeEventListener(ZSocketEvent.SOCKET_DATA_READY, onSocketEvents);
- removeEventListener(ZErrorConnection.TYPE, onErrorConnection);
- }
- private function addSocketEventListeners():void{
- socket.addEventListener(Event.CONNECT, onConnect, false, 0, true);
- socket.addEventListener(ZSocketEvent.SOCKET_ERROR, onSocketEvents, false, 0, true);
- socket.addEventListener(ZSocketEvent.SOCKET_DATA_READY, onSocketEvents, false, 0, true);
- addEventListener(ZErrorConnection.TYPE, onErrorConnection, false, 0, true);
- }
- private function onSocketEvents(_arg1:ZSocketEvent):void{
- if (_arg1.type == ZSocketEvent.SOCKET_DATA_READY){
- dispatchObject(_arg1.response);
- } else {
- if (_arg1.type == ZSocketEvent.SOCKET_ERROR){
- if (connectionMode == SOCKET_CONNECTION){
- dispatchConnectionError(_arg1.response);
- } else {
- if (reconnectDelay == DEFAULT_RECONNECT_DELAY){
- httpFallback();
- };
- };
- };
- };
- }
- protected function onConnect(_arg1:Event):void{
- ZConfig.traceTime(("Event.CONNECT >> " + _arg1.toString()));
- connectionMode = SOCKET_CONNECTION;
- httpSocket.stopPoll();
- }
- protected function onErrorConnection(_arg1:ZErrorConnection=null):void{
- clearTimeout(connectTimeoutId);
- ZConfig.traceTime((("ZSocket reconnecting in " + (reconnectDelay / 1000)) + "secs."));
- connectTimeoutId = setTimeout(connect, reconnectDelay);
- reconnectDelay = (reconnectDelay + (((reconnectDelay < MAX_RECONNECT_DELAY)) ? reconnectDelay : 0));
- }
- public function reattach():void{
- if (sid){
- send("reattach", {sid:sid}, onReattach);
- };
- }
- protected function startKeepAlive():void{
- clearTimeout(keepAliveIntervalId);
- keepAliveIntervalId = setInterval(keepAlive, KEEP_ALIVE_PERIOD);
- }
- protected function stopKeepAlive():void{
- }
- protected function startPoll(_arg1:Object):void{
- var _local2:Object;
- if (connectionMode == POLLING_CONNECTION){
- _local2 = {sid:((_arg1["sid"]) || (sid))};
- if (("evt" in _arg1)){
- _local2["evt"] = _arg1.evt;
- };
- httpSocket.startPoll(_local2);
- socket.reconnect();
- };
- }
- protected function onReattach(_arg1:Object):void{
- if (_arg1.__status == "ok"){
- startPoll(_arg1);
- startKeepAlive();
- reconnectDelay = DEFAULT_RECONNECT_DELAY;
- } else {
- sid = null;
- dispatchConnectionError(_arg1);
- };
- }
- }
- }//package zopim
- package zopim.events {
- import flash.events.*;
- public class HTTPSocketEvent extends Event {
- public static const HTTPSOCKET_ERROR:String = "httpsocket_error";
- public static const HTTPSOCKET_DATA_READY:String = "httpsocket_data_ready";
- public static const JSON_PARSE_ERROR:String = "json_parse_error";
- public var response:Object;
- public function HTTPSocketEvent(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Boolean=false){
- super(_arg1, _arg3, _arg4);
- this.response = _arg2;
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZErrorConnection extends ZError {
- public static const TYPE:String = (ZError.TYPE + ".connection");
- public function ZErrorConnection(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZConfiguration extends ZEvent {
- public static const TYPE:String = (ZEvent.TYPE + ".config");
- public var meta:String;
- public var machineID:String;
- public var sessionID:String;
- public var displayName:String;
- public function ZConfiguration(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- meta = _arg1["meta"];
- machineID = _arg1["machineID"];
- sessionID = _arg1["sessionID"];
- displayName = _arg1["displayName"];
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZReset extends ZEvent {
- public static const TYPE:String = (ZEvent.TYPE + ".reset");
- public var machineID:String;
- public var nick:String;
- public var name:String;
- public var sid:String;
- public var evt:uint;
- public function ZReset(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- }
- }
- }//package zopim.events
- package zopim.events {
- import flash.events.*;
- public class ZSocketEvent extends Event {
- public static const SOCKET_ERROR:String = "socket_error";
- public static const SOCKET_DATA_READY:String = "socket_data_ready";
- public var response:Object;
- public function ZSocketEvent(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Boolean=false){
- super(_arg1, _arg3, _arg4);
- this.response = _arg2;
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZIdleDisconnect extends ZEvent {
- public static const TYPE:String = (ZEvent.TYPE + ".idle.disconnect");
- public function ZIdleDisconnect(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- }
- }
- }//package zopim.events
- package zopim.events {
- import flash.events.*;
- import mx.events.*;
- public class ZChat extends ZEvent implements IEventDispatcher {
- public static const TYPE:String = (ZEvent.TYPE + ".chat");
- private var _738950403channel:String;
- private var _3381091nick:String;
- private var _1714148973displayName:String;
- private var _55126294timestamp:uint;
- private var _bindingEventDispatcher:EventDispatcher;
- public function ZChat(_arg1:Object, _arg2:String=null){
- _bindingEventDispatcher = new EventDispatcher(IEventDispatcher(this));
- super(_arg1, ((_arg2) || (TYPE)));
- channel = ((_arg1["__channel"]) || (_arg1["channel"]));
- nick = ((_arg1["nick"]) || (_arg1["__nick"]));
- displayName = ((_arg1["displayName"]) || (_arg1["name"]));
- }
- public function get channel():String{
- return (this._738950403channel);
- }
- public function set channel(_arg1:String):void{
- var _local2:Object = this._738950403channel;
- if (_local2 !== _arg1){
- this._738950403channel = _arg1;
- if (this.hasEventListener("propertyChange")){
- this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "channel", _local2, _arg1));
- };
- };
- }
- public function get nick():String{
- return (this._3381091nick);
- }
- public function set nick(_arg1:String):void{
- var _local2:Object = this._3381091nick;
- if (_local2 !== _arg1){
- this._3381091nick = _arg1;
- if (this.hasEventListener("propertyChange")){
- this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "nick", _local2, _arg1));
- };
- };
- }
- public function get displayName():String{
- return (this._1714148973displayName);
- }
- public function set displayName(_arg1:String):void{
- var _local2:Object = this._1714148973displayName;
- if (_local2 !== _arg1){
- this._1714148973displayName = _arg1;
- if (this.hasEventListener("propertyChange")){
- this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "displayName", _local2, _arg1));
- };
- };
- }
- public function get timestamp():uint{
- return (this._55126294timestamp);
- }
- public function set timestamp(_arg1:uint):void{
- var _local2:Object = this._55126294timestamp;
- if (_local2 !== _arg1){
- this._55126294timestamp = _arg1;
- if (this.hasEventListener("propertyChange")){
- this.dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "timestamp", _local2, _arg1));
- };
- };
- }
- public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
- _bindingEventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
- }
- public function dispatchEvent(_arg1:Event):Boolean{
- return (_bindingEventDispatcher.dispatchEvent(_arg1));
- }
- public function hasEventListener(_arg1:String):Boolean{
- return (_bindingEventDispatcher.hasEventListener(_arg1));
- }
- public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
- _bindingEventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
- }
- public function willTrigger(_arg1:String):Boolean{
- return (_bindingEventDispatcher.willTrigger(_arg1));
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZError extends ZEvent {
- public static const TYPE:String = (ZEvent.TYPE + ".error");
- public function ZError(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- }
- }
- }//package zopim.events
- package zopim.events {
- public class ZBanned extends ZEvent {
- public static const TYPE:String = (ZEvent.TYPE + ".banned");
- public function ZBanned(_arg1:Object, _arg2:String=null){
- super(_arg1, ((_arg2) || (TYPE)));
- }
- }
- }//package zopim.events
- package zopim.events {
- import flash.events.*;
- import mx.utils.*;
- public class ZEvent extends Event {
- public static const TYPE:String = "zopim";
- public static const excludes:Array = ObjectUtil.getClassInfo(Event).properties.concat(["prototype", "json"]);
- public var json:Object;
- protected var _type:String;
- public function ZEvent(_arg1:Object, _arg2:String=null){
- var _local6:String;
- var _local7:String;
- super(((_arg2) || (TYPE)), false, false);
- _type = ((_arg2) || (TYPE));
- json = _arg1;
- var _local3:Array = ObjectUtil.getClassInfo(this, excludes).properties;
- var _local4:Class = this["constructor"];
- var _local5:Object = ((("OVERRIDES" in _local4)) ? _local4.OVERRIDES : {});
- for each (_local6 in _local3) {
- _local7 = ((_local5[_local6]) || (_local6));
- if (_arg1.hasOwnProperty(_local7)){
- this[_local6] = _arg1[_local7];
- } else {
- this[_local6] = null;
- };
- };
- }
- override public function clone():Event{
- return (new ZEvent(((json) || ({})), ((_type) || (TYPE))));
- }
- }
- }//package zopim.events
- package zopim.events {
- public class jsonMap {
- private static var _map:Object = {
- connection.error:ZErrorConnection,
- chat:ZChat
- };
- public function jsonMap():void{
- throw (new Error("This is a static class"));
- }
- public static function map(_arg1:String):Class{
- return (_map[_arg1]);
- }
- public static function addMapping(_arg1:String, _arg2:Class):void{
- _map[_arg1] = _arg2;
- }
- public static function jsonToEvent(_arg1:Object):ZEvent{
- var _local2:Class = _map[_arg1.__type];
- if (!_local2){
- _local2 = ZEvent;
- };
- return (new _local2(_arg1));
- }
- }
- }//package zopim.events
- package zopim.utils {
- import flash.events.*;
- import flash.media.*;
- import flash.net.*;
- import flash.errors.*;
- public class SoundAlert {
- private static var url:String = "https://zopim.com/message.mp3";
- public static var SNAPSHOT:String = "https://zopim.com/camera.wav";
- private static var soundFactory:Sound;
- private static var sounds:Object = {};
- public function SoundAlert(){
- throw (new Error("Static class"));
- }
- private static function createSound(_arg1:String):Sound{
- var _local2:URLRequest = new URLRequest(_arg1);
- var _local3:Sound = new Sound();
- _local3.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
- _local3.addEventListener(Event.ID3, id3Handler, false, 0, true);
- _local3.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
- _local3.load(_local2);
- return (_local3);
- }
- public static function init():void{
- soundFactory = createSound(url);
- }
- public static function play(_arg1:String=null, _arg2:Number=-1, _arg3:int=0):SoundChannel{
- var _local4:Sound;
- var _local5:SoundChannel;
- var _local6:SoundTransform;
- try {
- if (!soundFactory){
- init();
- };
- if (((_arg1) && (_arg1.length))){
- if (!sounds[_arg1]){
- sounds[_arg1] = createSound(_arg1);
- };
- _local4 = Sound(sounds[_arg1]);
- } else {
- _local4 = soundFactory;
- };
- _local5 = _local4.play(0, _arg3);
- if (_arg2 >= 0){
- _local6 = _local5.soundTransform;
- _local6.volume = _arg2;
- _local5.soundTransform = _local6;
- };
- return (_local5);
- } catch(e:Error) {
- };
- return (null);
- }
- private static function completeHandler(_arg1:Event):void{
- }
- private static function id3Handler(_arg1:Event):void{
- }
- private static function ioErrorHandler(_arg1:Event):void{
- }
- }
- }//package zopim.utils
- package zopim.net {
- import flash.events.*;
- import zopim.*;
- import flash.net.*;
- import flash.system.*;
- public class ZSharedObject {
- private static const EXPIRE:String = "_session_object_expire";
- private static var _isAllowed:Boolean;
- public var expiryDuration:uint;
- private var so:SharedObject;
- public function ZSharedObject(_arg1:String, _arg2:String=null, _arg3:uint=0, _arg4:Boolean=false){
- so = SharedObject.getLocal(_arg1, _arg2, _arg4);
- so.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncErrorEvent, false, 0, true);
- so.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusEvent, false, 0, true);
- if (_arg3){
- this.expiryDuration = _arg3;
- };
- }
- public static function get isAllowed():Boolean{
- if ((_isAllowed is Boolean)){
- return (_isAllowed);
- };
- var _local1:SharedObject = SharedObject.getLocal("zTest");
- if (!_local1.flush(1)){
- ZConfig.traceTime("Your system does not allow SharedObject");
- _isAllowed = false;
- } else {
- ZConfig.traceTime("SharedObject not allowed, prompting user to enable it");
- Security.showSettings(SecurityPanel.LOCAL_STORAGE);
- _isAllowed = true;
- };
- return (_isAllowed);
- }
- public function flush(_arg1:int=0):void{
- var minDiskSpace:int = _arg1;
- if (expiryDuration){
- so.data[EXPIRE] = new Date((new Date().getTime() + expiryDuration));
- };
- try {
- if (!so.flush(minDiskSpace)){
- printErrorMessage();
- };
- } catch(e:Error) {
- printErrorMessage();
- };
- }
- public function clear():void{
- so.clear();
- }
- public function get data():Object{
- var _local1:Date;
- var _local2:String;
- if (so.data[EXPIRE]){
- _local1 = so.data[EXPIRE];
- if (((_local1) && ((_local1 < new Date())))){
- for (_local2 in so.data) {
- delete so.data[_local2];
- };
- so.flush();
- };
- };
- return (so.data);
- }
- private function onAsyncErrorEvent(_arg1:AsyncErrorEvent):void{
- }
- private function onNetStatusEvent(_arg1:NetStatusEvent):void{
- }
- private function printErrorMessage():void{
- }
- }
- }//package zopim.net
- package zopim.net {
- import flash.events.*;
- import zopim.*;
- import flash.utils.*;
- import flash.net.*;
- public class ZLocalConnection extends LocalConnection {
- private static const LC_KEY:String = "_localconnections";
- private static var _localConnections:Array = [];
- private static var _lcArray:Array;
- private static var so:ZSharedObject;
- private var _connectionName:String;
- public function ZLocalConnection(){
- allowDomain("*");
- addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError, false, 0, true);
- addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError, false, 0, true);
- addEventListener(ErrorEvent.ERROR, onErrorEvent, false, 0, true);
- addEventListener(StatusEvent.STATUS, onStatusEvent, false, 0, true);
- }
- public static function get lcArray():Array{
- var _local1:String;
- if (_lcArray){
- return (_lcArray);
- };
- if (!so){
- return (null);
- };
- _lcArray = so.data[LC_KEY];
- if (!_lcArray){
- _lcArray = (so.data[LC_KEY] = new Array());
- so.flush();
- };
- for each (_local1 in _lcArray) {
- _localConnections.push(new ZSendingLocalConnection(_local1));
- };
- return (_lcArray);
- }
- public static function init(_arg1:String):void{
- if ((so is ZSharedObject)){
- return;
- };
- so = new ZSharedObject(_arg1, "/");
- }
- public static function removeLocalConnection(_arg1:String):void{
- if (!so){
- return;
- };
- var _local2:int = lcArray.indexOf(_arg1);
- if (_local2 == -1){
- return;
- };
- lcArray.splice(_local2, 1);
- _localConnections.splice(_local2, 1);
- so.flush();
- }
- public static function addLocalConnection(_arg1:String):void{
- if (((!(so)) || (!((lcArray.indexOf(_arg1) == -1))))){
- return;
- };
- lcArray.push(_arg1);
- _localConnections.push(new ZSendingLocalConnection(_arg1));
- so.flush();
- }
- public function get connectionName():String{
- return (_connectionName);
- }
- private function onAsyncError(_arg1:AsyncErrorEvent):void{
- removeLocalConnection(connectionName);
- }
- private function onStatusEvent(_arg1:StatusEvent):void{
- if (_arg1.level == "error"){
- removeLocalConnection(connectionName);
- };
- }
- private function onErrorEvent(_arg1:ErrorEvent):void{
- }
- private function onSecurityError(_arg1:SecurityErrorEvent):void{
- }
- override public function set client(_arg1:Object):void{
- var _local3:Object;
- var _local4:XMLList;
- var _local5:XML;
- var _local2:XML = describeType(_arg1);
- if (_local2.@isDynamic == true){
- _local3 = _arg1;
- } else {
- _local3 = new Object();
- _local4 = _local2.method;
- for each (_local5 in _local4) {
- _local3[_local5.@name] = _arg1[_local5.@name];
- };
- };
- _local3["addLocalConnection"] = addLocalConnection;
- _local3["removeLocalConnection"] = removeLocalConnection;
- super.client = _local3;
- }
- override public function connect(_arg1:String):void{
- var _connectionName:* = _arg1;
- try {
- super.connect(_connectionName);
- } catch(e:Error) {
- if ((e is TypeError)){
- } else {
- if ((e is ArgumentError)){
- };
- };
- return;
- };
- this._connectionName = _connectionName;
- addLocalConnection(_connectionName);
- sendToAll(true, "addLocalConnection", _connectionName);
- }
- override public function close():void{
- try {
- super.close();
- } catch(e:ArgumentError) {
- ZConfig.traceTime("The LocalConnection instance is not connected, so it cannot be closed");
- };
- removeLocalConnection(connectionName);
- sendToAll(false, "removeLocalConnection", connectionName);
- _connectionName = null;
- }
- public function sendToAll(_arg1:Boolean, _arg2:String, ... _args):void{
- var _local6:String;
- var _local4:Array = ((_args) || ([]));
- if (!lcArray){
- if (_arg1){
- return;
- };
- _local4.unshift(connectionName, _arg2);
- send.apply(this, _local4);
- return;
- };
- var _local5:uint;
- while (_local5 < lcArray.length) {
- _local6 = lcArray[_local5];
- if ((((connectionName == _local6)) && (_arg1))){
- } else {
- _local4.unshift(_local6, _arg2);
- (_localConnections[_local5] as ZSendingLocalConnection).send.apply(this, _local4);
- _local4.splice(0, 2);
- };
- _local5++;
- };
- }
- }
- }//package zopim.net
- import flash.events.*;
- import flash.net.*;
- class ZSendingLocalConnection extends LocalConnection {
- public var connectionName:String = "";
- public function ZSendingLocalConnection(_arg1:String){
- if (_arg1){
- connectionName = _arg1;
- };
- super();
- addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError, false, 0, true);
- addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError, false, 0, true);
- addEventListener(ErrorEvent.ERROR, onErrorEvent, false, 0, true);
- addEventListener(StatusEvent.STATUS, onStatusEvent, false, 0, true);
- }
- override public function send(_arg1:String, _arg2:String, ... _args):void{
- var name:* = _arg1;
- var methodName:* = _arg2;
- var parameters:* = _args;
- if (connectionName != name){
- return;
- };
- var argsArray:* = ((parameters) || (new Array()));
- argsArray.unshift(connectionName, methodName);
- try {
- super.send.apply(this, argsArray);
- } catch(e:Error) {
- if ((e is TypeError)){
- } else {
- if ((e is ArgumentError)){
- };
- };
- ZLocalConnection.removeLocalConnection(connectionName);
- };
- }
- private function onAsyncError(_arg1:AsyncErrorEvent):void{
- ZLocalConnection.removeLocalConnection(connectionName);
- }
- private function onStatusEvent(_arg1:StatusEvent):void{
- if (_arg1.level == "error"){
- ZLocalConnection.removeLocalConnection(connectionName);
- };
- }
- private function onErrorEvent(_arg1:ErrorEvent):void{
- }
- private function onSecurityError(_arg1:SecurityErrorEvent):void{
- }
- }
- package zopim.net {
- import flash.events.*;
- import zopim.events.*;
- import zopim.*;
- import flash.utils.*;
- import flash.net.*;
- import com.adobe.serialization.json.*;
- import flash.errors.*;
- public class _ZSocket extends Socket {
- private const DEFAULT_RECONNECT_DELAY:uint = 1000;
- private const MAX_RECONNECT_DELAY:uint = 256000;
- private var response:String = "";
- private var host:String = "";
- private var port:int = 0;
- private var reconnectDelay:uint = 1000;
- private var reconnectTimeoutId:uint = 0;
- protected var reconnecting:Boolean = false;
- public function _ZSocket(_arg1:String=null, _arg2:int=0){
- super(_arg1, _arg2);
- addEventListeners();
- }
- override public function connect(_arg1:String, _arg2:int):void{
- clearReconnectTimeout();
- if (((((((ZConfig.isSecure) || (connected))) || (!(_arg1)))) || (!(_arg2)))){
- return;
- };
- ZConfig.traceTime(((("Connecting to " + _arg1) + ":") + _arg2));
- super.connect(_arg1, _arg2);
- this.host = _arg1;
- this.port = _arg2;
- }
- private function addEventListeners():void{
- addEventListener(Event.CLOSE, onError, false, 0, true);
- addEventListener(IOErrorEvent.IO_ERROR, onError, false, 0, true);
- addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError, false, 0, true);
- addEventListener(Event.CONNECT, stopReconnecting, false, 0, true);
- addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler, false, 0, true);
- }
- public function send(_arg1:Object):void{
- var obj:* = _arg1;
- var str:* = JSON.encode(obj);
- str = (str + "\r\n");
- try {
- ZConfig.traceTime(("socket sent: " + str));
- writeUTFBytes(str);
- flush();
- } catch(e:IOError) {
- ZConfig.traceTime(e);
- };
- }
- protected function onError(_arg1:Event):void{
- ZConfig.traceTime(("_ZSocket error: " + _arg1.type));
- dispatchEvent(new ZSocketEvent(ZSocketEvent.SOCKET_ERROR, {
- __status:"failed",
- type:_arg1.type
- }));
- if (reconnecting){
- _reconnect();
- };
- }
- protected function socketDataHandler(_arg1:ProgressEvent):void{
- var line:* = null;
- var json:* = null;
- var event:* = _arg1;
- var str:* = readUTFBytes(bytesAvailable);
- response = (response + str);
- var lines:* = response.split("\r\n");
- response = lines.pop();
- try {
- while (lines.length > 0) {
- line = lines.shift();
- ZConfig.traceTime(("dispatching : " + line));
- json = JSON.decode(line);
- dispatchEvent(new ZSocketEvent(ZSocketEvent.SOCKET_DATA_READY, json));
- };
- } catch(e:Error) {
- ZConfig.traceTime(("bad json" + e));
- };
- }
- private function clearReconnectTimeout():void{
- clearTimeout(reconnectTimeoutId);
- reconnectTimeoutId = 0;
- }
- public function stopReconnecting(_arg1:Event=null):void{
- clearReconnectTimeout();
- reconnectDelay = DEFAULT_RECONNECT_DELAY;
- reconnecting = false;
- }
- public function reconnect():void{
- reconnectDelay = DEFAULT_RECONNECT_DELAY;
- reconnecting = true;
- _reconnect();
- }
- private function _reconnect():void{
- clearTimeout(reconnectTimeoutId);
- ZConfig.traceTime((("_ZSocket reconnecting in " + (reconnectDelay / 1000)) + "secs"));
- reconnectTimeoutId = setTimeout(connect, reconnectDelay, host, port);
- reconnectDelay = (reconnectDelay + (((reconnectDelay < MAX_RECONNECT_DELAY)) ? reconnectDelay : 0));
- }
- }
- }//package zopim.net
- package {
- import zopim.net.*;
- import flash.utils.*;
- import flash.external.*;
- public class SessionObject {
- private static const _jsSessionObject:String = "__$$__meshim__SessionInfo";
- private static const VOLATILE_SO:String = "Volatile_SO";
- private static const SESSION_SO:String = "Session_SO";
- private static const VOLATILE_EXPIRY_DURATION:uint = 120000;
- private static const DEFAULT_RENEWAL_PERIOD:uint = 30000;
- private static var keys:Object = {
- host:String,
- port:uint,
- channel:String,
- cId:String,
- nick:String,
- displayName:String,
- appearance:Object,
- position:String,
- settings:Object,
- _localConnections:Array,
- banned:Boolean,
- nossl:Boolean
- };
- private static var volatile_keys:Object = {
- unreadMsgs:uint,
- status:String,
- greeting:Object,
- agents:Array,
- cIds:Array,
- showStatusArea:Boolean,
- history:Array,
- _connectionMode:uint,
- windowPosition:Array,
- windowOpened:Boolean,
- sound:Boolean,
- email:String,
- hideBubble:Boolean,
- chatRequestFormDone:Boolean,
- disconnect:Boolean
- };
- private var persistentSO:ZSharedObject;
- private var volatileSO:ZSharedObject;
- private var localConnection:ZLocalConnection;
- private var tabIdentifier:String;
- private var accountKey:String;
- public function SessionObject(_arg1:String, _arg2:ZLocalConnection){
- this.accountKey = _arg1;
- this.tabIdentifier = tabIdentifier;
- init();
- if (((persistentSO) || (volatileSO))){
- setJSSessionObject();
- };
- this.localConnection = _arg2;
- ExternalInterface.addCallback("saveSessionInfo", saveSOfromJS);
- ExternalInterface.addCallback("getSessionInfo", setJSSessionObject);
- ExternalInterface.addCallback("saveVariable", updateLocalConnections);
- setInterval(saveSOfromJS, DEFAULT_RENEWAL_PERIOD);
- }
- private function getCachedData(_arg1:Boolean=true):Object{
- var _local3:String;
- var _local2:Object = {};
- for (_local3 in volatileSO.data) {
- if (((!(_arg1)) && ((_local3.charAt(0) == "_")))){
- } else {
- _local2[_local3] = volatileSO.data[_local3];
- };
- };
- for (_local3 in persistentSO.data) {
- if (((!(_arg1)) && ((_local3.charAt(0) == "_")))){
- } else {
- _local2[_local3] = persistentSO.data[_local3];
- };
- };
- return (_local2);
- }
- public function get jsCachedData():Object{
- return (getCachedData(false));
- }
- public function get cachedData():Object{
- return (getCachedData());
- }
- private function saveSOfromJS():void{
- var _local1:Object = ExternalInterface.call("eval", _jsSessionObject);
- saveValues(_local1);
- }
- private function setJSSessionObject(_arg1:Object=null):void{
- _arg1 = ((_arg1) || (jsCachedData));
- ZClientController.encodeCharactersThatLameExternalInterfaceChokesOn(_arg1);
- ExternalInterface.call((_jsSessionObject + ".set"), _arg1);
- }
- public function saveValues(_arg1:Object):void{
- var _local4:String;
- if (!_arg1){
- return;
- };
- var _local2:Boolean;
- var _local3:Boolean;
- for (_local4 in _arg1) {
- if (((!((keys[_local4] == null))) && ((_arg1[_local4] is keys[_local4])))){
- persistentSO.data[_local4] = _arg1[_local4];
- _local3 = true;
- } else {
- if (((!((volatile_keys[_local4] == null))) && ((_arg1[_local4] is volatile_keys[_local4])))){
- volatileSO.data[_local4] = _arg1[_local4];
- _local2 = true;
- };
- };
- };
- if (_local3){
- persistentSO.flush();
- };
- if (_local2){
- volatileSO.flush();
- };
- }
- public function saveValue(_arg1:String, _arg2=null):void{
- if (keys[_arg1]){
- persistentSO.data[_arg1] = _arg2;
- persistentSO.flush();
- } else {
- if (volatile_keys[_arg1]){
- volatileSO.data[_arg1] = _arg2;
- volatileSO.flush();
- };
- };
- }
- public function updateVariable(_arg1:String, _arg2):void{
- saveValue(_arg1, _arg2);
- if (_arg1.charAt(0) == "_"){
- return;
- };
- var _local3:Object = {};
- _local3[_arg1] = _arg2;
- setJSSessionObject(_local3);
- }
- private function updateLocalConnections(_arg1:String, _arg2, _arg3:Boolean=false, _arg4:Boolean=true):void{
- if (((((_arg4) && ((_arg1 in cachedData)))) && ((cachedData[_arg1] == _arg2)))){
- return;
- };
- if (_arg3){
- saveValue(_arg1, _arg2);
- };
- localConnection.sendToAll(_arg3, "updateVariable", _arg1, _arg2);
- }
- public function clear():void{
- persistentSO.clear();
- volatileSO.clear();
- }
- public function disconnect(_arg1:Object=null):void{
- if (_arg1){
- saveValues(_arg1);
- } else {
- saveSOfromJS();
- };
- localConnection.close();
- }
- private function init():void{
- persistentSO = new ZSharedObject((accountKey + SESSION_SO), "/");
- volatileSO = new ZSharedObject((accountKey + VOLATILE_SO), "/", VOLATILE_EXPIRY_DURATION);
- ZLocalConnection.init((accountKey + SESSION_SO));
- }
- }
- }//package
- package mx.core {
- public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
- }//package mx.core
- package mx.core {
- import flash.display.*;
- import mx.managers.*;
- public interface IUIComponent extends IFlexDisplayObject {
- function get baselinePosition():Number;
- function get document():Object;
- function set document(_arg1:Object):void;
- function get enabled():Boolean;
- function set enabled(_arg1:Boolean):void;
- function get explicitHeight():Number;
- function set explicitHeight(_arg1:Number):void;
- function get explicitMaxHeight():Number;
- function get explicitMaxWidth():Number;
- function get explicitMinHeight():Number;
- function get explicitMinWidth():Number;
- function get explicitWidth():Number;
- function set explicitWidth(_arg1:Number):void;
- function get focusPane():Sprite;
- function set focusPane(_arg1:Sprite):void;
- function get includeInLayout():Boolean;
- function set includeInLayout(_arg1:Boolean):void;
- function get isPopUp():Boolean;
- function set isPopUp(_arg1:Boolean):void;
- function get maxHeight():Number;
- function get maxWidth():Number;
- function get measuredMinHeight():Number;
- function set measuredMinHeight(_arg1:Number):void;
- function get measuredMinWidth():Number;
- function set measuredMinWidth(_arg1:Number):void;
- function get minHeight():Number;
- function get minWidth():Number;
- function get owner():DisplayObjectContainer;
- function set owner(_arg1:DisplayObjectContainer):void;
- function get percentHeight():Number;
- function set percentHeight(_arg1:Number):void;
- function get percentWidth():Number;
- function set percentWidth(_arg1:Number):void;
- function get systemManager():ISystemManager;
- function set systemManager(_arg1:ISystemManager):void;
- function get tweeningProperties():Array;
- function set tweeningProperties(_arg1:Array):void;
- function initialize():void;
- function parentChanged(_arg1:DisplayObjectContainer):void;
- function getExplicitOrMeasuredWidth():Number;
- function getExplicitOrMeasuredHeight():Number;
- function setVisible(_arg1:Boolean, _arg2:Boolean=false):void;
- function owns(_arg1:DisplayObject):Boolean;
- }
- }//package mx.core
- package mx.core {
- import flash.utils.*;
- import flash.display.*;
- import __AS3__.vec.*;
- public interface IFlexModuleFactory {
- function get allowDomainsInNewRSLs():Boolean;
- function set allowDomainsInNewRSLs(_arg1:Boolean):void;
- function get allowInsecureDomainsInNewRSLs():Boolean;
- function set allowInsecureDomainsInNewRSLs(_arg1:Boolean):void;
- function get preloadedRSLs():Dictionary;
- function addPreloadedRSL(_arg1:LoaderInfo, _arg2:Vector.<RSLData>):void;
- function allowDomain(... _args):void;
- function allowInsecureDomain(... _args):void;
- function callInContext(_arg1:Function, _arg2:Object, _arg3:Array, _arg4:Boolean=true);
- function create(... _args):Object;
- function getImplementation(_arg1:String):Object;
- function info():Object;
- function registerImplementation(_arg1:String, _arg2:Object):void;
- }
- }//package mx.core
- package mx.core {
- public class RSLData {
- mx_internal static const VERSION:String = "4.6.0.23201";
- private var _applicationDomainTarget:String;
- private var _digest:String;
- private var _hashType:String;
- private var _isSigned:Boolean;
- private var _moduleFactory:IFlexModuleFactory;
- private var _policyFileURL:String;
- private var _rslURL:String;
- private var _verifyDigest:Boolean;
- public function RSLData(_arg1:String=null, _arg2:String=null, _arg3:String=null, _arg4:String=null, _arg5:Boolean=false, _arg6:Boolean=false, _arg7:String="default"){
- this._rslURL = _arg1;
- this._policyFileURL = _arg2;
- this._digest = _arg3;
- this._hashType = _arg4;
- this._isSigned = _arg5;
- this._verifyDigest = _arg6;
- this._applicationDomainTarget = _arg7;
- this._moduleFactory = this.moduleFactory;
- }
- public function get applicationDomainTarget():String{
- return (this._applicationDomainTarget);
- }
- public function get digest():String{
- return (this._digest);
- }
- public function get hashType():String{
- return (this._hashType);
- }
- public function get isSigned():Boolean{
- return (this._isSigned);
- }
- public function get moduleFactory():IFlexModuleFactory{
- return (this._moduleFactory);
- }
- public function set moduleFactory(_arg1:IFlexModuleFactory):void{
- this._moduleFactory = _arg1;
- }
- public function get policyFileURL():String{
- return (this._policyFileURL);
- }
- public function get rslURL():String{
- return (this._rslURL);
- }
- public function get verifyDigest():Boolean{
- return (this._verifyDigest);
- }
- }
- }//package mx.core
- package mx.core {
- public interface IUID {
- function get uid():String;
- function set uid(_arg1:String):void;
- }
- }//package mx.core
- package mx.core {
- import flash.display.*;
- import flash.geom.*;
- public interface IChildList {
- function get numChildren():int;
- function addChild(_arg1:DisplayObject):DisplayObject;
- function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject;
- function removeChild(_arg1:DisplayObject):DisplayObject;
- function removeChildAt(_arg1:int):DisplayObject;
- function getChildAt(_arg1:int):DisplayObject;
- function getChildByName(_arg1:String):DisplayObject;
- function getChildIndex(_arg1:DisplayObject):int;
- function setChildIndex(_arg1:DisplayObject, _arg2:int):void;
- function getObjectsUnderPoint(_arg1:Point):Array;
- function contains(_arg1:DisplayObject):Boolean;
- }
- }//package mx.core
- package mx.core {
- import flash.events.*;
- import flash.display.*;
- import flash.geom.*;
- import flash.accessibility.*;
- public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
- function get root():DisplayObject;
- function get stage():Stage;
- function get name():String;
- function set name(_arg1:String):void;
- function get parent():DisplayObjectContainer;
- function get mask():DisplayObject;
- function set mask(_arg1:DisplayObject):void;
- function get visible():Boolean;
- function set visible(_arg1:Boolean):void;
- function get x():Number;
- function set x(_arg1:Number):void;
- function get y():Number;
- function set y(_arg1:Number):void;
- function get scaleX():Number;
- function set scaleX(_arg1:Number):void;
- function get scaleY():Number;
- function set scaleY(_arg1:Number):void;
- function get mouseX():Number;
- function get mouseY():Number;
- function get rotation():Number;
- function set rotation(_arg1:Number):void;
- function get alpha():Number;
- function set alpha(_arg1:Number):void;
- function get width():Number;
- function set width(_arg1:Number):void;
- function get height():Number;
- function set height(_arg1:Number):void;
- function get cacheAsBitmap():Boolean;
- function set cacheAsBitmap(_arg1:Boolean):void;
- function get opaqueBackground():Object;
- function set opaqueBackground(_arg1:Object):void;
- function get scrollRect():Rectangle;
- function set scrollRect(_arg1:Rectangle):void;
- function get filters():Array;
- function set filters(_arg1:Array):void;
- function get blendMode():String;
- function set blendMode(_arg1:String):void;
- function get transform():Transform;
- function set transform(_arg1:Transform):void;
- function get scale9Grid():Rectangle;
- function set scale9Grid(_arg1:Rectangle):void;
- function globalToLocal(_arg1:Point):Point;
- function localToGlobal(_arg1:Point):Point;
- function getBounds(_arg1:DisplayObject):Rectangle;
- function getRect(_arg1:DisplayObject):Rectangle;
- function get loaderInfo():LoaderInfo;
- function hitTestObject(_arg1:DisplayObject):Boolean;
- function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
- function get accessibilityProperties():AccessibilityProperties;
- function set accessibilityProperties(_arg1:AccessibilityProperties):void;
- function get measuredHeight():Number;
- function get measuredWidth():Number;
- function move(_arg1:Number, _arg2:Number):void;
- function setActualSize(_arg1:Number, _arg2:Number):void;
- }
- }//package mx.core
- package mx.core {
- import flash.events.*;
- public interface IPropertyChangeNotifier extends IEventDispatcher, IUID {
- }
- }//package mx.core
- package mx.managers {
- import flash.events.*;
- import flash.display.*;
- import flash.geom.*;
- import mx.core.*;
- import flash.text.*;
- public interface ISystemManager extends IEventDispatcher, IChildList, IFlexModuleFactory {
- function get cursorChildren():IChildList;
- function get document():Object;
- function set document(_arg1:Object):void;
- function get embeddedFontList():Object;
- function get focusPane():Sprite;
- function set focusPane(_arg1:Sprite):void;
- function get isProxy():Boolean;
- function get loaderInfo():LoaderInfo;
- function get numModalWindows():int;
- function set numModalWindows(_arg1:int):void;
- function get popUpChildren():IChildList;
- function get rawChildren():IChildList;
- function get screen():Rectangle;
- function get stage():Stage;
- function get toolTipChildren():IChildList;
- function get topLevelSystemManager():ISystemManager;
- function getDefinitionByName(_arg1:String):Object;
- function isTopLevel():Boolean;
- function isFontFaceEmbedded(_arg1:TextFormat):Boolean;
- function isTopLevelRoot():Boolean;
- function getTopLevelRoot():DisplayObject;
- function getSandboxRoot():DisplayObject;
- function getVisibleApplicationRect(_arg1:Rectangle=null, _arg2:Boolean=false):Rectangle;
- function deployMouseShields(_arg1:Boolean):void;
- function invalidateParentSizeAndDisplayList():void;
- }
- }//package mx.managers
- package mx.binding {
- import mx.events.*;
- import mx.core.*;
- public class BindabilityInfo {
- mx_internal static const VERSION:String = "4.6.0.23201";
- public static const BINDABLE:String = "Bindable";
- public static const MANAGED:String = "Managed";
- public static const CHANGE_EVENT:String = "ChangeEvent";
- public static const NON_COMMITTING_CHANGE_EVENT:String = "NonCommittingChangeEvent";
- public static const ACCESSOR:String = "accessor";
- public static const METHOD:String = "method";
- private var typeDescription:XML;
- private var classChangeEvents:Object;
- private var childChangeEvents:Object;
- public function BindabilityInfo(_arg1:XML){
- this.childChangeEvents = {};
- super();
- this.typeDescription = _arg1;
- }
- public function getChangeEvents(_arg1:String):Object{
- var childDesc:* = null;
- var numChildren:* = 0;
- var childName:* = _arg1;
- var changeEvents:* = this.childChangeEvents[childName];
- if (!changeEvents){
- changeEvents = this.copyProps(this.getClassChangeEvents(), {});
- childDesc = (this.typeDescription.accessor.(@name == childName) + this.typeDescription.method.(@name == childName));
- numChildren = childDesc.length();
- if (numChildren == 0){
- if (!this.typeDescription.@dynamic){
- trace((((("warning: no describeType entry for '" + childName) + "' on non-dynamic type '") + this.typeDescription.@name) + "'"));
- };
- } else {
- if (numChildren > 1){
- trace(((((("warning: multiple describeType entries for '" + childName) + "' on type '") + this.typeDescription.@name) + "':\n") + childDesc));
- };
- this.addBindabilityEvents(childDesc.metadata, changeEvents);
- };
- this.childChangeEvents[childName] = changeEvents;
- };
- return (changeEvents);
- }
- private function getClassChangeEvents():Object{
- if (!this.classChangeEvents){
- this.classChangeEvents = {};
- this.addBindabilityEvents(this.typeDescription.metadata, this.classChangeEvents);
- if (this.typeDescription.metadata.(@name == MANAGED).length() > 0){
- this.classChangeEvents[PropertyChangeEvent.PROPERTY_CHANGE] = true;
- };
- };
- return (this.classChangeEvents);
- }
- private function addBindabilityEvents(_arg1:XMLList, _arg2:Object):void{
- var metadata:* = _arg1;
- var eventListObj:* = _arg2;
- this.addChangeEvents(metadata.(@name == BINDABLE), eventListObj, true);
- this.addChangeEvents(metadata.(@name == CHANGE_EVENT), eventListObj, true);
- this.addChangeEvents(metadata.(@name == NON_COMMITTING_CHANGE_EVENT), eventListObj, false);
- }
- private function addChangeEvents(_arg1:XMLList, _arg2:Object, _arg3:Boolean):void{
- var _local4:XML;
- var _local5:XMLList;
- var _local6:String;
- for each (_local4 in _arg1) {
- _local5 = _local4.arg;
- if (_local5.length() > 0){
- _local6 = _local5[0].@value;
- _arg2[_local6] = _arg3;
- } else {
- trace((("warning: unconverted Bindable metadata in class '" + this.typeDescription.@name) + "'"));
- };
- };
- }
- private function copyProps(_arg1:Object, _arg2:Object):Object{
- var _local3:String;
- for (_local3 in _arg1) {
- _arg2[_local3] = _arg1[_local3];
- };
- return (_arg2);
- }
- }
- }//package mx.binding
- package mx.events {
- import flash.events.*;
- import mx.core.*;
- public class PropertyChangeEvent extends Event {
- mx_internal static const VERSION:String = "4.6.0.23201";
- public static const PROPERTY_CHANGE:String = "propertyChange";
- public var kind:String;
- public var newValue:Object;
- public var oldValue:Object;
- public var property:Object;
- public var source:Object;
- public function PropertyChangeEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:Object=null, _arg6:Object=null, _arg7:Object=null, _arg8:Object=null){
- super(_arg1, _arg2, _arg3);
- this.kind = _arg4;
- this.property = _arg5;
- this.oldValue = _arg6;
- this.newValue = _arg7;
- this.source = _arg8;
- }
- public static function createUpdateEvent(_arg1:Object, _arg2:Object, _arg3:Object, _arg4:Object):PropertyChangeEvent{
- var _local5:PropertyChangeEvent = new PropertyChangeEvent(PROPERTY_CHANGE);
- _local5.kind = PropertyChangeEventKind.UPDATE;
- _local5.oldValue = _arg3;
- _local5.newValue = _arg4;
- _local5.source = _arg1;
- _local5.property = _arg2;
- return (_local5);
- }
- override public function clone():Event{
- return (new PropertyChangeEvent(type, bubbles, cancelable, this.kind, this.property, this.oldValue, this.newValue, this.source));
- }
- }
- }//package mx.events
- package mx.events {
- import flash.events.*;
- import mx.core.*;
- public class CollectionEvent extends Event {
- mx_internal static const VERSION:String = "4.6.0.23201";
- public static const COLLECTION_CHANGE:String = "collectionChange";
- public var kind:String;
- public var items:Array;
- public var location:int;
- public var oldLocation:int;
- public function CollectionEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String=null, _arg5:int=-1, _arg6:int=-1, _arg7:Array=null){
- super(_arg1, _arg2, _arg3);
- this.kind = _arg4;
- this.location = _arg5;
- this.oldLocation = _arg6;
- this.items = ((_arg7) ? _arg7 : []);
- }
- override public function toString():String{
- return (formatToString("CollectionEvent", "kind", "location", "oldLocation", "type", "bubbles", "cancelable", "eventPhase"));
- }
- override public function clone():Event{
- return (new CollectionEvent(type, bubbles, cancelable, this.kind, this.location, this.oldLocation, this.items));
- }
- }
- }//package mx.events
- package mx.events {
- import mx.core.*;
- public final class PropertyChangeEventKind {
- mx_internal static const VERSION:String = "4.6.0.23201";
- public static const UPDATE:String = "update";
- public static const DELETE:String = "delete";
- }
- }//package mx.events
- package mx.utils {
- public namespace object_proxy = "http://www.adobe.com/2006/actionscript/flash/objectproxy";
- }//package mx.utils
- package mx.utils {
- import flash.utils.*;
- import mx.core.*;
- public class XMLNotifier {
- mx_internal static const VERSION:String = "4.6.0.23201";
- private static var instance:XMLNotifier;
- public function XMLNotifier(_arg1:XMLNotifierSingleton){
- }
- public static function getInstance():XMLNotifier{
- if (!instance){
- instance = new XMLNotifier(new XMLNotifierSingleton());
- };
- return (instance);
- }
- mx_internal static function initializeXMLForNotification():Function{
- var notificationFunction:* = function (_arg1:Object, _arg2:String, _arg3:Object, _arg4:Object, _arg5:Object):void{
- var _local8:Object;
- var _local7:Dictionary = arguments.callee.watched;
- if (_local7 != null){
- for (_local8 in _local7) {
- IXMLNotifiable(_local8).xmlNotification(_arg1, _arg2, _arg3, _arg4, _arg5);
- };
- };
- };
- return (notificationFunction);
- }
- public function watchXML(_arg1:Object, _arg2:IXMLNotifiable, _arg3:String=null):void{
- var _local4:Object;
- var _local5:XML;
- var _local6:Object;
- var _local7:Dictionary;
- if ((((_arg1 is XMLList)) && ((_arg1.length() > 1)))){
- for each (_local4 in _arg1) {
- this.watchXML(_local4, _arg2, _arg3);
- };
- } else {
- _local5 = XML(_arg1);
- _local6 = _local5.notification();
- if (!(_local6 is Function)){
- _local6 = initializeXMLForNotification();
- _local5.setNotification((_local6 as Function));
- if (((_arg3) && ((_local6["uid"] == null)))){
- _local6["uid"] = _arg3;
- };
- };
- if (_local6["watched"] == undefined){
- _local7 = new Dictionary(true);
- _local6["watched"] = _local7;
- } else {
- _local7 = _local6["watched"];
- };
- _local7[_arg2] = true;
- };
- }
- public function unwatchXML(_arg1:Object, _arg2:IXMLNotifiable):void{
- var _local3:Object;
- var _local4:XML;
- var _local5:Object;
- var _local6:Dictionary;
- if ((((_arg1 is XMLList)) && ((_arg1.length() > 1)))){
- for each (_local3 in _arg1) {
- this.unwatchXML(_local3, _arg2);
- };
- } else {
- _local4 = XML(_arg1);
- _local5 = _local4.notification();
- if (!(_local5 is Function)){
- return;
- };
- if (_local5["watched"] != undefined){
- _local6 = _local5["watched"];
- delete _local6[_arg2];
- };
- };
- }
- }
- }//package mx.utils
- class XMLNotifierSingleton {
- public function XMLNotifierSingleton(){
- }
- }
- package mx.utils {
- import flash.utils.*;
- import mx.core.*;
- public class UIDUtil {
- mx_internal static const VERSION:String = "4.6.0.23201";
- private static const ALPHA_CHAR_CODES:Array = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70];
- private static var uidDictionary:Dictionary = new Dictionary(true);
- public static function createUID():String{
- var _local3:int;
- var _local4:int;
- var _local1:Array = new Array(36);
- var _local2:int;
- _local3 = 0;
- while (_local3 < 8) {
- var _temp1 = _local2;
- _local2 = (_local2 + 1);
- var _local7 = _temp1;
- _local1[_local7] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
- _local3++;
- };
- _local3 = 0;
- while (_local3 < 3) {
- var _temp2 = _local2;
- _local2 = (_local2 + 1);
- _local7 = _temp2;
- _local1[_local7] = 45;
- _local4 = 0;
- while (_local4 < 4) {
- var _temp3 = _local2;
- _local2 = (_local2 + 1);
- var _local8 = _temp3;
- _local1[_local8] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
- _local4++;
- };
- _local3++;
- };
- var _temp4 = _local2;
- _local2 = (_local2 + 1);
- _local7 = _temp4;
- _local1[_local7] = 45;
- var _local5:Number = new Date().getTime();
- var _local6:String = ("0000000" + _local5.toString(16).toUpperCase()).substr(-8);
- _local3 = 0;
- while (_local3 < 8) {
- var _temp5 = _local2;
- _local2 = (_local2 + 1);
- _local8 = _temp5;
- _local1[_local8] = _local6.charCodeAt(_local3);
- _local3++;
- };
- _local3 = 0;
- while (_local3 < 4) {
- var _temp6 = _local2;
- _local2 = (_local2 + 1);
- _local8 = _temp6;
- _local1[_local8] = ALPHA_CHAR_CODES[Math.floor((Math.random() * 16))];
- _local3++;
- };
- return (String.fromCharCode.apply(null, _local1));
- }
- public static function fromByteArray(_arg1:ByteArray):String{
- var _local2:Array;
- var _local3:uint;
- var _local4:uint;
- var _local5:int;
- if (((((!((_arg1 == null))) && ((_arg1.length >= 16)))) && ((_arg1.bytesAvailable >= 16)))){
- _local2 = new Array(36);
- _local3 = 0;
- _local4 = 0;
- while (_local4 < 16) {
- if ((((((((_local4 == 4)) || ((_local4 == 6)))) || ((_local4 == 8)))) || ((_local4 == 10)))){
- var _temp1 = _local3;
- _local3 = (_local3 + 1);
- var _local6 = _temp1;
- _local2[_local6] = 45;
- };
- _local5 = _arg1.readByte();
- var _temp2 = _local3;
- _local3 = (_local3 + 1);
- _local6 = _temp2;
- _local2[_local6] = ALPHA_CHAR_CODES[((_local5 & 240) >>> 4)];
- var _temp3 = _local3;
- _local3 = (_local3 + 1);
- var _local7 = _temp3;
- _local2[_local7] = ALPHA_CHAR_CODES[(_local5 & 15)];
- _local4++;
- };
- return (String.fromCharCode.apply(null, _local2));
- };
- return (null);
- }
- public static function isUID(_arg1:String):Boolean{
- var _local2:uint;
- var _local3:Number;
- if (((!((_arg1 == null))) && ((_arg1.length == 36)))){
- _local2 = 0;
- while (_local2 < 36) {
- _local3 = _arg1.charCodeAt(_local2);
- if ((((((((_local2 == 8)) || ((_local2 == 13)))) || ((_local2 == 18)))) || ((_local2 == 23)))){
- if (_local3 != 45){
- return (false);
- };
- } else {
- if ((((((_local3 < 48)) || ((_local3 > 70)))) || ((((_local3 > 57)) && ((_local3 < 65)))))){
- return (false);
- };
- };
- _local2++;
- };
- return (true);
- };
- return (false);
- }
- public static function toByteArray(_arg1:String):ByteArray{
- var _local2:ByteArray;
- var _local3:uint;
- var _local4:String;
- var _local5:uint;
- var _local6:uint;
- if (isUID(_arg1)){
- _local2 = new ByteArray();
- _local3 = 0;
- while (_local3 < _arg1.length) {
- _local4 = _arg1.charAt(_local3);
- if (_local4 == "-"){
- } else {
- _local5 = getDigit(_local4);
- _local3++;
- _local6 = getDigit(_arg1.charAt(_local3));
- _local2.writeByte((((_local5 << 4) | _local6) & 0xFF));
- };
- _local3++;
- };
- _local2.position = 0;
- return (_local2);
- };
- return (null);
- }
- public static function getUID(_arg1:Object):String{
- var result:* = null;
- var xitem:* = null;
- var nodeKind:* = null;
- var notificationFunction:* = null;
- var item:* = _arg1;
- result = null;
- if (item == null){
- return (result);
- };
- if ((item is IUID)){
- result = IUID(item).uid;
- if ((((result == null)) || ((result.length == 0)))){
- result = createUID();
- IUID(item).uid = result;
- };
- } else {
- if ((((item is IPropertyChangeNotifier)) && (!((item is IUIComponent))))){
- result = IPropertyChangeNotifier(item).uid;
- if ((((result == null)) || ((result.length == 0)))){
- result = createUID();
- IPropertyChangeNotifier(item).uid = result;
- };
- } else {
- if ((item is String)){
- return ((item as String));
- };
- try {
- if ((((item is XMLList)) && ((item.length == 1)))){
- item = item[0];
- };
- if ((item is XML)){
- xitem = XML(item);
- nodeKind = xitem.nodeKind();
- if ((((nodeKind == "text")) || ((nodeKind == "attribute")))){
- return (xitem.toString());
- };
- notificationFunction = xitem.notification();
- if (!(notificationFunction is Function)){
- notificationFunction = XMLNotifier.initializeXMLForNotification();
- xitem.setNotification(notificationFunction);
- };
- if (notificationFunction["uid"] == undefined){
- result = (notificationFunction["uid"] = createUID());
- };
- result = notificationFunction["uid"];
- } else {
- if (("mx_internal_uid" in item)){
- return (item.mx_internal_uid);
- };
- if (("uid" in item)){
- return (item.uid);
- };
- result = uidDictionary[item];
- if (!result){
- result = createUID();
- try {
- item.mx_internal_uid = result;
- } catch(e:Error) {
- uidDictionary[item] = result;
- };
- };
- };
- } catch(e:Error) {
- result = item.toString();
- };
- };
- };
- return (result);
- }
- private static function getDigit(_arg1:String):uint{
- switch (_arg1){
- case "A":
- case "a":
- return (10);
- case "B":
- case "b":
- return (11);
- case "C":
- case "c":
- return (12);
- case "D":
- case "d":
- return (13);
- case "E":
- case "e":
- return (14);
- case "F":
- case "f":
- return (15);
- default:
- return (new uint(_arg1));
- };
- }
- }
- }//package mx.utils
- package mx.utils {
- import flash.utils.*;
- public class Base64Encoder {
- public static const CHARSET_UTF_8:String = "UTF-8";
- public static const MAX_BUFFER_SIZE:uint = 32767;
- private static const ESCAPE_CHAR_CODE:Number = 61;
- private static const ALPHABET_CHAR_CODES:Array = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47];
- public static var newLine:int = 10;
- public var insertNewLines:Boolean = true;
- private var _buffers:Array;
- private var _count:uint;
- private var _line:uint;
- private var _work:Array;
- public function Base64Encoder(){
- this._work = [0, 0, 0];
- super();
- this.reset();
- }
- public function drain():String{
- var _local3:Array;
- var _local1 = "";
- var _local2:uint;
- while (_local2 < this._buffers.length) {
- _local3 = (this._buffers[_local2] as Array);
- _local1 = (_local1 + String.fromCharCode.apply(null, _local3));
- _local2++;
- };
- this._buffers = [];
- this._buffers.push([]);
- return (_local1);
- }
- public function encode(_arg1:String, _arg2:uint=0, _arg3:uint=0):void{
- if (_arg3 == 0){
- _arg3 = _arg1.length;
- };
- var _local4:uint = _arg2;
- var _local5:uint = (_arg2 + _arg3);
- if (_local5 > _arg1.length){
- _local5 = _arg1.length;
- };
- while (_local4 < _local5) {
- this._work[this._count] = _arg1.charCodeAt(_local4);
- this._count++;
- if ((((this._count == this._work.length)) || (((_local5 - _local4) == 1)))){
- this.encodeBlock();
- this._count = 0;
- this._work[0] = 0;
- this._work[1] = 0;
- this._work[2] = 0;
- };
- _local4++;
- };
- }
- public function encodeUTFBytes(_arg1:String):void{
- var _local2:ByteArray = new ByteArray();
- _local2.writeUTFBytes(_arg1);
- _local2.position = 0;
- this.encodeBytes(_local2);
- }
- public function encodeBytes(_arg1:ByteArray, _arg2:uint=0, _arg3:uint=0):void{
- if (_arg3 == 0){
- _arg3 = _arg1.length;
- };
- var _local4:uint = _arg1.position;
- _arg1.position = _arg2;
- var _local5:uint = _arg2;
- var _local6:uint = (_arg2 + _arg3);
- if (_local6 > _arg1.length){
- _local6 = _arg1.length;
- };
- while (_local5 < _local6) {
- this._work[this._count] = _arg1[_local5];
- this._count++;
- if ((((this._count == this._work.length)) || (((_local6 - _local5) == 1)))){
- this.encodeBlock();
- this._count = 0;
- this._work[0] = 0;
- this._work[1] = 0;
- this._work[2] = 0;
- };
- _local5++;
- };
- _arg1.position = _local4;
- }
- public function flush():String{
- if (this._count > 0){
- this.encodeBlock();
- };
- var _local1:String = this.drain();
- this.reset();
- return (_local1);
- }
- public function reset():void{
- this._buffers = [];
- this._buffers.push([]);
- this._count = 0;
- this._line = 0;
- this._work[0] = 0;
- this._work[1] = 0;
- this._work[2] = 0;
- }
- public function toString():String{
- return (this.flush());
- }
- private function encodeBlock():void{
- var _local1:Array = (this._buffers[(this._buffers.length - 1)] as Array);
- if (_local1.length >= MAX_BUFFER_SIZE){
- _local1 = [];
- this._buffers.push(_local1);
- };
- _local1.push(ALPHABET_CHAR_CODES[((this._work[0] & 0xFF) >> 2)]);
- _local1.push(ALPHABET_CHAR_CODES[(((this._work[0] & 3) << 4) | ((this._work[1] & 240) >> 4))]);
- if (this._count > 1){
- _local1.push(ALPHABET_CHAR_CODES[(((this._work[1] & 15) << 2) | ((this._work[2] & 192) >> 6))]);
- } else {
- _local1.push(ESCAPE_CHAR_CODE);
- };
- if (this._count > 2){
- _local1.push(ALPHABET_CHAR_CODES[(this._work[2] & 63)]);
- } else {
- _local1.push(ESCAPE_CHAR_CODE);
- };
- if (this.insertNewLines){
- if ((this._line = (this._line + 4)) == 76){
- _local1.push(newLine);
- this._line = 0;
- };
- };
- }
- }
- }//package mx.utils
- package mx.utils {
- import flash.utils.*;
- import mx.core.*;
- import mx.binding.*;
- public class DescribeTypeCache {
- mx_internal static const VERSION:String = "4.6.0.23201";
- private static var typeCache:Object = {};
- private static var cacheHandlers:Object = {};
- public static function describeType(_arg1):DescribeTypeCacheRecord{
- var _local2:String;
- var _local3:String;
- var _local4:XML;
- var _local5:DescribeTypeCacheRecord;
- if ((_arg1 is String)){
- _local2 = _arg1;
- _local3 = _local2;
- } else {
- _local2 = getQualifiedClassName(_arg1);
- _local3 = _local2;
- };
- if ((_arg1 is Class)){
- _local3 = (_local3 + "$");
- };
- if ((_local3 in typeCache)){
- return (typeCache[_local3]);
- };
- if ((_arg1 is String)){
- try {
- _arg1 = getDefinitionByName(_arg1);
- } catch(error:ReferenceError) {
- };
- };
- _local4 = describeType(_arg1);
- _local5 = new DescribeTypeCacheRecord();
- _local5.typeDescription = _local4;
- _local5.typeName = _local2;
- typeCache[_local3] = _local5;
- return (_local5);
- }
- public static function registerCacheHandler(_arg1:String, _arg2:Function):void{
- cacheHandlers[_arg1] = _arg2;
- }
- static function extractValue(_arg1:String, _arg2:DescribeTypeCacheRecord){
- if ((_arg1 in cacheHandlers)){
- return (cacheHandlers[_arg1](_arg2));
- };
- return (undefined);
- }
- private static function bindabilityInfoHandler(_arg1:DescribeTypeCacheRecord){
- return (new BindabilityInfo(_arg1.typeDescription));
- }
- registerCacheHandler("bindabilityInfo", bindabilityInfoHandler);
- }
- }//package mx.utils
- package mx.utils {
- public interface IXMLNotifiable {
- function xmlNotification(_arg1:Object, _arg2:String, _arg3:Object, _arg4:Object, _arg5:Object):void;
- }
- }//package mx.utils
- package mx.utils {
- import flash.utils.*;
- import mx.collections.*;
- import mx.core.*;
- import flash.xml.*;
- public class ObjectUtil {
- mx_internal static const VERSION:String = "4.6.0.23201";
- private static var defaultToStringExcludes:Array = ["password", "credentials"];
- private static var refCount:int = 0;
- private static var CLASS_INFO_CACHE:Object = {};
- public static function compare(_arg1:Object, _arg2:Object, _arg3:int=-1):int{
- return (internalCompare(_arg1, _arg2, 0, _arg3, new Dictionary(true)));
- }
- public static function copy(_arg1:Object):Object{
- var _local2:ByteArray = new ByteArray();
- _local2.writeObject(_arg1);
- _local2.position = 0;
- var _local3:Object = _local2.readObject();
- return (_local3);
- }
- public static function clone(_arg1:Object):Object{
- var _local2:Object = copy(_arg1);
- cloneInternal(_local2, _arg1);
- return (_local2);
- }
- private static function cloneInternal(_arg1:Object, _arg2:Object):void{
- var _local4:Object;
- var _local5:*;
- if (((_arg2) && (_arg2.hasOwnProperty("uid")))){
- _arg1.uid = _arg2.uid;
- };
- var _local3:Object = getClassInfo(_arg2);
- for each (_local5 in _local3.properties) {
- _local4 = _arg2[_local5];
- if (((_local4) && (_local4.hasOwnProperty("uid")))){
- cloneInternal(_arg1[_local5], _local4);
- };
- };
- }
- public static function isSimple(_arg1:Object):Boolean{
- var _local2 = typeof(_arg1);
- switch (_local2){
- case "number":
- case "string":
- case "boolean":
- return (true);
- case "object":
- return ((((_arg1 is Date)) || ((_arg1 is Array))));
- };
- return (false);
- }
- public static function numericCompare(_arg1:Number, _arg2:Number):int{
- if (((isNaN(_arg1)) && (isNaN(_arg2)))){
- return (0);
- };
- if (isNaN(_arg1)){
- return (1);
- };
- if (isNaN(_arg2)){
- return (-1);
- };
- if (_arg1 < _arg2){
- return (-1);
- };
- if (_arg1 > _arg2){
- return (1);
- };
- return (0);
- }
- public static function stringCompare(_arg1:String, _arg2:String, _arg3:Boolean=false):int{
- if ((((_arg1 == null)) && ((_arg2 == null)))){
- return (0);
- };
- if (_arg1 == null){
- return (1);
- };
- if (_arg2 == null){
- return (-1);
- };
- if (_arg3){
- _arg1 = _arg1.toLocaleLowerCase();
- _arg2 = _arg2.toLocaleLowerCase();
- };
- var _local4:int = _arg1.localeCompare(_arg2);
- if (_local4 < -1){
- _local4 = -1;
- } else {
- if (_local4 > 1){
- _local4 = 1;
- };
- };
- return (_local4);
- }
- public static function dateCompare(_arg1:Date, _arg2:Date):int{
- if ((((_arg1 == null)) && ((_arg2 == null)))){
- return (0);
- };
- if (_arg1 == null){
- return (1);
- };
- if (_arg2 == null){
- return (-1);
- };
- var _local3:Number = _arg1.getTime();
- var _local4:Number = _arg2.getTime();
- if (_local3 < _local4){
- return (-1);
- };
- if (_local3 > _local4){
- return (1);
- };
- return (0);
- }
- public static function toString(_arg1:Object, _arg2:Array=null, _arg3:Array=null):String{
- if (_arg3 == null){
- _arg3 = defaultToStringExcludes;
- };
- refCount = 0;
- return (internalToString(_arg1, 0, null, _arg2, _arg3));
- }
- private static function internalToString(_arg1:Object, _arg2:int=0, _arg3:Dictionary=null, _arg4:Array=null, _arg5:Array=null):String{
- var str:* = null;
- var classInfo:* = null;
- var properties:* = null;
- var isArray:* = false;
- var isDict:* = false;
- var prop:* = undefined;
- var j:* = 0;
- var id:* = null;
- var value:* = _arg1;
- var indent:int = _arg2;
- var refs = _arg3;
- var namespaceURIs = _arg4;
- var exclude = _arg5;
- var type:* = (((value == null)) ? "null" : typeof(value));
- switch (type){
- case "boolean":
- case "number":
- return (value.toString());
- case "string":
- return ((("\"" + value.toString()) + "\""));
- case "object":
- if ((value is Date)){
- return (value.toString());
- };
- if ((value is XMLNode)){
- return (value.toString());
- };
- if ((value is Class)){
- return ((("(" + getQualifiedClassName(value)) + ")"));
- };
- classInfo = getClassInfo(value, exclude, {
- includeReadOnly:true,
- uris:namespaceURIs
- });
- properties = classInfo.properties;
- str = (("(" + classInfo.name) + ")");
- if (refs == null){
- refs = new Dictionary(true);
- };
- try {
- id = refs[value];
- if (id != null){
- str = (str + ("#" + int(id)));
- return (str);
- };
- } catch(e:Error) {
- return (String(value));
- };
- if (value != null){
- str = (str + ("#" + refCount.toString()));
- refs[value] = refCount;
- refCount++;
- };
- isArray = (value is Array);
- isDict = (value is Dictionary);
- indent = (indent + 2);
- j = 0;
- while (j < properties.length) {
- str = newline(str, indent);
- prop = properties[j];
- if (isArray){
- str = (str + "[");
- } else {
- if (isDict){
- str = (str + "{");
- };
- };
- if (isDict){
- str = (str + internalToString(prop, indent, refs, namespaceURIs, exclude));
- } else {
- str = (str + prop.toString());
- };
- if (isArray){
- str = (str + "] ");
- } else {
- if (isDict){
- str = (str + "} = ");
- } else {
- str = (str + " = ");
- };
- };
- try {
- str = (str + internalToString(value[prop], indent, refs, namespaceURIs, exclude));
- } catch(e:Error) {
- str = (str + "?");
- };
- j = (j + 1);
- };
- indent = (indent - 2);
- return (str);
- case "xml":
- return (value.toXMLString());
- default:
- return ((("(" + type) + ")"));
- };
- }
- private static function newline(_arg1:String, _arg2:int=0):String{
- var _local3:String = _arg1;
- _local3 = (_local3 + "\n");
- var _local4:int;
- while (_local4 < _arg2) {
- _local3 = (_local3 + " ");
- _local4++;
- };
- return (_local3);
- }
- private static function internalCompare(_arg1:Object, _arg2:Object, _arg3:int, _arg4:int, _arg5:Dictionary):int{
- var _local9:int;
- var _local10:Object;
- var _local11:Object;
- var _local12:Array;
- var _local13:Array;
- var _local14:Boolean;
- var _local15:QName;
- var _local16:Object;
- var _local17:Object;
- var _local18:int;
- if ((((_arg1 == null)) && ((_arg2 == null)))){
- return (0);
- };
- if (_arg1 == null){
- return (1);
- };
- if (_arg2 == null){
- return (-1);
- };
- if ((_arg1 is ObjectProxy)){
- _arg1 = ObjectProxy(_arg1).object_proxy::object;
- };
- if ((_arg2 is ObjectProxy)){
- _arg2 = ObjectProxy(_arg2).object_proxy::object;
- };
- var _local6 = typeof(_arg1);
- var _local7 = typeof(_arg2);
- var _local8:int;
- if (_local6 == _local7){
- switch (_local6){
- case "boolean":
- _local8 = numericCompare(Number(_arg1), Number(_arg2));
- break;
- case "number":
- _local8 = numericCompare((_arg1 as Number), (_arg2 as Number));
- break;
- case "string":
- _local8 = stringCompare((_arg1 as String), (_arg2 as String));
- break;
- case "object":
- _local9 = (((_arg4 > 0)) ? (_arg4 - 1) : _arg4);
- _local10 = getRef(_arg1, _arg5);
- _local11 = getRef(_arg2, _arg5);
- if (_local10 == _local11){
- return (0);
- };
- _arg5[_local11] = _local10;
- if (((!((_arg4 == -1))) && ((_arg3 > _arg4)))){
- _local8 = stringCompare(_arg1.toString(), _arg2.toString());
- } else {
- if ((((_arg1 is Array)) && ((_arg2 is Array)))){
- _local8 = arrayCompare((_arg1 as Array), (_arg2 as Array), _arg3, _arg4, _arg5);
- } else {
- if ((((_arg1 is Date)) && ((_arg2 is Date)))){
- _local8 = dateCompare((_arg1 as Date), (_arg2 as Date));
- } else {
- if ((((_arg1 is IList)) && ((_arg2 is IList)))){
- _local8 = listCompare((_arg1 as IList), (_arg2 as IList), _arg3, _arg4, _arg5);
- } else {
- if ((((_arg1 is ByteArray)) && ((_arg2 is ByteArray)))){
- _local8 = byteArrayCompare((_arg1 as ByteArray), (_arg2 as ByteArray));
- } else {
- if (getQualifiedClassName(_arg1) == getQualifiedClassName(_arg2)){
- _local12 = getClassInfo(_arg1).properties;
- _local14 = isDynamicObject(_arg1);
- if (_local14){
- _local13 = getClassInfo(_arg2).properties;
- _local8 = arrayCompare(_local12, _local13, _arg3, _local9, _arg5);
- if (_local8 != 0){
- return (_local8);
- };
- };
- _local18 = 0;
- while (_local18 < _local12.length) {
- _local15 = _local12[_local18];
- _local16 = _arg1[_local15];
- _local17 = _arg2[_local15];
- _local8 = internalCompare(_local16, _local17, (_arg3 + 1), _local9, _arg5);
- if (_local8 != 0){
- return (_local8);
- };
- _local18++;
- };
- } else {
- return (1);
- };
- };
- };
- };
- };
- };
- break;
- };
- } else {
- return (stringCompare(_local6, _local7));
- };
- return (_local8);
- }
- public static function getClassInfo(_arg1:Object, _arg2:Array=null, _arg3:Object=null):Object{
- var n:* = 0;
- var i:* = 0;
- var result:* = null;
- var cacheKey:* = null;
- var className:* = null;
- var classAlias:* = null;
- var properties:* = null;
- var prop:* = null;
- var metadataInfo:* = null;
- var classInfo:* = null;
- var numericIndex:* = false;
- var key:* = undefined;
- var p:* = null;
- var pi:* = NaN;
- var uris:* = null;
- var uri:* = null;
- var qName:* = null;
- var j:* = 0;
- var obj:* = _arg1;
- var excludes = _arg2;
- var options = _arg3;
- if ((obj is ObjectProxy)){
- obj = ObjectProxy(obj).object_proxy::object;
- };
- if (options == null){
- options = {
- includeReadOnly:true,
- uris:null,
- includeTransient:true
- };
- };
- var propertyNames:* = [];
- var dynamic:* = false;
- if (typeof(obj) == "xml"){
- className = "XML";
- properties = obj.text();
- if (properties.length()){
- propertyNames.push("*");
- };
- properties = obj.attributes();
- } else {
- classInfo = DescribeTypeCache.describeType(obj).typeDescription;
- className = classInfo.@name.toString();
- classAlias = classInfo.@alias.toString();
- dynamic = (classInfo.@isDynamic.toString() == "true");
- if (options.includeReadOnly){
- properties = (classInfo..accessor.(@access != "writeonly") + classInfo..variable);
- } else {
- properties = (classInfo..accessor.(@access == "readwrite") + classInfo..variable);
- };
- numericIndex = false;
- };
- if (!dynamic){
- cacheKey = getCacheKey(obj, excludes, options);
- result = CLASS_INFO_CACHE[cacheKey];
- if (result != null){
- return (result);
- };
- };
- result = {};
- result["name"] = className;
- result["alias"] = classAlias;
- result["properties"] = propertyNames;
- result["dynamic"] = dynamic;
- var _local5 = recordMetadata(properties);
- metadataInfo = _local5;
- result["metadata"] = _local5;
- var excludeObject:* = {};
- if (excludes){
- n = excludes.length;
- i = 0;
- while (i < n) {
- excludeObject[excludes[i]] = 1;
- i = (i + 1);
- };
- };
- var isArray:* = (className == "Array");
- var isDict:* = (className == "flash.utils::Dictionary");
- if (isDict){
- for (key in obj) {
- propertyNames.push(key);
- };
- } else {
- if (dynamic){
- for (p in obj) {
- if (excludeObject[p] != 1){
- if (isArray){
- pi = parseInt(p);
- if (isNaN(pi)){
- propertyNames.push(new QName("", p));
- } else {
- propertyNames.push(pi);
- };
- } else {
- propertyNames.push(new QName("", p));
- };
- };
- };
- numericIndex = ((isArray) && (!(isNaN(Number(p)))));
- };
- };
- if (((((isArray) || (isDict))) || ((className == "Object")))){
- } else {
- if (className == "XML"){
- n = properties.length();
- i = 0;
- while (i < n) {
- p = properties[i].name();
- if (excludeObject[p] != 1){
- propertyNames.push(new QName("", ("@" + p)));
- };
- i = (i + 1);
- };
- } else {
- n = properties.length();
- uris = options.uris;
- i = 0;
- while (i < n) {
- prop = properties[i];
- p = prop.@name.toString();
- uri = prop.@uri.toString();
- if (excludeObject[p] == 1){
- } else {
- if (((!(options.includeTransient)) && (internalHasMetadata(metadataInfo, p, "Transient")))){
- } else {
- if (uris != null){
- if ((((uris.length == 1)) && ((uris[0] == "*")))){
- qName = new QName(uri, p);
- try {
- obj[qName];
- propertyNames.push();
- } catch(e:Error) {
- };
- } else {
- j = 0;
- while (j < uris.length) {
- uri = uris[j];
- if (prop.@uri.toString() == uri){
- qName = new QName(uri, p);
- try {
- obj[qName];
- propertyNames.push(qName);
- } catch(e:Error) {
- };
- };
- j = (j + 1);
- };
- };
- } else {
- if (uri.length == 0){
- qName = new QName(uri, p);
- try {
- obj[qName];
- propertyNames.push(qName);
- } catch(e:Error) {
- };
- };
- };
- };
- };
- i = (i + 1);
- };
- };
- };
- propertyNames.sort((Array.CASEINSENSITIVE | ((numericIndex) ? Array.NUMERIC : 0)));
- if (!isDict){
- i = 0;
- while (i < (propertyNames.length - 1)) {
- if (propertyNames[i].toString() == propertyNames[(i + 1)].toString()){
- propertyNames.splice(i, 1);
- i = (i - 1);
- };
- i = (i + 1);
- };
- };
- if (!dynamic){
- cacheKey = getCacheKey(obj, excludes, options);
- CLASS_INFO_CACHE[cacheKey] = result;
- };
- return (result);
- }
- public static function hasMetadata(_arg1:Object, _arg2:String, _arg3:String, _arg4:Array=null, _arg5:Object=null):Boolean{
- var _local6:Object = getClassInfo(_arg1, _arg4, _arg5);
- var _local7:Object = _local6["metadata"];
- return (internalHasMetadata(_local7, _arg2, _arg3));
- }
- public static function isDynamicObject(_arg1:Object):Boolean{
- var obj:* = _arg1;
- try {
- obj["wootHackwoot"];
- } catch(e:Error) {
- return (false);
- };
- return (true);
- }
- private static function internalHasMetadata(_arg1:Object, _arg2:String, _arg3:String):Boolean{
- var _local4:Object;
- if (_arg1 != null){
- _local4 = _arg1[_arg2];
- if (_local4 != null){
- if (_local4[_arg3] != null){
- return (true);
- };
- };
- };
- return (false);
- }
- private static function recordMetadata(_arg1:XMLList):Object{
- var _local3:XML;
- var _local4:String;
- var _local5:XMLList;
- var _local6:Object;
- var _local7:XML;
- var _local8:String;
- var _local9:XMLList;
- var _local10:Object;
- var _local11:XML;
- var _local12:Object;
- var _local13:String;
- var _local14:String;
- var _local15:Array;
- var _local2:Object;
- try {
- for each (_local3 in _arg1) {
- _local4 = _local3.attribute("name").toString();
- _local5 = _local3.metadata;
- if (_local5.length() > 0){
- if (_local2 == null){
- _local2 = {};
- };
- _local6 = {};
- _local2[_local4] = _local6;
- for each (_local7 in _local5) {
- _local8 = _local7.attribute("name").toString();
- _local9 = _local7.arg;
- _local10 = {};
- for each (_local11 in _local9) {
- _local13 = _local11.attribute("key").toString();
- if (_local13 != null){
- _local14 = _local11.attribute("value").toString();
- _local10[_local13] = _local14;
- };
- };
- _local12 = _local6[_local8];
- if (_local12 != null){
- if ((_local12 is Array)){
- _local15 = (_local12 as Array);
- } else {
- _local15 = [_local12];
- delete _local6[_local8];
- };
- _local15.push(_local10);
- _local12 = _local15;
- } else {
- _local12 = _local10;
- };
- _local6[_local8] = _local12;
- };
- };
- };
- } catch(e:Error) {
- };
- return (_local2);
- }
- private static function getCacheKey(_arg1:Object, _arg2:Array=null, _arg3:Object=null):String{
- var _local5:uint;
- var _local6:String;
- var _local7:String;
- var _local8:String;
- var _local4:String = getQualifiedClassName(_arg1);
- if (_arg2 != null){
- _local5 = 0;
- while (_local5 < _arg2.length) {
- _local6 = (_arg2[_local5] as String);
- if (_local6 != null){
- _local4 = (_local4 + _local6);
- };
- _local5++;
- };
- };
- if (_arg3 != null){
- for (_local7 in _arg3) {
- _local4 = (_local4 + _local7);
- _local8 = (_arg3[_local7] as String);
- if (_local8 != null){
- _local4 = (_local4 + _local8);
- };
- };
- };
- return (_local4);
- }
- private static function arrayCompare(_arg1:Array, _arg2:Array, _arg3:int, _arg4:int, _arg5:Dictionary):int{
- var _local7:Object;
- var _local6:int;
- if (_arg1.length != _arg2.length){
- if (_arg1.length < _arg2.length){
- _local6 = -1;
- } else {
- _local6 = 1;
- };
- } else {
- for (_local7 in _arg1) {
- if (_arg2.hasOwnProperty(_local7)){
- _local6 = internalCompare(_arg1[_local7], _arg2[_local7], _arg3, _arg4, _arg5);
- if (_local6 != 0){
- return (_local6);
- };
- } else {
- return (-1);
- };
- };
- for (_local7 in _arg2) {
- if (!_arg1.hasOwnProperty(_local7)){
- return (1);
- };
- };
- };
- return (_local6);
- }
- private static function byteArrayCompare(_arg1:ByteArray, _arg2:ByteArray):int{
- var _local4:int;
- var _local3:int;
- if (_arg1 == _arg2){
- return (_local3);
- };
- if (_arg1.length != _arg2.length){
- if (_arg1.length < _arg2.length){
- _local3 = -1;
- } else {
- _local3 = 1;
- };
- } else {
- _local4 = 0;
- while (_local4 < _arg1.length) {
- _local3 = numericCompare(_arg1[_local4], _arg2[_local4]);
- if (_local3 != 0){
- _local4 = _arg1.length;
- };
- _local4++;
- };
- };
- return (_local3);
- }
- private static function listCompare(_arg1:IList, _arg2:IList, _arg3:int, _arg4:int, _arg5:Dictionary):int{
- var _local7:int;
- var _local6:int;
- if (_arg1.length != _arg2.length){
- if (_arg1.length < _arg2.length){
- _local6 = -1;
- } else {
- _local6 = 1;
- };
- } else {
- _local7 = 0;
- while (_local7 < _arg1.length) {
- _local6 = internalCompare(_arg1.getItemAt(_local7), _arg2.getItemAt(_local7), (_arg3 + 1), _arg4, _arg5);
- if (_local6 != 0){
- _local7 = _arg1.length;
- };
- _local7++;
- };
- };
- return (_local6);
- }
- private static function getRef(_arg1:Object, _arg2:Dictionary):Object{
- var _local3:Object = _arg2[_arg1];
- while (((_local3) && (!((_local3 == _arg2[_local3]))))) {
- _local3 = _arg2[_local3];
- };
- if (!_local3){
- _local3 = _arg1;
- };
- if (_local3 != _arg2[_arg1]){
- _arg2[_arg1] = _local3;
- };
- return (_local3);
- }
- }
- }//package mx.utils
- package mx.utils {
- import flash.events.*;
- import flash.utils.*;
- import mx.events.*;
- import mx.core.*;
- public dynamic class ObjectProxy extends Proxy implements IExternalizable, IPropertyChangeNotifier {
- protected var dispatcher:EventDispatcher;
- protected var notifiers:Object;
- protected var proxyClass:Class;
- protected var propertyList:Array;
- private var _proxyLevel:int;
- private var _item:Object;
- private var _type:QName;
- private var _id:String;
- public function ObjectProxy(_arg1:Object=null, _arg2:String=null, _arg3:int=-1){
- this.proxyClass = ObjectProxy;
- super();
- if (!_arg1){
- _arg1 = {};
- };
- this._item = _arg1;
- this._proxyLevel = _arg3;
- this.notifiers = {};
- this.dispatcher = new EventDispatcher(this);
- if (_arg2){
- this._id = _arg2;
- };
- }
- object_proxy function get object():Object{
- return (this._item);
- }
- object_proxy function get type():QName{
- return (this._type);
- }
- object_proxy function set type(_arg1:QName):void{
- this._type = _arg1;
- }
- public function get uid():String{
- if (this._id === null){
- this._id = UIDUtil.createUID();
- };
- return (this._id);
- }
- public function set uid(_arg1:String):void{
- this._id = _arg1;
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
- var _local2:*;
- if (this.notifiers[_arg1.toString()]){
- return (this.notifiers[_arg1]);
- };
- _local2 = this._item[_arg1];
- if (_local2){
- if ((((this._proxyLevel == 0)) || (ObjectUtil.isSimple(_local2)))){
- return (_local2);
- };
- _local2 = this.getComplexProperty(_arg1, _local2);
- };
- return (_local2);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){
- return (this._item[_arg1].apply(this._item, _args));
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
- var _local5:PropertyChangeEvent;
- var _local2:IPropertyChangeNotifier = IPropertyChangeNotifier(this.notifiers[_arg1]);
- if (_local2){
- _local2.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, this.propertyChangeHandler);
- delete this.notifiers[_arg1];
- };
- var _local3:* = this._item[_arg1];
- var _local4 = delete this._item[_arg1];
- if (this.dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)){
- _local5 = new PropertyChangeEvent(PropertyChangeEvent.PROPERTY_CHANGE);
- _local5.kind = PropertyChangeEventKind.DELETE;
- _local5.property = _arg1;
- _local5.oldValue = _local3;
- _local5.source = this;
- this.dispatcher.dispatchEvent(_local5);
- };
- return (_local4);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
- return ((_arg1 in this._item));
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
- return (this.propertyList[(_arg1 - 1)]);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
- if (_arg1 == 0){
- this.setupPropertyList();
- };
- if (_arg1 < this.propertyList.length){
- return ((_arg1 + 1));
- };
- return (0);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextValue(_arg1:int){
- return (this._item[this.propertyList[(_arg1 - 1)]]);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
- var _local4:IPropertyChangeNotifier;
- var _local5:PropertyChangeEvent;
- var _local3:* = this._item[_arg1];
- if (_local3 !== _arg2){
- this._item[_arg1] = _arg2;
- _local4 = IPropertyChangeNotifier(this.notifiers[_arg1]);
- if (_local4){
- _local4.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, this.propertyChangeHandler);
- delete this.notifiers[_arg1];
- };
- if (this.dispatcher.hasEventListener(PropertyChangeEvent.PROPERTY_CHANGE)){
- if ((_arg1 is QName)){
- _arg1 = QName(_arg1).localName;
- };
- _local5 = PropertyChangeEvent.createUpdateEvent(this, _arg1.toString(), _local3, _arg2);
- this.dispatcher.dispatchEvent(_local5);
- };
- };
- }
- object_proxy function getComplexProperty(_arg1, _arg2){
- if ((_arg2 is IPropertyChangeNotifier)){
- _arg2.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, this.propertyChangeHandler);
- this.notifiers[_arg1] = _arg2;
- return (_arg2);
- };
- if (getQualifiedClassName(_arg2) == "Object"){
- _arg2 = new this.proxyClass(this._item[_arg1], null, (((this._proxyLevel > 0)) ? (this._proxyLevel - 1) : this._proxyLevel));
- _arg2.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, this.propertyChangeHandler);
- this.notifiers[_arg1] = _arg2;
- return (_arg2);
- };
- return (_arg2);
- }
- public function readExternal(_arg1:IDataInput):void{
- var _local2:Object = _arg1.readObject();
- this._item = _local2;
- }
- public function writeExternal(_arg1:IDataOutput):void{
- _arg1.writeObject(this._item);
- }
- public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
- this.dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
- }
- public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
- this.dispatcher.removeEventListener(_arg1, _arg2, _arg3);
- }
- public function dispatchEvent(_arg1:Event):Boolean{
- return (this.dispatcher.dispatchEvent(_arg1));
- }
- public function hasEventListener(_arg1:String):Boolean{
- return (this.dispatcher.hasEventListener(_arg1));
- }
- public function willTrigger(_arg1:String):Boolean{
- return (this.dispatcher.willTrigger(_arg1));
- }
- public function propertyChangeHandler(_arg1:PropertyChangeEvent):void{
- this.dispatcher.dispatchEvent(_arg1);
- }
- protected function setupPropertyList():void{
- var _local1:String;
- if (getQualifiedClassName(this._item) == "Object"){
- this.propertyList = [];
- for (_local1 in this._item) {
- this.propertyList.push(_local1);
- };
- } else {
- this.propertyList = ObjectUtil.getClassInfo(this._item, null, {
- includeReadOnly:true,
- uris:["*"]
- }).properties;
- };
- }
- }
- }//package mx.utils
- package mx.utils {
- import flash.utils.*;
- public dynamic class DescribeTypeCacheRecord extends Proxy {
- private var cache:Object;
- public var typeDescription:XML;
- public var typeName:String;
- public function DescribeTypeCacheRecord(){
- this.cache = {};
- super();
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
- var _local2:* = this.cache[_arg1];
- if (_local2 === undefined){
- _local2 = DescribeTypeCache.extractValue(_arg1, this);
- this.cache[_arg1] = _local2;
- };
- return (_local2);
- }
- override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
- if ((_arg1 in this.cache)){
- return (true);
- };
- var _local2:* = DescribeTypeCache.extractValue(_arg1, this);
- if (_local2 === undefined){
- return (false);
- };
- this.cache[_arg1] = _local2;
- return (true);
- }
- }
- }//package mx.utils
- package mx.collections {
- import flash.events.*;
- public interface IList extends IEventDispatcher {
- function get length():int;
- function addItem(_arg1:Object):void;
- function addItemAt(_arg1:Object, _arg2:int):void;
- function getItemAt(_arg1:int, _arg2:int=0):Object;
- function getItemIndex(_arg1:Object):int;
- function itemUpdated(_arg1:Object, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void;
- function removeAll():void;
- function removeItemAt(_arg1:int):Object;
- function setItemAt(_arg1:Object, _arg2:int):Object;
- function toArray():Array;
- }
- }//package mx.collections
- package {
- import zopim.net.*;
- import zopim.*;
- import flash.display.*;
- import zopim.utils.*;
- import flash.system.*;
- import flash.external.*;
- public class ZClientController extends Sprite {
- private var socket:ZClientSocket;
- private var sessionObject:SessionObject;
- private var localConnection:ZLocalConnection;
- public function ZClientController(){
- Security.allowDomain("*");
- Security.allowInsecureDomain("*");
- ZConfig.init(ZConfig.ZCLIENT_CONFIG);
- localConnection = new ZLocalConnection();
- sessionObject = new SessionObject(ZConfig.accountKey, localConnection);
- socket = new ZClientSocket(dispatchToJS, sessionObject);
- initLocalConnection();
- addExternalInterfaceCallbacks();
- socket.initSocket();
- }
- public static function encodeCharactersThatLameExternalInterfaceChokesOn(_arg1:Object):void{
- var _local2:String;
- for (_local2 in _arg1) {
- if ((_arg1[_local2] is String)){
- _arg1[_local2] = _arg1[_local2].replace(/\\/g, "\\\\");
- } else {
- if ((_arg1[_local2] is Object)){
- encodeCharactersThatLameExternalInterfaceChokesOn(_arg1[_local2]);
- };
- };
- };
- }
- private function initLocalConnection():void{
- localConnection.client = {
- updateVariable:sessionObject.updateVariable,
- onReset:socket.onReset
- };
- localConnection.connect(ZConfig.tabIdentifier);
- }
- private function addExternalInterfaceCallbacks():void{
- if (!ExternalInterface.available){
- ZConfig.traceTime("External interface is not available for this container.");
- return;
- };
- try {
- ZConfig.traceTime("Enabling external interfaces...");
- ExternalInterface.addCallback("jsSend", socket.jsSend);
- ExternalInterface.addCallback("jsAlert", SoundAlert.play);
- ExternalInterface.addCallback("disconnect", onJSWindowUnload);
- ExternalInterface.addCallback("connect", socket.connect);
- ExternalInterface.addCallback("reset", socket.reset);
- } catch(error:Error) {
- ZConfig.traceTime((error.message + "\n"));
- };
- }
- private function onJSWindowUnload(_arg1:Object=null):void{
- socket.disconnect();
- sessionObject.disconnect(_arg1);
- }
- private function dispatchToJS(_arg1:Object):void{
- encodeCharactersThatLameExternalInterfaceChokesOn(_arg1);
- ExternalInterface.call("__$$__meshim__Socket.dispatch", _arg1);
- }
- }
- }//package
- package {
- import flash.events.*;
- import zopim.events.*;
- import zopim.*;
- import flash.utils.*;
- import com.adobe.serialization.json.*;
- public class ZClientSocket extends ZSocket {
- private static const JS_VERSION:String = "0.4.0";
- private static const SWF_VERSION:String = "2371";
- private static const REDIRECT:String = "redirect";
- private const suppressInitFlags:Object;
- private var passThroughCallback:Function;
- private var sessionObject:SessionObject;
- private var initialized:Boolean = false;
- private var idleDisconnected:Boolean = false;
- private var idleDisconnectedBuffer:Array;
- private var isResetting:Boolean = false;
- private var registerCache:Object;
- public function ZClientSocket(_arg1:Function=null, _arg2:SessionObject=null){
- idleDisconnectedBuffer = [];
- suppressInitFlags = {
- banned:true,
- nossl:true,
- disconnect:true
- };
- this.sessionObject = _arg2;
- this.passThroughCallback = _arg1;
- super();
- }
- public function initSocket():void{
- if (initialized){
- return;
- };
- initialized = true;
- initiateSession();
- jsonMap.addMapping("config", ZConfiguration);
- jsonMap.addMapping("idle_disconnect", ZIdleDisconnect);
- jsonMap.addMapping("banned", ZBanned);
- jsonMap.addMapping("reset", ZReset);
- addEventListener(ZConfiguration.TYPE, function (_arg1:ZConfiguration):void{
- ZConfig.update(_arg1.json);
- });
- addEventListener(ZIdleDisconnect.TYPE, onIdleDisconnect);
- addEventListener(ZBanned.TYPE, function (_arg1:ZBanned):void{
- disconnect();
- });
- addEventListener(ZReset.TYPE, onReset);
- if (!suppressInit){
- dispatchObject({__type:"flashready"});
- };
- }
- private function onIdleDisconnect(_arg1:ZIdleDisconnect=null):void{
- idleDisconnected = true;
- idleDisconnectedBuffer.splice(0, idleDisconnectedBuffer.length);
- disconnect();
- }
- override public function connect(_arg1:String="", _arg2:uint=0):void{
- this.host = ((((sessionObject.cachedData.host) || (_arg1))) || (this.host));
- this.port = ((((sessionObject.cachedData.port) || (_arg2))) || (this.port));
- if (getCachedConnectionMode() == POLLING_CONNECTION){
- httpFallback();
- };
- super.connect();
- }
- public function reset():void{
- isResetting = true;
- if (connected){
- send("clear_all");
- };
- }
- public function onReset(_arg1:ZReset=null):void{
- isResetting = false;
- sessionObject.clear();
- ZConfig.clear();
- disconnect();
- if ((_arg1 is ZReset)){
- ZConfig.saveValue("machineID", _arg1.machineID);
- httpSocket.evt = _arg1.evt;
- sid = _arg1.sid;
- };
- passThrough({__type:"reset"});
- connect();
- }
- private function saveValue(_arg1:String, _arg2):void{
- sessionObject.saveValue(_arg1, _arg2);
- }
- private function getValue(_arg1:String){
- return (sessionObject.cachedData[_arg1]);
- }
- private function get suppressInit():Boolean{
- var _local1:String;
- for (_local1 in suppressInitFlags) {
- if (getValue(_local1)){
- return (true);
- };
- };
- return (false);
- }
- private function set suppressInit(_arg1:Boolean):void{
- var _local2:String;
- if (!_arg1){
- for (_local2 in suppressInitFlags) {
- saveValue(_local2, false);
- };
- };
- }
- private function initiateSession():void{
- if (sid){
- connect();
- return;
- };
- if (!ZConfig.accountKey){
- ZConfig.traceTime("no accountKey");
- return;
- };
- var obj:* = {
- mID:((ZConfig.machineID) || ("")),
- url:((ZConfig.pageUrl) || ("")),
- ua:((ZConfig.ua) || ("")),
- ak:((ZConfig.accountKey) || ("")),
- sk:((ZConfig.secretKey) || ("")),
- mID:((ZConfig.machineID) || ("")),
- ua:((ZConfig.ua) || ("")),
- title:((ZConfig.pageTitle) || ("")),
- url:((ZConfig.pageUrl) || ("")),
- ref:((ZConfig.referrer) || ("")),
- tabId:((ZConfig.tabIdentifier) || ("")),
- jsVer:((JS_VERSION) || ("")),
- swfVer:((SWF_VERSION) || ("")),
- accountKey:((ZConfig.accountKey) || (""))
- };
- httpSocket.sendRegister(obj, onRegister, function onError (_arg1:Event):void{
- onErrorConnection();
- });
- }
- override protected function httpFallback():void{
- if (connectionMode == NO_CONNECTION){
- super.httpFallback();
- if (connectionMode == POLLING_CONNECTION){
- reattach();
- };
- };
- }
- override protected function get connectionMode():uint{
- return (_connectionMode);
- }
- override protected function set connectionMode(_arg1:uint):void{
- ZConfig.traceTime(("_connectionMode set >> " + (((_arg1 == 1)) ? "SOCKET_CONNECTION" : (((_arg1 == 2)) ? "POLLING_CONNECTION" : "NONE"))));
- _connectionMode = _arg1;
- if (sessionObject){
- sessionObject.saveValues({_connectionMode:_arg1});
- };
- }
- protected function getCachedConnectionMode():uint{
- var _local1:uint;
- if (sessionObject){
- _local1 = sessionObject.cachedData["_connectionMode"];
- };
- if ((_local1 is uint)){
- return (_local1);
- };
- return (0);
- }
- public function jsSend(_arg1:Object):void{
- if (((((((idleDisconnected) && (_arg1))) && (_arg1.__type))) && ((_arg1.__type == "client.active")))){
- if (!idleDisconnectedBuffer.length){
- initiateSession();
- };
- idleDisconnectedBuffer.push(_arg1);
- return;
- };
- var _local2:String = JSON.encode(_arg1);
- send(_arg1["__type"], _arg1);
- }
- override public function dispatchObject(_arg1:Object):void{
- var _local3:Function;
- var _local4:ZEvent;
- if (!_arg1){
- return;
- };
- var _local2:String = _arg1["__type"];
- if (_local2 == "response"){
- _local3 = callbacks[_arg1["__messageID"]];
- if ((_local3 is Function)){
- _local3(_arg1);
- } else {
- passThrough(_arg1);
- };
- } else {
- _local4 = jsonMap.jsonToEvent(_arg1);
- dispatchEvent(_local4);
- passThrough(_arg1);
- };
- }
- private function passThrough(_arg1:Object):void{
- if ((passThroughCallback is Function)){
- passThroughCallback(_arg1);
- };
- }
- override protected function onConnect(_arg1:Event):void{
- super.onConnect(_arg1);
- reattach();
- }
- private function onRegister(_arg1:Object):void{
- var _local2:Object;
- if (_arg1.__status == "ok"){
- registerCache = _arg1;
- ZConfig.update(_arg1);
- _nick = _arg1.nick;
- sid = _arg1.sid;
- startPoll(_arg1);
- if (!isResetting){
- if (suppressInit){
- suppressInit = false;
- dispatchObject({__type:"flashready"});
- };
- _arg1["__type"] = "init";
- dispatchObject(_arg1);
- startKeepAlive();
- reconnectDelay = DEFAULT_RECONNECT_DELAY;
- if (idleDisconnected){
- idleDisconnected = false;
- for each (_local2 in idleDisconnectedBuffer) {
- jsSend(_local2);
- };
- idleDisconnectedBuffer.splice(0, idleDisconnectedBuffer.length);
- };
- };
- connect(_arg1.host);
- } else {
- if (suppressInitFlags[_arg1.__status]){
- saveValue(_arg1.__status, true);
- dispatchObject({__type:_arg1.__status});
- } else {
- dispatchConnectionError(_arg1);
- };
- };
- }
- override protected function onErrorConnection(_arg1:ZErrorConnection=null):void{
- clearTimeout(connectTimeoutId);
- ZConfig.traceTime((("ZSocket reconnecting in " + (reconnectDelay / 1000)) + "secs."));
- connectTimeoutId = setTimeout(initiateSession, reconnectDelay);
- reconnectDelay = (reconnectDelay + (((reconnectDelay < MAX_RECONNECT_DELAY)) ? reconnectDelay : 0));
- }
- override protected function onReattach(_arg1:Object):void{
- if (_arg1.__status == "ok"){
- dispatchObject({
- __type:"connected",
- displayName:_arg1.name,
- nick:_arg1.nick
- });
- passThrough({__type:"reattached"});
- registerCache.__type = "init";
- passThrough(registerCache);
- startPoll(_arg1);
- startKeepAlive();
- reconnectDelay = DEFAULT_RECONNECT_DELAY;
- if (isResetting){
- reset();
- };
- } else {
- if (_arg1.__status == "failed"){
- sid = null;
- initiateSession();
- } else {
- dispatchConnectionError(_arg1);
- };
- };
- }
- }
- }//package
- package com.adobe.crypto {
- import flash.utils.*;
- import mx.utils.*;
- import com.adobe.utils.*;
- public class SHA1 {
- public static function hash(_arg1:String):String{
- var _local2:Array = createBlocksFromString(_arg1);
- var _local3:ByteArray = hashBlocks(_local2);
- return (((((IntUtil.toHex(_local3.readInt(), true) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)));
- }
- public static function hashBytes(_arg1:ByteArray):String{
- var _local2:Array = SHA1.createBlocksFromByteArray(_arg1);
- var _local3:ByteArray = hashBlocks(_local2);
- return (((((IntUtil.toHex(_local3.readInt(), true) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)) + IntUtil.toHex(_local3.readInt(), true)));
- }
- public static function hashToBase64(_arg1:String):String{
- var _local7:uint;
- var _local2:Array = SHA1.createBlocksFromString(_arg1);
- var _local3:ByteArray = hashBlocks(_local2);
- var _local4 = "";
- _local3.position = 0;
- var _local5:int;
- while (_local5 < _local3.length) {
- _local7 = _local3.readUnsignedByte();
- _local4 = (_local4 + String.fromCharCode(_local7));
- _local5++;
- };
- var _local6:Base64Encoder = new Base64Encoder();
- _local6.encode(_local4);
- return (_local6.flush());
- }
- private static function hashBlocks(_arg1:Array):ByteArray{
- var _local11:int;
- var _local12:int;
- var _local13:int;
- var _local14:int;
- var _local15:int;
- var _local16:int;
- var _local17:int;
- var _local2 = 1732584193;
- var _local3:int = 4023233417;
- var _local4:int = 2562383102;
- var _local5 = 271733878;
- var _local6:int = 3285377520;
- var _local7:int = _arg1.length;
- var _local8:Array = new Array(80);
- var _local9:int;
- while (_local9 < _local7) {
- _local11 = _local2;
- _local12 = _local3;
- _local13 = _local4;
- _local14 = _local5;
- _local15 = _local6;
- _local16 = 0;
- while (_local16 < 80) {
- if (_local16 < 16){
- _local8[_local16] = _arg1[(_local9 + _local16)];
- } else {
- _local8[_local16] = IntUtil.rol((((_local8[(_local16 - 3)] ^ _local8[(_local16 - 8)]) ^ _local8[(_local16 - 14)]) ^ _local8[(_local16 - 16)]), 1);
- };
- _local17 = ((((IntUtil.rol(_local11, 5) + f(_local16, _local12, _local13, _local14)) + _local15) + int(_local8[_local16])) + k(_local16));
- _local15 = _local14;
- _local14 = _local13;
- _local13 = IntUtil.rol(_local12, 30);
- _local12 = _local11;
- _local11 = _local17;
- _local16++;
- };
- _local2 = (_local2 + _local11);
- _local3 = (_local3 + _local12);
- _local4 = (_local4 + _local13);
- _local5 = (_local5 + _local14);
- _local6 = (_local6 + _local15);
- _local9 = (_local9 + 16);
- };
- var _local10:ByteArray = new ByteArray();
- _local10.writeInt(_local2);
- _local10.writeInt(_local3);
- _local10.writeInt(_local4);
- _local10.writeInt(_local5);
- _local10.writeInt(_local6);
- _local10.position = 0;
- return (_local10);
- }
- private static function f(_arg1:int, _arg2:int, _arg3:int, _arg4:int):int{
- if (_arg1 < 20){
- return (((_arg2 & _arg3) | (~(_arg2) & _arg4)));
- };
- if (_arg1 < 40){
- return (((_arg2 ^ _arg3) ^ _arg4));
- };
- if (_arg1 < 60){
- return ((((_arg2 & _arg3) | (_arg2 & _arg4)) | (_arg3 & _arg4)));
- };
- return (((_arg2 ^ _arg3) ^ _arg4));
- }
- private static function k(_arg1:int):int{
- if (_arg1 < 20){
- return (1518500249);
- };
- if (_arg1 < 40){
- return (1859775393);
- };
- if (_arg1 < 60){
- return (2400959708);
- };
- return (3395469782);
- }
- private static function createBlocksFromByteArray(_arg1:ByteArray):Array{
- var _local2:int = _arg1.position;
- _arg1.position = 0;
- var _local3:Array = new Array();
- var _local4:int = (_arg1.length * 8);
- var _local5 = 0xFF;
- var _local6:int;
- while (_local6 < _local4) {
- _local3[(_local6 >> 5)] = (_local3[(_local6 >> 5)] | ((_arg1.readByte() & _local5) << (24 - (_local6 % 32))));
- _local6 = (_local6 + 8);
- };
- _local3[(_local4 >> 5)] = (_local3[(_local4 >> 5)] | (128 << (24 - (_local4 % 32))));
- _local3[((((_local4 + 64) >> 9) << 4) + 15)] = _local4;
- _arg1.position = _local2;
- return (_local3);
- }
- private static function createBlocksFromString(_arg1:String):Array{
- var _local2:Array = new Array();
- var _local3:int = (_arg1.length * 8);
- var _local4 = 0xFF;
- var _local5:int;
- while (_local5 < _local3) {
- _local2[(_local5 >> 5)] = (_local2[(_local5 >> 5)] | ((_arg1.charCodeAt((_local5 / 8)) & _local4) << (24 - (_local5 % 32))));
- _local5 = (_local5 + 8);
- };
- _local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | (128 << (24 - (_local3 % 32))));
- _local2[((((_local3 + 64) >> 9) << 4) + 15)] = _local3;
- return (_local2);
- }
- }
- }//package com.adobe.crypto
- package com.adobe.serialization.json {
- public class JSONToken {
- private var _type:int;
- private var _value:Object;
- public function JSONToken(_arg1:int=-1, _arg2:Object=null){
- _type = _arg1;
- _value = _arg2;
- }
- public function get type():int{
- return (_type);
- }
- public function set type(_arg1:int):void{
- _type = _arg1;
- }
- public function get value():Object{
- return (_value);
- }
- public function set value(_arg1:Object):void{
- _value = _arg1;
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- import flash.utils.*;
- public class JSONEncoder {
- private var jsonString:String;
- public function JSONEncoder(_arg1){
- jsonString = convertToString(_arg1);
- }
- public function getString():String{
- return (jsonString);
- }
- private function convertToString(_arg1):String{
- if ((_arg1 is String)){
- return (escapeString((_arg1 as String)));
- };
- if ((_arg1 is Number)){
- return (((isFinite((_arg1 as Number))) ? _arg1.toString() : "null"));
- };
- if ((_arg1 is Boolean)){
- return (((_arg1) ? "true" : "false"));
- };
- if ((_arg1 is Array)){
- return (arrayToString((_arg1 as Array)));
- };
- if ((((_arg1 is Object)) && (!((_arg1 == null))))){
- return (objectToString(_arg1));
- };
- return ("null");
- }
- private function escapeString(_arg1:String):String{
- var _local3:String;
- var _local6:String;
- var _local7:String;
- var _local2 = "";
- var _local4:Number = _arg1.length;
- var _local5:int;
- while (_local5 < _local4) {
- _local3 = _arg1.charAt(_local5);
- switch (_local3){
- case "\"":
- _local2 = (_local2 + "\\\"");
- break;
- case "\\":
- _local2 = (_local2 + "\\\\");
- break;
- case "\b":
- _local2 = (_local2 + "\\b");
- break;
- case "\f":
- _local2 = (_local2 + "\\f");
- break;
- case "\n":
- _local2 = (_local2 + "\\n");
- break;
- case "\r":
- _local2 = (_local2 + "\\r");
- break;
- case "\t":
- _local2 = (_local2 + "\\t");
- break;
- default:
- if ((((_local3 < " ")) || ((_local3.charCodeAt(0) > 127)))){
- _local6 = _local3.charCodeAt(0).toString(16);
- switch (_local6.length){
- case 1:
- _local7 = "000";
- break;
- case 2:
- _local7 = "00";
- break;
- case 3:
- _local7 = "0";
- break;
- default:
- _local7 = "";
- };
- _local2 = (_local2 + (("\\u" + _local7) + _local6));
- } else {
- _local2 = (_local2 + _local3);
- };
- };
- _local5++;
- };
- return ((("\"" + _local2) + "\""));
- }
- private function arrayToString(_arg1:Array):String{
- var _local2 = "";
- var _local3:int;
- while (_local3 < _arg1.length) {
- if (_local2.length > 0){
- _local2 = (_local2 + ",");
- };
- _local2 = (_local2 + convertToString(_arg1[_local3]));
- _local3++;
- };
- return ((("[" + _local2) + "]"));
- }
- private function objectToString(_arg1:Object):String{
- var value:* = null;
- var key:* = null;
- var v:* = null;
- var o:* = _arg1;
- var s:* = "";
- var classInfo:* = describeType(o);
- if (classInfo.@name.toString() == "Object"){
- for (key in o) {
- value = o[key];
- if ((value is Function)){
- } else {
- if (s.length > 0){
- s = (s + ",");
- };
- s = (s + ((escapeString(key) + ":") + convertToString(value)));
- };
- };
- } else {
- for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) {
- if (s.length > 0){
- s = (s + ",");
- };
- s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name])));
- };
- };
- return ((("{" + s) + "}"));
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- public class JSONParseError extends Error {
- private var _location:int;
- private var _text:String;
- public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){
- super(_arg1);
- _location = _arg2;
- _text = _arg3;
- }
- public function get location():int{
- return (_location);
- }
- public function get text():String{
- return (_text);
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- public class JSONTokenizer {
- private var obj:Object;
- private var jsonString:String;
- private var loc:int;
- private var ch:String;
- public function JSONTokenizer(_arg1:String){
- jsonString = _arg1;
- loc = 0;
- nextChar();
- }
- public function getNextToken():JSONToken{
- var _local2:String;
- var _local3:String;
- var _local4:String;
- var _local1:JSONToken = new JSONToken();
- skipIgnored();
- switch (ch){
- case "{":
- _local1.type = JSONTokenType.LEFT_BRACE;
- _local1.value = "{";
- nextChar();
- break;
- case "}":
- _local1.type = JSONTokenType.RIGHT_BRACE;
- _local1.value = "}";
- nextChar();
- break;
- case "[":
- _local1.type = JSONTokenType.LEFT_BRACKET;
- _local1.value = "[";
- nextChar();
- break;
- case "]":
- _local1.type = JSONTokenType.RIGHT_BRACKET;
- _local1.value = "]";
- nextChar();
- break;
- case ",":
- _local1.type = JSONTokenType.COMMA;
- _local1.value = ",";
- nextChar();
- break;
- case ":":
- _local1.type = JSONTokenType.COLON;
- _local1.value = ":";
- nextChar();
- break;
- case "t":
- _local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
- if (_local2 == "true"){
- _local1.type = JSONTokenType.TRUE;
- _local1.value = true;
- nextChar();
- } else {
- parseError(("Expecting 'true' but found " + _local2));
- };
- break;
- case "f":
- _local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
- if (_local3 == "false"){
- _local1.type = JSONTokenType.FALSE;
- _local1.value = false;
- nextChar();
- } else {
- parseError(("Expecting 'false' but found " + _local3));
- };
- break;
- case "n":
- _local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
- if (_local4 == "null"){
- _local1.type = JSONTokenType.NULL;
- _local1.value = null;
- nextChar();
- } else {
- parseError(("Expecting 'null' but found " + _local4));
- };
- break;
- case "\"":
- _local1 = readString();
- break;
- default:
- if (((isDigit(ch)) || ((ch == "-")))){
- _local1 = readNumber();
- } else {
- if (ch == ""){
- return (null);
- };
- parseError((("Unexpected " + ch) + " encountered"));
- };
- };
- return (_local1);
- }
- private function readString():JSONToken{
- var _local3:String;
- var _local4:int;
- var _local1:JSONToken = new JSONToken();
- _local1.type = JSONTokenType.STRING;
- var _local2 = "";
- nextChar();
- while (((!((ch == "\""))) && (!((ch == ""))))) {
- if (ch == "\\"){
- nextChar();
- switch (ch){
- case "\"":
- _local2 = (_local2 + "\"");
- break;
- case "/":
- _local2 = (_local2 + "/");
- break;
- case "\\":
- _local2 = (_local2 + "\\");
- break;
- case "b":
- _local2 = (_local2 + "\b");
- break;
- case "f":
- _local2 = (_local2 + "\f");
- break;
- case "n":
- _local2 = (_local2 + "\n");
- break;
- case "r":
- _local2 = (_local2 + "\r");
- break;
- case "t":
- _local2 = (_local2 + "\t");
- break;
- case "u":
- _local3 = "";
- _local4 = 0;
- while (_local4 < 4) {
- if (!isHexDigit(nextChar())){
- parseError((" Excepted a hex digit, but found: " + ch));
- };
- _local3 = (_local3 + ch);
- _local4++;
- };
- _local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
- break;
- default:
- _local2 = (_local2 + ("\\" + ch));
- };
- } else {
- _local2 = (_local2 + ch);
- };
- nextChar();
- };
- if (ch == ""){
- parseError("Unterminated string literal");
- };
- nextChar();
- _local1.value = _local2;
- return (_local1);
- }
- private function readNumber():JSONToken{
- var _local1:JSONToken = new JSONToken();
- _local1.type = JSONTokenType.NUMBER;
- var _local2 = "";
- if (ch == "-"){
- _local2 = (_local2 + "-");
- nextChar();
- };
- if (!isDigit(ch)){
- parseError("Expecting a digit");
- };
- if (ch == "0"){
- _local2 = (_local2 + ch);
- nextChar();
- if (isDigit(ch)){
- parseError("A digit cannot immediately follow 0");
- };
- } else {
- while (isDigit(ch)) {
- _local2 = (_local2 + ch);
- nextChar();
- };
- };
- if (ch == "."){
- _local2 = (_local2 + ".");
- nextChar();
- if (!isDigit(ch)){
- parseError("Expecting a digit");
- };
- while (isDigit(ch)) {
- _local2 = (_local2 + ch);
- nextChar();
- };
- };
- if ((((ch == "e")) || ((ch == "E")))){
- _local2 = (_local2 + "e");
- nextChar();
- if ((((ch == "+")) || ((ch == "-")))){
- _local2 = (_local2 + ch);
- nextChar();
- };
- if (!isDigit(ch)){
- parseError("Scientific notation number needs exponent value");
- };
- while (isDigit(ch)) {
- _local2 = (_local2 + ch);
- nextChar();
- };
- };
- var _local3:Number = Number(_local2);
- if (((isFinite(_local3)) && (!(isNaN(_local3))))){
- _local1.value = _local3;
- return (_local1);
- };
- parseError((("Number " + _local3) + " is not valid!"));
- return (null);
- }
- private function nextChar():String{
- return ((ch = jsonString.charAt(loc++)));
- }
- private function skipIgnored():void{
- skipWhite();
- skipComments();
- skipWhite();
- }
- private function skipComments():void{
- if (ch == "/"){
- nextChar();
- switch (ch){
- case "/":
- do {
- nextChar();
- } while (((!((ch == "\n"))) && (!((ch == "")))));
- nextChar();
- break;
- case "*":
- nextChar();
- while (true) {
- if (ch == "*"){
- nextChar();
- if (ch == "/"){
- nextChar();
- break;
- };
- } else {
- nextChar();
- };
- if (ch == ""){
- parseError("Multi-line comment not closed");
- };
- };
- break;
- default:
- parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
- };
- };
- }
- private function skipWhite():void{
- while (isWhiteSpace(ch)) {
- nextChar();
- };
- }
- private function isWhiteSpace(_arg1:String):Boolean{
- return ((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n"))));
- }
- private function isDigit(_arg1:String):Boolean{
- return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
- }
- private function isHexDigit(_arg1:String):Boolean{
- var _local2:String = _arg1.toUpperCase();
- return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
- }
- public function parseError(_arg1:String):void{
- throw (new JSONParseError(_arg1, loc, jsonString));
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- public class JSONTokenType {
- public static const UNKNOWN:int = -1;
- public static const COMMA:int = 0;
- public static const LEFT_BRACE:int = 1;
- public static const RIGHT_BRACE:int = 2;
- public static const LEFT_BRACKET:int = 3;
- public static const RIGHT_BRACKET:int = 4;
- public static const COLON:int = 6;
- public static const TRUE:int = 7;
- public static const FALSE:int = 8;
- public static const NULL:int = 9;
- public static const STRING:int = 10;
- public static const NUMBER:int = 11;
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- public class JSONDecoder {
- private var value;
- private var tokenizer:JSONTokenizer;
- private var token:JSONToken;
- public function JSONDecoder(_arg1:String){
- tokenizer = new JSONTokenizer(_arg1);
- nextToken();
- value = parseValue();
- }
- public function getValue(){
- return (value);
- }
- private function nextToken():JSONToken{
- return ((token = tokenizer.getNextToken()));
- }
- private function parseArray():Array{
- var _local1:Array = new Array();
- nextToken();
- if (token.type == JSONTokenType.RIGHT_BRACKET){
- return (_local1);
- };
- _local1.push(parseValue());
- nextToken();
- if (token.type == JSONTokenType.RIGHT_BRACKET){
- return (_local1);
- };
- if (token.type == JSONTokenType.COMMA){
- nextToken();
- } else {
- tokenizer.parseError(("Expecting ] or , but found " + token.value));
- };
- //unresolved jump
- }
- private function parseObject():Object{
- var _local2:String;
- var _local1:Object = new Object();
- nextToken();
- if (token.type == JSONTokenType.RIGHT_BRACE){
- return (_local1);
- };
- if (token.type == JSONTokenType.STRING){
- _local2 = String(token.value);
- nextToken();
- if (token.type == JSONTokenType.COLON){
- nextToken();
- _local1[_local2] = parseValue();
- nextToken();
- if (token.type == JSONTokenType.RIGHT_BRACE){
- return (_local1);
- };
- if (token.type == JSONTokenType.COMMA){
- nextToken();
- } else {
- tokenizer.parseError(("Expecting } or , but found " + token.value));
- };
- } else {
- tokenizer.parseError(("Expecting : but found " + token.value));
- };
- } else {
- tokenizer.parseError(("Expecting string but found " + token.value));
- };
- //unresolved jump
- }
- private function parseValue():Object{
- switch (token.type){
- case JSONTokenType.LEFT_BRACE:
- return (parseObject());
- case JSONTokenType.LEFT_BRACKET:
- return (parseArray());
- case JSONTokenType.STRING:
- case JSONTokenType.NUMBER:
- case JSONTokenType.TRUE:
- case JSONTokenType.FALSE:
- case JSONTokenType.NULL:
- return (token.value);
- default:
- tokenizer.parseError(("Unexpected " + token.value));
- };
- return (null);
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.serialization.json {
- public class JSON {
- public static function encode(_arg1:Object):String{
- var _local2:JSONEncoder = new JSONEncoder(_arg1);
- return (_local2.getString());
- }
- public static function decode(_arg1:String){
- var _local2:JSONDecoder = new JSONDecoder(_arg1);
- return (_local2.getValue());
- }
- }
- }//package com.adobe.serialization.json
- package com.adobe.utils {
- public class IntUtil {
- private static var hexChars:String = "0123456789abcdef";
- public static function rol(_arg1:int, _arg2:int):int{
- return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
- }
- public static function ror(_arg1:int, _arg2:int):uint{
- var _local3:int = (32 - _arg2);
- return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3))));
- }
- public static function toHex(_arg1:int, _arg2:Boolean=false):String{
- var _local4:int;
- var _local5:int;
- var _local3 = "";
- if (_arg2){
- _local4 = 0;
- while (_local4 < 4) {
- _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15))));
- _local4++;
- };
- } else {
- _local5 = 0;
- while (_local5 < 4) {
- _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15))));
- _local5++;
- };
- };
- return (_local3);
- }
- }
- }//package com.adobe.utils
Add Comment
Please, Sign In to add comment