Section 1
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 2
//FlexSprite (mx.core.FlexSprite)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexSprite extends Sprite {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexSprite(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 3
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 4
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 5
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 6
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 7
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 8
//SpriteAsset (mx.core.SpriteAsset)
package mx.core {
public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function SpriteAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 9
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 10
//Irc (tv.ustream.chat.Irc)
package tv.ustream.chat {
import flash.events.*;
import tv.ustream.tools.*;
import flash.net.*;
import flash.system.*;
public class Irc extends Socket {
public var roomsLT:Object;
public var _host:String;
public var enableHistory:Boolean;// = true
public var enableNickColors:Boolean;// = false
public var me:String;
private var ready:Boolean;// = false
private var nowInjured:Boolean;// = false
private var roomIndex:uint;// = 0
private var wasInjured:Boolean;// = false
public var modes:Object;
public var canHideUserList:uint;// = 0
private var ircServers:Array;
public var home:Boolean;
private var _port:int;
private var injured:String;
private var attemptCounter:int;// = 0
public var rooms:Object;
public static var roomCount:int = 0;
public function Irc(_arg1:String, _arg2:int, _arg3:String){
rooms = {};
roomsLT = {};
modes = {};
ircServers = ["s1.ustream.tv", "s2.ustream.tv"];
trace("[Irc] - Irc() :: ");
_host = _arg1;
_port = _arg2;
Security.loadPolicyFile((("xmlsocket://" + _host) + "/crossdomain.xml"));
rooms = [];
me = _arg3;
home = !((_arg1.indexOf("ustream.tv") == -1));
addEventListener(Event.ACTIVATE, onSocketEvent);
addEventListener(Event.CLOSE, onSocketClose);
addEventListener(Event.CONNECT, onSocketConnect);
addEventListener(Event.DEACTIVATE, onSocketEvent);
addEventListener(IOErrorEvent.IO_ERROR, onIoError);
addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
super(_arg1, _arg2);
}
public function send(_arg1:String):void{
if (((_arg1) && (connected))){
if (_arg1.toLowerCase().substr(0, 11) == "privmsg irc"){
return;
};
Debug.echo(("[Irc] - send() :: >> " + _arg1));
writeUTFBytes((_arg1 + "\r\n"));
flush();
};
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
Debug.echo("onSecurityError");
Debug.echo(_arg1.target.toString());
Debug.echo(_arg1.text.toString());
Debug.echo(_arg1.type.toString());
var _local2:DynamicEvent = new DynamicEvent("error");
_local2.text = "disconnected (security)";
this.dispatchEvent(_local2);
}
private function onSocketEvent(_arg1:Event):void{
Debug.echo(("event : " + _arg1.type));
Debug.explore(_arg1);
}
private function onIoError(_arg1:IOErrorEvent):void{
var _local2:DynamicEvent = new DynamicEvent("error");
_local2.text = "disconnectec (io error)";
this.dispatchEvent(_local2);
}
private function topic(_arg1:String, _arg2:String, _arg3:String=""):void{
var _local4:Room = getRoom(_arg1);
if (_local4){
_local4.topic = _arg2;
};
}
public function join(_arg1:String, _arg2:String=""):Room{
var _local4:DynamicEvent;
var _local3:Room = getRoom(_arg1);
if (!_local3){
if (_arg1.charAt(0) == ":"){
_arg1 = _arg1.substr(1);
};
_local3 = new Room(_arg1, this);
var _local5 = (roomsLT[_arg1.toLowerCase()] = ("room_" + ++roomIndex));
rooms[_local5] = _local3;
_local4 = new DynamicEvent("createRoom", true);
_local4.roomName = _arg1;
_local4.channel = _local3.channel;
dispatchEvent(_local4);
return (_local3);
} else {
_local3.join(_arg2);
};
return (_local3);
}
private function mode(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Boolean=false):void{
var _local6:Room = getRoom(_arg2);
if (_local6){
_local6.mode(_arg1, _arg3, _arg4, _arg5);
};
}
private function getText(_arg1:String):String{
return (_arg1.substr((_arg1.indexOf(":", 1) + 1)));
}
private function parseLine(_arg1:String):void{
var _local3:DynamicEvent;
var _local4:Room;
var _local5:DynamicEvent;
var _local6:DynamicEvent;
var _local7:DynamicEvent;
var _local8:uint;
var _local9:String;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:DynamicEvent;
var _local14:DynamicEvent;
var _local15:DynamicEvent;
var _local16:String;
var _local17:Boolean;
var _local18:uint;
var _local19:String;
var _local20:Room;
var _local21:String;
var _local22:String;
var _local23:String;
var _local24:Array;
var _local25:String;
var _local2:Array = _arg1.split(" ");
if (_local2[0] == "PING"){
send(("PONG " + _local2[1]));
} else {
if (_local2[0] == "ERROR"){
_local3 = new DynamicEvent("error");
_local3.text = _local2.join(" ");
this.dispatchEvent(_local3);
} else {
if (Number(_local2[1])){
switch (Number(_local2[1])){
case 311:
nick(_local2[3], _local2[3], _local2[5]);
break;
case 324:
mode("", _local2[3], _local2[4], _local2[5], true);
break;
case 332:
topic(_local2[3], getText(_local2.join(" ")));
break;
case 353:
_local4 = getRoom(_local2[4]);
if (_local4){
_local4.join.apply(null, getText(_local2.toString()).split(","));
};
break;
case 401:
break;
case 404:
_local5 = new DynamicEvent("needVoice");
_local5.roomName = _local2[3];
this.dispatchEvent(_local5);
break;
case 432:
_local6 = new DynamicEvent("registeredNick");
_local6.nick = _local2[3];
dispatchEvent(_local6);
break;
case 433:
_local7 = new DynamicEvent("nicknameIsAlreadyInUse");
_local7.nick = _local2[3];
dispatchEvent(_local7);
break;
case 471:
_local8 = 1;
_local9 = _local2[3];
_local10 = _local9.lastIndexOf("[");
_local11 = _local9.indexOf("]", _local10);
_local12 = Number(_local9.substring((_local10 + 1), _local11));
if (!_local12){
send((("JOIN " + _local2[3]) + "[1]"));
} else {
++_local12;
send((((("JOIN " + _local9.substr(0, _local10)) + "[") + _local12) + "]"));
};
break;
case 473:
_local13 = new DynamicEvent("console");
_local13.msg = (("Cannot join to channel : " + _local2[3]) + " (the channel is invite only)");
this.dispatchEvent(_local13);
break;
case 474:
_local14 = new DynamicEvent("console");
_local14.msg = (("Cannot join to channel : " + _local2[3]) + " (address is banned)");
this.dispatchEvent(_local14);
break;
case 422:
case 1:
if (!ready){
ready = true;
this.dispatchEvent(new Event("ready"));
};
break;
};
} else {
switch (_local2[1]){
case "JOIN":
join(_local2[2].toString(), _local2[0].toString());
break;
case "KICK":
part(_local2[2], _local2[3]);
if (_local2[3] == this.me){
_local15 = new DynamicEvent("console");
_local15.msg = ("You were kicked from : " + _local2[2]);
this.dispatchEvent(_local15);
};
break;
case "PART":
part(_local2[2], getNick(_local2[0].toString()));
break;
case "QUIT":
quit(getNick(_local2[0].toString()));
break;
case "NICK":
this.dispatchEvent(new Event("nick"));
nick(getNick(_local2[0].toString()), _local2[2].toString());
break;
case "TOPIC":
topic(_local2[2], getText(_local2.join(" ")), getNick(_local2[0].toString()));
break;
case "MODE":
if (_local2[2].toString().charAt(0) == "#"){
mode(getNick(_local2[0].toString()), _local2[2], _local2[3], _local2.slice(4).join(" "));
} else {
if (_local2[2] == me){
_local16 = _local2[3];
if (_local16.charAt(0) == ":"){
_local16 = _local16.substr(1);
};
_local17 = (_local16.charAt(0) == "+");
_local16 = _local16.substr(1);
_local18 = 0;
while (_local18 < _local16.length) {
modes[_local16.charAt(_local18)] = _local17;
_local18++;
};
};
};
break;
case "PRIVMSG":
_local19 = _local2[2];
_local20 = getRoom(_local19);
_local21 = getNick(_local2[0]);
_local22 = "privmsg";
_local2.splice(0, 3);
_local2[0] = _local2[0].toString().substr(1);
_local23 = _local2.join(" ");
if (_local21 == "IRC"){
return;
};
if ((((_local23.charCodeAt(0) == 1)) && ((_local23.charCodeAt((_local23.length - 1)) == 1)))){
_local24 = _local23.substring(1, (_local23.length - 1)).split(" ");
switch (_local24[0].toLowerCase()){
case "version":
send(((((((((("NOTICE " + _local21) + " :") + String.fromCharCode(1)) + "VERSION ustream.tv IRCclient ") + IrcClient.build) + " ") + Capabilities.version) + " ") + String.fromCharCode(1)));
return;
case "time":
send(((((((("NOTICE " + _local21) + " :") + String.fromCharCode(1)) + "TIME ") + new Date()) + "") + String.fromCharCode(1)));
return;
case "ping":
send((((((("NOTICE " + _local21) + " :") + String.fromCharCode(1)) + "PING ") + _local24[1]) + String.fromCharCode(1)));
return;
case "action":
_local22 = "action";
_local23 = _local24.slice(1).join(" ");
break;
};
};
if (((!(_local20)) && ((_local19 == me)))){
_local20 = getRoom(_local21);
if (!_local20){
_local20 = join(_local21);
};
};
_local20.privmsg(_local23, _local21, _local22);
break;
case "NOTICE":
_local2.splice(0, 3);
_local2[0] = _local2[0].toString().substr(1);
_local25 = _local2.join(" ");
if (_local25 == "This is a registered nick, either choose another nick or enter the password by doing: /PASS <password>"){
dispatchEvent(new Event("needPass"));
};
break;
default:
trace(("unknown command... " + _local2[1]));
};
};
};
};
}
private function quit(_arg1:String):void{
var _local2:Room;
for each (_local2 in rooms) {
_local2.part(_arg1);
};
}
public function getRoom(_arg1:String):Room{
if (_arg1.charAt(0) == ":"){
_arg1 = _arg1.substr(1);
};
return (rooms[roomsLT[_arg1.toLowerCase()]]);
}
private function onSocketConnect(_arg1:Event):void{
Debug.echo("connected");
send((((((("USER " + me) + " ") + me) + " ") + me) + " :ustream.tv"));
send(("NICK " + me));
}
private function getNick(_arg1:String):String{
return (_arg1.substring(1, _arg1.indexOf("!")));
}
public function nick(_arg1:String, _arg2:String, _arg3:String=null):void{
var _local4:Room;
if (_arg2.charAt(0) == ":"){
_arg2 = _arg2.substr(1);
};
if (_arg1 == me){
me = _arg2;
};
for each (_local4 in rooms) {
_local4.nick(_arg1, _arg2, _arg3);
};
if (((roomsLT[_arg1.toLowerCase()]) && (!(_arg3)))){
roomsLT[_arg2.toLowerCase()] = roomsLT[_arg1.toLowerCase()];
roomsLT[_arg1.toLowerCase()] = null;
};
}
private function onSocketClose(_arg1:Event):void{
var _local2:DynamicEvent = new DynamicEvent("error");
_local2.text = "disconnected (socket close)";
this.dispatchEvent(_local2);
}
override public function connect(_arg1:String, _arg2:int):void{
var _local3:String = _arg1;
var _local4 = (("xmlsocket://" + _local3) + ":843");
Security.loadPolicyFile(_local4);
trace(("[Irc] - connect() :: " + _local4));
super.connect(_local3, _arg2);
}
public function part(_arg1:String, _arg2:String):void{
var _local4:String;
var _local5:String;
var _local6:DynamicEvent;
var _local3:Room = getRoom(_arg1);
if (_local3){
if (_arg2 == me){
_local4 = _local3.name;
_local5 = roomsLT[_local4.toLowerCase()];
_local3.close();
delete rooms[_local5];
delete roomsLT[_local4.toLowerCase()];
_local6 = new DynamicEvent("removeRoom", true);
_local6.roomName = _local4;
dispatchEvent(_local6);
} else {
_local3.part(_arg2);
};
};
}
private function onSocketData(_arg1:ProgressEvent):void{
var _local2:Array = this.readUTFBytes(_arg1.bytesLoaded).split("\r\n");
nowInjured = _local2[(_local2.length - 1)];
var _local3:int;
while (_local3 < _local2.length) {
if (!_local2[_local3]){
_local2.splice(_local3, 1);
_local3--;
};
_local3++;
};
if (wasInjured){
parseLine((injured + _local2.shift()));
};
if (nowInjured){
injured = _local2.pop();
};
var _local4:int;
while (_local4 < _local2.length) {
this.parseLine(_local2[_local4]);
_local4++;
};
wasInjured = nowInjured;
}
}
}//package tv.ustream.chat
Section 11
//Room (tv.ustream.chat.Room)
package tv.ustream.chat {
import flash.events.*;
import tv.ustream.tools.*;
import flash.display.*;
import flash.net.*;
public class Room extends EventDispatcher {
private const USERMODERANK:Object;
private const USERMODES:Object;
public var channel:Boolean;
public var users:Array;
private var chatCache:Array;
public var enableHistory:Boolean;
public var irc:Irc;
private var w84modes:Boolean;// = true
private var _name:String;
public var modes:Object;
public var _topic:String;
public var skin:DisplayObject;
public function Room(_arg1:String, _arg2:Irc):void{
var _local3:NetConnection;
modes = {};
chatCache = [];
USERMODES = {o:"@", v:"+", h:"%", a:"&"};
USERMODERANK = {o:3, v:1, h:2, a:4};
super();
this.irc = _arg2;
enableHistory = _arg2.enableHistory;
_name = _arg1;
channel = (_arg1.charAt(0) == "#");
this.users = [];
if (((channel) && (enableHistory))){
trace(("[Room] - Room() :: Getting log for " + _name.substring(1).toLowerCase()));
_local3 = new NetConnection();
_local3.addEventListener(NetStatusEvent.NET_STATUS, _onRoomConnectionStatus);
_local3.objectEncoding = ObjectEncoding.AMF0;
_local3.connect("http://s1.ustream.tv/irclogs/amfphp/gateway.php5");
_local3.call("lastlog.getLog", new Responder(onLog, onFault), {channel:_name.substring(1).toLowerCase(), timestamp:new Date().getTime()});
};
if (channel){
_arg2.send(("MODE " + _name));
};
}
public function registerSkin(_arg1:MovieClip):void{
var _local3:String;
this.skin = _arg1;
var _local2:Object = {};
_local2.users = users;
_local2.roomName = _name;
_local2.topic = topic;
_local2.chatCache = chatCache;
_local2.channel = channel;
_local2.modes = modes;
_local2.home = irc.home;
_local2.canHideUserList = irc.canHideUserList;
_local2.enableNickColors = irc.enableNickColors;
_local2.rooms = [];
for (_local3 in irc.rooms) {
_local2.rooms.push({name:irc.rooms[_local3].name, channel:irc.rooms[_local3].channel});
};
_arg1.init(_local2);
_arg1.addEventListener("send", onSend);
irc.addEventListener("createRoom", _arg1.onCreateRoom);
irc.addEventListener("removeRoom", _arg1.onRemoveRoom);
irc.addEventListener("updateRoom", _arg1.onUpdateRoom);
}
public function part(... _args):void{
var _local2:int;
if (_args.length){
_local2 = getUser(_args[0]);
if (_local2 != -1){
if (skin){
(skin as Object).part(users[_local2]);
};
delete users[_local2];
users.splice(_local2, 1);
};
} else {
if (!channel){
irc.part(_name, irc.me);
} else {
irc.send(("PART " + _name));
};
};
}
override public function toString():String{
return ((((("[Room name=\"" + _name) + "\" users=") + users.length) + "]"));
}
public function mode(_arg1:String, _arg2:String, _arg3:String, _arg4:Boolean=false):void{
var _local9:String;
var _local10:Number;
var _local11:uint;
var _local12:DynamicEvent;
var _local5 = (_arg2.charAt(0) == "+");
var _local6:String = _arg2.substr(1);
var _local7:Array = _arg3.split(" ");
var _local8:uint;
while (_local8 < _local6.length) {
_local9 = _local6.charAt(_local8);
switch (_local9){
case "o":
case "a":
case "h":
case "v":
_local10 = getUser(_local7[_local8]);
if (_local10 != -1){
_local11 = (users[_local10].rank = (users[_local10].rank + ((1 << USERMODERANK[_local9]) * (_local5) ? 1 : -1)));
users[_local10].mode = ((_local11)>=16) ? "&" : ((_local11)>=8) ? "@" : ((_local11)>=4) ? "%" : ((_local11)>=2) ? "+" : "";
if (skin){
(skin as Object).userMode(users[_local10].nick, users[_local10].mode);
};
};
break;
default:
if (skin){
_local12 = new DynamicEvent("updateRoom", true);
_local12.roomName = _name;
_local12.mode = _local9;
_local12.value = _local5;
irc.dispatchEvent(_local12);
};
modes[_local9] = _local5;
};
_local8++;
};
if (((_arg4) && (w84modes))){
w84modes = false;
if (irc.home){
if (((modes.m) && (!(irc.modes.y)))){
privmsg("In order to speak in the chat room, you need to <u><b><a href=\"event:login\">log in</a></b></u> to Ustream. If you do not have a Ustream account yet <a href=\"event:register\"><u><b>click here to register one for free</b></u></a>.", "", "info");
};
};
};
}
private function onSend(_arg1:DynamicEvent):void{
if (_arg1.line){
send(_arg1.line);
};
}
private function _onRoomConnectionStatus(_arg1:NetStatusEvent):void{
trace(("[Room.as] - _onRoomConnectionStatus() :: " + _arg1));
}
public function get name():String{
return (_name);
}
private function setUser(_arg1:String):Object{
var _local2:String;
var _local4:uint;
var _local5:Array;
_arg1 = _arg1.replace(/:/g, "");
if (_arg1.indexOf("!") != -1){
_local5 = _arg1.split("!");
_arg1 = _local5[0];
_local2 = _local5[1].substr((_local5[1].indexOf("@") + 1));
};
var _local3 = "";
if (_arg1.charAt(0) == "@"){
_arg1 = _arg1.substr(1);
_local3 = "@";
_local4 = (1 << 3);
} else {
if (_arg1.charAt(0) == "+"){
_arg1 = _arg1.substr(1);
_local3 = "+";
_local4 = (1 << 1);
} else {
if (_arg1.charAt(0) == "%"){
_arg1 = _arg1.substr(1);
_local3 = "%";
_local4 = (1 << 2);
} else {
if (_arg1.charAt(0) == "&"){
_arg1 = _arg1.substr(1);
_local3 = "&";
_local4 = (1 << 4);
};
};
};
};
return ({nick:_arg1, mode:_local3, me:(_arg1 == irc.me), rank:_local4, host:_local2});
}
public function send(_arg1:String):void{
var _local2:Array;
if (_arg1.charAt(0) == "/"){
_local2 = _arg1.substr(1).split(" ");
switch (_local2[0]){
case "me":
irc.send((((((("PRIVMSG " + _name) + " :") + String.fromCharCode(1)) + "ACTION ") + _local2.slice(1).join(" ")) + String.fromCharCode(1)));
privmsg(_local2.slice(1).join(" "), irc.me, "action");
break;
default:
irc.send(_arg1.substr(1));
};
} else {
irc.send(((("PRIVMSG " + _name) + " :") + _arg1));
privmsg(_arg1, irc.me);
};
}
private function onFault(_arg1:Object):void{
trace(("[Room] - onFault() :: " + _arg1));
}
private function getUser(_arg1:String):Number{
var _local2:uint;
while (_local2 < users.length) {
if (users[_local2].nick == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function toggleCloseButton(_arg1:Boolean):void{
}
public function set topic(_arg1:String):void{
_topic = _arg1;
if (skin){
(skin as Object).topic = _arg1;
};
}
public function nick(_arg1:String, _arg2:String, _arg3:String=null):void{
var _local4:Number = getUser(_arg1);
if (channel){
if (_local4 != -1){
if (skin){
(skin as Object).nick(_arg1, _arg2, _arg3);
};
users[_local4].nick = _arg2;
if (_arg3){
users[_local4].host = _arg3;
};
};
} else {
if ((((_name == _arg1)) && (!(_arg3)))){
name = _arg2;
};
};
}
private function onLog(_arg1:Object):void{
var _local3:String;
var _local4:Array;
var _local5:Date;
var _local6:String;
trace(("[Room] - onLog() :: length: " + _arg1));
var _local2:Object = new Object();
for (_local3 in _arg1) {
_local4 = _arg1[_local3].time.split(":");
_local5 = new Date();
_local5.setHours(int(_local4[0]), int(_local4[1]), int(_local4[2]));
_local6 = TimeStamp.toString(_local5, true, TimeStamp.MODE_12);
_local2 = {nick:_arg1[_local3].user, line:_arg1[_local3].msg, when:_local6, type:"privmsg"};
if (skin){
(skin as Object).privmsg(_local2);
} else {
chatCache.push(_local2);
};
};
}
public function set name(_arg1:String):void{
var _local2:DynamicEvent = new DynamicEvent("updateRoom", true);
_local2.oldName = _name;
_local2.newName = _arg1;
irc.dispatchEvent(_local2);
_name = _arg1;
}
public function get topic():String{
return (_topic);
}
public function join(... _args):void{
var _local2:String;
var _local3:Object;
for each (_local2 in _args) {
if (_local2){
_local3 = setUser(_local2);
users.push(_local3);
if (skin){
(skin as Object).join(_local3);
};
};
};
}
public function privmsg(_arg1:String, _arg2:String, _arg3:String="privmsg"):void{
var _local4:String = TimeStamp.toString(null, true, TimeStamp.MODE_12);
var _local5:Object = {nick:_arg2, line:_arg1, when:_local4, type:_arg3};
if (skin){
(skin as Object).privmsg(_local5);
} else {
chatCache.push(_local5);
};
}
public function close():void{
if (skin){
skin.parent.removeChild(skin);
};
delete ??getglobalscope
[this];
}
}
}//package tv.ustream.chat
Section 12
//Cache (tv.ustream.net.Cache)
package tv.ustream.net {
import flash.events.*;
import tv.ustream.tools.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public dynamic class Cache extends EventDispatcher {
private var urlRequest:URLRequest;
private var urlLoader:URLLoader;
public var sprite:Sprite;
private var reloadTmr:Timer;
private var _url:String;
private var instance:Object;
private static var pattern:RegExp = /\./g;
private static var bytes:Object = {};
private function onUrlLoaderComplete(_arg1:Event):void{
trace("[Cache] - onUrlLoaderComplete() :: ");
reloadTmr.reset();
instance.bytes = (_arg1.target.data as ByteArray);
getLoader();
}
public function load(_arg1:String):void{
_url = _arg1;
instance = parse(_arg1);
reloadTmr = new Timer(3000, 4);
reloadTmr.addEventListener(TimerEvent.TIMER, onSkinReload, false, 0, true);
if (!instance.bytes){
Debug.echo(("[Cache] - load() :: load to cache : " + _arg1));
urlLoader = new URLLoader();
urlLoader.dataFormat = "binary";
urlLoader.addEventListener("complete", onUrlLoaderComplete);
urlLoader.addEventListener("ioError", inIoError);
urlLoader.load(new URLRequest(_arg1));
} else {
Debug.echo(("load from cache : " + _arg1));
getLoader();
};
}
private function getLoader():void{
trace("[Cache] - getLoader() :: ");
var _local1:Loader = new Loader();
_local1.contentLoaderInfo.addEventListener("complete", onLoaderComplete);
_local1.loadBytes(instance.bytes);
}
private function onLoaderComplete(_arg1:Event):void{
trace("[Cache] - onLoaderComplete() :: ");
sprite = (_arg1.target.content as Sprite);
dispatchEvent(new Event("complete"));
}
private function onSkinReload(_arg1:TimerEvent):void{
urlLoader.load(new URLRequest(_url));
}
private function inIoError(_arg1:IOErrorEvent):void{
Debug.echo(("ioError : " + _arg1.text));
if (reloadTmr.currentCount == 0){
reloadTmr.start();
};
dispatchEvent(_arg1);
}
private static function parse(_arg1:String):Object{
var _local2:Array = _arg1.replace(pattern, "_").split("/");
var _local3:Object = bytes;
var _local4:uint;
while (_local4 < _local2.length) {
if (!_local3[_local2[_local4]]){
_local3[_local2[_local4]] = {name:((_local2[_local4] + "_") + Math.random())};
};
_local3 = _local3[_local2[_local4]];
_local4++;
};
return (_local3);
}
public static function clear():void{
bytes = {};
}
}
}//package tv.ustream.net
Section 13
//Debug (tv.ustream.tools.Debug)
package tv.ustream.tools {
public class Debug {
public static var enabled:Boolean = true;
private static var exploreCounter:Number = 0;
public static function explore(_arg1:Object, _arg2:String="debug"):void{
var _local3:String;
var _local4:Number;
var _local5:*;
if (enabled){
exploreCounter++;
_local3 = "";
_local4 = 0;
while (_local4 < exploreCounter) {
_local3 = (_local3 + "\t");
_local4++;
};
for (_local5 in _arg1) {
echo(((((_local3 + "") + _local5) + " : ") + _arg1[_local5]));
if (typeof(_arg1[_local5]) == "object"){
explore(_arg1[_local5], _arg2);
};
};
exploreCounter--;
};
}
public static function echo(_arg1:String):void{
if (enabled){
trace(_arg1);
};
}
}
}//package tv.ustream.tools
Section 14
//DynamicEvent (tv.ustream.tools.DynamicEvent)
package tv.ustream.tools {
import flash.events.*;
public dynamic class DynamicEvent extends Event {
private var data:Object;
public function DynamicEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Object=null){
var _local5:String;
if ((this.data = _arg4)){
for (_local5 in _arg4) {
this[_local5] = _arg4[_local5];
};
};
super(_arg1, _arg2, _arg3);
}
override public function clone():Event{
return (new DynamicEvent(type, bubbles, cancelable, data));
}
}
}//package tv.ustream.tools
Section 15
//TimeStamp (tv.ustream.tools.TimeStamp)
package tv.ustream.tools {
public class TimeStamp {
public static const MODE_12:String = "mode_12";
public static const MODE_24:String = "mode_24";
public static const SERVER_OFFSET:int = 8;
public static function toString(_arg1:Date=null, _arg2:Boolean=false, _arg3:String="mode_24"):String{
if (!_arg1){
_arg1 = new Date();
};
var _local4:Number = _arg1.getHours();
if (_arg3 == TimeStamp.MODE_12){
_local4 = (_local4 - ((_local4 > 12)) ? 12 : 0);
};
return ((((zero(_local4) + ":") + zero(_arg1.getMinutes())) + (_arg2) ? "" : (":" + zero(_arg1.getSeconds()))));
}
public static function zero(_arg1:Number):String{
return (((_arg1 < 10)) ? ("0" + _arg1) : _arg1.toString());
}
}
}//package tv.ustream.tools
Section 16
//IrcClient (IrcClient)
package {
import flash.events.*;
import tv.ustream.tools.*;
import tv.ustream.chat.*;
import flash.display.*;
import flash.utils.*;
import flash.text.*;
import flash.filters.*;
import flash.net.*;
import tv.ustream.net.*;
import flash.system.*;
import flash.external.*;
public class IrcClient extends Sprite {
private var activeRoom:String;
private var homeServer:String;// = "chat1.ustream.tv"
private var pass:String;
private var locker:Sprite;
private var bgColor:Number;// = 14277839
private var headBgColor:Number;// = 12566967
private var skinPath:String;// = "skins/"
private var irc:Irc;
private var canHideUserList:uint;// = 0
private var defaultSkin:String;// = "main"
private var _server:String;
private var nick:String;
private var headAlpha:Number;// = 1
private var connectTimer:Timer;
private var port:String;// = "6667"
private var textFormat:TextFormat;
private var loginSkin:Sprite;
private var enableHistory:Boolean;// = true
private var prefix:String;
private var ref:String;
private var colorMatrixFilter:ColorMatrixFilter;
private var w84nick:Boolean;// = false
private var session:String;
private var logo:Sprite;
private var skins:Sprite;
private var blurFilter:BlurFilter;
private var textField:TextField;
private var enableNickColors:Boolean;// = false
private var backgroundAlpha:Number;// = 1
private var user:String;
private var _channel:String;// = "#ustream.tv"
private var Logo:Class;
private var separatorChar:String;// = "-"
private var connection:NetConnection;
private var home:Boolean;
public static var build:String = "$BuildTime 20080507155932$";
public function IrcClient(){
prefix = ("ustreamer" + separatorChar);
Logo = IrcClient_Logo;
super();
stage.scaleMode = "noScale";
stage.align = "TL";
blurFilter = new BlurFilter(2, 2, 3);
colorMatrixFilter = new ColorMatrixFilter([0.345632, 0.682528, 0.09184, 0, -7.62, 0.345632, 0.682528, 0.09184, 0, -7.62, 0.345632, 0.682528, 0.09184, 0, -7.62, 0, 0, 0, 1, 0]);
connectTimer = new Timer(3000);
connectTimer.addEventListener("timer", onConnectTimer);
locker = new Sprite();
locker.buttonMode = true;
locker.tabEnabled = false;
locker.useHandCursor = false;
stage.addEventListener("resize", onStageResize);
server = (loaderInfo.parameters.server) ? loaderInfo.parameters.server : homeServer;
if (loaderInfo.parameters.port){
port = loaderInfo.parameters.port;
};
if (root.loaderInfo.parameters.prefix){
prefix = root.loaderInfo.parameters.prefix;
};
if (root.loaderInfo.parameters.ref){
ref = root.loaderInfo.parameters.ref;
};
nick = getRandomNick();
session = loaderInfo.parameters.session;
if (loaderInfo.parameters.bgcolor){
bgColor = parseInt(loaderInfo.parameters.bgcolor.replace("#", "0x"), 16);
};
if (loaderInfo.parameters.headcolor){
headBgColor = parseInt(loaderInfo.parameters.headcolor.replace("#", "0x"), 16);
};
if (loaderInfo.parameters.bgcolor == "transparent"){
backgroundAlpha = 0;
};
if (loaderInfo.parameters.headcolor == "transparent"){
headAlpha = 0;
};
canHideUserList = ((loaderInfo.parameters.canHideUserList) || (0));
enableNickColors = !((loaderInfo.parameters.enableNickColors == "false"));
enableHistory = !((loaderInfo.parameters.enableHistory == "false"));
if (Capabilities.playerType == "StandAlone"){
session = "5cf1090e67fe36f96d082c320e8ee6b5268";
_channel = "#sebi's-show";
enableNickColors = true;
canHideUserList = 2;
enableHistory = true;
};
textFormat = new TextFormat("Verdana", 9, 0xFFFFFF);
textField = new TextField();
textField.defaultTextFormat = textFormat;
textField.x = (textField.y = 5);
textField.multiline = true;
textField.wordWrap = true;
textField.selectable = false;
textField.appendText((("loaded " + IrcClient.build) + "\n"));
textField.blendMode = "invert";
this.addChild(textField);
addChild((skins = new Sprite()));
addChild((logo = new Logo()));
logo.buttonMode = true;
logo.tabEnabled = false;
logo.addEventListener("click", onAbout);
skinPath = this.loaderInfo.url;
skinPath = (skinPath.substr(0, skinPath.lastIndexOf("/")) + "/skins");
onStageResize();
trace(loaderInfo.url);
if (Capabilities.playerType != "StandAlone"){
switch (loaderInfo.url.split("?")[0]){
case "http://trunk.www.ustream.tv/IrcClient.swf":
break;
case "http://v4.ustream.tv/IrcClient.swf":
break;
case "http://cat.dev.ustream.tv/IrcClient.swf":
break;
case "http://ustream.tv/IrcClient.swf":
break;
case "http://www.ustream.tv/IrcClient.swf":
break;
case "http://ustream.ihost.hu/IrcClient.swf":
break;
case "http://192.168.2.99/irc/IrcClient.swf":
break;
case "http://prelive.ustream.tv/IrcClient.swf":
break;
case "http://future.ustream.tv/IrcClient.swf":
break;
case "file:///c:/Site/R3/IrcClient.swf":
break;
case "file:///d:/Site/R3/IrcClient.swf":
break;
default:
textField.text = "";
return;
};
};
if (session){
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, onNetConnectionError, false, 0, true);
connection.objectEncoding = 0;
connection.connect("http://gw.ustream.tv/gateway.php");
connection.call("irc.validate", new Responder(onResult, onStatus), {sid:session});
} else {
connect();
};
}
private function get channel():String{
return (_channel);
}
private function set channel(_arg1:String):void{
if (_arg1.charAt(0) != "#"){
_arg1 = ("#" + _arg1);
};
_channel = _arg1;
}
private function onReady(... _args):void{
textField.defaultTextFormat = textFormat;
textField.appendText("connected\n");
if (root.loaderInfo.parameters.channel){
channel = root.loaderInfo.parameters.channel;
};
if (user){
textField.defaultTextFormat = textFormat;
textField.appendText("Acquiring nickname...\n");
w84nick = true;
if (home){
irc.send(((("nick " + user) + ":") + pass));
} else {
irc.send(("nick " + user));
};
} else {
textField.defaultTextFormat = textFormat;
textField.appendText((("Joining room " + channel) + "\n"));
irc.send(("JOIN " + channel));
};
}
public function onNeedVoice(_arg1:DynamicEvent):void{
var _local2:Room = irc.getRoom(_arg1.roomName);
if (((irc.home) && (_local2))){
if (irc.me.substr(0, prefix.length) == prefix){
_local2.privmsg("To participate in chat please first <u><b><a href=\"event:login\">log in</a></b></u> with your Ustream account. If you do not have a Ustream account yet <a href=\"event:register\"><u><b>click here to register one for free</b></u></a>.", null, "info");
} else {
_local2.privmsg("You are not allowed to participate in this chatroom.", null, "info");
};
};
}
private function onMode(_arg1:DynamicEvent):void{
irc.send(((((("MODE " + _arg1.room) + " ") + _arg1.mode) + " ") + _arg1.nick));
}
private function onCreateRoom(_arg1:DynamicEvent):void{
var _local2:Cache = new Cache();
_local2.addEventListener("complete", roomSkinReady);
_local2.addEventListener("ioError", roomSkinIOError);
_local2.roomName = _arg1.roomName;
_local2.load((skinPath + "/main/room.swf"));
}
private function onQuery(_arg1:DynamicEvent):void{
var _local2:DynamicEvent;
if (!irc.roomsLT[_arg1.nick.toLowerCase()]){
this.irc.join(_arg1.nick);
} else {
_local2 = new DynamicEvent("changeRoom");
_local2.roomName = _arg1.nick;
this.dispatchEvent(_local2);
};
}
private function get server():String{
return (_server);
}
private function hideLogin(... _args):void{
lock = false;
skins.filters = [];
this.removeChild(loginSkin);
loginSkin.visible = false;
stage.removeEventListener("keyDown", onKeyDown);
}
private function onClose(... _args):void{
var _local2:Room;
textField.defaultTextFormat = textFormat;
textField.text = "disconnected.\n";
for each (_local2 in irc.rooms) {
if (_local2.skin){
skins.removeChild(_local2.skin);
};
};
irc = null;
textField.appendText("reconnect...\n");
connectTimer.start();
}
private function set lock(_arg1:Boolean):void{
if (((_arg1) && (!(this.contains(locker))))){
addChild(locker);
} else {
if (!_arg1){
removeChild(locker);
};
};
skins.tabEnabled = !(_arg1);
skins.tabChildren = !(_arg1);
}
private function onError(_arg1:DynamicEvent):void{
textField.visible = true;
textField.text = (_arg1.text + " \nreconnect...\n");
trace(("[IrcClient] - onError() :: connectTimer.running: " + connectTimer.running));
connectTimer.reset();
connectTimer.start();
}
private function showLogin():void{
var _local1:Cache;
lock = true;
if (loginSkin){
this.addChild(loginSkin);
loginSkin.visible = true;
} else {
_local1 = new Cache();
_local1.addEventListener("complete", loginSkinReady);
_local1.load((skinPath + "/main/login.swf"));
};
stage.addEventListener("keyDown", onKeyDown);
skins.filters = [blurFilter, colorMatrixFilter];
}
private function onPart(_arg1:DynamicEvent):void{
var _local2:Room = irc.getRoom(_arg1.roomName);
if (_local2){
_local2.part();
};
}
private function onConsole(_arg1:DynamicEvent):void{
textField.appendText((_arg1.msg + "\n"));
}
private function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "login":
if (ref){
trace("[IrcClient] - onLink() :: ");
if (((ExternalInterface.available) && ((ExternalInterface.call("login", null) == true)))){
trace("[IrcClient] - onLink() :: ExternalInterface.available");
} else {
navigateToURL(new URLRequest(("/need-login?ref=" + ref)), "_self");
};
} else {
showLogin();
};
break;
case "register":
navigateToURL(new URLRequest("http://ustream.tv/sign-up-step-1"), "_blank");
break;
};
}
private function onUpdateRoom(_arg1:DynamicEvent):void{
if (_arg1.oldName == activeRoom){
activeRoom = _arg1.newName;
};
}
private function roomSkinIOError(_arg1:IOErrorEvent):void{
textField.appendText((_arg1.text + "\n"));
}
private function set server(_arg1:String):void{
_server = _arg1;
home = (homeServer == _arg1);
}
private function onIoError(_arg1:IOErrorEvent):void{
textField.text = "ioError \nreconnect...\n";
connectTimer.reset();
connectTimer.start();
}
private function onNetConnectionError(_arg1:NetStatusEvent):void{
if (_arg1.info.code == "NetConnection.Call.Failed"){
textField.appendText("Connection failed, check your internet connection.\n");
};
}
private function roomSkinReady(_arg1:Event):void{
trace("[IrcClient] - roomSkinReady() :: ");
var _local2:Cache = (_arg1.target as Cache);
var _local3:Room = irc.getRoom(_local2.roomName);
skins.addChild(_local2.sprite);
textField.visible = false;
_local3.registerSkin((_local2.sprite as MovieClip));
var _local5 = _local2.sprite;
_local5["setBgColor"](bgColor, headBgColor, backgroundAlpha, headAlpha);
var _local4:DynamicEvent = new DynamicEvent("changeRoom");
_local4.roomName = _local2.roomName;
this.dispatchEvent(_local4);
}
private function onBan(_arg1:DynamicEvent):void{
irc.send(((("MODE " + _arg1.room) + " +b *!*@") + _arg1.host));
}
private function onStatus(_arg1:Object):void{
}
private function getRandomNick():String{
return ((prefix + Math.floor((Math.random() * 100000))));
}
public function onNicknameIsAlreadyInUse(_arg1:DynamicEvent):void{
var _local3:int;
var _local4:uint;
var _local5:Number;
var _local6:int;
var _local2:String = _arg1.nick;
if (((user) && ((_local2.indexOf(user) === 0)))){
_local3 = _local2.lastIndexOf("-");
_local4 = 1;
if (_local3 != -1){
_local5 = parseInt(_local2.substr((_local3 + 1)));
if (_local5.toString() != "NaN"){
_local2 = _local2.substr(0, _local3);
_local4 = (_local5 + 1);
};
};
_local2 = (_local2 + ("-" + _local4));
} else {
_local6 = _local2.lastIndexOf(separatorChar);
if (_local6 != -1){
_local2 = _local2.substr(0, _local6);
};
_local2 = (_local2 + (separatorChar + int((Math.random() * 10000))));
};
irc.send(("NICK " + _local2));
}
private function onKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 27){
hideLogin();
};
}
private function onRemoveRoom(_arg1:DynamicEvent):void{
var _local2:String;
var _local3:DynamicEvent;
if (activeRoom == _arg1.roomName){
activeRoom = null;
for (_local2 in irc.rooms) {
if (irc.rooms[_local2].skin){
_local3 = new DynamicEvent("changeRoom");
_local3.roomName = irc.rooms[_local2].name;
dispatchEvent(_local3);
break;
};
};
};
if (!skins.numChildren){
textField.visible = true;
};
}
private function onWhois(_arg1:DynamicEvent):void{
irc.send(("WHOIS " + _arg1.nick));
}
private function onLogin(_arg1:DynamicEvent):void{
hideLogin();
user = _arg1.user;
pass = _arg1.pass;
irc.send(((("NICK " + _arg1.user) + ":") + _arg1.pass));
}
private function loginSkinReady(_arg1:Event):void{
var _local2:Cache = (_arg1.target as Cache);
loginSkin = _local2.sprite;
this.addChild(loginSkin);
loginSkin.visible = true;
loginSkin.addEventListener("login", onLogin);
loginSkin.addEventListener("cancel", hideLogin);
}
public function onNeedPass(_arg1:Event):void{
if (user){
irc.send(("PASS " + pass));
};
}
private function onResult(_arg1:Object):void{
if (_arg1.success){
user = _arg1.user;
pass = _arg1.pass;
};
connect();
}
private function onKick(_arg1:DynamicEvent):void{
irc.send(((("KICK " + _arg1.room) + " ") + _arg1.nick));
}
private function onNick(_arg1:Event):void{
if (w84nick){
textField.defaultTextFormat = textFormat;
textField.appendText("Joining room...\n");
w84nick = false;
irc.send(("JOIN " + channel));
};
}
public function onRegisteredNick(_arg1:DynamicEvent):void{
if (((((user) && (home))) && ((_arg1.nick.indexOf(user) === 0)))){
irc.send(((("NICK " + _arg1.nick) + ":") + pass));
} else {
onNicknameIsAlreadyInUse(_arg1);
};
}
private function connect():void{
textField.appendText((((("connect to " + server) + ":") + port) + "\n"));
textField.appendText("please wait...\n");
if (!irc){
if (((irc) && (irc.connected))){
irc.close();
irc = null;
};
irc = new Irc(server, parseInt(port), nick);
irc.canHideUserList = canHideUserList;
irc.enableNickColors = enableNickColors;
irc.enableHistory = enableHistory;
irc.addEventListener("ready", onReady);
irc.addEventListener("error", onError);
irc.addEventListener("createRoom", onCreateRoom);
irc.addEventListener("removeRoom", onRemoveRoom);
irc.addEventListener("updateRoom", onUpdateRoom);
irc.addEventListener("needPass", onNeedPass);
irc.addEventListener("registeredNick", onRegisteredNick);
irc.addEventListener("nicknameIsAlreadyInUse", onNicknameIsAlreadyInUse);
irc.addEventListener("needVoice", onNeedVoice);
irc.addEventListener("nick", onNick);
irc.addEventListener("close", onClose);
irc.addEventListener("ioError", onIoError);
irc.addEventListener("console", onConsole);
addEventListener("changeRoom", onChangeRoom);
addEventListener("query", onQuery);
addEventListener("kick", onKick);
addEventListener("ban", onBan);
addEventListener("mode", onMode);
addEventListener("part", onPart);
addEventListener("whois", onWhois);
addEventListener("link", onLink);
addEventListener("hideLogin", hideLogin);
} else {
if (irc.connected){
irc.close();
};
irc.connect(server, parseInt(port));
};
}
private function onChangeRoom(_arg1:DynamicEvent):void{
var _local3:Room;
if (activeRoom){
if (activeRoom == _arg1.roomName){
return;
};
_local3 = irc.getRoom(activeRoom);
if (((_local3) && (_local3.skin))){
_local3.skin.visible = false;
};
};
activeRoom = _arg1.roomName;
var _local2:Room = irc.getRoom(activeRoom);
if (_local2.skin){
_local2.skin.visible = true;
};
}
private function onStageResize(... _args):void{
textField.width = (stage.stageWidth - 10);
textField.height = (stage.stageHeight - 10);
logo.x = stage.stageWidth;
logo.y = 0;
locker.graphics.clear();
locker.graphics.beginFill(0xFFFFFF, 0.6);
locker.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
}
private function onConnectTimer(... _args):void{
trace("[IrcClient] - onConnectTimer() :: ");
connectTimer.stop();
connect();
}
public static function onAbout(... _args):void{
navigateToURL(new URLRequest("http://ustream.tv"), "_blank");
}
}
}//package
Section 17
//IrcClient_Logo (IrcClient_Logo)
package {
import mx.core.*;
public class IrcClient_Logo extends SpriteAsset {
}
}//package