var errorReporterOptions = {
    messageOnPage : "Если вы заметили ошибку, выделите необходимый текст и нажмите Ctrl+Enter, чтобы сообщить об этом редакции.",
    countTry: 0,
    maxLengthErrorText: 300,
    notSupportedText: "Ваш браузер не поддерживает возможность перехвата выделенного текста",
    bigesTextMessage: "Выделите текст с ошибкой меньшего размера.",
    articleID:0,
    articleName:"",
    errorText: "",
    commentText: "",
    isAlreadyShow: false,
    sendForm : "errorReportForm",
    completeText: "Спасибо, Ваш комментарий отправлен."
}


function initErrorReporter(messageContainerId) {
    var b = getBrowser();
    if ((b.ns && b.version < 5) || (b.opera && b.version < 7)) {
        return;
    }
    initErrorReporterEvent(messageContainerId)
}

function initErrorReporterEvent(messageContainerId) {
    if (errorReporterOptions.countTry < 10) {
        if (document.getElementById(messageContainerId)) {
            document.getElementById(messageContainerId).innerHTML = errorReporterOptions.messageOnPage;
            document.onkeydown = sendErrorReport;
        } else {
            errorReporterOptions.countTry++;
            setTimeout("initErrorReporterEvent('" + messageContainerId + "')", 500);
        }
    }
}


function sendErrorReport(ev) {
    ev = (ev) ? ev : ((window.event) ? window.event : null);
    if (ev && !errorReporterOptions.isAlreadyShow) {
        if (ev.keyCode == 10 || (ev.keyCode == 13 && ev.ctrlKey)) {
            if (ev.keyCode == 10 || (ev.keyCode == 13 && ev.ctrlKey)) {
                var sel = null;
                sel = (parent.getSelection) ? parent.getSelection() : ((parent.document.getSelection) ? parent.document.getSelection() : ((document.selection.createRange) ? document.selection.createRange().text : null));
                if (sel == null) {
                    alert(errorReporterOptions.notSupportedText);
                    return;
                }
                if (sel.length > errorReporterOptions.maxLengthErrorText) {
                    alert(errorReporterOptions.bigesTextMessage);
                    return;
                }
                if (sel == "") return;
                errorReporterOptions.errorText = sel;
                showErrorReportWindow();
                try {
                    stopPropagation();
                    preventDefault();
                } catch (e) {
                    ev.cancelBubble = true;
                    ev.returnValue = false;
                }
            }
        }
    }
}

function showErrorReportWindow(errorText) {
    errorReporterOptions.isAlreadyShow = true;
    showErrorReportSplash();
    var wDiv = null;
    var isNew = true;
    if (document.getElementById("errorReporterWindow") != null) {
        wDiv = document.getElementById("errorReporterWindow");
        wDiv.style.display = "block";
        wDiv.innerHTML = "";
        isNew = false;
    } else {
        wDiv = document.createElement("DIV");
    }
    wDiv.id = "errorReporterWindow";
    wDiv.style.position = "absolute";
    wDiv.style.width = "500px";
    wDiv.style.height = "300px";
    var left = ((getClientWidth() - 500) / 2) + getScrollLeft() + "px";
    var top = ((getClientHeight() - 300) / 2) + getScrollTop() + "px";
    wDiv.style.left = left;
    wDiv.style.top = top;
    wDiv.className = "errorReportWindow";
    if (isNew) {
        document.body.appendChild(wDiv);
    }
    var table = document.createElement("TABLE");
    table.cellPadding = 0;
    table.cellSpacing = 0;
    table.width = "100%";

    var trHeader = table.insertRow(0);
    var tdHeader = trHeader.insertCell(0);
    tdHeader.colSpan = 2;
    tdHeader.innerHTML = "Отсылка ошибки редактору";
    tdHeader.className = "errorReportHeader";
    var tr = table.insertRow(1);
    var td1 = tr.insertCell(0);
    var td2 = tr.insertCell(1);
    td1.className = "errorReportParam";
    td2.className = "errorReportValue";
    td1.innerHTML = "Статья:";
    td2.innerHTML = errorReporterOptions.articleName;
    tr = table.insertRow(2);
    td1 = tr.insertCell(0);
    td2 = tr.insertCell(1);
    td1.className = "errorReportParam";
    td2.className = "errorReportValue";
    td1.innerHTML = "Ошибка:";
    var errorTextArea = document.createElement("TEXTAREA");
    errorTextArea.id = "errorReportTextarea";
    errorTextArea.style.width = "90%"
    errorTextArea.style.height = "80px";
    errorTextArea.readOnly = true;
    errorTextArea.value = errorReporterOptions.errorText;
    td2.appendChild(errorTextArea);
    tr = table.insertRow(3);
    td1 = tr.insertCell(0);
    td2 = tr.insertCell(1);
    td1.className = "errorReportParam";
    td2.className = "errorReportValue";
    td1.innerHTML = "Ваш комментарий:";
    var commentTextArea = document.createElement("TEXTAREA");
    commentTextArea.style.width = "90%"
    commentTextArea.style.height = "80px";
    commentTextArea.id = "errorReportComment";
    td2.appendChild(commentTextArea);
    var trFooter = table.insertRow(4);
    td1 = trFooter.insertCell(0);
    td1.className = "errorReportFooter";
    td1.colSpan = 2;
    var sendButton = document.createElement("INPUT");
    sendButton.type = "button";
    sendButton.onclick = sendErrorReportStart;
    sendButton.style.marginLeft = "10px";
    var cancelButton = document.createElement("INPUT");
    cancelButton.type = "button";
    cancelButton.onclick = closeErrorReport;
    td1.appendChild(cancelButton);
    td1.appendChild(sendButton);
    wDiv.appendChild(table);
    sendButton.className = "errorReportButton";
    cancelButton.className = "errorReportButton";
    sendButton.value = "Отправить";
    cancelButton.value = "Отменить";
}

function showErrorReportSplash() {
    if (document.getElementById("errorReporterSplash") != null) {
        document.getElementById("errorReporterSplash").style.display = "block";
        return;
    }
    var splashDiv = document.createElement("DIV");
    splashDiv.id = "errorReporterSplash";
    splashDiv.style.backgroundImage = "url(/scripts/menu/images/splash_bg.gif)";
    splashDiv.style.position = "absolute";
    splashDiv.style.top = 0;
    splashDiv.style.left = 0;
    splashDiv.style.width = getBodyWidth() + "px";
    splashDiv.style.height = getBodyHeight() + "px";
    splashDiv.innerHTML = "&nbsp;";
    document.body.appendChild(splashDiv);
}

function sendErrorReportStart() {
    errorReporterOptions.commentText = document.getElementById("errorReportComment").value;
    errorReporterOptions.errorText = document.getElementById("errorReportTextarea").value;
    var f = document.forms[errorReporterOptions.sendForm];
    if (f){
        f.articleId.value = errorReporterOptions.articleID;
        f.errorText.value = errorReporterOptions.errorText;
        f.commentText.value = errorReporterOptions.commentText;
        f.submit();
        closeErrorReport();
        if (errorReporterOptions.completeText.length>0){
            alert(errorReporterOptions.completeText);
        }
    }
}

function closeErrorReport() {
    errorReporterOptions.isAlreadyShow = false;
    errorReporterOptions.commentText = "";
    errorReporterOptions.errorText = "";
    if (document.getElementById("errorReporterSplash")) {
        document.getElementById("errorReporterSplash").style.display = "none";
    }
    if (document.getElementById("errorReporterWindow")) {
        document.getElementById("errorReporterWindow").style.display = "none";
    }
}