var QuoteText = '';

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 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');
  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 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 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;
 };

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;
 };
