(function(){
    function getxhr(){
        return window.XMLHttpRequest?
            (new XMLHttpRequest()):
            (window.ActiveXObject?(function(){
                var r=null,msxmlhttp=new Array('Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
                for (var i=0;i<msxmlhttp.length;i++) try {r=new ActiveXObject(msxmlhttp[i]);} catch(e) {r=null;}
                return r;
            })():null);
    }
    function getseltxt(){
        var sel = null;
        if (window.getSelection){
            sel=window.getSelection().getRangeAt(0);
            sel=sel?sel.toString():null;
        }
        else {
            sel=window.document.selection;
            sel=sel?sel.createRange():null;
            sel=sel?sel.text:null;
        }
        return sel?sel:'';
    }
    var xhr=null;
    function send_rep(txt1,txt2){if (/[^\s]+/i.test(txt1)) {
        xhr=getxhr();
        xhr.onreadystatechange=function(){if (xhr.readyState==4&&xhr.status==200) alert("Сообщение отослано");}
        xhr.open('POST','http://school-collection.edu.ru/send_mistype_report.php',true);//
        xhr.send('<html><head><style type="text/css"> td {font-weight:bold;border: 1px solid grey;width:50%;} </style></head>'+
                 '<body>Страница <a href="'+document.location.href+'" target="_blank">"'+document.title+'"</a><br/><br/>'+
                 '<table style="border: 1px solid grey;width:100%;border-collapse:collapse;"><tr>'+
                 '<td>Найдено</td>'+(txt2?'<td>Должно быть</td>':'')+
                 '</tr><tr>'+
                 '<td style="color:red;">'+txt1+'</td>'+
                 (txt2?'<td style="color:green;">'+txt2+'</td>':'')+
                 '</tr></table>'+
                 '</body></html>'
                );
    }}
    function gprompt(txt){
        var envelope=function(){
            var dl=document.createElement('div');
            var dr=document.createElement('div');
            var dc=document.createElement('div');
            dl.insertBefore(dr,null);
            dr.insertBefore(dc,null);
            for (var i=0;i<arguments.length;i++){
                var el = arguments[i];
                if ((arguments.length == 1)&&(typeof el == 'string')){dc.innerHTML='<span>'+el+'</span>';return dl;}
                dc.insertBefore(el,null);
            }
            return dl;
        }
        var dv=document.createElement('div');
        dv.className='gpromt';
        dv.insertBefore(envelope('Вы отсылаете сообщение об опечатке. Как текст должен выглядеть на самом деле?'),null);
        var ta=document.createElement('textarea');
        ta.id='mrta';
        ta.value=txt;
        var btn=document.createElement('span');
        btn.className='mrbtn';
        btn.innerHTML='Отправить';
        var btx=document.createElement('span');
        btx.className='mrbtn';
        btx.innerHTML='Отмена';
        dv.insertBefore(envelope(ta),null);
        dv.insertBefore(envelope(btn,btx),null);
        btn.onclick=(function(){var t=txt;var a=ta; return function(){send_rep(t,a.value);document.body.removeChild(dv)};})();
        btx.onclick=(function(){return function(){document.body.removeChild(dv)};})();
        document.body.insertBefore(dv,null);
    }
    var eh = function(e){
        e=window.event?window.event:e;
        var key=window.event?e.keyCode:e.which;
        if (((window.event)&&(key==25))||(key==8)||(key==121)) key='n';
        if (((window.event)&&(key==13))||(key==109)||(key==77)) key='m';
        if ((e.ctrlKey)&&(key=='n'||key=='m')){
            var sel=getseltxt();
            if (key=='n') 
                gprompt(sel);
            else
                send_rep(sel);
        }
    }
    if (document.addEventListener) document.addEventListener("keypress", eh , false);
    else                           document.attachEvent("onkeypress", eh);
})()
