function SubmitControl(tocheck){
 if (document.all||document.getElementById){
     for (i=0;i<tocheck.length;i++){
          obj=tocheck.elements[i]
          if(obj.type.toLowerCase()=="submit"||obj.type.toLowerCase()=="reset") {
             obj.disabled=true
            }}}
}
function UnCheckButtons(){
 if(document.getElementsByTagName)
 {var els=document.getElementsByTagName('input')
  for(i=0;i<els.length;i++)
   if((els[i].type=='submit'||els[i].type=='reset')&&els[i].disabled) els[i].disabled=false
 }
}
setTimeout('UnCheckButtons()',1000)
function CreateWnd(url, width, height, wndname){
  if (wndname != ''){
      for (var i=0; i < parent.frames.length; i++){
           if (parent.frame[i].name == wndname){
               parent.frame[i].focus()
               return
              }
          }
    }
  window.open(url, wndname,'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=yes,status=yes')
}
function Formchecker(tocheck){
  if (tocheck.post&&tocheck.post.value.length == 0){
      alert('Пожалуйста, введите текст сообщения!!');tocheck.post.focus()
      return false}
  if (tocheck.membername&&tocheck.membername.value.length == 0){
      alert('Пожалуйста, введите ваше имя!!');tocheck.membername.focus()
      return false}
  if (typeof check_tags=='function'&&!check_tags(tocheck)) return false
  if (false&&!check_message_style(tocheck.post.value)) {tocheck.post.focus();return false}
return true
}
function check_message_style(txt)
{
var mess=""
try {
 txt=txt.replace(/\r?\n/g,'').replace(/\[(#|q|url|img|code).*\].*\[\/\1\]/gi,'')
 var cnt=txt.match(/[a-zа-я]/gi).length
 tmp=txt.match(/[а-я]/gi)
 if (tmp==null||(tmp.length/cnt<0.2&&tmp.length>15)) mess+="п.2.5.1 - Слишком мало русского текста ("+percent(tmp,cnt)+"). Если у вас нет клавиатуры с русской раскладкой, то воспользуйтесь, к примеру, сервисом www.translit.ru или виртуальной клавиатурой слева от поля ввода. (You may skip this message if you do not speak russian, but remember that this forum is dedicated to the russian-speaking community)\n"
 tmp=txt.match(/[A-ZА-Я]/g)
 if(tmp!=null&&tmp.length/cnt>0.3)  mess+="п.2.5.7 - Ваше сообщение содержит большое количество ЗАГЛАВНЫХ БУКВ ("+percent(tmp,cnt)+"). Попробуйте его отредактировать и привести в нормальный вид. (Please do not overuse CAPITAL LETTERS in your message)"
 }catch(e){}
if(mess!='') return confirm("Вы уверены, что хотите отправить данное сообщение?\n(Are you sure you're ready to submit your message?)\nОно может не соответствовать главе VIII Соглашения по Использованию Форума по причине:\n"+mess)
return true
function percent(d,c)
{return (d==null?0:Math.round(d.length/c*1000)/10)+"%"}
}

if (document.selection||document.getSelection||window.getSelection) {Q=true} else {var Q=false}
var txt=''
function copyQ() {
        txt=''
        if (window.getSelection&&!window.opera) txt = window.getSelection() 
        else if (document.getSelection) txt=document.getSelection()
        else if (document.selection) txt=document.selection.createRange().text
        txt='[q]'+txt+'[/q]\n'
}

function setCaret(textObj) {
		textObj.modified = true
        if (textObj.createTextRange&&!document.getSelection) {
        textObj.caretPos = document.selection.createRange().duplicate()
        }
        el_has_focus=textObj
}
function insertAtCaret(tObj,textV){    
    textV=textV.replace(/\s\[\?\]/g,'')
    if (textV==''||!tObj) return
    var ver=8
	if (!tObj.modified) {tObj.value+=textV; return;}
    if(document.all && !window.opera){
      if (tObj.createTextRange&&tObj.caretPos) {
          var caretPos=tObj.caretPos
          caretPos.text=textV
        }else tObj.value+= textV
        }else
        {var brows=navigator.userAgent.toString()
         var scrollTop, scrollLeft
         if (tObj.type=='textarea'&&tObj.scrollTop)
         {scrollTop=tObj.scrollTop;scrollLeft=tObj.scrollLeft}                
          if(brows.search(/opera\/?(\d*.\d*)/i)!=-1) ver=RegExp.$1 
          if(tObj.selectionStart>=0&&ver>=8){
          if(tObj.textLength!=undefined||tObj.value.length!=undefined) 
           {var selLength=tObj.textLength!=undefined?tObj.textLength:tObj.value.length 
            var selStart=tObj.selectionStart
            var selEnd=tObj.selectionEnd 
            if (selEnd==1||selEnd==2)selEnd=selLength  
            var s1=(tObj.value).substring(0,selStart) 
            var s2=(tObj.value).substring(selEnd,selLength)
            tObj.value=s1+textV+s2
            tObj.setSelectionRange(selStart+textV.length,selStart+textV.length) 
            } 
            if (typeof scrollTop != 'undefined')
            {tObj.scrollTop=scrollTop;tObj.scrollLeft=scrollLeft}
           }else tObj.value+=textV
        }
}
function pasteQ(){
    if (txt!='' && document.getElementById('post'))
    insertAtCaret(document.getElementById("post"),txt)
}
function pasteN(text){
    if (text!='' && document.getElementById('post'))
    insertAtCaret(document.getElementById("post"),"[b]" + text + "[/b]"+(window.opera?"\r":"")+"\n")
}

function SelectAll(chbox, chtext){
 for(var i =0; i < chbox.form.elements.length; i++){
     if(chbox.form.elements[i].name.indexOf(chtext) == 0){
        chbox.form.elements[i].checked = chbox.checked
       }
    }
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'")
  if (restore) selObj.selectedIndex=0
}

function getcookievalue(name){
        var temp=document.cookie+";"
        var Pos=temp.indexOf("=",temp.indexOf(name+"="))
        if (temp.indexOf(name+"=")==-1) return ""
        return temp.substring(Pos+1,temp.indexOf(";",Pos))
}

function printform(){
        var memname = getcookievalue("amembernamecookie")
        var pass = getcookievalue("apasswordcookie")
        if ((document.cookie)&&(memname != null)&&document.postform.membername){
            document.postform.membername.value = unescape(memname)
            if (pass != null) document.postform.password.value = unescape(pass)
			if (!memname && document.postform) document.postform.parentNode.innerHTML = '';
        }
}
function printpass(){
        var pass = getcookievalue("apasswordcookie");
        if (pass!= null) document.postform.password.value = unescape(pass)
}
function link(a){
        var url="[url="+topic_url+a+"]"+topic_title+"[/url]"
        prompt('Скопируйте текст.', replace_entities(url))
}

function replace_entities(text)
{var entities={
    "&quot;":"\"",
    "&amp;":"&",
    "&lt;":"<",
    "&gt;":">",
    "&laquo;":"«",
    "&raquo;":"»",
    "&#0124;":"|",
    "&#39;":"'",
    "&#96;":"`",
    "&#146;":"’",
    "&#92;":"\\"}
for (var key in entities)
   text=eval('text.replace(/'+key+'/ig,entities["'+key+'"])')
return text}

function myEvent(where,evt,func,op)
{if (op=="+")
  {if (where.attachEvent) where.attachEvent("on"+evt,func)
  else if (where.addEventListener) where.addEventListener(evt,func,false)}
  else {if (where.detachEvent) where.detachEvent("on"+evt,func)
  else if (where.removeEventListener) where.removeEventListener(evt,func,false)}
}
// Cookie functions
function Set_Cookie(name,value,expires,path,domain,secure) 
{var today=new Date()
today.setTime(today.getTime())
if (expires) expires=expires*1000*60*60*24
var expires_date=new Date(today.getTime()+(expires))
document.cookie=name+"="+escape(value)+
((expires)?";expires="+expires_date.toGMTString():"")+
((path)?";path="+path:"")+ 
((domain)?";domain="+domain:"")+
((secure)?";secure":"")
}
function Get_Cookie(name){
var start=document.cookie.indexOf(name+"=")
var len=start+name.length+1
if ((!start)&&(name!=document.cookie.substring(0,name.length))) return null
if (start==-1) return null
var end=document.cookie.indexOf(";",len)
if (end==-1) end=document.cookie.length
return unescape(document.cookie.substring(len,end))}

function set_style(obj,style){if(typeof obj.style.cssText=='string')obj.style.cssText=style;else obj.setAttribute('style',style)}
function getById(id){return document.getElementById(id)}

var scpts=document.getElementsByTagName('script')
var ipath=false
for (var i=0;i<scpts.length;i++) {if(/board\.js$/.test(scpts[i].src)) {tmp=/(.*)\/.*?/.exec(scpts[i].src);if(tmp!=null) ipath=tmp[1];break}}

// "fast quote" code... written by Cheery
if ((document.attachEvent||document.addEventListener)&&/\/topic\.cgi/i.test(window.location.href)&&!Get_Cookie('finsert')&&ipath) document.write('<script src="'+ipath+'/quote.js"><\/script>')
//end quote
var b_tags='chess|b|i|s|u|strike|c|center|sub|sup|size%|color%|font%|code|quote|q|no|url%|email%|img|list%|table|#|more%|user%'   
if(ipath)document.write('<script src="'+ipath+'/check_tags.js"><\/script>')

function ctrle(evt){
evt=get_e(evt)
if(!evt)return 
if(evt.ctrlKey&&evt.keyCode==13){var el=who_fired_event(evt)
if(el.tagName=='TEXTAREA'&&el.form.name!=''){if (evt.preventDefault) evt.preventDefault() 
els=document.getElementsByTagName('input');for(var i=0;i<els.length;i++) {if(els[i].type=='submit'&&els[i].form.name==el.form.name) {els[i].click();return false}}}}
else return true
return false
}
function get_e(e)
{return (e)?e:(window.event)?event:null}
function who_fired_event(e)
{e=get_e(e)
if(!e) return
var targ=(e.target)?e.target:(e.srcElement?e.srcElement:null)
if (targ&&targ.nodeType==3) targ=targ.parentNode
return targ}
function getposOffset(overlay, offsettype){
var totaloffset=(offsettype=="left")? overlay.offsetLeft : overlay.offsetTop
var parentEl=overlay.offsetParent
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop
parentEl=parentEl.offsetParent
}
return totaloffset
}
function attach2textarea()
{var els=document.getElementsByTagName('textarea')
if(els)
 {
  for(var i=0;i<els.length;i++)
  {els[i].onkeyup=function(evt){setCaret(this)}
   els[i].onclick=function(evt){setCaret(this)}
   els[i].onselect=function(evt){setCaret(this)}
   if (i==els.length-1) el_has_focus = els[i];
   }
 }
}
var ready = function (f) {
    (/in/.test(document.readyState)) ?
		setTimeout('ready(' + f + ')', 9) :
			f();
};
var el_has_focus=false
ready(function () {
	attach2textarea();
    if ((window.location.href.indexOf("messanger.cgi?action=inbox") == -1 && window.location.href.indexOf("messanger.cgi?action=outbox") == -1) ||
	    $.inArray(getcookievalue("amembernamecookie"), ['Cheery', 'emx']) == -1) return;
    var btn = $('<button style="margin-left:15px;font-size:8pt;" type="button" class="button">Экспорт сообщений</button>'), out;
    btn.click(function() {
      alert('Данный процесс может занять много времени (при большом количестве сообщений)! Все сообщения будут отмечены как прочитанные, если стоит галка уведомления о прочтении - отправитель получит извещение. ' +
            'Если не хотите, чтобы подобное произошло - удалите данное сообщение, либо "обойдите" его при выборке диапазонов экспорта (нумерация списка идет сверху вниз/от нового к старому).');
      var lnks = $('a[href*="messanger.cgi?action=read"],a[href*="messanger.cgi?action=outread"]');
	  out = window.open('', 'Экспорт лички');
	  var from = parseInt(prompt('У вас в ящике ' + lnks.length + ' сообщений, с какого хотите начать экспорт (цифра, от 1 до ' + lnks.length + ')?')),
	      to   = parseInt(prompt('И на каком хотите остановиться (цифра, от ' + (from + 1) + ' до ' + lnks.length + ')?  Большие блоки могут повесить браузер.'));
	  if (isNaN(from) || isNaN(to)) {out.close(); return;}
      $(this).prop('disabled', true);
	  $('html,body').css('overflow', 'hidden');
      $('body').css('position', 'relative')
	           .append($('<div style="position:fixed;top:0px;left:0px;right:0px;z-index:100;background-color:white;font-weight:bold;"><div id="counter" style="text-align:center;">Счетчик</div><h1 style="color:red;font-weight:bold;text-align:center;">Не закрывайте это окно и не кликайте на ссылки в нем!</h1></div>'));
 	  lnks = lnks.slice(from - 1, to);
	  function loadMessage(index) {
        $.ajax({
		  url: lnks.eq(index).attr('href'),
          type: 'GET',
          success: function(data) {
		    $('#counter').text('Загрузили ' + (index + 1) + ' сообщение из ' + lnks.length + '. Выборка от ' + from + ' до ' + to + ' из всего списка.');
		    var html = $(data.replace(/(<body [^>]*>)/i, '$1<div>').replace(/(<\/body>)/i, '</div>$1'));
		    out.document.writeln(html.find('table').get(2).outerHTML + "\n\n<br><hr><br>\n\n");
		    if (index == lnks.length - 1) {
			  $('#counter').text('Готово. Новое окно с данными должно было сохраниться на диск (при поддержке HTML5). Данное окно теперь можно закрыть/обновить или кликнуть по любой ссылке в нем.')
			               .next().hide();
			  out.document.writeln('</body></html>');
			  download('pm-export' + from + '-' + to + '.html', out.document.documentElement.outerHTML);
			}
		    else setTimeout(function() {loadMessage(index + 1);}, 250);},
		  error: function() {
		    console.log('Ошибка при загрузке ' + lnks.eq(index).attr('href') + ', подождем немного.');
		    setTimeout(function() {loadMessage(index);}, 5000);}
		});
      };
  	  out.document.writeln('<!doctype html><html><head><meta charset="utf-8"><title>Экспорт личных сообщений</title></head><body>');
	  loadMessage(0);
    });
    $('input:submit').parent().append(btn); 
	
	function download(filename, text) {
     var b = $('<a></a>').attr('href', 'data:text/html;charset=windows-1251,' + encodeURIComponent(text))
                         .attr('download', filename)
						 .hide();
     $('body', out.document).append(b);
     b.get(0).click();//.remove();
   }
});
myEvent(document,'keyup',ctrle,"+");
if (window.location.href.indexOf("messanger.cgi?action=inbox") != -1 || window.location.href.indexOf("messanger.cgi?action=outbox") != -1)
document.write('<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"><\/script>');
//document.write('<a title="Печальная новость" style="position:fixed;top:-60px;left:-60px;background:url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Corner_mourning_ribbon.svg/155px-Corner_mourning_ribbon.svg.png);z-index:20;width:100px;height:100px;" href="/topic.cgi?forum=29&topic=15493#1"></a>');