
// E-MAIL администратора сайта (сюда буду приходить письма с ошибками)
    var adminEmail = "isell@nm.ru"; 

// Выбор комбинации клавиш для вызова сервиса
    var pr_alt = false; // комбинация ALT + ENTER
    var pr_shift = true; // комбинация SHIFT + ENTER
    var pr_ctrl = false; // комбинация CTRL + ENTER

// Максимальное количество выделенных символов
    var maxSelectedTextWidth = 250;
    
// Текст сообщения при ошибке выделения текста
    var selectedTextFalseAlert = "Ошибка: максимальное количество выделяемых символов не должно превышать "+ maxSelectedTextWidth +".";

    var TnxMessage = "Спасибо за отправку сообщения. Администратор в кратчайшее время внесет исправления.";


    var gecko;
    var selectedText;
    var popWindowId = "PopWindow";
    var serviceURL = "orfoProxy.php";

    var isDOM = document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
    var isOpera = isOpera5 = window.opera && isDOM //Opera 5+
    var isMSIE = document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+
    var isNetscape4 = document.layers //Netscape 4.*
    var isMozilla = isDOM && navigator.appName=="Netscape" //Mozilla шыш Netscape 6.*
    
    addEvent (window, 'load',  keyPressInit);




function get_http ()
{
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new 
                ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
    @else
        xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }

    return xmlhttp;
}


function addEvent (element, eventType, functionName)
{
    if (element.addEventListener) {
        element.addEventListener(eventType, functionName, false);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, functionName);
        return r;
    } else {
        element['on' + eventType] = functionName;
    }
}


function keyPressInit ()
{
    if (document.addEventListener)
    {
        document.addEventListener("keypress",
            function(e){keyAction(e)},true);
        if (navigator.appName == "Microsoft Internet Explorer") return;
        document.addEventListener("keydown", function(e){keyAction(e)}, true);
        gecko = true;
    } else if (document.attachEvent)
        document.attachEvent("onkeydown", keyAction);
}


function keyAction (e)
{
    if (!( ((e.shiftKey == true) && (pr_shift == true)) || ((e.altKey == true) && (pr_alt == true)) || ((e.ctrlKey == true) && (pr_ctrl == true)) )) return;
    var Key = e.keyCode;
    if (Key == 0) Key = e.charCode;
    if (Key == 13) {   
        if (!gecko && Key>64 && Key<91) Key += 32;
        GetSelectedText();
    }
}


function GetSelectedText ()
{
    var text = "";
    var selection = null;
    if (document.getSelection) {
        text = document.getSelection();
    } else {
        selection = document.selection;
    }
    if (selection) {
        var r = selection.createRange();
        if (!r) return null;
        text = r.text;
    }
    if (text) {
        if (text.length <= maxSelectedTextWidth) {
            selectedText = text;
            OpenPop ();
        } else {
            alert (selectedTextFalseAlert);
            return false;
        }
    }
}

function ClosePop ()
{
    var obj = document.getElementById (popWindowId);
    if (obj) {
        selectedText = '';
        obj.style.display = "none";
    }
}


function OpenPop ()
{
    var obj = document.getElementById (popWindowId);
    if (obj) {
        var topSum=50;
        var topSum1=50;
        var leftSum=50;
        scrollTop = (parseInt(document.documentElement.scrollTop) > parseInt (document.body.scrollTop)) ? parseInt(document.documentElement.scrollTop) : parseInt (document.body.scrollTop);
        topSum = scrollTop + 50;
        leftSum = parseInt ((document.body.clientWidth/2)-(obj.style.width.substr (-0,3)/2));
        if (topSum<50) {
            topSum=50;
        }
        if (leftSum<50) {
            leftSum=50;
        }
        obj.style.top=topSum+'px';
        obj.style.left=leftSum+'px';
        if (isMozilla) obj.style.height += obj.style.height + 20;
        obj.style.display="block";

        var tmpObj = document.getElementById ("PopWindowMistake");
        if (tmpObj) tmpObj.value = selectedText;
        tmpObj = document.getElementById ("PopWindowCorrect");
        if (tmpObj) tmpObj.value = selectedText;
    }
}


function SendMistake () {
    var mistake = document.getElementById ('PopWindowMistake').value;
    var correct = document.getElementById ('PopWindowCorrect').value;
    var comment = document.getElementById ('PopWindowComment').value;

    if (mistake && correct) {
        if (!this.http) {
            this.http = get_http();
            this.working = false;
        }

        if (!this.working && this.http) {
            var http = this.http;

            url = serviceURL +"?mistake="+ encodeURIComponent(mistake) +"&correct="+ encodeURIComponent(correct) +"&comment="+ encodeURIComponent(comment) +"&email="+ encodeURIComponent(adminEmail) +"&from="+ encodeURIComponent(window.location);
            this.http.open("GET", url, true);
            
            this.http.onreadystatechange = function() {
                if (http.readyState == 4) {
                    ClosePop ();

                    if (http.responseText == "OK") alert (TnxMessage);
                    else alert ("Error!");

                    this.working = false;
                } else {
                     // данные в процессе получения, 
                     // можно повеселить пользователя
                     // сообщениями 
                     // ЖДИТЕ ОТВЕТА
                }
            }
            this.working = true;
            this.http.send(null);

            this.http = null;
        }

        if (!this.http) { return; }
    }
}
