Added touchscreen UI styles, touchscreen gestures
[KiwiIRC.git] / js / gateway.js
CommitLineData
f4f7781b
JA
1/*jslint browser: true, confusion: true, sloppy: true, maxerr: 50, indent: 4 */
2/*globals io, $ */
54f4a22e
D
3var gateway = {
4
f4f7781b 5 revision: 16,
54f4a22e 6
f4f7781b
JA
7 nick: 'kiwi',
8 session_id: null,
9 syncing: false,
10 channel_prefix: '#',
11 network_name: '',
12 user_prefixes: [],
c984ba1b 13 socket: null,
54f4a22e 14
1614c0f9
D
15 start: function (kiwi_server) {
16 gateway.socket = io.connect(kiwi_server);
bad1ea63
JA
17 gateway.socket.on('connect', function () {
18 gateway.sendData = function (data, callback) {
19 gateway.socket.emit('message', {sid: this.session_id, data: $.toJSON(data)}, callback);
20 };
21 gateway.socket.on('message', gateway.parse);
f4f7781b
JA
22 gateway.socket.on('disconnect', function () {
23 // Teardown procedure here
24 });
c984ba1b 25 });
f4f7781b 26 },
c984ba1b 27
f4f7781b 28 connect: function (host, port, ssl, callback) {
bad1ea63
JA
29 gateway.socket.emit('irc connect', this.nick, host, port, ssl, callback);
30 },
31
f4f7781b
JA
32 /*
33 Events:
34 msg
35 action
36 server_connect
37 options
38 motd
39 notice
40 userlist
41 nick
42 join
43 topic
44 part
45 kick
46 quit
47 whois
48 syncchannel_redirect
49 debug
50 */
51 parse: function (item) {
52 if (item.event !== undefined) {
53 $(gateway).trigger("on" + item.event, item);
54f4a22e 54
f4f7781b
JA
55 switch (item.event) {
56 case 'options':
57 $.each(item.options, function (name, value) {
58 switch (name) {
59 case 'CHANTYPES':
60 gateway.channel_prefix = value.charAt(0);
61 break;
62 case 'NETWORK':
63 gateway.network_name = value;
64 break;
65 case 'PREFIX':
66 gateway.user_prefixes = value;
67 break;
68 }
69 });
70 break;
54f4a22e 71
f4f7781b
JA
72 case 'sync':
73 if (gateway.onSync && gateway.syncing) {
74 gateway.syncing = false;
75 gateway.onSync(item);
76 }
77 break;
78 }
79 }
80 },
81
82 sendData: function () {},
83
84 sync: function (callback) {
85 if (this.session_id === null) {
86 return;
87 }
54f4a22e 88
f4f7781b
JA
89 var data = {
90 method: 'sync',
91 args: {}
92 };
54f4a22e 93
f4f7781b
JA
94 gateway.syncing = true;
95 gateway.sendData(data, callback);
96 },
97
98 debug: function (callback) {
99 var data = {
100 method: 'debug',
101 args: {}
102 };
103
104 gateway.sendData(data, callback);
105 },
106
107
108 msg: function (s_target, s_msg, callback) {
109 var data = {
110 method: 'msg',
111 args: {
112 target: s_target,
113 msg: s_msg
114 }
115 };
116
117 gateway.sendData(data, callback);
118 },
119
120 action: function (s_target, s_msg, callback) {
121 var data = {
122 method: 'action',
123 args: {
124 target: s_target,
125 msg: s_msg
126 }
127 };
128
129 gateway.sendData(data, callback);
130 },
131
132
133 join: function (s_channel, callback) {
134 var data = {
135 method: 'join',
136 args: {
137 channel: s_channel
138 }
139 };
140
141 gateway.sendData(data, callback);
142 },
143
144
145 raw: function (v_data, callback) {
146 var data = {
147 method: 'raw',
148 args: {
149 data: v_data
150 }
151 };
152
153 gateway.sendData(data, callback);
154 },
155
156
157 quit: function (msg, callback) {
158 //alert("closing");
159 msg = msg || "";
160 var data = {
161 method: 'quit',
162 args: {
163 message: msg
164 }
165 };
166
167 gateway.sendData(data, callback);
168 }
169
170
171
54f4a22e
D
172
173};