]> jfr.im git - irc/quakenet/qwebirc.git/blob - js/irc/irclib.js
8e53c38f9dc1ce415eb8840344594a8c0a465eb9
[irc/quakenet/qwebirc.git] / js / irc / irclib.js
1 var IRCLowerTable = [
2 /* x00-x07 */ '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
3 /* x08-x0f */ '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
4 /* x10-x17 */ '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
5 /* x18-x1f */ '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
6 /* ' '-x27 */ ' ', '!', '"', '#', '$', '%', '&', '\x27',
7 /* '('-'/' */ '(', ')', '*', '+', ',', '-', '.', '/',
8 /* '0'-'7' */ '0', '1', '2', '3', '4', '5', '6', '7',
9 /* '8'-'?' */ '8', '9', ':', ';', '<', '=', '>', '?',
10 /* '@'-'G' */ '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
11 /* 'H'-'O' */ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
12 /* 'P'-'W' */ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
13 /* 'X'-'_' */ 'x', 'y', 'z', '{', '|', '}', '~', '_',
14 /* '`'-'g' */ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
15 /* 'h'-'o' */ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
16 /* 'p'-'w' */ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
17 /* 'x'-x7f */ 'x', 'y', 'z', '{', '|', '}', '~', '\x7f',
18 /* x80-x87 */ '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
19 /* x88-x8f */ '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f',
20 /* x90-x97 */ '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
21 /* x98-x9f */ '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f',
22 /* xa0-xa7 */ '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7',
23 /* xa8-xaf */ '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf',
24 /* xb0-xb7 */ '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7',
25 /* xb8-xbf */ '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf',
26 /* xc0-xc7 */ '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
27 /* xc8-xcf */ '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
28 /* xd0-xd7 */ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xd7',
29 /* xd8-xdf */ '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xdf',
30 /* xe0-xe7 */ '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7',
31 /* xe8-xef */ '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef',
32 /* xf0-xf7 */ '\xf0', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7',
33 /* xf8-xff */ '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\xfe', '\xff'
34 ];
35
36 String.prototype.toIRCLower = function() {
37 var x = this;
38
39 var p = [];
40 for(var i=0;i<x.length;i++) {
41 var l = x.charCodeAt(i);
42
43 p.push(IRCLowerTable[l]);
44 }
45
46 return p.join("");
47 }
48
49 String.prototype.hostToNick = function() {
50 return this.split("!", 1)[0];
51 }
52
53 String.prototype.hostToHost = function() {
54 return this.split("!", 2)[1];
55 }
56
57 function IRCTimestamp(d) {
58 function pad(x) {
59 x = "" + x;
60 if(x.length == 1)
61 return "0" + x;
62 return x
63 }
64
65 return "[" + pad(d.getHours()) + ":" + pad(d.getMinutes()) + "]";
66 }
67
68 var DaysOfWeek = {
69 0: "Sun",
70 1: "Mon",
71 2: "Tue",
72 3: "Wed",
73 4: "Thu",
74 5: "Fri",
75 6: "Sat"
76 };
77
78 var MonthsOfYear = {
79 0: "Jan",
80 1: "Feb",
81 2: "Mar",
82 3: "Apr",
83 4: "May",
84 5: "Jun",
85 6: "Jul",
86 7: "Aug",
87 8: "Sep",
88 9: "Oct",
89 10: "Nov",
90 11: "Dec"
91 };
92
93 function IRCDate(d) {
94 return DaysOfWeek[d.getDay()] + " " + MonthsOfYear[d.getMonth()] + " " + pad(d.getDate()) + " " + pad(d.getHours()) + ":" + pad(d.getMinutes()) + ":" + pad(d.getSeconds()) + " " + d.getFullYear();
95 }