- javascript: var getKeys=function(a){var b=[],d;for(d in a)b.push(d);return b},nKeys=function(a){var b=0,d;for(d in a)b++;return b},splitArrayToSubArrays=function(a,b){for(var d=[],i=0;i<a.length/b;i++)d.push(a.slice(b*i,b*(i+1)));return d},formatDate=function(a){var b=a.getFullYear(),d=a.getMonth()+1;if(d<10)d="0"+d;var i=a.getDate();if(i<10)i="0"+i;var f=a.getHours();if(f<10)f="0"+f;var j=a.getMinutes();if(j<10)j="0"+j;a=a.getSeconds();if(a<10)a="0"+a;return b+"-"+d+"-"+i+" "+f+":"+j+":"+a},insertAfter=function(a,
- b){a.parentNode.insertBefore(b,a.nextSibling)},mod=function(a,b){return a%b},rotateLeft=function(a,b){return a<<b|a>>>32-b},addUnsigned=function(a,b){var d,i,f,j,c;f=a&2147483648;j=b&2147483648;d=a&1073741824;i=b&1073741824;c=(a&1073741823)+(b&1073741823);if(d&i)return c^2147483648^f^j;return d|i?c&1073741824?c^3221225472^f^j:c^1073741824^f^j:c^f^j},F=function(a,b,d){return a&b|~a&d},G=function(a,b,d){return a&d|b&~d},H=function(a,b,d){return a^b^d},I=function(a,b,d){return b^(a|~d)},FF=function(a,
- b,d,i,f,j,c){a=addUnsigned(a,addUnsigned(addUnsigned(F(b,d,i),f),c));return addUnsigned(rotateLeft(a,j),b)},GG=function(a,b,d,i,f,j,c){a=addUnsigned(a,addUnsigned(addUnsigned(G(b,d,i),f),c));return addUnsigned(rotateLeft(a,j),b)},HH=function(a,b,d,i,f,j,c){a=addUnsigned(a,addUnsigned(addUnsigned(H(b,d,i),f),c));return addUnsigned(rotateLeft(a,j),b)},II=function(a,b,d,i,f,j,c){a=addUnsigned(a,addUnsigned(addUnsigned(I(b,d,i),f),c));return addUnsigned(rotateLeft(a,j),b)},convertToWordArray=function(a){var b,
- d=a.length;b=d+8;for(var i=((b-mod(b,64))/64+1)*16,f=Array(i-1),j=0,c=0;c<d;){b=(c-mod(c,4))/4;j=mod(c,4)*8;f[b]|=a.charCodeAt(c)<<j;c++}b=(c-mod(c,4))/4;j=mod(c,4)*8;f[b]|=128<<j;f[i-2]=d<<3;f[i-1]=d>>>29;return f},wordToHex=function(a){var b="",d="",i;for(i=0;i<=3;i++){d=a>>>i*8&255;d="0"+d.toString(16);b+=d.substr(d.length-2,2)}return b},uTF8Encode=function(a){a=a.replace(/\x0d\x0a/g,"\n");for(var b="",d=0;d<a.length;d++){var i=a.charCodeAt(d);if(i<128)b+=String.fromCharCode(i);else{if(i>127&&
- i<2048)b+=String.fromCharCode(i>>6|192);else{b+=String.fromCharCode(i>>12|224);b+=String.fromCharCode(i>>6&63|128)}b+=String.fromCharCode(i&63|128)}}return b},md5=function(a){var b=[],d,i,f,j,c,g,e,h;a=uTF8Encode(a);b=convertToWordArray(a);c=1732584193;g=4023233417;e=2562383102;h=271733878;for(a=0;a<b.length;a+=16){d=c;i=g;f=e;j=h;c=FF(c,g,e,h,b[a+0],7,3614090360);h=FF(h,c,g,e,b[a+1],12,3905402710);e=FF(e,h,c,g,b[a+2],17,606105819);g=FF(g,e,h,c,b[a+3],22,3250441966);c=FF(c,g,e,h,b[a+4],7,4118548399);
- h=FF(h,c,g,e,b[a+5],12,1200080426);e=FF(e,h,c,g,b[a+6],17,2821735955);g=FF(g,e,h,c,b[a+7],22,4249261313);c=FF(c,g,e,h,b[a+8],7,1770035416);h=FF(h,c,g,e,b[a+9],12,2336552879);e=FF(e,h,c,g,b[a+10],17,4294925233);g=FF(g,e,h,c,b[a+11],22,2304563134);c=FF(c,g,e,h,b[a+12],7,1804603682);h=FF(h,c,g,e,b[a+13],12,4254626195);e=FF(e,h,c,g,b[a+14],17,2792965006);g=FF(g,e,h,c,b[a+15],22,1236535329);c=GG(c,g,e,h,b[a+1],5,4129170786);h=GG(h,c,g,e,b[a+6],9,3225465664);e=GG(e,h,c,g,b[a+11],14,643717713);g=GG(g,e,
- h,c,b[a+0],20,3921069994);c=GG(c,g,e,h,b[a+5],5,3593408605);h=GG(h,c,g,e,b[a+10],9,38016083);e=GG(e,h,c,g,b[a+15],14,3634488961);g=GG(g,e,h,c,b[a+4],20,3889429448);c=GG(c,g,e,h,b[a+9],5,568446438);h=GG(h,c,g,e,b[a+14],9,3275163606);e=GG(e,h,c,g,b[a+3],14,4107603335);g=GG(g,e,h,c,b[a+8],20,1163531501);c=GG(c,g,e,h,b[a+13],5,2850285829);h=GG(h,c,g,e,b[a+2],9,4243563512);e=GG(e,h,c,g,b[a+7],14,1735328473);g=GG(g,e,h,c,b[a+12],20,2368359562);c=HH(c,g,e,h,b[a+5],4,4294588738);h=HH(h,c,g,e,b[a+8],11,2272392833);
- e=HH(e,h,c,g,b[a+11],16,1839030562);g=HH(g,e,h,c,b[a+14],23,4259657740);c=HH(c,g,e,h,b[a+1],4,2763975236);h=HH(h,c,g,e,b[a+4],11,1272893353);e=HH(e,h,c,g,b[a+7],16,4139469664);g=HH(g,e,h,c,b[a+10],23,3200236656);c=HH(c,g,e,h,b[a+13],4,681279174);h=HH(h,c,g,e,b[a+0],11,3936430074);e=HH(e,h,c,g,b[a+3],16,3572445317);g=HH(g,e,h,c,b[a+6],23,76029189);c=HH(c,g,e,h,b[a+9],4,3654602809);h=HH(h,c,g,e,b[a+12],11,3873151461);e=HH(e,h,c,g,b[a+15],16,530742520);g=HH(g,e,h,c,b[a+2],23,3299628645);c=II(c,g,e,h,
- b[a+0],6,4096336452);h=II(h,c,g,e,b[a+7],10,1126891415);e=II(e,h,c,g,b[a+14],15,2878612391);g=II(g,e,h,c,b[a+5],21,4237533241);c=II(c,g,e,h,b[a+12],6,1700485571);h=II(h,c,g,e,b[a+3],10,2399980690);e=II(e,h,c,g,b[a+10],15,4293915773);g=II(g,e,h,c,b[a+1],21,2240044497);c=II(c,g,e,h,b[a+8],6,1873313359);h=II(h,c,g,e,b[a+15],10,4264355552);e=II(e,h,c,g,b[a+6],15,2734768916);g=II(g,e,h,c,b[a+13],21,1309151649);c=II(c,g,e,h,b[a+4],6,4149444226);h=II(h,c,g,e,b[a+11],10,3174756917);e=II(e,h,c,g,b[a+2],15,
- 718787259);g=II(g,e,h,c,b[a+9],21,3951481745);c=addUnsigned(c,d);g=addUnsigned(g,i);e=addUnsigned(e,f);h=addUnsigned(h,j)}return(wordToHex(c)+wordToHex(g)+wordToHex(e)+wordToHex(h)).toLowerCase()},SYS={VERSION:"4.0.2",APP_ID:2045168,LOGIN_SETTING:6144,DEBUG:false,MESSAGES_TO_PROCESS_IN_DEBUG_MODE:200,MESSAGES_PER_REQUEST:100,MSEC_BETWEEN_REQUESTS:1E3,MAX_USERS_PER_REQUEST:1E3,LINK_TO_CLUB:"/club21792535",LANGUAGES:{0:{name:"russian",strings:{authorizing:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f",
- authorized:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430",loadingMessageNumbers:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",fatal:"\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443.",
- appName:"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438",nameCol:"\u0418\u043c\u044f",kbytes:"\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",settingsText:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",
- startButton:"\u041f\u043e\u0435\u0445\u0430\u043b\u0438!",verbose:"\u041b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f",gettingNames:"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u043c\u0451\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439",numberOfMessagesCol:"\u0412\u0441\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",sentCol:"\u0412\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438",
- receivedCol:"\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438",symbolsCol:"\u0412\u0441\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432",sentSymbolsCol:"\u0412\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432",receivedSymbolsCol:"\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432",lastMsgCol:"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435",
- processingMessages:"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",done:"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430",messagesProcessed:"\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",incoming:"\u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445",outgoing:"\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445",
- dayWithMostMessages:"\u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0431\u044b\u043b\u043e",timeWithMostMessages:"\u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",thankYou:"\u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u0434\u043e\u0436\u0434\u0430\u043b\u0438\u0441\u044c, \u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u043e\u043d\u043e \u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u043b\u043e!",
- exportByTime:"\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438",exportByMessages:"\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c",warning:"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439",
- friendsOnly:"\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0437\u0435\u0439",withSelected:"\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435",exportToNote:"\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0437\u0430\u043c\u0435\u0442\u043a\u0443",ourGroup:"\u041d\u0430\u0448\u0430 \u0433\u0440\u0443\u043f\u043f\u0430",noteSuccess:"\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0430",
- noteFailure:"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u043a\u0443. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0437\u0434\u043d\u0435\u0435.",seeNote:"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c",wrongPage:'\u0429\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u0438 \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u0437\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0438\u0441\u044f \u0432 "\u041c\u043e\u0457\u0445 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f\u0445"'}},
- 1:{name:"ukrainian",strings:{authorizing:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044f",authorized:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430",loadingMessageNumbers:"\u0412\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043a\u0456\u043b\u044c\u043a\u043e\u0441\u0442\u0456 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",settingsText:"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0431\u0430\u0436\u0430\u043d\u0456 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438",
- startButton:"\u041f\u043e\u0457\u0445\u0430\u043b\u0438!",verbose:"\u041b\u043e\u0433\u0433\u0456\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0456 \u0434\u0456\u0457",fatal:"\u041a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u0442\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0456 \u043d\u0438\u0436\u0447\u0435 \u0434\u0430\u043d\u0456 \u0440\u043e\u0437\u0440\u043e\u0431\u043d\u0438\u043a\u0443.",
- appName:"\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0456 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438",nameCol:"\u0406\u043c'\u044f",numberOfMessagesCol:"\u0423\u0441\u044c\u043e\u0433\u043e \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",kbytes:"\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",
- gettingNames:"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0456\u043c\u0435\u043d \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456\u0432",symbolsCol:"\u0412\u0441\u044c\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432",sentSymbolsCol:"\u0412\u0438 \u0432\u0456\u0434\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432",receivedSymbolsCol:"\u0412\u0438 \u043e\u0442\u0440\u0438\u043c\u0430\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432",
- sentCol:"\u0412\u0438 \u0432\u0456\u0434\u043f\u0440\u0430\u0432\u0438\u043b\u0438",receivedCol:"\u0412\u0438 \u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0438",lastMsgCol:"\u041e\u0441\u0442\u0430\u043d\u043d\u0454 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f",messagesProcessed:"\u041e\u0431\u0440\u043e\u0431\u043b\u0435\u043d\u0435 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",processingMessages:"\u041e\u0431\u0440\u043e\u0431\u043a\u0430 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",
- done:"\u041e\u0431\u0440\u043e\u0431\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430",incoming:"\u0432\u0445\u043e\u0434\u044f\u0442\u044c",outgoing:"\u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0445",dayWithMostMessages:"\u041d\u0430\u0439\u0431\u0456\u043b\u044c\u0448\u0435 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c \u0431\u0443\u043b\u043e",timeWithMostMessages:"\u041d\u0430\u0439\u0431\u0456\u043b\u044c\u0448\u0435 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",
- thankYou:"\u0421\u043f\u0430\u0441\u0438\u0431\u0456, \u0449\u043e \u0434\u043e\u0447\u0435\u043a\u0430\u043b\u0438\u0441\u044f, \u0441\u043f\u043e\u0434\u0456\u0432\u0430\u0454\u043c\u043e\u0441\u044f, \u0432\u043e\u043d\u043e \u0442\u043e\u0433\u043e \u043a\u043e\u0448\u0442\u0443\u0432\u0430\u043b\u043e!",exportByTime:"\u0415\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0437\u0430 \u0447\u0430\u0441\u043e\u043c",exportByMessages:"\u0415\u043a\u0441\u043f\u043e\u0440\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0437\u0430 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f\u043c",
- warning:"\u0423\u0432\u0430\u0433\u0430! \u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043e\u0431\u0440\u043e\u0431\u0438\u0442\u0438 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c",friendsOnly:"\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u0434\u0440\u0443\u0437\u0456\u0432",withSelected:"\u0412\u0438\u0431\u0440\u0430\u043d\u0456",exportToNote:"\u0435\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0432 \u0437\u0430\u043c\u0456\u0442\u043a\u0443",
- ourGroup:"\u041d\u0430\u0448\u0430 \u0433\u0440\u0443\u043f\u0430",noteSuccess:"\u0417\u0430\u043c\u0456\u0442\u043a\u0430 \u0443\u0441\u043f\u0456\u0448\u043d\u043e \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0430",noteFailure:"\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0437\u0430\u043c\u0456\u0442\u043a\u0443. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0449\u0435 \u0440\u0430\u0437 \u043f\u0456\u0437\u043d\u0456\u0448\u0435.",
- seeNote:"\u041f\u043e\u0434\u0438\u0432\u0438\u0442\u0438\u0441\u044f",wrongPage:'You need to be at "My Messages" page for this script to run!'}},3:{name:"english",strings:{authorizing:"Authorizing",authorized:"Authorization complete",loadingMessageNumbers:"Getting message numbers",fatal:"Fatal error. Please, send the info below to the developers",appName:"Private messages statistics",settingsText:"Set your desired parameters",startButton:"Start",verbose:"Verbose mode",kbytes:"Count message sizes as well",
- nameCol:"Name",numberOfMessagesCol:"Number of messages",gettingNames:"Loading user names",sentCol:"Sent",receivedCol:"Received",symbolsCol:"Total symbols",sentSymbolsCol:"Sent symbols",receivedSymbolsCol:"Received symbols",lastMsgCol:"Last Message",messagesProcessed:"Messages processed",processingMessages:"Processing messages",done:"Processing complete",incoming:"incoming",outgoing:"outgoing",dayWithMostMessages:"Day with most messages",timeWithMostMessages:"Time with most messages",thankYou:"Thank you for your time, we hope it was worth it!",
- exportByTime:"Export time statistics",exportByMessages:"Export message statistics",warning:"Warning! Failed to process messages",friendsOnly:"Count only for friends",withSelected:"Selected",exportToNote:"export to note",ourGroup:"Our club",noteSuccess:"Note created successfully",noteFailure:"Failed to create a note. Please try again later",seeNote:"See it",wrongPage:'You need to be at "My Messages" page for this script to run!'}}},fatal:function(a){ui.setHeader(user.lang.fatal);ui.clearContent();
- var b=ce("textarea",{cols:80,rows:20},{fontFamily:"Courier new"});b.innerHTML=a;ui.appendContentElement(b);throw a;},log:function(a){a=formatDate(new Date)+": "+a;var b=ge("loggerPane");if(b==undefined||b==null){ui.addLoggerPane();b=ge("loggerPane")}b.innerHTML+=a+"\n";b.scrollTop=b.scrollHeight}},user={lang:SYS.LANGUAGES[langConfig.id]==undefined?SYS.LANGUAGES[3].strings:SYS.LANGUAGES[langConfig.id].strings,verbose:false,kbytes:true,friendsOnly:false},ui={setTitle:function(a){document.title=a},setHeader:function(a){ge("header").innerHTML=
- a;this.setTitle(a)},setContent:function(a){ge("content").innerHTML=a},clearContent:function(){this.setContent("")},appendContentElement:function(a){ge("content").appendChild(a)},createProgressBar:function(){var a=ce("div",{id:"progressbar"},{position:"relative",width:"100%",height:"30px",margin:"3px",backgroundColor:"#DAE2E8"});a.appendChild(ce("div",{id:"progressbarbg"},{width:"0",height:"inherit",backgroundColor:"#45688E"}));a.appendChild(ce("div",{id:"progresstext"},{position:"absolute",left:"10px",
- top:"7px",width:"400px",height:"inherit",color:"#000",zIndex:69}));this.clearContent();this.appendContentElement(a)},updateProgressBar:function(a,b,d,i){var f=100*(a+d)/(b+i);ge("progressbarbg").style.width=f+"%";ge("progresstext").innerHTML=user.lang.messagesProcessed+": "+user.lang.incoming+": "+a+"/"+b+"; "+user.lang.outgoing+": "+d+"/"+i;this.setTitle(Math.floor(f)+"% "+user.lang.processingMessages)},displayStats:function(a,b,d){messagesChecked=0;actionsShown=false;this.clearContent();ge("sideBar").style.display=
- "none";ge("pageBody").style.width="96%";var i=ce("div",{className:"mailbox"});i.innerHTML+='<div id="message" class="message" style="visibility:hidden; display:none;"> </div> ';this.appendContentElement(i);user.verbose&&SYS.log("Processing complete, rendering results");var f=ce("div",{className:"bar clearFix actionBar",innerHTML:user.lang.thankYou+'<div style="float:right"> © <a href="'+SYS.LINK_TO_CLUB+'" target="_blank">vkontakte-stats</a>, 2010</div>'}),j=ce("div",{id:"message_actions",innerHTML:user.lang.withSelected+
- ": "},{visibility:"hidden"});j.innerHTML+='<a href="#" onclick="statCounter.exportToNote();">'+user.lang.exportToNote+"</a>";f.appendChild(j);i.appendChild(f);f=ce("table",{cellspacing:"0",cellpadding:"0",id:"messages_rows"},{width:"100%"});i.appendChild(f);tableHTML='<thead><th class="msg_check" onmouseover="checkOver(this, 0)" onmouseout="checkOut(this, 0)" onclick="checkChange(this, 0)"><div class=""></div><input type="hidden" id="post_check_0"></th><th style="text-align: center, width: 30px"> </th><th class="messagePicture"> </th><th class="messageFrom">'+
- user.lang.nameCol+'</th><th onclick="javascript: ui.sort(\'tot\');" style="cursor: pointer">'+user.lang.numberOfMessagesCol+'</th><th onclick="javascript: ui.sort(\'out\');" style="cursor: pointer">'+user.lang.sentCol+'</th><th onclick="javascript: ui.sort(\'in\');" style="cursor: pointer">'+user.lang.receivedCol+"</th>";if(user.kbytes)tableHTML+='<th onclick="javascript: ui.sort(\'tot-size\');" style="cursor: pointer">'+user.lang.symbolsCol+'</th><th onclick="javascript: ui.sort(\'out-size\');" style="cursor: pointer">'+
- user.lang.sentSymbolsCol+'</th><th onclick="javascript: ui.sort(\'in-size\');" style="cursor: pointer">'+user.lang.receivedSymbolsCol+"</th>";tableHTML+='<th onclick="javascript: ui.sort(\'date\');" style="cursor: pointer">'+user.lang.lastMsgCol+"</th></thead>";f.innerHTML=tableHTML;i=ce("tbody");f.appendChild(i);f=getKeys(a);d=="tot-size"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.inSize+l.outSize-(k.inSize+k.outSize)});d=="in-size"&&f.sort(function(k,
- l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.inSize-k.inSize});d=="out-size"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.outSize-k.outSize});d=="tot"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.inM+l.outM-(k.inM+k.outM)});d=="in"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.inM-k.inM});d=="out"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];
- return l.outM-k.outM});d=="date"&&f.sort(function(k,l){k=statCounter.statByUser[k];l=statCounter.statByUser[l];return l.lastMessageDate-k.lastMessageDate});for(d=0;d<f.length;d++){var c=f[d];sdata=a[c];udata=b[c]==undefined?{first_name:"DELETED",last_name:"DELETED"}:b[c];j=ce("tr",{id:"mess"+c});var g=ce("td",{innerHTML:d+1},{textAlign:"center",width:"30px"}),e=ce("td",{innerHTML:'<div class=""></div><input type="hidden" id="post_check_'+c+'">',className:"msg_check"});e.setAttribute("onmouseover",
- "checkOver(this, "+c+")");e.setAttribute("onmouseout","checkOut(this, "+c+")");e.setAttribute("onclick","checkChange(this, "+c+")");var h=ce("td",{innerHTML:'<a href="/id'+c+'" target="_blank"><img src="'+udata.photo+'" /></a>',className:"messagePicture"});c=ce("td",{innerHTML:'<a href="/id'+c+'" target="_blank">'+udata.first_name+" "+udata.last_name+"</a>",className:"messageFrom"});var m=ce("td",{innerHTML:sdata.inM+sdata.outM}),n=ce("td",{innerHTML:sdata.outM}),o=ce("td",{innerHTML:sdata.inM});
- if(user.kbytes)var p=ce("td",{innerHTML:sdata.inSize+sdata.outSize}),q=ce("td",{innerHTML:sdata.outSize}),r=ce("td",{innerHTML:sdata.inSize});var s=ce("td",{innerHTML:'<a href="mail.php?act=show&id='+sdata.lastMessageId+'" target="_blank">'+formatDate(new Date(sdata.lastMessageDate*1E3))+"</a>"});j.appendChild(e);j.appendChild(g);j.appendChild(h);j.appendChild(c);j.appendChild(m);j.appendChild(n);j.appendChild(o);if(user.kbytes){j.appendChild(p);j.appendChild(q);j.appendChild(r)}j.appendChild(s);
- i.appendChild(j)}},sort:function(a){this.displayStats(statCounter.statByUser,statCounter.userData,a)},requestSettings:function(){this.setHeader(user.lang.appName+" "+SYS.VERSION);ui.clearContent();this.removeLoggerPane();var a=new MessageBox({title:user.lang.settingsText});a.addButton({label:user.lang.startButton,onClick:function(){a.hide();messageProcessor.start()}});html='<div style="width: 300px; height: 30px;"><input type="hidden" id="param_verbose" /></div>';html+='<div style="width: 300px; height: 30px;"><input type="hidden" id="param_kbytes" /></div>';
- html+='<div style="width: 300px; height: 30px;"><input type="hidden" id="param_friends_only" /></div>';a.content(html).show();new Checkbox(ge("param_verbose"),{label:user.lang.verbose,checked:0,onChange:function(){user.verbose=!user.verbose}});new Checkbox(ge("param_kbytes"),{label:user.lang.kbytes,checked:1,onChange:function(){user.kbytes=!user.kbytes}});new Checkbox(ge("param_friends_only"),{label:user.lang.friendsOnly,checked:0,onChange:function(){user.friendsOnly=!user.friendsOnly}})},addLoggerPane:function(){var a=
- ce("textarea",{cols:80,rows:20,id:"loggerPane"},{fontFamily:"Courier new"});insertAfter(ge("content"),a)},removeLoggerPane:function(){var a=ge("loggerPane");a!=undefined&&a.parentNode.removeChild(a)},onNoteNotCreated:function(){ge("message").innerHTML=user.lang.noteFailure;ge("message").style.display="block";ge("message").style.visibility="visible"},onNoteCreated:function(a){ge("message").innerHTML=user.lang.noteSuccess+'. <a href="/note'+user.uid+"_"+a+'" target="_blank">'+user.lang.seeNote+"</a>";
- ge("message").style.display="block";ge("message").style.visibility="visible"}},statCounter={statByUser:{},userData:{},createEmptyStatsFor:function(a){var b={inM:0,outM:0,lastMessageDate:a.date,lastMessageId:a.mid,inSize:0,outSize:0};return this.statByUser[a.uid]=b},processSingleMessage:function(a){userStats=this.statByUser[a.uid];if(userStats==undefined)userStats=this.createEmptyStatsFor(a);if(userStats.lastMessageDate<a.date){userStats.lastMessageDate=a.date;userStats.lastMessageId=a.mid}if(a.out){userStats.outM++;
- userStats.outSize+=a.body.length}else{userStats.inM++;userStats.inSize+=a.body.length}},generateNoteContents:function(){var a="[[club21792535|vkontakte-stats]]\n\n";a+="{|\n";a+="|-\n";a+="! ";a+="!! "+user.lang.nameCol;a+="!! "+user.lang.numberOfMessagesCol;a+="!! "+user.lang.sentCol;a+="!! "+user.lang.receivedCol;if(user.kbytes){a+="!! "+user.lang.symbolsCol;a+="!! "+user.lang.sentSymbolsCol;a+="!! "+user.lang.receivedSymbolsCol}a+="\n";for(var b=0,d=ge("messages_rows"),i=0;i<d.rows.length;++i){var f=
- d.rows[i];if(f=f.id?intval(f.id.replace(/^mess/,"")):0){b++;if(intval(ge("post_check_"+f).value)){sdata=this.statByUser[f];udata=this.userData[f]==undefined?{first_name:"DELETED",last_name:"DELETED"}:this.userData[f];a+="|-\n";a+="| "+b+"\n";a+="| [[id"+f+"|"+udata.first_name+" "+udata.last_name+"]]\n";a+="| "+(sdata.inM+sdata.outM)+"\n";a+="| "+sdata.outM+"\n";a+="| "+sdata.inM+"\n";if(user.kbytes){a+="| "+(sdata.inSize+sdata.outSize)+"\n";a+="| "+sdata.outSize+"\n";a+="| "+sdata.inSize+"\n"}}}}a+=
- "|}\n";return a},exportToNote:function(){apiConnector.createNote(user.lang.appName,this.generateNoteContents(),function(a,b){parsedResponse=eval("("+b+")");if(parsedResponse.response==undefined){SYS.log("Note creationg failed!"+b);ui.onNoteNotCreated()}else{var d=parsedResponse.response.nid;user.verbose&&SYS.log("Note created: "+d);ui.onNoteCreated(d)}})}},messageProcessor={incomingMessages:undefined,processedIncomingMessages:0,outgoingMessages:undefined,processedOutgoingMessages:0,onUserProfilesLoaded:function(a){parsedResponse=
- eval("("+a+")");parsedResponse.response==undefined&&SYS.fatal(a);parsedResponse=parsedResponse.response;for(a=0;a<parsedResponse.length;a++)statCounter.userData[parsedResponse[a].uid]=parsedResponse[a];this.pendingUserDataRequests--;user.verbose&&SYS.log("Got user profile data, "+this.pendingUserDataRequest+" goes remaining");if(this.pendingUserDataRequests<=0){ui.setHeader(user.lang.done+"!");ui.displayStats(statCounter.statByUser,statCounter.userData,user.kbytes?"tot-size":"tot")}},onAllMessagesLoaded:function(){ui.updateProgressBar(this.processedIncomingMessages,
- this.incomingMessages,this.processedOutgoingMessages,this.outgoingMessages);ui.setHeader(user.lang.gettingNames+"...");user.verbose&&SYS.log("Got all messages, getting user names");this.api.getUserNames(getKeys(statCounter.statByUser),function(a,b){messageProcessor.onUserProfilesLoaded(b)})},onMessagesLoaded:function(a,b){var d=eval("("+a+")");d.error!=undefined&&SYS.fatal(a);d=d.response;var i=d[0];user.verbose&&SYS.log("Got "+(d.length-1)+" messages");for(var f=1;f<d.length;f++)statCounter.processSingleMessage(d[f]);
- f=0;if(b){this.processedOutgoingMessages+=d.length-1;f=this.processedOutgoingMessages+(i-this.outgoingMessages);i!=this.outgoingMessages&&user.verbose&&SYS.log("By the way, the user has sent "+(i-this.outgoingMessages)+" message(s) after the script was started");if(f>=i||SYS.DEBUG&&f>=SYS.MESSAGES_TO_PROCESS_IN_DEBUG_MODE){this.onAllMessagesLoaded();return}}else{this.processedIncomingMessages+=d.length-1;f=this.processedIncomingMessages+(i-this.incomingMessages);i!=this.incomingMessages&&user.verbose&&
- SYS.log("By the way, the user has received "+(i-this.incomingMessages)+" message(s) after the script was started");if(f>=i||SYS.DEBUG&&f>=SYS.MESSAGES_TO_PROCESS_IN_DEBUG_MODE){b=1;f=0}}ui.updateProgressBar(this.processedIncomingMessages,this.incomingMessages,this.processedOutgoingMessages,this.outgoingMessages);d=(new Date).getTime()-this.requestStartTime;user.verbose&&SYS.log("Elapsed time: "+d+" ms");if(d>=SYS.MSEC_BETWEEN_REQUESTS){user.verbose&&SYS.log("Starting new request...");this.requestStartTime=
- (new Date).getTime();this.api.getMessages(b,f,SYS.MESSAGES_PER_REQUEST,function(j,c){messageProcessor.onMessagesLoaded(c,b)})}else{this.out=b;this.offset=f;user.verbose&&SYS.log("Scheduling new request in "+(SYS.MSEC_BETWEEN_REQUESTS-d)+"ms");setTimeout("messageProcessor.requestStartTime = (new Date()).getTime(); messageProcessor.api.getMessages(messageProcessor.out, messageProcessor.offset, SYS.MESSAGES_PER_REQUEST, function(ao, rt) {messageProcessor.onMessagesLoaded(rt, messageProcessor.out)});",
- SYS.MSEC_BETWEEN_REQUESTS-d)}},startProcessingMessages:function(){ui.setHeader(user.lang.processingMessages+"...");ui.createProgressBar();ui.updateProgressBar(0,this.incomingMessages,0,this.outgoingMessages);this.requestStartTime=(new Date).getTime();this.api.getMessages(0,0,SYS.MESSAGES_PER_REQUEST,function(a,b){messageProcessor.onMessagesLoaded(b,0)})},onMessageNumbersLoaded:function(a,b){var d=eval("("+a+")");d.response==undefined&&SYS.fatal(a);d=d.response;if(b)this.outgoingMessages=d[0];else this.incomingMessages=
- d[0];this.incomingMessages!=undefined&&this.outgoingMessages!=undefined&&messageProcessor.startProcessingMessages()},getNumberOfMessages:function(){this.api.getMessages(0,0,1,function(a,b){messageProcessor.onMessageNumbersLoaded(b,0)});this.api.getMessages(1,0,1,function(a,b){messageProcessor.onMessageNumbersLoaded(b,1)})},start:function(){this.api=apiConnector;if(user.verbose){ui.addLoggerPane();SYS.log("Started")}ui.setHeader(user.lang.loadingMessageNumbers);this.getNumberOfMessages()}},apiConnector=
- {API_ADDRESS:"/api.php",API_VERSION:"3.0",LOGON_FAIL_STRING:"login_fail",LOGON_SUCCESS_STRING:"login_success",logon:function(a,b){this.appId=a;var d=ce("iframe",{src:"/login.php?app="+a+"&layout=popup&type=browser&settings="+b},{position:"relative",width:"100%",height:"500px"});d.setAttribute("onload","apiConnector.onLogonFrameLoaded(this.contentWindow.location.href)");ui.setHeader(user.lang.authorizing+"...");ui.clearContent();ui.appendContentElement(d)},onLogonFrameLoaded:function(a){a=unescape(a);
- a.indexOf(this.LOGON_FAIL_STRING)!=-1&&SYS.fatal("failed to log on: "+a);if(a.indexOf(this.LOGON_SUCCESS_STRING)!=-1){sessionInfo=eval("("+a.split("#")[1].split("=")[1]+")");user.uid=sessionInfo.mid;this.secret=sessionInfo.secret;this.sid=sessionInfo.sid;ui.setHeader(user.lang.authorized);ui.clearContent();ui.requestSettings()}},getMessages:function(a,b,d,i){user.verbose&&SYS.log("getMessages invoked: out="+a+"; offset="+b);var f=user.uid,j=user.kbytes?0:1;f+="api_id="+this.appId;f+="count="+d;if(user.friendsOnly)f+=
- "filters=4";f+="format=JSON";f+="method=messages.get";f+="offset="+b;f+="out="+a;f+="preview_length="+j;f+="v="+this.API_VERSION;f+=this.secret;var c=new Ajax;c.onDone=i;params={api_id:apiConnector.appId,count:d,format:"JSON",method:"messages.get",offset:b,out:a,preview_length:j,sid:apiConnector.sid,sig:md5(f),v:this.API_VERSION};if(user.friendsOnly)params.filters=4;c.post(this.API_ADDRESS,params)},doGetUserData:function(a,b){user.verbose&&SYS.log("doGetUserData invoked: ids="+a);var d=user.uid;d+=
- "api_id="+this.appId;d+="fields=photo";d+="format=JSON";d+="method=getProfiles";var i=a.join(",");d+="uids="+i;d+="v="+this.API_VERSION;d+=this.secret;var f=new Ajax;f.onDone=b;f.post(this.API_ADDRESS,{api_id:apiConnector.appId,fields:"photo",format:"JSON",method:"getProfiles",sid:apiConnector.sid,sig:md5(d),uids:i,v:this.API_VERSION})},getUserNames:function(a,b){a=splitArrayToSubArrays(a,SYS.MAX_USERS_PER_REQUEST);this.onDone=b;messageProcessor.pendingUserDataRequests=a.length;for(var d=0;d<a.length;d++)d==
- 0?this.doGetUserData(a[d],b):setTimeout("apiConnector.doGetUserData(["+a[d]+"], apiConnector.onDone)",d*SYS.MSEC_BETWEEN_REQUESTS)},createNote:function(a,b,d){user.verbose&&SYS.log("createNote invoked: title="+a+"; text="+b);var i=user.uid;i+="api_id="+this.appId;i+="format=JSON";i+="method=notes.add";i+="text="+b;i+="title="+a;i+="v="+this.API_VERSION;i+=this.secret;var f=new Ajax;f.onDone=d;f.post(this.API_ADDRESS,