var xstransferrer:xmlsocket = new xmlsocket();
var scurrentscreen = "login";
initsocketconnection(xstransferrer);
showloginscreen();
initializescreens();
function showloginscreen():void{
ctimessage.visible = true;
ctiusername.visible = true;
cbtlogin.visible = true;
ctachatdisplay.visible = false;
ctainput.visible = false;
cluserlist.visible = false;
cbtsend.visible = false;
cbtusers.visible = false;
scurrentscreen = "login";
}
function showchatscreen():void{
ctimessage.visible = false;
ctiusername.visible = false;
cbtlogin.visible = false;
ctachatdisplay.visible = true;
ctainput.visible = true;
cluserlist.visible = true;
cbtsend.visible = true;
cbtusers.visible = true;
scurrentscreen = "chat";
}
function showconnectedmessage(bdidconnect:boolean):void{
if(bdidconnect){
ctimessage.text = "connected...please enter a username";
}
else{
ctimessage.text = "connect error!";
}
}
function showdisconnectedmessage():void{
showloginscreen();
ctimessage.text = "trying to reconnect...";
ctiusername.text = "";
xstransferrer.connect("localhost",2001);
}
function initsocketconnection(xssocket:xmlsocket):void{
xssocket.ondata = function(sdata:string):void{
var xmldata:xml = new xml();
xmldata.ignorewhite = true;
xmldata.parsexml(sdata);
var imdata:incomingmessage = new incomingmessage(xmldata);
switch(imdata.messagetype){
case "signonsuccess":
showchatscreen();
break;
case "userlistupdate":
cluserlist.dataprovider = imdata.users;
break;
case "chat":
ctachatdisplay.text += imdata.fromuser + ":" + imdata.chattext + newline;
ctachatdisplay.vposition = ctachatdisplay.maxvposition;
default:
}
};
xssocket.onconnect = function(bdidconnect:boolean):void{
showconnectedmessage(bdidconnect);
};
xssocket.onclose = function():void{
showdisconnectedmessage();
};
xssocket.connect("localhost", 2001);
}
function initializescreens():void{
ctachatdisplay.html = true;
cbtlogin.label = "log in";
cbtsend.label = "send";
var ologinlistener:object = new object();
ologinlistener.form = this;
ologinlistener.socket = xstransferrer;
ologinlistener.click = function(oevent:object):void{
if(this.form.ctiusername.text != ""){
var omlogin:outgoingmessage = new outgoingmessage("login", this.form.ctiusername.text);
this.socket.send(omlogin.message);
}
};
ologinlistener.onkeydown = function():void{
if(key.getcode() == key.enter && this.form.scurrentscreen == "login"){
this.click();
}
};
cbtlogin.addeventlistener("click", ologinlistener);
key.addlistener(ologinlistener);
var ochatlistener:object = new object();
ochatlistener.form = this;
ochatlistener.socket = xstransferrer;
ochatlistener.click = function(oevent:object):void{
if(this.form.ctainput.text != ""){
var omhat:outgoingmessage = new outgoingmessage("chat", this.form.ctiusername.text, this.form.ctainput.text);
this.socket.send(omhat.message);
this.form.ctainput.text = "";
}
};
ochatlistener.onkeydown = function():void{
if(key.getcode() == key.enter &&
this.form.scurrentscreen == "chat"){
this.click();
}
};
cbtsend.addeventlistener("click", ochatlistener);
key.addlistener(ochatlistener);
/*
cbtusers.label = "refresh";
var ouserlistener:object = new object();
ouserlistener.form = this;
ouserlistener.socket = xstransferrer;
ouserlistener.click = function(oevent:object):void{
var imuser:incomingmessage = new incomingmessage();
};
ouserlistener.onkeydown = function():void{
if(key.getcode() == key.enter &&
this.form.scurrentscreen == "chat"){
this.click();
}
};
cbtusers.addeventlistener("click", ouserlistener);
key.addlistener(ouserlistener);*/
}