pidgin/themes/Template.html

Tue, 21 Feb 2012 17:17:10 +0000

author
Andrew Victor <andrew.victor@mxit.com>
date
Tue, 21 Feb 2012 17:17:10 +0000
branch
mxit
changeset 32867
61bd261a302f
parent 32444
pidgin/plugins/adiumthemes/Template.html@69e11efb2ba6
parent 32792
pidgin/plugins/adiumthemes/Template.html@a5e427909389
child 33189
13e4ae613a6a
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head 6ec6d786f812bd9b1ac3e3615f5649f4381e0997)
to branch 'im.pidgin.pidgin.mxit' (head 9b3f31b300419ffe9390eb79777279515b953437)

32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
2 <html>
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
3 <head>
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
5 <base href="%@">
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
6 <script type="text/javascript" defer="defer">
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
7 // NOTE:
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
8 // Any percent signs in this file must be escaped!
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
9 // Use two escape signs (%%) to display it, this is passed through a format call!
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
10
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
11 function appendHTML(html) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
12 var node = document.getElementById("Chat");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
13 var range = document.createRange();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
14 range.selectNode(node);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
15 var documentFragment = range.createContextualFragment(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
16 node.appendChild(documentFragment);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
17 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
18
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
19 // a coalesced HTML object buffers and outputs DOM objects en masse.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
20 // saves A LOT of CSS recalculation time when loading many messages.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
21 // (ex. a long twitter timeline)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
22 function CoalescedHTML() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
23 var self = this;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
24 this.fragment = document.createDocumentFragment();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
25 this.timeoutID = 0;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
26 this.coalesceRounds = 0;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
27 this.isCoalescing = false;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
28 this.isConsecutive = undefined;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
29 this.shouldScroll = undefined;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
30
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
31 var appendElement = function (elem) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
32 document.getElementById("Chat").appendChild(elem);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
33 };
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
34
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
35 function outputHTML() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
36 var insert = document.getElementById("insert");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
37 if(!!insert && self.isConsecutive) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
38 insert.parentNode.replaceChild(self.fragment, insert);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
39 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
40 if(insert)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
41 insert.parentNode.removeChild(insert);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
42 // insert the documentFragment into the live DOM
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
43 appendElement(self.fragment);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
44 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
45 alignChat(self.shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
46
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
47 // reset state to empty/non-coalescing
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
48 self.shouldScroll = undefined;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
49 self.isConsecutive = undefined;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
50 self.isCoalescing = false;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
51 self.coalesceRounds = 0;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
52 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
53
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
54 // creates and returns a new documentFragment, containing all content nodes
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
55 // which can be inserted as a single node.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
56 function createHTMLNode(html) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
57 var range = document.createRange();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
58 range.selectNode(document.getElementById("Chat"));
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
59 return range.createContextualFragment(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
60 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
61
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
62 // removes first insert node from the internal fragment.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
63 function rmInsertNode() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
64 var insert = self.fragment.querySelector("#insert");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
65 if(insert)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
66 insert.parentNode.removeChild(insert);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
67 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
68
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
69 function setShouldScroll(flag) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
70 if(flag && undefined === self.shouldScroll)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
71 self.shouldScroll = flag;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
72 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
73
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
74 // hook in a custom method to append new data
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
75 // to the chat.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
76 this.setAppendElementMethod = function (func) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
77 if(typeof func === 'function')
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
78 appendElement = func;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
79 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
80
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
81 // (re)start the coalescing timer.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
82 // we wait 25ms for a new message to come in.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
83 // If we get one, restart the timer and wait another 10ms.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
84 // If not, run outputHTML()
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
85 // We do this a maximum of 400 times, for 10s max that can be spent
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
86 // coalescing input, since this will block display.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
87 this.coalesce = function() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
88 window.clearTimeout(self.timeoutID);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
89 self.timeoutID = window.setTimeout(outputHTML, 25);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
90 self.isCoalescing = true;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
91 self.coalesceRounds += 1;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
92 if(400 < self.coalesceRounds)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
93 self.cancel();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
94 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
95
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
96 // if we need to append content into an insertion div,
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
97 // we need to clear the buffer and cancel the timeout.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
98 this.cancel = function() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
99 if(self.isCoalescing) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
100 window.clearTimeout(self.timeoutID);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
101 outputHTML();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
102 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
103 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
104
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
105
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
106 // coalased analogs to the global functions
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
107
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
108 this.append = function(html, shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
109 // if we started this fragment with a consecuative message,
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
110 // cancel and output before we continue
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
111 if(self.isConsecutive) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
112 self.cancel();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
113 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
114 self.isConsecutive = false;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
115 rmInsertNode();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
116 var node = createHTMLNode(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
117 self.fragment.appendChild(node);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
118
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
119 node = null;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
120
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
121 setShouldScroll(shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
122 self.coalesce();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
123 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
124
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
125 this.appendNext = function(html, shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
126 if(undefined === self.isConsecutive)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
127 self.isConsecutive = true;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
128 var node = createHTMLNode(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
129 var insert = self.fragment.querySelector("#insert");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
130 if(insert) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
131 insert.parentNode.replaceChild(node, insert);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
132 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
133 self.fragment.appendChild(node);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
134 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
135 node = null;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
136 setShouldScroll(shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
137 self.coalesce();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
138 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
139
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
140 this.replaceLast = function (html, shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
141 rmInsertNode();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
142 var node = createHTMLNode(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
143 var lastMessage = self.fragment.lastChild;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
144 lastMessage.parentNode.replaceChild(node, lastMessage);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
145 node = null;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
146 setShouldScroll(shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
147 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
148 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
149 var coalescedHTML;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
150
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
151 //Appending new content to the message view
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
152 function appendMessage(html) {
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
153 var shouldScroll;
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
154
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
155 // Only call nearBottom() if should scroll is undefined.
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
156 if(undefined === coalescedHTML.shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
157 shouldScroll = nearBottom();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
158 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
159 shouldScroll = coalescedHTML.shouldScroll;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
160 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
161 appendMessageNoScroll(html, shouldScroll);
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
162 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
163
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
164 function appendMessageNoScroll(html, shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
165 shouldScroll = shouldScroll || false;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
166 // always try to coalesce new, non-griuped, messages
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
167 coalescedHTML.append(html, shouldScroll)
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
168 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
169
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
170 function appendNextMessage(html){
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
171 var shouldScroll;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
172 if(undefined === coalescedHTML.shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
173 shouldScroll = nearBottom();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
174 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
175 shouldScroll = coalescedHTML.shouldScroll;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
176 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
177 appendNextMessageNoScroll(html, shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
178 }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
179
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
180 function appendNextMessageNoScroll(html, shouldScroll){
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
181 shouldScroll = shouldScroll || false;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
182 // only group next messages if we're already coalescing input
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
183 coalescedHTML.appendNext(html, shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
184 }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
185
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
186 function replaceLastMessage(html){
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
187 var shouldScroll;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
188 // only replace messages if we're already coalescing
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
189 if(coalescedHTML.isCoalescing){
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
190 if(undefined === coalescedHTML.shouldScroll) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
191 shouldScroll = nearBottom();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
192 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
193 shouldScroll = coalescedHTML.shouldScroll;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
194 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
195 coalescedHTML.replaceLast(html, shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
196 } else {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
197 shouldScroll = nearBottom();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
198 //Retrieve the current insertion point, then remove it
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
199 //This requires that there have been an insertion point... is there a better way to retrieve the last element? -evands
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
200 var insert = document.getElementById("insert");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
201 if(insert){
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
202 var parentNode = insert.parentNode;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
203 parentNode.removeChild(insert);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
204 var lastMessage = document.getElementById("Chat").lastChild;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
205 document.getElementById("Chat").removeChild(lastMessage);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
206 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
207
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
208 //Now append the message itself
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
209 appendHTML(html);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
210
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
211 alignChat(shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
212 }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
213 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
214
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
215 //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired.
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
216 function nearBottom() {
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
217 return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) );
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
218 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
219 function scrollToBottom() {
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
220 document.body.scrollTop = document.body.offsetHeight;
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
221 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
222
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
223 //Dynamically exchange the active stylesheet
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
224 function setStylesheet( id, url ) {
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
225 var code = "<style id=\"" + id + "\" type=\"text/css\" media=\"screen,print\">";
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
226 if( url.length )
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
227 code += "@import url( \"" + url + "\" );";
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
228 code += "</style>";
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
229 var range = document.createRange();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
230 var head = document.getElementsByTagName( "head" ).item(0);
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
231 range.selectNode( head );
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
232 var documentFragment = range.createContextualFragment( code );
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
233 head.removeChild( document.getElementById( id ) );
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
234 head.appendChild( documentFragment );
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
235 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
236
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
237 /* Converts emoticon images to textual emoticons; all emoticons in message if alt is held */
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
238 document.onclick = function imageCheck() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
239 var node = event.target;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
240 if (node.tagName.toLowerCase() != 'img')
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
241 return;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
242
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
243 imageSwap(node, false);
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
244 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
245
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
246 /* Converts textual emoticons to images if textToImagesFlag is true, otherwise vice versa */
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
247 function imageSwap(node, textToImagesFlag) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
248 var shouldScroll = nearBottom();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
249
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
250 var images = [node];
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
251 if (event.altKey) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
252 while (node.id != "Chat" && node.parentNode.id != "Chat")
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
253 node = node.parentNode;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
254 images = node.querySelectorAll(textToImagesFlag ? "a" : "img");
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
255 }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
256
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
257 for (var i = 0; i < images.length; i++) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
258 textToImagesFlag ? textToImage(images[i]) : imageToText(images[i]);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
259 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
260
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
261 alignChat(shouldScroll);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
262 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
263
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
264 function textToImage(node) {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
265 if (!node.getAttribute("isEmoticon"))
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
266 return;
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
267 //Swap the image/text
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
268 var img = document.createElement('img');
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
269 img.setAttribute('src', node.getAttribute('src'));
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
270 img.setAttribute('alt', node.firstChild.nodeValue);
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
271 img.className = node.className;
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
272 node.parentNode.replaceChild(img, node);
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
273 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
274
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
275 function imageToText(node)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
276 {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
277 if (client.zoomImage(node) || !node.alt)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
278 return;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
279 var a = document.createElement('a');
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
280 a.setAttribute('onclick', 'imageSwap(this, true)');
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
281 a.setAttribute('src', node.getAttribute('src'));
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
282 a.setAttribute('isEmoticon', true);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
283 a.className = node.className;
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
284 var text = document.createTextNode(node.alt);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
285 a.appendChild(text);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
286 node.parentNode.replaceChild(a, node);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
287 }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
288
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
289 //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
290 function alignChat(shouldScroll) {
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
291 var windowHeight = window.innerHeight;
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
292
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
293 if (windowHeight > 0) {
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
294 var contentElement = document.getElementById('Chat');
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
295 var heightDifference = (windowHeight - contentElement.offsetHeight);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
296 if (heightDifference > 0) {
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
297 contentElement.style.position = 'relative';
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
298 contentElement.style.top = heightDifference + 'px';
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
299 } else {
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
300 contentElement.style.position = 'static';
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
301 }
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
302 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
303
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
304 if (shouldScroll) scrollToBottom();
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
305 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
306
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
307 window.onresize = function windowDidResize(){
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
308 alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
309 }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
310
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
311 function initStyle() {
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
312 alignChat(true);
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
313 if(!coalescedHTML)
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
314 coalescedHTML = new CoalescedHTML();
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
315 }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
316 </script>
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
317
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
318 <style type="text/css">
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
319 .actionMessageUserName { display:none; }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
320 .actionMessageBody:before { content:"*"; }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
321 .actionMessageBody:after { content:"*"; }
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
322 * { word-wrap:break-word; text-rendering: optimizelegibility; }
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
323 img.scaledToFitImage { height: auto; max-width: 100%%; }
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
324 </style>
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
325
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
326 <!-- This style is shared by all variants. !-->
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
327 <style id="baseStyle" type="text/css" media="screen,print">
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
328 %@
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
329 </style>
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
330
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
331 <!-- Although we call this mainStyle for legacy reasons, it's actually the variant style !-->
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
332 <style id="mainStyle" type="text/css" media="screen,print">
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
333 @import url( "%@" );
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
334 </style>
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
335
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
336 </head>
32792
a5e427909389 Update Template.html from Adium's hg repo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32676
diff changeset
337 <body onload="initStyle();" style="==bodyBackground==">
32444
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
338 %@
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
339 <div id="Chat">
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
340 </div>
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
341 %@
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
342 </body>
69e11efb2ba6 other files that missed my main major commit.
Arnold Noronha <tdrhq@soc.pidgin.im>
parents:
diff changeset
343 </html>

mercurial