Tue, 21 Feb 2012 17:17:10 +0000
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> |