//---- Based on original script of Orphus by Dmitry Koteroff .- modified by WWF with great respect to Dmitry!


//<!-- 
// Original COPYRIGHT
// ~~~~~~~~~~~~~~~~~~
// Original idea of Orphus system belongs to Dmitry Koteroff.
// If you want to modify this script, please contact 
// the author first: http://forum.dklab.ru/other/orphus/
//
// You may use this script "as is" with no restrictions.
// Please do not remove these comments.
//-->

document.write("<form id='orphoform' action='/orphus/orpho.php' method='post'><div><input type='hidden' name='to' /><input type='hidden' name='ref' /><input type='hidden' name='c_pre' /><input type='hidden' name='c_sel' /><input type='hidden' name='c_suf' /><input type='hidden' name='c_pos' /></div></form></tr></table>");
//    document.write("-+Press Ctrl+Enter to mark mistake");

var orphus = {
  version:  "3.4",
  language: "ru",
  hq:       "http://orphus.ru",
  seltag1:  "<!!!>",
  seltag2:  "<!!!>",
  contunit: "word",
  contlen:  10,
  maxlen:   450,
  lng: {
// Russian (Русский)
	badbrowser: "Ваш браузер не поддерживает возможность перехвата выделенного текста. Возможно, слишком старая версия, а возможно, еще какая-нибудь ошибка.",
	toobig:     "Вы выбрали слишком большой объем текста!",
	subject:    "Орфографическая ошибка",
	docmsg:     "Документ:",
	intextmsg:  "\nОшибка в тексте:",
	ifsendmsg:  "Послать сообщение об ошибке редакторам сайта?\nВаш браузер останется на той же странице.",
	newwin:     "Страница откроется в новом окне.",
	name:       "Система Orphus", 
	author:     "Автор: Дмитрий Котеров.",
	thanx:      "Спасибо большое Вам за помощь!" 
  },
  init: function() { with (this) {
    var th = this;
    // Hook keyboard.
    document.onkeypress = function(e) { return th.onkeypress(e) };
  }},

  send: function(url, context) { with (this) {
    var form = document.forms['orphoform'];
    if (!form) return;
    wnd = window.open("", "orphownd","width=500,height=500,location=no,menubar=no,toolbar=no,resizable=yes,top=20,left=20,scrollbars=no");
    form.target = 'orphownd';
    form.ref.value = url;
    form.c_pre.value = context[0];
    form.c_sel.value = context[1];
    form.c_suf.value = context[2];
    form.c_pos.value = context[3];
    form.submit();
    alert(lng.thanx);
  }},

  stripSlashn: function(text) {
    text = ""+text;
    return text.replace("\r", "").replace("\n", "").replace(new RegExp("^\\s+|\\s+$", "g"), "");
  },

  doSend: function(recurrent) { with (this) {
    var text = null;
    if (navigator.appName.indexOf("Netscape")!=-1 && eval(navigator.appVersion.substring(0,1))<5) {
      alert(lng.badbrowser);
      return;
    }
    var w = window;
    var selection = null;
    if (w.getSelection) {
      text = w.getSelection();
    } else if (w.document.getSelection) {
      text = w.document.getSelection();
    } else {
      selection = w.document.selection;
    }
    var context = null;
    if (selection) {
      var r = selection.createRange(); if (!r) return;
      text = r.text;
      var s = 0; 
      while (text.charAt(s)==" " || text.charAt(s)=="\n") s++;
      var e = 0; 
      while (text.charAt(text.length-e-1)==" " || text.charAt(text.length-e-1)=="\n") e++;
      var rngA = selection.createRange();
      rngA.moveStart(contunit, -contlen);
      rngA.moveEnd("character", -text.length+s);
      var rngB = selection.createRange();
      rngB.moveEnd(contunit, contlen);
      rngB.moveStart("character", text.length-e);
      text     = text.substring(s, text.length-e);
      context  = [rngA.text,  text,  rngB.text, 0];
    } else {
      context = ["", text, "", -1];
    }
    if (text == null) { 
      alert(lng.badbrowser); 
      return; 
    }
    if (context[1] == "") return;
    var visCont = stripSlashn(context[0]+seltag1+context[1]+seltag2+context[2]);
    if (visCont.length > maxlen) {
      alert(lng.toobig);
      return;
    }
    var url = w.document.location.href;
    var ts = new Date().getTime();
    var result = confirm(lng.docmsg+"\n   "+url+"\n"+lng.intextmsg+'\n   "'+visCont+'"\n\n'+lng.ifsendmsg);
    var dt = new Date().getTime() - ts;
    if (result) {
      this.send(url, context);
    } else {
      if (!recurrent && dt < 50) {
        // Stupid MyIE blocks confirm() while Ctrl is pressed.
        var th = this;
        var sv = document.onkeyup;
        document.onkeyup = function(e) { with (th) {
          if (!e) e = window.event;
          if (e.keyCode == 17) { // Ctrl is up.
            document.onkeyup = sv;
            doSend(true);
          }
        }}
      }
    }
  }},

  onkeypress: function(e) { with (this) {
    var pressed=0;
    var we = null;
    if (window.event) we = window.event;
    if (we) {
      // IE & Opera
      pressed = we.keyCode==10 ||  // IE
        (we.keyCode == 13 && we.ctrlKey); // Opera 
    } else if (e) {
      // NN
      pressed = 
        (e.which==10 && e.modifiers==2) || // NN4
        (e.keyCode==0 && e.charCode==106 && e.ctrlKey) ||
        (e.keyCode==13 && e.ctrlKey) // Mozilla
    }
    if (pressed) this.doSend();
  }}
}
orphus.init();
