From feffab19a4814b6e44cdd08aeca515e69ddeecb4 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Mon, 11 Jul 2016 11:58:32 +0300
Subject: backport npm/webpack stuff (WIP)
---
juick-www/build.gradle | 57 +--
juick-www/package.json | 22 ++
juick-www/src/main/static/scripts.js | 684 +++++++++++++++++++++++++++++++++++
juick-www/src/main/static/style.css | 263 ++++++++++++++
juick-www/src/main/webapp/scripts.js | 684 -----------------------------------
juick-www/src/main/webapp/style.css | 263 --------------
juick-www/webpack.config.js | 25 ++
7 files changed, 1005 insertions(+), 993 deletions(-)
create mode 100644 juick-www/package.json
create mode 100644 juick-www/src/main/static/scripts.js
create mode 100644 juick-www/src/main/static/style.css
delete mode 100644 juick-www/src/main/webapp/scripts.js
delete mode 100644 juick-www/src/main/webapp/style.css
create mode 100644 juick-www/webpack.config.js
(limited to 'juick-www')
diff --git a/juick-www/build.gradle b/juick-www/build.gradle
index 1cfab4af..f09abb3a 100644
--- a/juick-www/build.gradle
+++ b/juick-www/build.gradle
@@ -4,16 +4,21 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.eriwen:gradle-css-plugin:1.11.1'
- classpath 'com.eriwen:gradle-js-plugin:1.12.1'
classpath 'com.tkruse.gradle:gradle-groovysh-plugin:1.0.8'
}
}
+
+plugins {
+ id "com.moowork.node" version "0.13"
+}
+
+task compileFrontend(type: NpmTask) {
+ args = ['run', 'compile']
+}
+
apply plugin: 'java'
apply plugin: 'war'
-apply plugin: 'css'
apply plugin: 'org.akhikhl.gretty'
-apply plugin: 'com.eriwen.gradle.js'
apply plugin: 'com.github.tkruse.groovysh'
repositories {
@@ -36,48 +41,8 @@ dependencies {
providedRuntime 'mysql:mysql-connector-java:5.1.39'
}
-javascript.source {
- dev {
- js {
- srcDir "src/main/webapp"
- include "*.js"
- }
- }
-}
-
-combineJs {
- source = javascript.source.dev.js.files
- dest = file("${buildDir}/scripts.all.js")
-}
-
-minifyJs {
- source = combineJs
- dest = file("${buildDir}/scripts.min.js")
- sourceMap = file("${buildDir}/scripts.sourcemap.json")
-}
-
-css.source {
- dev {
- css {
- srcDir "src/main/webapp"
- include "*.css"
- }
- }
-}
-
-combineCss {
- source = css.source.dev.css.files
- dest = "${buildDir}/style.all.css"
-}
-
-minifyCss {
- source = combineCss
- dest = "${buildDir}/style.min.css"
-}
-
-assemble.dependsOn 'minifyCss'
-assemble.dependsOn 'minifyJs'
-
+compileFrontend.dependsOn 'npmInstall'
+war.dependsOn 'compileFrontend'
compileJava.options.encoding = 'UTF-8'
gretty {
diff --git a/juick-www/package.json b/juick-www/package.json
new file mode 100644
index 00000000..833707b4
--- /dev/null
+++ b/juick-www/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "juick",
+ "version": "1.0.0",
+ "private": true,
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "compile": "webpack --colors -p"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/juick/juick.git"
+ },
+ "license": "AGPLv3",
+ "devDependencies": {
+ "css-loader": "^0.23.1",
+ "expose-loader": "^0.7.1",
+ "extract-text-webpack-plugin": "^1.0.1",
+ "globby": "^4.1.0",
+ "style-loader": "^0.13.1",
+ "webpack": "^1.13.1"
+ }
+}
diff --git a/juick-www/src/main/static/scripts.js b/juick-www/src/main/static/scripts.js
new file mode 100644
index 00000000..93594f71
--- /dev/null
+++ b/juick-www/src/main/static/scripts.js
@@ -0,0 +1,684 @@
+var ws=null;
+var pageTitle;
+
+function initWS() {
+ if(typeof(pageMID)!="undefined" && pageMID>0) {
+ var url;
+ var protocolPrefix = (window.location.protocol === 'https:') ? 'wss:' : 'ws:';
+ if(typeof(juickDebug)!="undefined") {
+ url= protocolPrefix + "//ws.juick.com/_replies";
+ } else {
+ url= protocolPrefix + "//ws.juick.com/"+pageMID;
+ }
+ if(typeof(hash)!="undefined" && hash) {
+ url+="?hash="+hash;
+ }
+
+ ws = new WebSocket(url);
+ ws.onopen = function() {
+ console.log('online');
+ if($('#wsthread').length==0) {
+ var d=$('
');
+ d.on('click',onclickNextReply);
+ d.appendTo("body");
+ pageTitle=document.title;
+ }
+ };
+ ws.onclose = function() {
+ console.log('offline');
+ ws=null;
+ setTimeout(function() {
+ initWS();
+ },2000);
+ };
+ ws.onmessage = function(msg) {
+ if(msg.data==' ') {
+ ws.send(' ');
+ } else {
+ try {
+ var jsonMsg=$.parseJSON(msg.data);
+ console.log('data: '+msg.data);
+ wsIncomingReply(jsonMsg);
+ } catch(err) {
+ console.log(err);
+ }
+ }
+ };
+ setInterval(wsSendKeepAlive, 90000);
+ }
+}
+
+function wsSendKeepAlive() {
+ if(ws) {
+ ws.send(' ');
+ }
+}
+
+function wsShutdown() {
+ if(ws) {
+ ws.onclose=function(){};
+ ws.close();
+ }
+}
+
+function wsIncomingReply(msg) {
+ var p;
+ if(msg.replyto>0) {
+ p=$('#'+msg.replyto);
+ if(p.length==0) {
+ p=null;
+ }
+ }
+
+ var li=$('');
+ li.html(''+
+ ''+
+ ''+
+ ''+
+ '
'+
+ '
'+
+ '
'+
+ ''+
+ '
');
+ $(li).find('.msg-txt').text(msg.body);
+ if(p) {
+ li.css('margin-left',parseInt(p.css('margin-left'))+20+'px');
+ p.after(li);
+ } else {
+ $('#replies').append(li);
+ }
+
+ updateRepliesCounter();
+}
+
+function onclickNewReply(e) {
+ var li=$(e);
+ li.removeClass('reply-new');
+ li.off('click');
+ li.off('mouseover');
+ updateRepliesCounter();
+}
+
+function onclickNextReply() {
+ var li=$('#replies>li.reply-new:first');
+ if(li.length) {
+ li.removeClass('reply-new');
+ li.off('click');
+ li.get(0).scrollIntoView();
+ updateRepliesCounter();
+ }
+}
+
+function updateRepliesCounter() {
+ var replies=$('#replies>li.reply-new').length;
+ if(replies>0) {
+ $('#wsthread').text(replies).css('display','block');
+ document.title='['+replies+'] '+pageTitle;
+ } else {
+ $('#wsthread').css('display','none');
+ document.title=pageTitle;
+ }
+}
+
+/******************************************************************************/
+/******************************************************************************/
+/******************************************************************************/
+
+function postformListener(formEl,ev) {
+ if(ev.ctrlKey && (ev.keyCode==10 || ev.keyCode==13)) {
+ if(!formEl.onsubmit || formEl.onsubmit()) {
+ formEl.submit();
+ }
+ }
+}
+
+function unfoldPostForm() {
+ if(window.location.pathname==="/" && window.location.hash==="#post") {
+ $('#newmessage>div').css('display','block');
+ $('#newmessage textarea').css('min-height','70px');
+ $('#newmessage textarea')[0].focus();
+ }
+}
+
+function onsubmitNewMessage() {
+ if($('#newmessage textarea').val().length==0) {
+ openDialog('Пожалуйста, введите текст сообщения
');
+ return false;
+ }
+ return true;
+}
+
+function showMoreReplies(id) {
+ $('#'+id+' .msg-comments').hide();
+
+ var replies=$('#replies>li');
+ var flagshow=0;
+ for(var i=0; i');
+ c.before('');
+ c.append('');
+ }
+ // $('#replies #'+rid+' .msg-links').hide();
+ $('#replies #'+rid+' .msg-comment').show();
+ $('#replies #'+rid+' textarea')[0].focus();
+ $('#replies #'+rid+' textarea').autoResize({
+ extraSpace: 0,
+ minHeight: 1
+ });
+ return false;
+}
+
+function showCommentFooter(e) {
+ var a=$(e).closest("article");
+ if(a.find("footer.comm").length==0) {
+ a.append('');
+ a.find('textarea').autoResize({
+ extraSpace: 0,
+ minHeight: 1
+ });
+ }
+ a.find('textarea')[0].focus();
+ return false;
+}
+
+function attachCommentPhoto(div) {
+ if($(div).children().length===0) {
+ var inp=$('');
+ inp.on('change',function() {
+ $(this).parent().attr('class','attach-photo-active');
+ });
+ inp.trigger('click');
+ $(div).append(inp);
+ } else {
+ $(div).empty();
+ $(div).attr('class','attach-photo');
+ }
+}
+
+function attachMessagePhoto(div) {
+ var f=$(div).closest('form');
+ if(f.find('input:file').length===0) {
+ var inp=$('');
+ inp.on('change',function() {
+ $(div).text("загрузить (✓)");
+ });
+ f.append(inp);
+ inp.trigger('click');
+ } else {
+ f.find('input:file').remove();
+ $(div).text("загрузить");
+ }
+}
+
+function unfoldReply() {
+ if((0+window.location.hash.substring(1))>0) {
+ var el=$(window.location.hash);
+ while(el.is(":hidden")) {
+ el=el.prev();
+ }
+ showMoreReplies(el.attr('id'));
+ window.location.replace(window.location.hash);
+ }
+}
+
+function showMessageLinksDialog(mid,rid) {
+ var hlink=window.location.protocol+"//juick.com/"+mid;
+ var mlink="#"+mid;
+ if(rid>0) {
+ hlink+="#"+rid;
+ mlink+="/"+rid;
+ }
+ var hlinkenc=encodeURIComponent(hlink);
+
+ var html="Ссылка на сообщение:";
+ html+="
"+hlink+"
";
+ html+="Номер сообщения:";
+ html+="
"+mlink+"
";
+ html+="Поделиться:
";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+=" ";
+ html+="
";
+
+ openDialog(html);
+}
+
+function showPhotoDialog(fname) {
+ var width=$(window).width();
+ var height=$(window).height()*0.9;
+ if(width<640) {
+ return true;
+ } else if(width<1280) {
+ openDialog("");
+ $('#dialogw img').css('max-height',height+'px');
+ return false;
+ } else {
+ openDialog("");
+ $('#dialogw img').css('max-height',height+'px');
+ return false;
+ }
+}
+
+function openDialog(html) {
+ var dhtml="";
+ dhtml+=html;
+ dhtml+=" |
";
+ $('body').append(dhtml);
+}
+
+function closeDialog() {
+ $('#dialogb').remove();
+ $('#dialogt').remove();
+}
+
+function openSocialWindow(a) {
+ var w=window.open(a.href,'juickshare','width=640,height=400');
+ if(window.focus) w.focus();
+ return false;
+}
+
+function checkUsername() {
+ var uname=$('#username').val();
+ $.ajax('//api.juick.com/users?uname='+uname).done(function() {
+ $('#username').css('background','#FFCCCC');
+ }).fail(function() {
+ $('#username').css('background','#CCFFCC');
+ });
+}
+
+/******************************************************************************/
+
+function openDialogLogin() {
+ var html='';
+ openDialog(html);
+ return false;
+}
+
+/******************************************************************************/
+
+function likeMessage(e,mid) {
+ if (confirm("Are you sure?")) {
+ $.ajax({
+ url: '//juick.com/like?mid='+mid,
+ type: 'POST'
+ }).done(function() {
+ $(e).closest("article").append("OK!
");
+ }).fail(function() {
+ $(e).closest("article").append("Ошибка
");
+ });
+ }
+ return false;
+}
+
+/******************************************************************************/
+
+function setPopular(e,mid,popular) {
+ $.ajax('//api.juick.com/messages/set_popular?mid='+mid+'&popular='+popular+'&hash='+hash).done(function() {
+ var a=$(e).closest("article");
+ a.append("OK!
");
+ });
+ return false;
+}
+
+function setPrivacy(e,mid) {
+ $.ajax('//api.juick.com/messages/set_privacy?mid='+mid+'&hash='+hash).done(function() {
+ var a=$(e).closest("article");
+ a.append("OK!
");
+ });
+ return false;
+}
+
+/******************************************************************************/
+
+function readerLinkReplace(e) {
+ var a=$(e);
+ a.attr('href','/_out?lid='+a.data('lid'));
+}
+
+/******************************************************************************/
+
+jQuery.fn.selectText = function(){
+ var d = document;
+ if (d.body.createTextRange) {
+ var range = d.body.createTextRange();
+ range.moveToElementText(this[0]);
+ range.select();
+ } else if (window.getSelection) {
+ var selection = window.getSelection();
+ var range = d.createRange();
+ range.selectNodeContents(this[0]);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ }
+};
+
+/*
+ * jQuery.fn.autoResize 1.14
+ */
+
+(function($){
+
+ var uid = 'ar' + +new Date,
+
+ defaults = autoResize.defaults = {
+ onResize: function(){},
+ onBeforeResize: function(){
+ return 123
+ },
+ onAfterResize: function(){
+ return 555
+ },
+ animate: {
+ duration: 200,
+ complete: function(){}
+ },
+ extraSpace: 50,
+ minHeight: 'original',
+ maxHeight: 500,
+ minWidth: 'original',
+ maxWidth: 500
+ };
+
+ autoResize.cloneCSSProperties = [
+ 'lineHeight', 'textDecoration', 'letterSpacing',
+ 'fontSize', 'fontFamily', 'fontStyle', 'fontWeight',
+ 'textTransform', 'textAlign', 'direction', 'wordSpacing', 'fontSizeAdjust',
+ 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'width'
+ ];
+
+ autoResize.cloneCSSValues = {
+ position: 'absolute',
+ top: -9999,
+ left: -9999,
+ opacity: 0,
+ overflow: 'hidden'
+ };
+
+ autoResize.resizableFilterSelector = [
+ 'textarea:not(textarea.' + uid + ')',
+ 'input:not(input[type])',
+ 'input[type=text]',
+ 'input[type=password]',
+ 'input[type=email]',
+ 'input[type=url]'
+ ].join(',');
+
+ autoResize.AutoResizer = AutoResizer;
+
+ $.fn.autoResize = autoResize;
+
+ function autoResize(config) {
+ this.filter(autoResize.resizableFilterSelector).each(function(){
+ new AutoResizer( $(this), config );
+ });
+ return this;
+ }
+
+ function AutoResizer(el, config) {
+
+ if (el.data('AutoResizer')) {
+ el.data('AutoResizer').destroy();
+ }
+
+ config = this.config = $.extend({}, autoResize.defaults, config);
+ this.el = el;
+
+ this.nodeName = el[0].nodeName.toLowerCase();
+
+ this.originalHeight = el.height();
+ this.previousScrollTop = null;
+
+ this.value = el.val();
+
+ if (config.maxWidth === 'original') config.maxWidth = el.width();
+ if (config.minWidth === 'original') config.minWidth = el.width();
+ if (config.maxHeight === 'original') config.maxHeight = el.height();
+ if (config.minHeight === 'original') config.minHeight = el.height();
+
+ if (this.nodeName === 'textarea') {
+ el.css({
+ resize: 'none',
+ overflowY: 'hidden'
+ });
+ }
+
+ el.data('AutoResizer', this);
+
+ // Make sure onAfterResize is called upon animation completion
+ config.animate.complete = (function(f){
+ return function() {
+ config.onAfterResize.call(el);
+ return f.apply(this, arguments);
+ };
+ }(config.animate.complete));
+
+ this.bind();
+
+ }
+
+ AutoResizer.prototype = {
+
+ bind: function() {
+
+ var check = $.proxy(function(){
+ this.check();
+ return true;
+ }, this);
+
+ this.unbind();
+
+ this.el
+ .bind('keyup.autoResize', check)
+ //.bind('keydown.autoResize', check)
+ .bind('change.autoResize', check)
+ .bind('paste.autoResize', function() {
+ setTimeout(function() {
+ check();
+ }, 0);
+ });
+
+ if (!this.el.is(':hidden')) {
+ this.check(null, true);
+ }
+
+ },
+
+ unbind: function() {
+ this.el.unbind('.autoResize');
+ },
+
+ createClone: function() {
+
+ var el = this.el,
+ clone = this.nodeName === 'textarea' ? el.clone() : $('');
+
+ this.clone = clone;
+
+ $.each(autoResize.cloneCSSProperties, function(i, p){
+ clone[0].style[p] = el.css(p);
+ });
+
+ clone
+ .removeAttr('name')
+ .removeAttr('id')
+ .addClass(uid)
+ .attr('tabIndex', -1)
+ .css(autoResize.cloneCSSValues);
+
+ if (this.nodeName === 'textarea') {
+ clone.height('auto');
+ } else {
+ clone.width('auto').css({
+ whiteSpace: 'nowrap'
+ });
+ }
+
+ },
+
+ check: function(e, immediate) {
+
+ if (!this.clone) {
+ this.createClone();
+ this.injectClone();
+ }
+
+ var config = this.config,
+ clone = this.clone,
+ el = this.el,
+ value = el.val();
+
+ // Do nothing if value hasn't changed
+ if (value === this.prevValue) {
+ return true;
+ }
+ this.prevValue = value;
+
+ if (this.nodeName === 'input') {
+
+ clone.text(value);
+
+ // Calculate new width + whether to change
+ var cloneWidth = clone.width(),
+ newWidth = (cloneWidth + config.extraSpace) >= config.minWidth ?
+ cloneWidth + config.extraSpace : config.minWidth,
+ currentWidth = el.width();
+
+ newWidth = Math.min(newWidth, config.maxWidth);
+
+ if (
+ (newWidth < currentWidth && newWidth >= config.minWidth) ||
+ (newWidth >= config.minWidth && newWidth <= config.maxWidth)
+ ) {
+
+ config.onBeforeResize.call(el);
+ config.onResize.call(el);
+
+ el.scrollLeft(0);
+
+ if (config.animate && !immediate) {
+ el.stop(1,1).animate({
+ width: newWidth
+ }, config.animate);
+ } else {
+ el.width(newWidth);
+ config.onAfterResize.call(el);
+ }
+
+ }
+
+ return;
+
+ }
+
+ // TEXTAREA
+
+ clone.width(el.width()).height(0).val(value).scrollTop(10000);
+
+ var scrollTop = clone[0].scrollTop;
+
+ // Don't do anything if scrollTop hasen't changed:
+ if (this.previousScrollTop === scrollTop) {
+ return;
+ }
+
+ this.previousScrollTop = scrollTop;
+
+ if (scrollTop + config.extraSpace >= config.maxHeight) {
+ el.css('overflowY', '');
+ scrollTop = config.maxHeight;
+ immediate = true;
+ } else if (scrollTop <= config.minHeight) {
+ scrollTop = config.minHeight;
+ } else {
+ el.css('overflowY', 'hidden');
+ scrollTop += config.extraSpace;
+ }
+
+ config.onBeforeResize.call(el);
+ config.onResize.call(el);
+
+ // Either animate or directly apply height:
+ if (config.animate && !immediate) {
+ el.stop(1,1).animate({
+ height: scrollTop
+ }, config.animate);
+ } else {
+ el.height(scrollTop);
+ config.onAfterResize.call(el);
+ }
+
+ },
+
+ destroy: function() {
+ this.unbind();
+ this.el.removeData('AutoResizer');
+ this.clone.remove();
+ delete this.el;
+ delete this.clone;
+ },
+
+ injectClone: function() {
+ (
+ autoResize.cloneContainer ||
+ (autoResize.cloneContainer = $('').appendTo('body'))
+ ).append(this.clone);
+ }
+
+ };
+
+})(jQuery);
+
+/******************************************************************************/
+
+$(document).ready(function() {
+ $('textarea').autoResize({
+ extraSpace: 0,
+ minHeight: 1
+ });
+
+ $('textarea.reply').click(function () {
+ $(this).addClass("narrow");
+ $(this).after('');
+ $(this).parent().after('');
+ $(this).off('click');
+ });
+
+ $('textarea.replypm').click(function () {
+ $(this).addClass("narrowpm");
+ $(this).parent().after('');
+ $(this).off('click');
+ });
+
+ unfoldPostForm();
+ unfoldReply();
+ $(window).bind('hashchange',unfoldPostForm);
+ $(window).bind('hashchange',unfoldReply);
+
+ $(window).on('pagehide',wsShutdown);
+});
diff --git a/juick-www/src/main/static/style.css b/juick-www/src/main/static/style.css
new file mode 100644
index 00000000..5548b79a
--- /dev/null
+++ b/juick-www/src/main/static/style.css
@@ -0,0 +1,263 @@
+html,body,div,h1,h2,ul,li,p,form,input,textarea,pre { margin: 0; padding: 0; }
+html,input,textarea { font-family: sans-serif; font-size: 12pt; }
+html { background: #EEEEE5; color: #000; }
+body { width: 1024px; margin: 0 auto; }
+h1,h2 { font-weight: normal; }
+ul { list-style-type: none; }
+a { text-decoration: none; color: #069; }
+img,hr { border: none; }
+hr { height: 1px; background: #CCC; margin: 10px 0; }
+pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; }
+span.u { text-decoration: underline; }
+
+#content { width: 728px; margin: 15px 0 0 286px; }
+#topwrapper { position: relative; clear: both; }
+
+/********/
+
+body>header { width: 1024px; }
+body>header a { color: #000; border-bottom: 1px dotted #666; font-size: 13pt; }
+
+#logo { float: left; width: 110px; height: 36px; margin: 7px 25px 0 20px; }
+#logo a { display: block; width: 110px; height: 36px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0;
+background: url("//i.juick.com/logo.png") no-repeat; }
+@media screen and (-webkit-min-device-pixel-ratio: 2),
+ (min-resolution: 192dpi) {
+ #logo a {
+ background: url("//i.juick.com/logo_2x.png") no-repeat;
+ background-size: cover;
+ }
+}
+nav#global { float: left; }
+nav#global li { display: inline-block; margin: 14px 12px 0 0; }
+#search { float: right; margin: 12px 20px 12px 0; }
+#search input { background: #FFF; border: 1px solid #DDDDD5; padding: 4px; }
+
+#headdiv { clear: both; margin: 0 0 5px 0; padding: 0 20px; background: #DDDDD5; border-top: 1px solid #D5D5D0; border-bottom: 1px solid #D5D5D0; position: relative; }
+#headdiv li { display: inline-block; margin: 12px 12px 12px 0; }
+nav#actions { top: 0; right: 8px; position: absolute; }
+
+body>header nav li:after { display: inline-block; content: "/"; margin-left: 12px; color: #AAA; }
+body>header nav li:last-child:after { display: none; }
+
+body>header p { color: #000; font-size: 13pt; margin: 12px 0; text-align: center; }
+
+/********/
+
+#content>p, #content>h1, #content>h2 { margin: 1em 0; }
+
+#newmessage { background: #E5E5E0; padding: 15px; margin-bottom: 20px; }
+#newmessage textarea { border: 1px solid #CCC; padding: 4px; width: 688px; resize: vertical; min-height: 14pt; height: 14pt; margin: 0 0 5px 0; }
+#newmessage input { border: 1px solid #CCC; padding: 2px 4px; margin: 5px 0; }
+#newmessage>div { display: none; }
+#newmessage .img { width: 500px; }
+#newmessage .tags { width: 500px; }
+#newmessage .subm { width: 150px; background: #EEEEE5; }
+
+article { margin: 10px 0 20px 58px; background: #FFF; padding: 12px 13px; }
+article>aside { margin: -12px 0 0 -71px; width: 48px; height: 48px; float: left; }
+article>aside img { width: 48px; height: 48px; }
+article>header.u { overflow: hidden; display: inline-block; width: 460px; }
+article>header.t { width: 140px; text-align: right; float: right; }
+article time { color: #999; font-size: 10pt; border-bottom: 1px dotted #999; }
+article p { margin: 10px 0 15px 0; }
+article p.i { text-align: center; }
+article p.ir { float: right; margin-left: 10px; margin-bottom: 10px; }
+article p.ir a { cursor: -webkit-zoom-in; cursor: -moz-zoom-in; }
+article p.ir img { max-width: 200px; max-height: 200px; }
+article .irbr { clear: right; }
+article>nav.l { display: inline-block; font-size: 10pt; }
+article>nav.l a { color: #888; border-bottom: 1px dotted #AAA; margin-right: 15px; }
+article>nav.s { display: inline-block; text-align: right; float: right; }
+article>nav.s a { font-weight: bold; color: #222; }
+article a.likes { padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAXNSR0IArs4c6QAAAMRJREFUGBmtwbsuQ2EAAOCPX6LlKSRGD2E0YCKRGDqLQReDSVhIjI1r49bRdiZJn0GIQcPSxFO4HPHLOe1J2rpMvo//MaMl1batZNSWtlTLrK4JL5qqTqQO1aTqqppeTcrtexRklkTRskzw4Eju1rmOIIqCjrp7uRsNhQWLCmfu5C48Kxk05MmV3JR3xwatiaZ1rYg29Zr34VSPHdG6wpw3iaDPnmhDpiKVKPtmV7Sq4tOlET86EEUNw34RJK4Ffxgzrs8XpvA41+ECiwcAAAAASUVORK5CYII=") no-repeat 0px 1px; }
+article a.replies { margin-left: 18px; padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAANdJREFUOMvN069OgmEUBvAfSCUxNicFKTQ3bkCLyRvwDrgHZ5Q7MFlobAY3G9UrsOi0iIGNBIGgG00o53PvCMAHBJ7thPecPc/5+3IoKKKDIeZrbIi74CiFQBs3eMTbmmRnuMUID5nzG90cFXcxyEqHU3zlEBigkQoUor9N8Recf4Gdpr8XgV+Uc/DK+Ekdz/hAcwNyE594Sp0NTJYOZobriB/FjUwjNkE9m36GKq5wHO9zXOICtch4j1f0Q2QlSnjBGL10dXlQxXvSVmWbTZ3E/5ijtRxcAIj4MflVC0WJAAAAAElFTkSuQmCC") no-repeat 0px 1px; }
+article footer.comm { margin: 13px 0 0 0; }
+article textarea { width: 530px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; }
+article input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; }
+
+#yandex_ad_728 { width: 728px; height: 90px; margin: 20px 0; padding: 15px 0; background: #FFF; }
+.adslot1 { display: inline-block; width: 320px; height: 90px; }
+
+@media (min-width:500px) {.adslot1 {width: 468px; height: 60px;}}
+@media (min-width:800px) {.adslot1 {width: 728px; height: 90px; margin: 10px 0 20px 0; }}
+
+
+#geomap { width: 700px; height: 300px; margin-top: 1em; overflow: hidden; }
+
+.msg { margin: 10px 0 20px 0; }
+.ads { padding: 13px 10px 5px 10px; margin: 8px 0 16px 58px; background: #FFF; }
+.msgthread { margin-bottom: 0; }
+.msg-avatar { float: left; width: 48px; height: 48px; }
+.msg-avatar img { width: 48px; height: 48px; vertical-align: top; }
+.msg-cont { background: #FFF; margin-left: 58px; padding: 12px 15px; width: 640px; }
+.msg-menu { float: right; width: 16px; height: 16px; }
+.msg-menu>a { display: block; width: 16px; height: 16px; vertical-align: top; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAALRQTFRFAAAAldX/ncT/ksj/ltL/nMb/lMn/mcz/l9H/lcr/mZmZmcz/m83/mJiYmZmZmcz/mM7/mpqamsr/l8v/m83/mJiYmM7/l8v/mZmZmcz/mpqamMv/mcz/mM3/ms3/msv/mMv/mMz/mcz/msz/mc3/mMz/mcz/msz/mc3/mcv/mc3/mcv/mcz/mcz/mcz/mcz/mZmZmZmZmcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mZmZiZsGCAAAADx0Uk5TAAwNDhESExQWGC0tLi8yMjQ1NTY4OTk7PDxESktNUVNUd3h5eoGCg4mKmMvMzc7P29zd3uLj7O3u8vT2+A5wCAAAAJFJREFUGBkFwQlCgkAAAMDRxEySkryyzDxSAc+gkvX//2oGAAB42J5COG46AJ+/+SiKxvl1DsyqJyCtZnBXxgDxdxPrHQDZCvvUNIFkalAgtCSXHr1LIqpRt+ifu91zn6hG8YLh7TbEoMAyg8kEsgWaZQzwWDbgvXoG0p83YH7Nx+32a/73AdDZHEIovu4BAMA/t6QMuyHliCkAAAAASUVORK5CYII=") no-repeat; }
+.msg-header { overflow: hidden; }
+.msg-ts { font-size: small; vertical-align: top; margin: 5px 0; }
+.msg-ts, .msg-ts>a { color: #999; }
+.msg-place { font-size: small; }
+.msg-place>a { color: #999; }
+.msg-txt { overflow: hidden; margin: 10px 0 12px 0; }
+.msg-media { text-align: center; }
+.msg-links { font-size: small; color: #999; margin: 5px 0 0 0; }
+.msg-comments { overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; margin-top: 10px; }
+.msg-comment { margin: 5px 0; }
+.ta-wrapper { display: inline-block; border: 1px solid #DDD; }
+.msg-comment textarea { width: 634px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; }
+.msg-comment .narrow { width: 554px; }
+.msg-comment .narrowpm { width: 580px; }
+.attach-photo { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAQAAAAKsiavAAAAAXNSR0IArs4c6QAAAKRJREFUGNNjZICC6Q5M+xlQwD/HzAMMDEwwLnM9AxqAiDDO/M+AFzCh8B4zhrDwsfAxBjHcggkhm/CY2SDlHYQ5TZD5EoMMmgmMhSnvZnrPfDLzyQyvrPf/CzGs+L2TgYFhBoM0gzTjDAaGX7uwuQG/I1ldGRj+pzM8YXjMmMrAwOGK6cibfy2z3sMdeYpBBTMcHjMU/9zJzsjo8r8DIk1yQGEBAFzpL+AuTCqZAAAAAElFTkSuQmCC") no-repeat 3px 4px; }
+.attach-photo-active { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAAXNSR0IArs4c6QAAAEVQTFRFAAAAAJUAAJ0AAJIAAJkAAJYAAJwAAJcAAJoAAJgAAJkAAJoAAJoAAJgAAJkAAJoAAJkAAJkAAJkAAJkAAJkAAJkAAJkA9z3GXQAAABZ0Uk5TAAwNDg8REkBHSktRU1RVv9jZ2+Lj5OeV7PgAAABSSURBVAhbdcjBFkAgFADRIUlE9Or9/6daUC0cs5pzAXD65niKFSJQv/aChHHcrg4yA9jcILCW4tkbDGRVwfzDhs+yEBqcFsCmBiqHmULSDr0P3JdgDbuscEckAAAAAElFTkSuQmCC") no-repeat 3px 4px; }
+.msg-comment input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; }
+.msg-recomms { margin-top: 10px; overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; }
+.reply-new .msg-cont { border-right: 5px solid #0C0; }
+q:before, q:after { content: "";}
+q { border-left: 1px dashed #CCC; margin: 10px 0 10px 10px; padding-left: 10px; display: block; color: #666; }
+
+#mtoolbar { width: 670px; margin-left: 58px; background: #E5E5DD; border-top: 1px solid #CCC; }
+#mtoolbar ul, #mtoolbar a { padding: 5px; }
+#mtoolbar li { display: inline; }
+#mtoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px; }
+
+.newmessage { width: 695px; padding: 2px; resize: vertical; border: 1px solid #DDD; } /* textarea */
+
+.users { width: 100%; margin: 10px 0; } /* table */
+.users td { width: 33%; padding: 6px 0; overflow: hidden; } /* table */
+.users img { width: 32px; height: 32px; vertical-align: middle; margin-right: 6px; } /* table */
+
+.title2 { padding: 10px 20px; margin: 20px 0; background: #DDDDD0; }
+.title2-right { float: right; line-height: 24px; }
+#content .title2 h2 { font-size: x-large; margin: 0; }
+
+.page { text-align: center; padding: 5px; background: #E5E5DD; }
+
+/* signup form */
+.signup-h1>img { vertical-align: middle; margin-right: 10px; }
+.signup-h1 { margin: 20px 0 10px 0; font-size: x-large; }
+.signup-h2 { font-size: large; margin: 10px 0 5px 0; }
+.signup-hr { margin: 20px 0; }
+
+/********/
+
+#readerlinks li { margin: 15px 0; }
+#readerlinks img { vertical-align: top; margin: 1px 7px 0 0; }
+#readerlinks a { color: #000; border-bottom: 1px dotted #666; }
+#readerlinks a:visited { color: #999; }
+
+/********/
+
+.newpm { margin: 20px 60px 30px 60px; }
+.newpm textarea { width: 100%; resize: vertical; }
+.newpm-send input { width: 100px; }
+
+/********/
+
+#column { width: 240px; padding-top: 10px; overflow: hidden; float: left; margin-left: 10px; }
+#column ul, #column p, #column hr { margin: 10px 0; }
+#column li { margin: 6px 0; }
+#column .margtop { margin-top: 15px; }
+#column p { font-size: 10pt; line-height: 140%; }
+#column .tags { text-align: justify; }
+#column .inp { width: 222px; padding: 3px; border: 1px solid #CCC; border-radius: 3px; background: #F5F5E9; }
+#ctitle { font-size: 14pt; }
+#ctitle img { vertical-align: middle; margin-right: 5px; }
+#ctoolbar { margin: 10px 0; padding: 5px; line-height: 0; background: #E5E5DD; }
+#ctoolbar li { display: inline; }
+#ctoolbar a { padding: 5px 10px;}
+#ctoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px 0; }
+#ustats li { margin: 3px 0; font-size: 10pt; }
+#column table.iread { width: 100%; }
+#column table.iread td { text-align: center; }
+#column table.iread img { width: 48px; height: 48px; }
+
+/********/
+
+#dialogb { position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.6; background: #000; z-index: 10; }
+#dialogt { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; }
+#dialogt td { vertical-align: middle; text-align: center; }
+#dialogw { position: relative; display: inline-block; text-align: left; z-index: 11; }
+#dialogc { position: absolute; top: -15px; right: -15px; width: 30px; height: 30px; z-index: 12; cursor: pointer; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAEEElEQVQ4y32Va2yTVRzGf23fd10vUNqxsY1dGIyba7BsTgiwhcRkgxHkFkJAuQzIggY0IXGYkKA4DeAQMQTIiIB+MyRAJn7hAxJRJKIRiJgQIhESZxYFEuja9f74oe1aoPh/vrx5z3nO/3qeA0+aBSvW+UaT2VBUb+91HXY3FDUUNZnzDaxYsfBcs2DDpHjqqC1ln07YU79t0oGX+mY1V3dWv1/VWVrqphgTW+EDLBjYS91tZZ/5v+34d1/sijIWv/bw2IXFy2urfKVu7BjP0q0YOCaMWVlzfF7wdJY2mLybzH4/+mpq3cxKrwcHBtanvTqrfK/X97+avCvFUn2xtjDBNJpDn8SGU1Ls+oXVTTUeL8587xYMHKN97fWnlikqnU/UDmWJWUwL/ZKQpPOvTZvg8eLI0W3Y8cyo+3hB4p50MmYLUgC24EdRSTq6rLIaD/Z06SyYuMdWvjnv4TfS+URhahpHYlLwR16gHDcmVrBSPNrXOv2LTimUrMoE3BiaO5Jz2dCmiDNIkGBRcCAuffde1WR8FGMDKy5n5cp5f34pHYqlt/tDkrQ7SpDgxNBASurLrHRFpPsXmUEFbgyw4fFM7FgQvi7NznirHQorTZ8cGkhJUm80vVIylJA0ppU6xlAEBiXj/EvWSI+TuewWhdP0xylJOhPPVeJGVNqxbdQ0xlIMprusoXnzW9LtRH5xFoUjmfHIpxL8Oiod3ed6kXE4wHRW+Od0dku/J57s7P1UmvxBNP//2ah0+CCNVOICk8qyOS3bpAeJfOpgSpISypUujZ+GpXd6HC8zPkM2Z9Vtiv0jZRvlGRrM5Lo4k/vWSHZUHsWlGW+YI+QKs7lh/Z1L0tuZLbPDuVzTpTsVT6+0haXB31hNUzbsMjMwZdWBz6XBuDOY7efWiG3kYuyOZmO6FJLOnWM5mYIZlDDd3lHVPXAt18/C2DAsBf8u2cECpqdbZcNDndHi27S5T5I2DD+POjccT0qHz9JJS3ZIrLioIGBbNu7dI6claVdB72uHI0np8lW6WUIgO55WivFRT6ttvffDQ/2SdCuyatiZR2wLXwlL0uVf6WEdrdRnL4YFEzfl+Gm3dXn2bun/67YkRZI3oscjxyM/Rx7FJenBwP6L7KWLdvy5K5kRA6qZSYety9nDiYM//HFLeXbvzsmr5kl66KKDmeSJQUaG8FJDgHbW0e3YzwnPmVe+33lz582Oy+P7OcF+ullHOwFqeEKGMgKIl2r8tLCUjWxnl7HH6KXX2GPdxXY2spQW/FTzlACOSC8eyplEgBYWsoI1rGUta1jBQloIMIlyCkhv9r2w48JLObVMwU+ARhoJ4GcKtZTjxZXL9Vm6BSsGJnYcOHFl4MSBHRMDK5b/e69yxzyNAvYf9TCL+HAwka4AAAAASUVORK5CYII="); }
+
+.dialoglogin { width: 300px; background: #EEEEE5; padding: 25px; }
+#signfb,#signvk { display: block; width: 100%; height: 32px; line-height: 32px; text-indent: 37px; text-decoration: none; overflow: hidden; margin: 10px 0; }
+#signfb { color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat #3A569C; }
+#signvk { margin-bottom: 30px; color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat #6d8fb3; }
+.dialoglogin form { margin-top: 7px; }
+.signinput,.signsubmit { border: 1px solid #CCC; margin: 3px 0; padding: 3px; }
+.signinput { width: 292px; }
+.signsubmit { width: 70px; }
+
+.dialogshare { padding: 20px; background: #EEEEE5; border: 1px solid #999; min-width: 300px; overflow: auto; }
+.dialogl { padding: 5px; margin: 3px 0 20px; border: 1px solid #DDD; background: #F5F5E9; }
+.dialogshare li { float: left; margin: 5px 10px 0 0; }
+.dialogshare a { display: block; width: 32px; height: 32px; background-image: url(//static.juick.com/sharesocial.png); }
+
+.dialogtxt { background: #EEEEE5; padding: 20px; }
+
+/********/
+
+#wsthread { position: fixed; bottom: 20px; right: 20px; background: #CCC; cursor: pointer; padding: 5px 10px; display: none; }
+
+/********/
+
+#footer { clear: both; font-size: 10pt; padding: 10px 0; color: #999; width: 1004px; margin: 0 auto 20px 0; }
+#footer-social { float: left; }
+#footer-social a { display: inline-block; width: 32px; height: 32px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; margin: 0 15px 0 0; }
+#footer-left { margin-left: 286px; margin-right: 350px; }
+#footer-right { float: right; }
+
+/******************************************************************************/
+
+.sharenew { display: inline-block; padding: 0 12px 0 37px; min-height: 32px; line-height: 32px; min-width: 200px; color: #FFF; }
+
+.ico32-twi { background: #55acee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAM9QTFRFVazuVqzuV6zuWK3uWq7uXK/uXrDuYLHvY7PvZLPvZrTvZ7Tva7bwbLfwbbjwbrjwcbnwc7rxdbvxer7xfL/xf8Dyg8LyhcPyhsTyh8TzisXzi8bzjcfzjsfzksn0qNT1rNb2udz3v+D4weD4weH4w+H5w+L5yuT5yuX5y+X5zuf60ej51er61uv62uz62+374O/75fL76PP86vT87PX87vb87/f98Pf88Pf98fj99Pn99vr99/v++Pv9+vz9+/z9/P39/f39/f7+/v7+////bJnt2AAAAKlJREFUGBntwUdWAkEABNAaQJIOkpMSJCcDKEEJ2lTd/0wyD1bdbFiw43/g5kIJHJXf/2b1u2fY/IWPQO1botiBraBFNQqE2zIy3L/CFl9Tg6dUbiyjAx+2WE8kl29zBfZwZD5+xYDRwTQEW2RCUkfkiwdHerilTpiHK9zXCTWKwOWVVjSUZPiTxVnJJimRu6oH1/1DpbURjfRZDOGMx+7WkNRXI4Gba/gHx4AiZYtLseAAAAAASUVORK5CYII=") no-repeat; }
+.ico32-vk { background: #6d8fb3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat; }
+.ico32-fb { background: #3b579d url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat; }
+.ico32-lj { background: #888888 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAlJQTFRFAAAAAAAAAFVVADNmACRtAEBgADNmADdtADBgADljADNmADFiADFjADVpADJjADRpADRoADFnADNmADJkADVlADJnADRnADJlADJnADJlADRnADNmADJnADNmADJmADRmADNlADRmADNnADNmADJmADRmADNmADRmADJmADNlADNmADNmADJmADNnADNlADNnADNmADNlADNmADNmADNmBTRmADNmADNmADNmWGh4ADNmBDZnK1J6LWCURmiIRmmLc4mfADNmKlyPADNmGkNsLF+SKFiIR3qtL1Z+ATRnDT9xE0Z5Gk2BN2ueOVh1UIO2DkFzE0Z5JVeLK1J5M2WYPlp1T3ehJEpuADNmK16QPG+iQHOmRFxze35/ADNmLV+SjIeCMVl/TmJ4BThqBzZnR3mtBjpsWo7AZ4KeFENxH0h0bJ7SADNmAzZpHz9sAzdqCzppEkBvF0RyO1+EP3OmBDZodKbafWR+ATRoDjlpQ3epADNmATNlDDdoQWOGaJvOBDVmBDZoQWWKRnmrUoS3AzZqBzdoWFZ4cKTVc4mgADNmBjdmCzhoVom5W47CADNmADNnAzRnBjVoWlh5opSHADNmATRlATRmCDlqcaXYh7rtADNmWYy/XI/CXpLFYZTHY5bJZZjLZpjLZpnMb2B9cmB8hbjrhp2zibvvjL7ylMj6l8r9l8v9mY6Fmcz/qneIrba+snqKuaKLwKeMxMbIx8jJy8vLzMzM1LOQ1dXV1d3m2YqR4LmS4uju7sGW78KV8cSX+fn5+smY/cqZ/f39/8yZQ9icRAAAAJt0Uk5TAAEDBQcICg4QEhkaHyIkJyw0QUJESE9RUlZeX2Fpa2x5e4GHiYqMmZ2rr7S2uL/Cw8nNzs/R19/g4OPj4+fn5+fo6Onp6erq6+zs7Ozs7Ozt7e3t7e3t7u/v7+/v7/Dw8PHx8vLy8/Pz9PT09fX19vb29vb29/f3+Pj4+fn5+fn6+vr6+vv7+/v7/Pz8/Pz9/f39/f3+/v7+/v7uuPuRAAABVElEQVQ4y83QU3sDURCA4U2dOrVtpbZt27Ztt2lTY6tTnxpb2/pf3dxPcp3vdt5n5jyHIIQpKSOXZS91/nPN4p6FvckuFr+5Hrn/wpmvbHBnwnMWt+1qdPD563LAhgECu9qLufGn37fDRmQIgm5Oh//DXflKaFkyVxkCDqT3w23ByCpFnUQFyQBAsTr8vjeyM46iqIM6e1FAaKGmlmkc00qLPtIMOmKOMjDeDTymRRapAQBxx6INjDd9zijqNDpXHhBy6Qk7GA+H0SuOSp0lAKFG5mGMM6toMTZrAT3DhByiRcgaLUqQDgBE2DXrGG9V+KX6FgazoRXSAfHbGMe+P378eXiCP67ETcQ45Y8uf0YMFAaoeSqHB66RAggY1u1JnzzwilRBQDDdlrJvaPDTrwsDQlLfFaUtfp9PmBL8YqhYcesRsiQEJGscgZwIgYlp2xJC0z8XJH2ZPhmkKgAAAABJRU5ErkJggg==") no-repeat; }
+.ico32-gp { background: #dc4a38 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAXNSR0IArs4c6QAAAa9JREFUSMftlTFoU1EUhr/3EguZFFzSIVVehyq03dxEJy3iIiJCi4Nr6eQmLoKggg46CaKj6FBB0OIgXcRJiQiKiFIf2KEJVsSCTWlN+Bx8eaQtaa5Dt57tP+/+/33n3P/cCzuxPeFh7/nRFdvxxtFw8m4f+tojJl62qT4xsRBOj511yT0Zuqjq5P/8/Lj6LEd9LqoLRt0Z8QY8Dqy2QbTGI6CfSrjAADDYgd8BUAgXWABG3Z/jH8Ai81lJE97pJfAYiJnK8RBwJWplaISTvZpYcEZteh7AQ9a90fH1ut96n0Ofl0zVOT/Y8mZurapVa65atert7iUQrUXXooQS9xkm5m6WbpCS8osmKSn1EEdcVfVWpweCSsgXH7Ch6rSlrQSKm9vICY4xxF5qVNjFGcqORQ0AXrLUa98x55x30oPG4LCfVDubtjX9tE2/tEcpm81XasNiCL1oTT23Idvvb7USYuURypmZO4+1xnv+8DNE4N8UHt20Zh9Po+WwHrxVGx5fl7tg3YHunHVXhYO8IEFmeE7KCglnKTMRfQ63T8kpZ/1uy2W/+sBTxjuPzLbHX6Ju9rcCQGEmAAAAAElFTkSuQmCC") no-repeat; }
+
+/******************************************************************************/
+
+@media screen and (max-width: 850px) {
+ body { text-size-adjust: 100%; -webkit-text-size-adjust: 100%;}
+ body,body>header,#topwrapper,#content,#footer,#mtoolbar { width: auto; min-width: 310px; margin: 0 auto; }
+
+ body>header { margin-bottom: 15px; }
+ body>header a { font-size: 12pt; }
+ #logo { display: none; }
+ nav#global { margin-left: 10px; }
+ nav#global li { margin-right: 10px; }
+ #search { float: none; display: inline-block; margin: 10px 10px; }
+ #headdiv { padding: 0 10px; }
+ #headdiv li { margin-right: 10px; }
+ nav#actions { position: relative; right: auto; }
+ #newmessage .img, #newmessage .tags { width: 100%; }
+ #column { float: none; padding-top: 0; width: auto; margin: 0 10px; }
+
+ article { margin-left: 0; overflow: auto; }
+ article>aside { margin: 0 10px 0 0; width: 40px; height: 40px; }
+ article>aside img { width: 40px; height: 40px; }
+ article>header.u { margin: 0; width: auto; display: block; }
+ article>header.t { float: none; text-align: left; margin: 0; width: auto; display: block; }
+ article p { margin: 10px 0 8px 0; }
+ article>nav.l { display: block; float: left; width: 80%; line-height: 15pt; }
+ article>nav.s { display: block; }
+ article textarea { width: 205px; }
+ article footer { float: left; }
+
+ #content textarea { width: 100%; }
+
+ .msg,.msg-cont { width: auto; min-width: 280px; }
+ .msg-cont,.ads { margin-left: 0; }
+ .msg-avatar { margin: 10px 10px 0 10px; width: 40px; height: 40px; }
+ .msg-avatar img { width: 40px; height: 40px; }
+ .msg-comment textarea { width: 100%; }
+ .msg-txt { margin: 8px 0 0 0; }
+ .msg-media { overflow: auto; }
+
+ .title2 h2 { font-size: large; }
+
+ #footer { margin: 0 10px; }
+ #footer div { float: none; margin: 10px 0; }
+}
diff --git a/juick-www/src/main/webapp/scripts.js b/juick-www/src/main/webapp/scripts.js
deleted file mode 100644
index 93594f71..00000000
--- a/juick-www/src/main/webapp/scripts.js
+++ /dev/null
@@ -1,684 +0,0 @@
-var ws=null;
-var pageTitle;
-
-function initWS() {
- if(typeof(pageMID)!="undefined" && pageMID>0) {
- var url;
- var protocolPrefix = (window.location.protocol === 'https:') ? 'wss:' : 'ws:';
- if(typeof(juickDebug)!="undefined") {
- url= protocolPrefix + "//ws.juick.com/_replies";
- } else {
- url= protocolPrefix + "//ws.juick.com/"+pageMID;
- }
- if(typeof(hash)!="undefined" && hash) {
- url+="?hash="+hash;
- }
-
- ws = new WebSocket(url);
- ws.onopen = function() {
- console.log('online');
- if($('#wsthread').length==0) {
- var d=$('');
- d.on('click',onclickNextReply);
- d.appendTo("body");
- pageTitle=document.title;
- }
- };
- ws.onclose = function() {
- console.log('offline');
- ws=null;
- setTimeout(function() {
- initWS();
- },2000);
- };
- ws.onmessage = function(msg) {
- if(msg.data==' ') {
- ws.send(' ');
- } else {
- try {
- var jsonMsg=$.parseJSON(msg.data);
- console.log('data: '+msg.data);
- wsIncomingReply(jsonMsg);
- } catch(err) {
- console.log(err);
- }
- }
- };
- setInterval(wsSendKeepAlive, 90000);
- }
-}
-
-function wsSendKeepAlive() {
- if(ws) {
- ws.send(' ');
- }
-}
-
-function wsShutdown() {
- if(ws) {
- ws.onclose=function(){};
- ws.close();
- }
-}
-
-function wsIncomingReply(msg) {
- var p;
- if(msg.replyto>0) {
- p=$('#'+msg.replyto);
- if(p.length==0) {
- p=null;
- }
- }
-
- var li=$('');
- li.html(''+
- ''+
- ''+
- ''+
- '
'+
- '
'+
- '
'+
- ''+
- '
');
- $(li).find('.msg-txt').text(msg.body);
- if(p) {
- li.css('margin-left',parseInt(p.css('margin-left'))+20+'px');
- p.after(li);
- } else {
- $('#replies').append(li);
- }
-
- updateRepliesCounter();
-}
-
-function onclickNewReply(e) {
- var li=$(e);
- li.removeClass('reply-new');
- li.off('click');
- li.off('mouseover');
- updateRepliesCounter();
-}
-
-function onclickNextReply() {
- var li=$('#replies>li.reply-new:first');
- if(li.length) {
- li.removeClass('reply-new');
- li.off('click');
- li.get(0).scrollIntoView();
- updateRepliesCounter();
- }
-}
-
-function updateRepliesCounter() {
- var replies=$('#replies>li.reply-new').length;
- if(replies>0) {
- $('#wsthread').text(replies).css('display','block');
- document.title='['+replies+'] '+pageTitle;
- } else {
- $('#wsthread').css('display','none');
- document.title=pageTitle;
- }
-}
-
-/******************************************************************************/
-/******************************************************************************/
-/******************************************************************************/
-
-function postformListener(formEl,ev) {
- if(ev.ctrlKey && (ev.keyCode==10 || ev.keyCode==13)) {
- if(!formEl.onsubmit || formEl.onsubmit()) {
- formEl.submit();
- }
- }
-}
-
-function unfoldPostForm() {
- if(window.location.pathname==="/" && window.location.hash==="#post") {
- $('#newmessage>div').css('display','block');
- $('#newmessage textarea').css('min-height','70px');
- $('#newmessage textarea')[0].focus();
- }
-}
-
-function onsubmitNewMessage() {
- if($('#newmessage textarea').val().length==0) {
- openDialog('Пожалуйста, введите текст сообщения
');
- return false;
- }
- return true;
-}
-
-function showMoreReplies(id) {
- $('#'+id+' .msg-comments').hide();
-
- var replies=$('#replies>li');
- var flagshow=0;
- for(var i=0; i');
- c.before('');
- c.append('');
- }
- // $('#replies #'+rid+' .msg-links').hide();
- $('#replies #'+rid+' .msg-comment').show();
- $('#replies #'+rid+' textarea')[0].focus();
- $('#replies #'+rid+' textarea').autoResize({
- extraSpace: 0,
- minHeight: 1
- });
- return false;
-}
-
-function showCommentFooter(e) {
- var a=$(e).closest("article");
- if(a.find("footer.comm").length==0) {
- a.append('');
- a.find('textarea').autoResize({
- extraSpace: 0,
- minHeight: 1
- });
- }
- a.find('textarea')[0].focus();
- return false;
-}
-
-function attachCommentPhoto(div) {
- if($(div).children().length===0) {
- var inp=$('');
- inp.on('change',function() {
- $(this).parent().attr('class','attach-photo-active');
- });
- inp.trigger('click');
- $(div).append(inp);
- } else {
- $(div).empty();
- $(div).attr('class','attach-photo');
- }
-}
-
-function attachMessagePhoto(div) {
- var f=$(div).closest('form');
- if(f.find('input:file').length===0) {
- var inp=$('');
- inp.on('change',function() {
- $(div).text("загрузить (✓)");
- });
- f.append(inp);
- inp.trigger('click');
- } else {
- f.find('input:file').remove();
- $(div).text("загрузить");
- }
-}
-
-function unfoldReply() {
- if((0+window.location.hash.substring(1))>0) {
- var el=$(window.location.hash);
- while(el.is(":hidden")) {
- el=el.prev();
- }
- showMoreReplies(el.attr('id'));
- window.location.replace(window.location.hash);
- }
-}
-
-function showMessageLinksDialog(mid,rid) {
- var hlink=window.location.protocol+"//juick.com/"+mid;
- var mlink="#"+mid;
- if(rid>0) {
- hlink+="#"+rid;
- mlink+="/"+rid;
- }
- var hlinkenc=encodeURIComponent(hlink);
-
- var html="Ссылка на сообщение:";
- html+="
"+hlink+"
";
- html+="Номер сообщения:";
- html+="
"+mlink+"
";
- html+="Поделиться:
";
- html+=" ";
- html+=" ";
- html+=" ";
- html+=" ";
- html+="
";
-
- openDialog(html);
-}
-
-function showPhotoDialog(fname) {
- var width=$(window).width();
- var height=$(window).height()*0.9;
- if(width<640) {
- return true;
- } else if(width<1280) {
- openDialog("");
- $('#dialogw img').css('max-height',height+'px');
- return false;
- } else {
- openDialog("");
- $('#dialogw img').css('max-height',height+'px');
- return false;
- }
-}
-
-function openDialog(html) {
- var dhtml="";
- dhtml+=html;
- dhtml+=" |
";
- $('body').append(dhtml);
-}
-
-function closeDialog() {
- $('#dialogb').remove();
- $('#dialogt').remove();
-}
-
-function openSocialWindow(a) {
- var w=window.open(a.href,'juickshare','width=640,height=400');
- if(window.focus) w.focus();
- return false;
-}
-
-function checkUsername() {
- var uname=$('#username').val();
- $.ajax('//api.juick.com/users?uname='+uname).done(function() {
- $('#username').css('background','#FFCCCC');
- }).fail(function() {
- $('#username').css('background','#CCFFCC');
- });
-}
-
-/******************************************************************************/
-
-function openDialogLogin() {
- var html='';
- openDialog(html);
- return false;
-}
-
-/******************************************************************************/
-
-function likeMessage(e,mid) {
- if (confirm("Are you sure?")) {
- $.ajax({
- url: '//juick.com/like?mid='+mid,
- type: 'POST'
- }).done(function() {
- $(e).closest("article").append("OK!
");
- }).fail(function() {
- $(e).closest("article").append("Ошибка
");
- });
- }
- return false;
-}
-
-/******************************************************************************/
-
-function setPopular(e,mid,popular) {
- $.ajax('//api.juick.com/messages/set_popular?mid='+mid+'&popular='+popular+'&hash='+hash).done(function() {
- var a=$(e).closest("article");
- a.append("OK!
");
- });
- return false;
-}
-
-function setPrivacy(e,mid) {
- $.ajax('//api.juick.com/messages/set_privacy?mid='+mid+'&hash='+hash).done(function() {
- var a=$(e).closest("article");
- a.append("OK!
");
- });
- return false;
-}
-
-/******************************************************************************/
-
-function readerLinkReplace(e) {
- var a=$(e);
- a.attr('href','/_out?lid='+a.data('lid'));
-}
-
-/******************************************************************************/
-
-jQuery.fn.selectText = function(){
- var d = document;
- if (d.body.createTextRange) {
- var range = d.body.createTextRange();
- range.moveToElementText(this[0]);
- range.select();
- } else if (window.getSelection) {
- var selection = window.getSelection();
- var range = d.createRange();
- range.selectNodeContents(this[0]);
- selection.removeAllRanges();
- selection.addRange(range);
- }
-};
-
-/*
- * jQuery.fn.autoResize 1.14
- */
-
-(function($){
-
- var uid = 'ar' + +new Date,
-
- defaults = autoResize.defaults = {
- onResize: function(){},
- onBeforeResize: function(){
- return 123
- },
- onAfterResize: function(){
- return 555
- },
- animate: {
- duration: 200,
- complete: function(){}
- },
- extraSpace: 50,
- minHeight: 'original',
- maxHeight: 500,
- minWidth: 'original',
- maxWidth: 500
- };
-
- autoResize.cloneCSSProperties = [
- 'lineHeight', 'textDecoration', 'letterSpacing',
- 'fontSize', 'fontFamily', 'fontStyle', 'fontWeight',
- 'textTransform', 'textAlign', 'direction', 'wordSpacing', 'fontSizeAdjust',
- 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'width'
- ];
-
- autoResize.cloneCSSValues = {
- position: 'absolute',
- top: -9999,
- left: -9999,
- opacity: 0,
- overflow: 'hidden'
- };
-
- autoResize.resizableFilterSelector = [
- 'textarea:not(textarea.' + uid + ')',
- 'input:not(input[type])',
- 'input[type=text]',
- 'input[type=password]',
- 'input[type=email]',
- 'input[type=url]'
- ].join(',');
-
- autoResize.AutoResizer = AutoResizer;
-
- $.fn.autoResize = autoResize;
-
- function autoResize(config) {
- this.filter(autoResize.resizableFilterSelector).each(function(){
- new AutoResizer( $(this), config );
- });
- return this;
- }
-
- function AutoResizer(el, config) {
-
- if (el.data('AutoResizer')) {
- el.data('AutoResizer').destroy();
- }
-
- config = this.config = $.extend({}, autoResize.defaults, config);
- this.el = el;
-
- this.nodeName = el[0].nodeName.toLowerCase();
-
- this.originalHeight = el.height();
- this.previousScrollTop = null;
-
- this.value = el.val();
-
- if (config.maxWidth === 'original') config.maxWidth = el.width();
- if (config.minWidth === 'original') config.minWidth = el.width();
- if (config.maxHeight === 'original') config.maxHeight = el.height();
- if (config.minHeight === 'original') config.minHeight = el.height();
-
- if (this.nodeName === 'textarea') {
- el.css({
- resize: 'none',
- overflowY: 'hidden'
- });
- }
-
- el.data('AutoResizer', this);
-
- // Make sure onAfterResize is called upon animation completion
- config.animate.complete = (function(f){
- return function() {
- config.onAfterResize.call(el);
- return f.apply(this, arguments);
- };
- }(config.animate.complete));
-
- this.bind();
-
- }
-
- AutoResizer.prototype = {
-
- bind: function() {
-
- var check = $.proxy(function(){
- this.check();
- return true;
- }, this);
-
- this.unbind();
-
- this.el
- .bind('keyup.autoResize', check)
- //.bind('keydown.autoResize', check)
- .bind('change.autoResize', check)
- .bind('paste.autoResize', function() {
- setTimeout(function() {
- check();
- }, 0);
- });
-
- if (!this.el.is(':hidden')) {
- this.check(null, true);
- }
-
- },
-
- unbind: function() {
- this.el.unbind('.autoResize');
- },
-
- createClone: function() {
-
- var el = this.el,
- clone = this.nodeName === 'textarea' ? el.clone() : $('');
-
- this.clone = clone;
-
- $.each(autoResize.cloneCSSProperties, function(i, p){
- clone[0].style[p] = el.css(p);
- });
-
- clone
- .removeAttr('name')
- .removeAttr('id')
- .addClass(uid)
- .attr('tabIndex', -1)
- .css(autoResize.cloneCSSValues);
-
- if (this.nodeName === 'textarea') {
- clone.height('auto');
- } else {
- clone.width('auto').css({
- whiteSpace: 'nowrap'
- });
- }
-
- },
-
- check: function(e, immediate) {
-
- if (!this.clone) {
- this.createClone();
- this.injectClone();
- }
-
- var config = this.config,
- clone = this.clone,
- el = this.el,
- value = el.val();
-
- // Do nothing if value hasn't changed
- if (value === this.prevValue) {
- return true;
- }
- this.prevValue = value;
-
- if (this.nodeName === 'input') {
-
- clone.text(value);
-
- // Calculate new width + whether to change
- var cloneWidth = clone.width(),
- newWidth = (cloneWidth + config.extraSpace) >= config.minWidth ?
- cloneWidth + config.extraSpace : config.minWidth,
- currentWidth = el.width();
-
- newWidth = Math.min(newWidth, config.maxWidth);
-
- if (
- (newWidth < currentWidth && newWidth >= config.minWidth) ||
- (newWidth >= config.minWidth && newWidth <= config.maxWidth)
- ) {
-
- config.onBeforeResize.call(el);
- config.onResize.call(el);
-
- el.scrollLeft(0);
-
- if (config.animate && !immediate) {
- el.stop(1,1).animate({
- width: newWidth
- }, config.animate);
- } else {
- el.width(newWidth);
- config.onAfterResize.call(el);
- }
-
- }
-
- return;
-
- }
-
- // TEXTAREA
-
- clone.width(el.width()).height(0).val(value).scrollTop(10000);
-
- var scrollTop = clone[0].scrollTop;
-
- // Don't do anything if scrollTop hasen't changed:
- if (this.previousScrollTop === scrollTop) {
- return;
- }
-
- this.previousScrollTop = scrollTop;
-
- if (scrollTop + config.extraSpace >= config.maxHeight) {
- el.css('overflowY', '');
- scrollTop = config.maxHeight;
- immediate = true;
- } else if (scrollTop <= config.minHeight) {
- scrollTop = config.minHeight;
- } else {
- el.css('overflowY', 'hidden');
- scrollTop += config.extraSpace;
- }
-
- config.onBeforeResize.call(el);
- config.onResize.call(el);
-
- // Either animate or directly apply height:
- if (config.animate && !immediate) {
- el.stop(1,1).animate({
- height: scrollTop
- }, config.animate);
- } else {
- el.height(scrollTop);
- config.onAfterResize.call(el);
- }
-
- },
-
- destroy: function() {
- this.unbind();
- this.el.removeData('AutoResizer');
- this.clone.remove();
- delete this.el;
- delete this.clone;
- },
-
- injectClone: function() {
- (
- autoResize.cloneContainer ||
- (autoResize.cloneContainer = $('').appendTo('body'))
- ).append(this.clone);
- }
-
- };
-
-})(jQuery);
-
-/******************************************************************************/
-
-$(document).ready(function() {
- $('textarea').autoResize({
- extraSpace: 0,
- minHeight: 1
- });
-
- $('textarea.reply').click(function () {
- $(this).addClass("narrow");
- $(this).after('');
- $(this).parent().after('');
- $(this).off('click');
- });
-
- $('textarea.replypm').click(function () {
- $(this).addClass("narrowpm");
- $(this).parent().after('');
- $(this).off('click');
- });
-
- unfoldPostForm();
- unfoldReply();
- $(window).bind('hashchange',unfoldPostForm);
- $(window).bind('hashchange',unfoldReply);
-
- $(window).on('pagehide',wsShutdown);
-});
diff --git a/juick-www/src/main/webapp/style.css b/juick-www/src/main/webapp/style.css
deleted file mode 100644
index 5548b79a..00000000
--- a/juick-www/src/main/webapp/style.css
+++ /dev/null
@@ -1,263 +0,0 @@
-html,body,div,h1,h2,ul,li,p,form,input,textarea,pre { margin: 0; padding: 0; }
-html,input,textarea { font-family: sans-serif; font-size: 12pt; }
-html { background: #EEEEE5; color: #000; }
-body { width: 1024px; margin: 0 auto; }
-h1,h2 { font-weight: normal; }
-ul { list-style-type: none; }
-a { text-decoration: none; color: #069; }
-img,hr { border: none; }
-hr { height: 1px; background: #CCC; margin: 10px 0; }
-pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; }
-span.u { text-decoration: underline; }
-
-#content { width: 728px; margin: 15px 0 0 286px; }
-#topwrapper { position: relative; clear: both; }
-
-/********/
-
-body>header { width: 1024px; }
-body>header a { color: #000; border-bottom: 1px dotted #666; font-size: 13pt; }
-
-#logo { float: left; width: 110px; height: 36px; margin: 7px 25px 0 20px; }
-#logo a { display: block; width: 110px; height: 36px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0;
-background: url("//i.juick.com/logo.png") no-repeat; }
-@media screen and (-webkit-min-device-pixel-ratio: 2),
- (min-resolution: 192dpi) {
- #logo a {
- background: url("//i.juick.com/logo_2x.png") no-repeat;
- background-size: cover;
- }
-}
-nav#global { float: left; }
-nav#global li { display: inline-block; margin: 14px 12px 0 0; }
-#search { float: right; margin: 12px 20px 12px 0; }
-#search input { background: #FFF; border: 1px solid #DDDDD5; padding: 4px; }
-
-#headdiv { clear: both; margin: 0 0 5px 0; padding: 0 20px; background: #DDDDD5; border-top: 1px solid #D5D5D0; border-bottom: 1px solid #D5D5D0; position: relative; }
-#headdiv li { display: inline-block; margin: 12px 12px 12px 0; }
-nav#actions { top: 0; right: 8px; position: absolute; }
-
-body>header nav li:after { display: inline-block; content: "/"; margin-left: 12px; color: #AAA; }
-body>header nav li:last-child:after { display: none; }
-
-body>header p { color: #000; font-size: 13pt; margin: 12px 0; text-align: center; }
-
-/********/
-
-#content>p, #content>h1, #content>h2 { margin: 1em 0; }
-
-#newmessage { background: #E5E5E0; padding: 15px; margin-bottom: 20px; }
-#newmessage textarea { border: 1px solid #CCC; padding: 4px; width: 688px; resize: vertical; min-height: 14pt; height: 14pt; margin: 0 0 5px 0; }
-#newmessage input { border: 1px solid #CCC; padding: 2px 4px; margin: 5px 0; }
-#newmessage>div { display: none; }
-#newmessage .img { width: 500px; }
-#newmessage .tags { width: 500px; }
-#newmessage .subm { width: 150px; background: #EEEEE5; }
-
-article { margin: 10px 0 20px 58px; background: #FFF; padding: 12px 13px; }
-article>aside { margin: -12px 0 0 -71px; width: 48px; height: 48px; float: left; }
-article>aside img { width: 48px; height: 48px; }
-article>header.u { overflow: hidden; display: inline-block; width: 460px; }
-article>header.t { width: 140px; text-align: right; float: right; }
-article time { color: #999; font-size: 10pt; border-bottom: 1px dotted #999; }
-article p { margin: 10px 0 15px 0; }
-article p.i { text-align: center; }
-article p.ir { float: right; margin-left: 10px; margin-bottom: 10px; }
-article p.ir a { cursor: -webkit-zoom-in; cursor: -moz-zoom-in; }
-article p.ir img { max-width: 200px; max-height: 200px; }
-article .irbr { clear: right; }
-article>nav.l { display: inline-block; font-size: 10pt; }
-article>nav.l a { color: #888; border-bottom: 1px dotted #AAA; margin-right: 15px; }
-article>nav.s { display: inline-block; text-align: right; float: right; }
-article>nav.s a { font-weight: bold; color: #222; }
-article a.likes { padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAXNSR0IArs4c6QAAAMRJREFUGBmtwbsuQ2EAAOCPX6LlKSRGD2E0YCKRGDqLQReDSVhIjI1r49bRdiZJn0GIQcPSxFO4HPHLOe1J2rpMvo//MaMl1batZNSWtlTLrK4JL5qqTqQO1aTqqppeTcrtexRklkTRskzw4Eju1rmOIIqCjrp7uRsNhQWLCmfu5C48Kxk05MmV3JR3xwatiaZ1rYg29Zr34VSPHdG6wpw3iaDPnmhDpiKVKPtmV7Sq4tOlET86EEUNw34RJK4Ffxgzrs8XpvA41+ECiwcAAAAASUVORK5CYII=") no-repeat 0px 1px; }
-article a.replies { margin-left: 18px; padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAANdJREFUOMvN069OgmEUBvAfSCUxNicFKTQ3bkCLyRvwDrgHZ5Q7MFlobAY3G9UrsOi0iIGNBIGgG00o53PvCMAHBJ7thPecPc/5+3IoKKKDIeZrbIi74CiFQBs3eMTbmmRnuMUID5nzG90cFXcxyEqHU3zlEBigkQoUor9N8Recf4Gdpr8XgV+Uc/DK+Ekdz/hAcwNyE594Sp0NTJYOZobriB/FjUwjNkE9m36GKq5wHO9zXOICtch4j1f0Q2QlSnjBGL10dXlQxXvSVmWbTZ3E/5ijtRxcAIj4MflVC0WJAAAAAElFTkSuQmCC") no-repeat 0px 1px; }
-article footer.comm { margin: 13px 0 0 0; }
-article textarea { width: 530px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; }
-article input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; }
-
-#yandex_ad_728 { width: 728px; height: 90px; margin: 20px 0; padding: 15px 0; background: #FFF; }
-.adslot1 { display: inline-block; width: 320px; height: 90px; }
-
-@media (min-width:500px) {.adslot1 {width: 468px; height: 60px;}}
-@media (min-width:800px) {.adslot1 {width: 728px; height: 90px; margin: 10px 0 20px 0; }}
-
-
-#geomap { width: 700px; height: 300px; margin-top: 1em; overflow: hidden; }
-
-.msg { margin: 10px 0 20px 0; }
-.ads { padding: 13px 10px 5px 10px; margin: 8px 0 16px 58px; background: #FFF; }
-.msgthread { margin-bottom: 0; }
-.msg-avatar { float: left; width: 48px; height: 48px; }
-.msg-avatar img { width: 48px; height: 48px; vertical-align: top; }
-.msg-cont { background: #FFF; margin-left: 58px; padding: 12px 15px; width: 640px; }
-.msg-menu { float: right; width: 16px; height: 16px; }
-.msg-menu>a { display: block; width: 16px; height: 16px; vertical-align: top; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAALRQTFRFAAAAldX/ncT/ksj/ltL/nMb/lMn/mcz/l9H/lcr/mZmZmcz/m83/mJiYmZmZmcz/mM7/mpqamsr/l8v/m83/mJiYmM7/l8v/mZmZmcz/mpqamMv/mcz/mM3/ms3/msv/mMv/mMz/mcz/msz/mc3/mMz/mcz/msz/mc3/mcv/mc3/mcv/mcz/mcz/mcz/mcz/mZmZmZmZmcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mZmZiZsGCAAAADx0Uk5TAAwNDhESExQWGC0tLi8yMjQ1NTY4OTk7PDxESktNUVNUd3h5eoGCg4mKmMvMzc7P29zd3uLj7O3u8vT2+A5wCAAAAJFJREFUGBkFwQlCgkAAAMDRxEySkryyzDxSAc+gkvX//2oGAAB42J5COG46AJ+/+SiKxvl1DsyqJyCtZnBXxgDxdxPrHQDZCvvUNIFkalAgtCSXHr1LIqpRt+ifu91zn6hG8YLh7TbEoMAyg8kEsgWaZQzwWDbgvXoG0p83YH7Nx+32a/73AdDZHEIovu4BAMA/t6QMuyHliCkAAAAASUVORK5CYII=") no-repeat; }
-.msg-header { overflow: hidden; }
-.msg-ts { font-size: small; vertical-align: top; margin: 5px 0; }
-.msg-ts, .msg-ts>a { color: #999; }
-.msg-place { font-size: small; }
-.msg-place>a { color: #999; }
-.msg-txt { overflow: hidden; margin: 10px 0 12px 0; }
-.msg-media { text-align: center; }
-.msg-links { font-size: small; color: #999; margin: 5px 0 0 0; }
-.msg-comments { overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; margin-top: 10px; }
-.msg-comment { margin: 5px 0; }
-.ta-wrapper { display: inline-block; border: 1px solid #DDD; }
-.msg-comment textarea { width: 634px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; }
-.msg-comment .narrow { width: 554px; }
-.msg-comment .narrowpm { width: 580px; }
-.attach-photo { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAQAAAAKsiavAAAAAXNSR0IArs4c6QAAAKRJREFUGNNjZICC6Q5M+xlQwD/HzAMMDEwwLnM9AxqAiDDO/M+AFzCh8B4zhrDwsfAxBjHcggkhm/CY2SDlHYQ5TZD5EoMMmgmMhSnvZnrPfDLzyQyvrPf/CzGs+L2TgYFhBoM0gzTjDAaGX7uwuQG/I1ldGRj+pzM8YXjMmMrAwOGK6cibfy2z3sMdeYpBBTMcHjMU/9zJzsjo8r8DIk1yQGEBAFzpL+AuTCqZAAAAAElFTkSuQmCC") no-repeat 3px 4px; }
-.attach-photo-active { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAAXNSR0IArs4c6QAAAEVQTFRFAAAAAJUAAJ0AAJIAAJkAAJYAAJwAAJcAAJoAAJgAAJkAAJoAAJoAAJgAAJkAAJoAAJkAAJkAAJkAAJkAAJkAAJkAAJkA9z3GXQAAABZ0Uk5TAAwNDg8REkBHSktRU1RVv9jZ2+Lj5OeV7PgAAABSSURBVAhbdcjBFkAgFADRIUlE9Or9/6daUC0cs5pzAXD65niKFSJQv/aChHHcrg4yA9jcILCW4tkbDGRVwfzDhs+yEBqcFsCmBiqHmULSDr0P3JdgDbuscEckAAAAAElFTkSuQmCC") no-repeat 3px 4px; }
-.msg-comment input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; }
-.msg-recomms { margin-top: 10px; overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; }
-.reply-new .msg-cont { border-right: 5px solid #0C0; }
-q:before, q:after { content: "";}
-q { border-left: 1px dashed #CCC; margin: 10px 0 10px 10px; padding-left: 10px; display: block; color: #666; }
-
-#mtoolbar { width: 670px; margin-left: 58px; background: #E5E5DD; border-top: 1px solid #CCC; }
-#mtoolbar ul, #mtoolbar a { padding: 5px; }
-#mtoolbar li { display: inline; }
-#mtoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px; }
-
-.newmessage { width: 695px; padding: 2px; resize: vertical; border: 1px solid #DDD; } /* textarea */
-
-.users { width: 100%; margin: 10px 0; } /* table */
-.users td { width: 33%; padding: 6px 0; overflow: hidden; } /* table */
-.users img { width: 32px; height: 32px; vertical-align: middle; margin-right: 6px; } /* table */
-
-.title2 { padding: 10px 20px; margin: 20px 0; background: #DDDDD0; }
-.title2-right { float: right; line-height: 24px; }
-#content .title2 h2 { font-size: x-large; margin: 0; }
-
-.page { text-align: center; padding: 5px; background: #E5E5DD; }
-
-/* signup form */
-.signup-h1>img { vertical-align: middle; margin-right: 10px; }
-.signup-h1 { margin: 20px 0 10px 0; font-size: x-large; }
-.signup-h2 { font-size: large; margin: 10px 0 5px 0; }
-.signup-hr { margin: 20px 0; }
-
-/********/
-
-#readerlinks li { margin: 15px 0; }
-#readerlinks img { vertical-align: top; margin: 1px 7px 0 0; }
-#readerlinks a { color: #000; border-bottom: 1px dotted #666; }
-#readerlinks a:visited { color: #999; }
-
-/********/
-
-.newpm { margin: 20px 60px 30px 60px; }
-.newpm textarea { width: 100%; resize: vertical; }
-.newpm-send input { width: 100px; }
-
-/********/
-
-#column { width: 240px; padding-top: 10px; overflow: hidden; float: left; margin-left: 10px; }
-#column ul, #column p, #column hr { margin: 10px 0; }
-#column li { margin: 6px 0; }
-#column .margtop { margin-top: 15px; }
-#column p { font-size: 10pt; line-height: 140%; }
-#column .tags { text-align: justify; }
-#column .inp { width: 222px; padding: 3px; border: 1px solid #CCC; border-radius: 3px; background: #F5F5E9; }
-#ctitle { font-size: 14pt; }
-#ctitle img { vertical-align: middle; margin-right: 5px; }
-#ctoolbar { margin: 10px 0; padding: 5px; line-height: 0; background: #E5E5DD; }
-#ctoolbar li { display: inline; }
-#ctoolbar a { padding: 5px 10px;}
-#ctoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px 0; }
-#ustats li { margin: 3px 0; font-size: 10pt; }
-#column table.iread { width: 100%; }
-#column table.iread td { text-align: center; }
-#column table.iread img { width: 48px; height: 48px; }
-
-/********/
-
-#dialogb { position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.6; background: #000; z-index: 10; }
-#dialogt { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; }
-#dialogt td { vertical-align: middle; text-align: center; }
-#dialogw { position: relative; display: inline-block; text-align: left; z-index: 11; }
-#dialogc { position: absolute; top: -15px; right: -15px; width: 30px; height: 30px; z-index: 12; cursor: pointer; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAEEElEQVQ4y32Va2yTVRzGf23fd10vUNqxsY1dGIyba7BsTgiwhcRkgxHkFkJAuQzIggY0IXGYkKA4DeAQMQTIiIB+MyRAJn7hAxJRJKIRiJgQIhESZxYFEuja9f74oe1aoPh/vrx5z3nO/3qeA0+aBSvW+UaT2VBUb+91HXY3FDUUNZnzDaxYsfBcs2DDpHjqqC1ln07YU79t0oGX+mY1V3dWv1/VWVrqphgTW+EDLBjYS91tZZ/5v+34d1/sijIWv/bw2IXFy2urfKVu7BjP0q0YOCaMWVlzfF7wdJY2mLybzH4/+mpq3cxKrwcHBtanvTqrfK/X97+avCvFUn2xtjDBNJpDn8SGU1Ls+oXVTTUeL8587xYMHKN97fWnlikqnU/UDmWJWUwL/ZKQpPOvTZvg8eLI0W3Y8cyo+3hB4p50MmYLUgC24EdRSTq6rLIaD/Z06SyYuMdWvjnv4TfS+URhahpHYlLwR16gHDcmVrBSPNrXOv2LTimUrMoE3BiaO5Jz2dCmiDNIkGBRcCAuffde1WR8FGMDKy5n5cp5f34pHYqlt/tDkrQ7SpDgxNBASurLrHRFpPsXmUEFbgyw4fFM7FgQvi7NznirHQorTZ8cGkhJUm80vVIylJA0ppU6xlAEBiXj/EvWSI+TuewWhdP0xylJOhPPVeJGVNqxbdQ0xlIMprusoXnzW9LtRH5xFoUjmfHIpxL8Oiod3ed6kXE4wHRW+Od0dku/J57s7P1UmvxBNP//2ah0+CCNVOICk8qyOS3bpAeJfOpgSpISypUujZ+GpXd6HC8zPkM2Z9Vtiv0jZRvlGRrM5Lo4k/vWSHZUHsWlGW+YI+QKs7lh/Z1L0tuZLbPDuVzTpTsVT6+0haXB31hNUzbsMjMwZdWBz6XBuDOY7efWiG3kYuyOZmO6FJLOnWM5mYIZlDDd3lHVPXAt18/C2DAsBf8u2cECpqdbZcNDndHi27S5T5I2DD+POjccT0qHz9JJS3ZIrLioIGBbNu7dI6claVdB72uHI0np8lW6WUIgO55WivFRT6ttvffDQ/2SdCuyatiZR2wLXwlL0uVf6WEdrdRnL4YFEzfl+Gm3dXn2bun/67YkRZI3oscjxyM/Rx7FJenBwP6L7KWLdvy5K5kRA6qZSYety9nDiYM//HFLeXbvzsmr5kl66KKDmeSJQUaG8FJDgHbW0e3YzwnPmVe+33lz582Oy+P7OcF+ullHOwFqeEKGMgKIl2r8tLCUjWxnl7HH6KXX2GPdxXY2spQW/FTzlACOSC8eyplEgBYWsoI1rGUta1jBQloIMIlyCkhv9r2w48JLObVMwU+ARhoJ4GcKtZTjxZXL9Vm6BSsGJnYcOHFl4MSBHRMDK5b/e69yxzyNAvYf9TCL+HAwka4AAAAASUVORK5CYII="); }
-
-.dialoglogin { width: 300px; background: #EEEEE5; padding: 25px; }
-#signfb,#signvk { display: block; width: 100%; height: 32px; line-height: 32px; text-indent: 37px; text-decoration: none; overflow: hidden; margin: 10px 0; }
-#signfb { color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat #3A569C; }
-#signvk { margin-bottom: 30px; color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat #6d8fb3; }
-.dialoglogin form { margin-top: 7px; }
-.signinput,.signsubmit { border: 1px solid #CCC; margin: 3px 0; padding: 3px; }
-.signinput { width: 292px; }
-.signsubmit { width: 70px; }
-
-.dialogshare { padding: 20px; background: #EEEEE5; border: 1px solid #999; min-width: 300px; overflow: auto; }
-.dialogl { padding: 5px; margin: 3px 0 20px; border: 1px solid #DDD; background: #F5F5E9; }
-.dialogshare li { float: left; margin: 5px 10px 0 0; }
-.dialogshare a { display: block; width: 32px; height: 32px; background-image: url(//static.juick.com/sharesocial.png); }
-
-.dialogtxt { background: #EEEEE5; padding: 20px; }
-
-/********/
-
-#wsthread { position: fixed; bottom: 20px; right: 20px; background: #CCC; cursor: pointer; padding: 5px 10px; display: none; }
-
-/********/
-
-#footer { clear: both; font-size: 10pt; padding: 10px 0; color: #999; width: 1004px; margin: 0 auto 20px 0; }
-#footer-social { float: left; }
-#footer-social a { display: inline-block; width: 32px; height: 32px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; margin: 0 15px 0 0; }
-#footer-left { margin-left: 286px; margin-right: 350px; }
-#footer-right { float: right; }
-
-/******************************************************************************/
-
-.sharenew { display: inline-block; padding: 0 12px 0 37px; min-height: 32px; line-height: 32px; min-width: 200px; color: #FFF; }
-
-.ico32-twi { background: #55acee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAM9QTFRFVazuVqzuV6zuWK3uWq7uXK/uXrDuYLHvY7PvZLPvZrTvZ7Tva7bwbLfwbbjwbrjwcbnwc7rxdbvxer7xfL/xf8Dyg8LyhcPyhsTyh8TzisXzi8bzjcfzjsfzksn0qNT1rNb2udz3v+D4weD4weH4w+H5w+L5yuT5yuX5y+X5zuf60ej51er61uv62uz62+374O/75fL76PP86vT87PX87vb87/f98Pf88Pf98fj99Pn99vr99/v++Pv9+vz9+/z9/P39/f39/f7+/v7+////bJnt2AAAAKlJREFUGBntwUdWAkEABNAaQJIOkpMSJCcDKEEJ2lTd/0wyD1bdbFiw43/g5kIJHJXf/2b1u2fY/IWPQO1botiBraBFNQqE2zIy3L/CFl9Tg6dUbiyjAx+2WE8kl29zBfZwZD5+xYDRwTQEW2RCUkfkiwdHerilTpiHK9zXCTWKwOWVVjSUZPiTxVnJJimRu6oH1/1DpbURjfRZDOGMx+7WkNRXI4Gba/gHx4AiZYtLseAAAAAASUVORK5CYII=") no-repeat; }
-.ico32-vk { background: #6d8fb3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat; }
-.ico32-fb { background: #3b579d url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat; }
-.ico32-lj { background: #888888 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAlJQTFRFAAAAAAAAAFVVADNmACRtAEBgADNmADdtADBgADljADNmADFiADFjADVpADJjADRpADRoADFnADNmADJkADVlADJnADRnADJlADJnADJlADRnADNmADJnADNmADJmADRmADNlADRmADNnADNmADJmADRmADNmADRmADJmADNlADNmADNmADJmADNnADNlADNnADNmADNlADNmADNmADNmBTRmADNmADNmADNmWGh4ADNmBDZnK1J6LWCURmiIRmmLc4mfADNmKlyPADNmGkNsLF+SKFiIR3qtL1Z+ATRnDT9xE0Z5Gk2BN2ueOVh1UIO2DkFzE0Z5JVeLK1J5M2WYPlp1T3ehJEpuADNmK16QPG+iQHOmRFxze35/ADNmLV+SjIeCMVl/TmJ4BThqBzZnR3mtBjpsWo7AZ4KeFENxH0h0bJ7SADNmAzZpHz9sAzdqCzppEkBvF0RyO1+EP3OmBDZodKbafWR+ATRoDjlpQ3epADNmATNlDDdoQWOGaJvOBDVmBDZoQWWKRnmrUoS3AzZqBzdoWFZ4cKTVc4mgADNmBjdmCzhoVom5W47CADNmADNnAzRnBjVoWlh5opSHADNmATRlATRmCDlqcaXYh7rtADNmWYy/XI/CXpLFYZTHY5bJZZjLZpjLZpnMb2B9cmB8hbjrhp2zibvvjL7ylMj6l8r9l8v9mY6Fmcz/qneIrba+snqKuaKLwKeMxMbIx8jJy8vLzMzM1LOQ1dXV1d3m2YqR4LmS4uju7sGW78KV8cSX+fn5+smY/cqZ/f39/8yZQ9icRAAAAJt0Uk5TAAEDBQcICg4QEhkaHyIkJyw0QUJESE9RUlZeX2Fpa2x5e4GHiYqMmZ2rr7S2uL/Cw8nNzs/R19/g4OPj4+fn5+fo6Onp6erq6+zs7Ozs7Ozt7e3t7e3t7u/v7+/v7/Dw8PHx8vLy8/Pz9PT09fX19vb29vb29/f3+Pj4+fn5+fn6+vr6+vv7+/v7/Pz8/Pz9/f39/f3+/v7+/v7uuPuRAAABVElEQVQ4y83QU3sDURCA4U2dOrVtpbZt27Ztt2lTY6tTnxpb2/pf3dxPcp3vdt5n5jyHIIQpKSOXZS91/nPN4p6FvckuFr+5Hrn/wpmvbHBnwnMWt+1qdPD563LAhgECu9qLufGn37fDRmQIgm5Oh//DXflKaFkyVxkCDqT3w23ByCpFnUQFyQBAsTr8vjeyM46iqIM6e1FAaKGmlmkc00qLPtIMOmKOMjDeDTymRRapAQBxx6INjDd9zijqNDpXHhBy6Qk7GA+H0SuOSp0lAKFG5mGMM6toMTZrAT3DhByiRcgaLUqQDgBE2DXrGG9V+KX6FgazoRXSAfHbGMe+P378eXiCP67ETcQ45Y8uf0YMFAaoeSqHB66RAggY1u1JnzzwilRBQDDdlrJvaPDTrwsDQlLfFaUtfp9PmBL8YqhYcesRsiQEJGscgZwIgYlp2xJC0z8XJH2ZPhmkKgAAAABJRU5ErkJggg==") no-repeat; }
-.ico32-gp { background: #dc4a38 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAXNSR0IArs4c6QAAAa9JREFUSMftlTFoU1EUhr/3EguZFFzSIVVehyq03dxEJy3iIiJCi4Nr6eQmLoKggg46CaKj6FBB0OIgXcRJiQiKiFIf2KEJVsSCTWlN+Bx8eaQtaa5Dt57tP+/+/33n3P/cCzuxPeFh7/nRFdvxxtFw8m4f+tojJl62qT4xsRBOj511yT0Zuqjq5P/8/Lj6LEd9LqoLRt0Z8QY8Dqy2QbTGI6CfSrjAADDYgd8BUAgXWABG3Z/jH8Ai81lJE97pJfAYiJnK8RBwJWplaISTvZpYcEZteh7AQ9a90fH1ut96n0Ofl0zVOT/Y8mZurapVa65atert7iUQrUXXooQS9xkm5m6WbpCS8osmKSn1EEdcVfVWpweCSsgXH7Ch6rSlrQSKm9vICY4xxF5qVNjFGcqORQ0AXrLUa98x55x30oPG4LCfVDubtjX9tE2/tEcpm81XasNiCL1oTT23Idvvb7USYuURypmZO4+1xnv+8DNE4N8UHt20Zh9Po+WwHrxVGx5fl7tg3YHunHVXhYO8IEFmeE7KCglnKTMRfQ63T8kpZ/1uy2W/+sBTxjuPzLbHX6Ju9rcCQGEmAAAAAElFTkSuQmCC") no-repeat; }
-
-/******************************************************************************/
-
-@media screen and (max-width: 850px) {
- body { text-size-adjust: 100%; -webkit-text-size-adjust: 100%;}
- body,body>header,#topwrapper,#content,#footer,#mtoolbar { width: auto; min-width: 310px; margin: 0 auto; }
-
- body>header { margin-bottom: 15px; }
- body>header a { font-size: 12pt; }
- #logo { display: none; }
- nav#global { margin-left: 10px; }
- nav#global li { margin-right: 10px; }
- #search { float: none; display: inline-block; margin: 10px 10px; }
- #headdiv { padding: 0 10px; }
- #headdiv li { margin-right: 10px; }
- nav#actions { position: relative; right: auto; }
- #newmessage .img, #newmessage .tags { width: 100%; }
- #column { float: none; padding-top: 0; width: auto; margin: 0 10px; }
-
- article { margin-left: 0; overflow: auto; }
- article>aside { margin: 0 10px 0 0; width: 40px; height: 40px; }
- article>aside img { width: 40px; height: 40px; }
- article>header.u { margin: 0; width: auto; display: block; }
- article>header.t { float: none; text-align: left; margin: 0; width: auto; display: block; }
- article p { margin: 10px 0 8px 0; }
- article>nav.l { display: block; float: left; width: 80%; line-height: 15pt; }
- article>nav.s { display: block; }
- article textarea { width: 205px; }
- article footer { float: left; }
-
- #content textarea { width: 100%; }
-
- .msg,.msg-cont { width: auto; min-width: 280px; }
- .msg-cont,.ads { margin-left: 0; }
- .msg-avatar { margin: 10px 10px 0 10px; width: 40px; height: 40px; }
- .msg-avatar img { width: 40px; height: 40px; }
- .msg-comment textarea { width: 100%; }
- .msg-txt { margin: 8px 0 0 0; }
- .msg-media { overflow: auto; }
-
- .title2 h2 { font-size: large; }
-
- #footer { margin: 0 10px; }
- #footer div { float: none; margin: 10px 0; }
-}
diff --git a/juick-www/webpack.config.js b/juick-www/webpack.config.js
new file mode 100644
index 00000000..d72c23e5
--- /dev/null
+++ b/juick-www/webpack.config.js
@@ -0,0 +1,25 @@
+var webpack = require("webpack")
+var globby = require("globby")
+var ExtractTextPlugin = require("extract-text-webpack-plugin")
+module.exports = {
+ entry: {
+ "scripts" : globby.sync([
+ __dirname + "/src/main/static/*.*"
+ ])
+ },
+ output: {
+ path: __dirname + "/src/main/webapp",
+ filename: "[name].js"
+ },
+ module: {
+ loaders: [
+ { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
+ { test: /scripts\.js$/, exclude: /node_modules/, loader: "expose?Juick" },
+ ]
+ },
+ plugins: [
+ new ExtractTextPlugin("style.css", {
+ allChunks: true
+ })
+ ]
+}
\ No newline at end of file
--
cgit v1.2.3