var QuoteText = '';

function addBookmark()
 {
 };

function addBookmarkOnClick(a,hRef,title)
 {
  if (window.opera && window.print) // Opera
   {
    var mbm = a;
    mbm.setAttribute('rel','sidebar');
    mbm.setAttribute('href',hRef);
    mbm.setAttribute('title',title);
    mbm.click();
   }
  else if (window.sidebar) // Firefox
   window.sidebar.addPanel(title,hRef,'')
  else if (window.external) // Internet Explorer
   window.external.addFavorite(hRef,title);
 };

function addSmile(Smile)
 {
  var Memo = document.form.MessageMemo;
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    var Range = document.selection.createRange();
    Range.text = Smile;
    Range.collapse();
    Range.select();
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    Memo.value = Value.substr(0,Start) + Smile + Value.substr(End,Value.length);
    Memo.setSelectionRange(Start+Smile.length,Start+Smile.length);
   }
  else // Unknown
   Memo.value += Smile;
 };

function blockQuote()
 {
  var QText = ''+QuoteText+'';
  var Memo = document.form.MessageMemo;
  if (document.selection) // Internet Explorer || Opera 8.0+
   {
    Memo.focus();
    if (document.selection.createRange().text == QText)
     formatText('BlockQuote')
    else
     Memo.value += '<BlockQuote>'+QText+'</BlockQuote>';
   }
  else if (window.getSelection) // Firefox || Mozilla
   {
    Memo.focus();
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    if ((Value.substr(Start,End-Start) != '') || (QText == ''))
     formatText('BlockQuote')
    else
     Memo.value += '<BlockQuote>'+QText+'</BlockQuote>';
   }
  else
   formatText('BlockQuote');
  QuoteText = '';
 };

function copyQuote(Event)
 {
  var QText = '';
  if (document.selection) // Internet Explorer || Opera 8.0+
   QText = document.selection.createRange().text
  else if (window.getSelection) // Firefox || Mozilla
   QText = window.getSelection()
  else
   QText = '';
  if ((Event != 'MouseDown') || (QText != '') || (QuoteText == '')) QuoteText = QText;
 };

function enableUserName(enabled)
 {
  var userName = document.getElementById('userName');
  userName.readOnly = !enabled;
  if (enabled)
   userName.style.backgroundColor = ''
  else
   {
    userName.style.backgroundColor = '#EAEAEA';
    userName.value = userName.attributes.getNamedItem('externalValue').value;
   };
  if (enabled) userName.focus();
 };

function enableVote(State)
 {
  if (State && document.VoteForm.MarkComboBox.options[0].selected) State = false;
  document.VoteForm.VoteButton.disabled = !State;
 };

function fontSize(Language)
 {
  var SizeCaption = '';
  if (Language == 'eng')
   SizeCaption = 'Font size (%):'
  else
   SizeCaption = 'Размер шрифта (%):';
  var SelectedText = '';
  var Memo = document.form.MessageMemo;
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    var Range = document.selection.createRange();
    SelectedText = Range.text;
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    SelectedText = Value.substr(Start,End-Start);
   };
  var SizeValue = 100;
  if (SelectedText.substr(0,23) == '<Span Style="Font-Size:')
   {
    SizeValue = SelectedText.substr(23,SelectedText.length);
    if (SizeValue.indexOf('%;">') > -1) SizeValue = SizeValue.substr(0,SizeValue.indexOf('%;">'));
    if (SelectedText.indexOf('>') > -1)
     {
      SelectedText = SelectedText.substr(SelectedText.indexOf('>')+1,SelectedText.length);
      if (SelectedText.indexOf('</Span>') > -1) SelectedText = SelectedText.substr(0,SelectedText.indexOf('</Span>'));
     };
   };
  var Size = prompt(SizeCaption,SizeValue);
  if ((Size == null) || (Size == '')) return;
  if (Size.substr(Size.length-1,1) == '%') Size = Size.substr(0,Size.length-1);
  if (isNaN(Size) || isNaN(parseInt(Size))) return;
  if (parseInt(Size) <= 0) return;
  if (parseInt(Size) != 100) SelectedText = '<Span Style="Font-Size:'+Size+'%;">'+SelectedText+'</Span>';
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    Range = document.selection.createRange();
    var RangeLen = Range.text.length;
    Range.text = SelectedText;
    if (RangeLen > 0)
     {
      Range.moveStart("character",0-SelectedText.length);
      Range.select();
     };
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    Start = Memo.selectionStart;
    End = Memo.selectionEnd;
    Value = Memo.value;
    Memo.value = Value.substr(0,Start) + SelectedText + Value.substr(End,Value.length);
    if (Start != End) Memo.setSelectionRange(Start,End+Memo.value.length-Value.length);
   }
  else // Unknown
   Memo.value += SelectedText;
 };

function formatQuote(DTimeAuthor)
 {
  var Memo = document.form.MessageMemo;
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    var Range = document.selection.createRange();
    var RangeLen = Range.text.length;
    var TagAdded = true;
    if ((Range.text.substr(0,12) != '<BlockQuote>') || (Range.text.substr(Range.text.length-13,13) != '</BlockQuote>'))
     Range.text = '<BlockQuote><B>'+DTimeAuthor+'</B><Br>'+Range.text+'</BlockQuote>'
    else
     {
      Range.text = Range.text.substr(12,Range.text.length-25);
      TagAdded = false;
     };
    if (RangeLen == 0)
     {
      Range.move("character",0-13);
      Range.collapse();
     }
    else if (TagAdded)
     Range.moveStart("character",0-RangeLen-25)
    else
     Range.moveStart("character",0-RangeLen+25);
    Range.select();
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    if ((Value.substr(Start,12) == '<BlockQuote>') && (Value.substr(End-13,13) == '</BlockQuote>'))
     Memo.value = Value.substr(0,Start) + Value.substr(Start+12,End-Start-25) + Value.substr(End,Value.length)
    else //if ((Start!=0) || (Start!=End))
     Memo.value = Value.substr(0,Start) + '<BlockQuote><B>'+DTimeAuthor+'</B><Br>' + Value.substr(Start,End-Start) + '</BlockQuote>' + Value.substr(End,Value.length)
    if (Start == End)
     Memo.setSelectionRange(Start+DTimeAuthor.length+23,Start+DTimeAuthor.length+23)
    else if (Value.substr(Start,12)=='<BlockQuote>')
     Memo.setSelectionRange(Start,End-25)
    else
     Memo.setSelectionRange(Start,25+End);
   }
  else // Unknown
   Memo.value += '<BlockQuote><B>'+DTimeAuthor+'</B><Br></BlockQuote>';
 };

function formatText(Style)
 {
  var Memo = document.form.MessageMemo;
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    var Range = document.selection.createRange();
    var RangeLen = Range.text.length;
    var TagAdded = true;
    if ((Range.text.substr(0,Style.length+2) != '<'+Style+'>') || (Range.text.substr(Range.text.length-Style.length-3,Style.length+3) != '</'+Style+'>'))
     Range.text = '<'+Style+'>'+Range.text+'</'+Style+'>'
    else
     {
      Range.text = Range.text.substr(Style.length+2,Range.text.length-2*Style.length-5);
      TagAdded = false;
     };
    if (RangeLen == 0)
     {
      Range.move("character",0-Style.length-3);
      Range.collapse();
     }
    else if (TagAdded)
     Range.moveStart("character",0-RangeLen-2*Style.length-5)
    else
     Range.moveStart("character",0-RangeLen+2*Style.length+5);
    Range.select();
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    if ((Value.substr(Start,Style.length+2) == '<'+Style+'>') && (Value.substr(End-Style.length-3,Style.length+3) == '</'+Style+'>'))
     Memo.value = Value.substr(0,Start) + Value.substr(Start+Style.length+2,End-Start-2*Style.length-5) + Value.substr(End,Value.length)
    else //if ((Start!=0) || (Start!=End))
     Memo.value = Value.substr(0,Start) + '<'+Style+'>' + Value.substr(Start,End-Start) + '</'+Style+'>' + Value.substr(End,Value.length)
    if (Start == End)
     Memo.setSelectionRange(Start+Style.length+2,Start+Style.length+2)
    else if (Value.substr(Start,Style.length+2)=='<'+Style+'>')
     Memo.setSelectionRange(Start,End-2*Style.length-5)
    else
     Memo.setSelectionRange(Start,2*Style.length+5+End);
   }
  else // Unknown
   Memo.value += '<'+Style+'></'+Style+'>';
 };

function getDateTime()
 {
  var DateTime = '';
  var Now = new Date();
  var Temp = Now.getDate();
  var TempStr = '' + Temp;
  if (TempStr.length < 2) TempStr = '0' + TempStr;
  DateTime = TempStr + '.';
  Temp = Now.getMonth() + 1;
  TempStr = '' + Temp;
  if (TempStr.length < 2) TempStr = '0' + TempStr;
  DateTime = DateTime + TempStr + '.' + Now.getFullYear() + ' ';
  Temp = Now.getHours();
  TempStr = '' + Temp;
  if (TempStr.length < 2) TempStr = '0' + TempStr;
  DateTime = DateTime + TempStr + ':';
  Temp = Now.getMinutes();
  TempStr = '' + Temp;
  if (TempStr.length < 2) TempStr = '0' + TempStr;
  DateTime = DateTime + TempStr + ':';
  Temp = Now.getSeconds();
  TempStr = '' + Temp;
  if (TempStr.length < 2) TempStr = '0' + TempStr;
  DateTime = DateTime + TempStr;
  return DateTime;
 };

function insertHyperlink(Language)
 {
  var HRefCaption = '';
  var TitleCaption = '';
  if (Language == 'eng')
   {
    HRefCaption = 'Hyperlink\'s URL:';
    TitleCaption = 'Hyperlink\'s Title:';
   }
  else
   {
    HRefCaption = 'Адрес ссылки:';
    TitleCaption = 'Текст ссылки:';
   };
  var SelectedText = '';
  var Memo = document.form.MessageMemo;
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    var Range = document.selection.createRange();
    SelectedText = Range.text;
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    SelectedText = Value.substr(Start,End-Start);
   };
  var HRefValue = 'http://';
  var TitleValue = '';
  if (SelectedText.substr(0,9) == '<A HRef="')
   {
    HRefValue = SelectedText.substr(9,SelectedText.length);
    if (HRefValue.indexOf('"') > -1) HRefValue = HRefValue.substr(0,HRefValue.indexOf('"'));
    if (SelectedText.indexOf('>') > -1)
     {
      TitleValue = SelectedText.substr(SelectedText.indexOf('>')+1,SelectedText.length);
      if (TitleValue.indexOf('</A>') > -1) TitleValue = TitleValue.substr(0,TitleValue.indexOf('</A>'));
     };
   }
  else
   TitleValue = SelectedText;
  var HRef = prompt(HRefCaption,HRefValue);
  if ((HRef == null) || (HRef == '') || (HRef == HRefValue)) return;
  var Target = '';
  if ((HRef.substr(0,6) == 'ftp://') || (HRef.substr(0,7) == 'http://') || (HRef.substr(0,8) == 'https://') || (HRef.substr(0,4) == 'www.')) Target = ' Target=_blank';
  var Title = prompt(TitleCaption,TitleValue);
  if (Title == null) return;
  if (Title == '') Title = HRef;
  SelectedText = '<A HRef="'+HRef+'"'+Target+'>'+Title+'</A>';
  Memo.focus();
  if (Memo.createTextRange) // Internet Explorer || Opera 8.0+
   {
    Range = document.selection.createRange();
    var RangeLen = Range.text.length;
    Range.text = SelectedText;
    if (RangeLen > 0)
     {
      Range.moveStart("character",0-SelectedText.length);
      Range.select();
     };
   }
  else if (document.form.MessageMemo.selectionStart >= 0) // Firefox || Mozilla
   {
    Start = Memo.selectionStart;
    End = Memo.selectionEnd;
    Value = Memo.value;
    Memo.value = Value.substr(0,Start) + SelectedText + Value.substr(End,Value.length);
    if (Start != End) Memo.setSelectionRange(Start,End+Memo.value.length-Value.length);
   }
  else // Unknown
   Memo.value += SelectedText;
 };

function quoteAuthor(Number)
 {
  var Table = document.getElementsByName(''+Number+'')[0].parentNode.parentNode.parentNode;
  var TR = Table.rows[0];
  var TD = TR.cells[0].innerHTML;
  var LowerTD = TD.toLowerCase();
  var DTime = TD.substr(LowerTD.indexOf('<b>')+3,LowerTD.indexOf('</b>')-LowerTD.indexOf('<b>')-3);
  TD = TR.cells[1].innerHTML;
  LowerTD = TD.toLowerCase();
  var Author = TD.substr(LowerTD.indexOf('<b>')+3,LowerTD.indexOf('</b>')-LowerTD.indexOf('<b>')-3);
  var DTimeAuthor = DTime + ' ' + Author;
  var QText = '';
  if (QuoteText != '')
   QText = ''+QuoteText+''
  else
   {
    TR = Table.rows[1];
    TD = TR.cells[0].innerHTML;
    var Text = TD;
    QText = replaceSmiles(Text);
   }
  var Memo = document.form.MessageMemo;
  if (document.selection) // Internet Explorer || Opera 8.0+
   {
    Memo.focus();
    if (document.selection.createRange().text == QText)
     formatQuote(DTimeAuthor)
    else
     Memo.value += '<BlockQuote><B>'+DTimeAuthor+'</B><Br>'+QText+'</BlockQuote>';
   }
  else if (window.getSelection) // Firefox || Mozilla
   {
    Memo.focus();
    var Start = Memo.selectionStart;
    var End = Memo.selectionEnd;
    var Value = Memo.value;
    if ((Value.substr(Start,End-Start) != '') || (QText == ''))
     formatQuote(DTimeAuthor)
    else
     Memo.value += '<BlockQuote><B>'+DTimeAuthor+'</B><Br>'+QText+'</BlockQuote>';
   }
  else
   formatQuote(DTimeAuthor);
  QuoteText = '';
 };

function removeExtraCRLF(S)
 {
  var NewS = stringReplace(S,'\r\n\r\n\r\n','\r\n\r\n');
  NewS = stringReplace(NewS,'\n\n\n','\n\n');
  var C = NewS.charAt(NewS.length-1);
  while ((C == '\r')||(C == '\n'))
   {
    NewS = NewS.substring(0,NewS.length-1);
    C = NewS.charAt(NewS.length-1);
   };
  return NewS;
 };

function replaceSmiles(ImgText)
 {
  var Text = '';
  var TempText = ImgText;
  var LowerText = TempText.toLowerCase();
  var I = LowerText.indexOf('<img ');
  while (I > -1)
   {
    Text = Text + TempText.substring(0,I);
    TempText = TempText.substring(I,TempText.length);
    LowerText = TempText.toLowerCase();
    I = LowerText.indexOf(' alt=');
    Alt = TempText.substring(I+5,TempText.length);
    if ((Alt.substring(0,1) == '"') || (Alt.substring(0,1) == '\'')) Alt = Alt.substring(1,Alt.length);
    Text = Text + Alt.substring(0,3);
    TempText = TempText.substring(I,TempText.length);
    I = TempText.indexOf('>');
    TempText = TempText.substring(I+1,TempText.length);
    LowerText = TempText.toLowerCase();
    I = LowerText.indexOf('<img ');
   };
  Text = Text + TempText;
  return Text;
 };

function resizeMemo(Memo)
 {
  var Cols = Math.floor((Memo.clientWidth-2)/8);
  var Lines = Memo.value.split('\n');
  var LinesCount = 0;
  for (var I=0; I < Lines.length; I++)
   if (Lines[I].length == 0)
    LinesCount = LinesCount + 1
   else
    LinesCount = LinesCount + Math.ceil(Lines[I].length/Cols);
  if (LinesCount < 4) LinesCount = 4;
  Memo.rows = LinesCount;
 };

function setHomepage()
 {
 };

function setHomepageOnClick(a,hRef)
 {
  var currentURL = location.href;
  currentURL = currentURL.substr(currentURL.indexOf('//')+2,currentURL.length);
  currentURL = currentURL.substr(currentURL.indexOf('/'),currentURL.length);
  if (window.opera && window.print) // Opera
   {
    if (currentURL.indexOf('/eng/') == 0)
     alert('Unfortunately, you Internet browser does not allow to do this automatically AT ALL so you have to do it manually.')
    else
     alert('К сожалению, Ваш Интернет-обозреватель ВООБЩЕ не позволяет сделать это автоматически, поэтому Вам придётся сделать это вручную.');
   }
  else if (window.sidebar) // Firefox
   {
    try
     {
      var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
      prefs.setCharPref('browser.startup.homepage',hRef);
     }
    catch(e)
     {
      if (currentURL.indexOf('/eng/') == 0)
       alert('Unfortunately, you Internet browser does not allow to do this automatically DUE TO SECURITY REASONS (this constrain can be removed) so you have to do it manually.')
      else
       alert('К сожалению, Ваш Интернет-обозреватель не позволяет сделать это автоматически ПО СООБРАЖЕНИЯМ БЕЗОПАСНОСТИ (это ограничение можно снять), поэтому Вам придётся сделать это вручную.');
     };
   }
  else if (window.external) // Internet Explorer
   {
    a.style.behavior = 'url(#default#homepage)';
    a.setHomePage(hRef);
   };
 };

function stringReplace(s,oldPattern,newPattern)
 {
  var newS = '';
  var tempS = s;
  var i = tempS.indexOf(oldPattern);
  while (i > -1)
   {
    newS = newS + tempS.substring(0,i) + newPattern;
    tempS = tempS.substring(i+oldPattern.length,tempS.length);
    i = tempS.indexOf(oldPattern);
   };
  newS = newS + tempS;
  return newS;
 };

