Mercurial > pidgin.yaz
view pidgin/plugins/adiumthemes/Template.html @ 32525:d0be198c4694
other files that missed my main major commit.
author | tdrhq@soc.pidgin.im |
---|---|
date | Fri, 07 Aug 2009 18:29:52 +0000 |
parents | |
children |
line wrap: on
line source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <base href="%@"> <script type="text/ecmascript" defer="defer"> //Appending new content to the message view function appendMessage(html) { shouldScroll = nearBottom(); //Remove any existing insertion point insert = document.getElementById("insert"); if(insert) insert.parentNode.removeChild(insert); //Append the new message to the bottom of our chat block chat = document.getElementById("Chat"); range = document.createRange(); range.selectNode(chat); documentFragment = range.createContextualFragment(html); chat.appendChild(documentFragment); alignChat(shouldScroll); } function appendMessageNoScroll(html) { //Remove any existing insertion point insert = document.getElementById("insert"); if(insert) insert.parentNode.removeChild(insert); //Append the new message to the bottom of our chat block chat = document.getElementById("Chat"); range = document.createRange(); range.selectNode(chat); documentFragment = range.createContextualFragment(html); chat.appendChild(documentFragment); } function appendNextMessage(html){ shouldScroll = nearBottom(); //Locate the insertion point insert = document.getElementById("insert"); //make new node range = document.createRange(); range.selectNode(insert.parentNode); newNode = range.createContextualFragment(html); //swap insert.parentNode.replaceChild(newNode,insert); alignChat(shouldScroll); } function appendNextMessageNoScroll(html){ //Locate the insertion point insert = document.getElementById("insert"); //make new node range = document.createRange(); range.selectNode(insert.parentNode); newNode = range.createContextualFragment(html); //swap insert.parentNode.replaceChild(newNode,insert); } //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired. function nearBottom() { return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); } function scrollToBottom() { document.body.scrollTop = document.body.offsetHeight; } //Dynamically exchange the active stylesheet function setStylesheet( id, url ) { code = "<style id=\"" + id + "\" type=\"text/css\" media=\"screen,print\">"; if( url.length ) code += "@import url( \"" + url + "\" );"; code += "</style>"; range = document.createRange(); head = document.getElementsByTagName( "head" ).item(0); range.selectNode( head ); documentFragment = range.createContextualFragment( code ); head.removeChild( document.getElementById( id ) ); head.appendChild( documentFragment ); } //Swap an image with its alt-tag text on click, or expand/unexpand an attached image document.onclick = imageCheck; function imageCheck() { node = event.target; if(node.tagName == 'IMG' && !client.zoomImage(node) && node.alt) { a = document.createElement('a'); a.setAttribute('onclick', 'imageSwap(this)'); a.setAttribute('src', node.getAttribute('src')); a.className = node.className; text = document.createTextNode(node.alt); a.appendChild(text); node.parentNode.replaceChild(a, node); } } function imageSwap(node) { shouldScroll = nearBottom(); //Swap the image/text img = document.createElement('img'); img.setAttribute('src', node.getAttribute('src')); img.setAttribute('alt', node.firstChild.nodeValue); img.className = node.className; node.parentNode.replaceChild(img, node); alignChat(shouldScroll); } //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down function alignChat(shouldScroll) { var windowHeight = window.innerHeight; if (windowHeight > 0) { var contentElement = document.getElementById('Chat'); var contentHeight = contentElement.offsetHeight; if (windowHeight - contentHeight > 0) { contentElement.style.position = 'relative'; contentElement.style.top = (windowHeight - contentHeight) + 'px'; } else { contentElement.style.position = 'static'; } } if (shouldScroll) scrollToBottom(); } function windowDidResize(){ alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs } window.onresize = windowDidResize; </script> <style type="text/css"> .actionMessageUserName:before { content:"*"; } .actionMessageBody:after { content:"*"; } *{ word-wrap:break-word; } img.scaledToFitImage { height:auto; width:100%; } </style> <!-- This style is shared by all variants. !--> <style id="baseStyle" type="text/css" media="screen,print"> %@ </style> <!-- Although we call this mainStyle for legacy reasons, it's actually the variant style !--> <style id="mainStyle" type="text/css" media="screen,print"> @import url( "%@" ); </style> </head> <body onload="alignChat(true);" style="==bodyBackground=="> %@ <div id="Chat"> </div> %@ </body> </html>