document.charset = 'windows-1251';

var reqCurrency;
var reqShowSendMessagePreview;
var reqCheckUserExist;
var ratePostId;

// generic show function
function show(url, load)
{
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
        req.onreadystatechange = load;
        req.open("POST", url, true);
        req.send(null);
    }
    else if (window.ActiveXObject)
    {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req)
        {
            req.onreadystatechange = load;
            req.open("POST", url, true);
            req.send();
        }
    }
    return req;
}

function checkLoginForm()
{
    var form = document.getElementById('form_login');
    if (!form) return false;

    if ((form.form_username.value != '') && (form.form_username != 'имя') && (form.form_password.value != '') && (form.form_password != 'пароль'))
    {
        form.submit();
    }
}

function checkLostPasswordForm()
{
    var form = document.getElementById('form_lost_password');
    if (!form) return false;

    if ((form.form_username.value != '') || (form.form_mail.value != ''))
    {
        form.submit();
    }
}

function goTagPage(tag, page)
{
    tag = parseInt(tag);
    if (isNaN(tag) || tag < 1) return;
    page = parseInt(page);
    if (isNaN(page) || page < 1) return;
    window.location.assign("/viewtag.html?tag=" + tag + "&p=" + page);
}

function showCurrency(type)
{
    var url = "/include/forum/currency.inc?type=" + type + "&rand=" + Math.random();
    reqCurrency = undefined;
    reqCurrency = show(url, function ()
    {
        if (reqCurrency)
        {
            if (reqCurrency.readyState == 4)
            {
                var currency = document.getElementById('currency');
                currency.innerHTML = reqCurrency.responseText;
            }
        }
    });
}

function checkSettingsForm()
{
    var form = document.getElementById('form_settings');
    if (!form) return false;

    var err = document.getElementById('errors');
    err.innerHTML = "";

    var errors = new Array;
    form.form_email.style.backgroundColor = "#ffffff";
    form.form_pass1.style.backgroundColor = "#ffffff";
    form.form_pass2.style.backgroundColor = "#ffffff";

    if (form.form_email.value == '')
    {
        form.form_email.style.backgroundColor = "#ffff99";
        errors.push("Не введен адрес электронной почты");
    }
    else if (form.form_email.value.indexOf('@') < 1)
    {
        form.form_email.style.backgroundColor = "#ffff99";
        errors.push("Введен некорректный адрес электронной почты");
    }
    if (form.form_pass0.value != '' && form.form_pass0.value != 'старый пароль' &&
        form.form_pass1.value != '' && form.form_pass1.value != 'новый пароль' &&
        form.form_pass2.value != '' && form.form_pass2.value != 'еще раз новый пароль')
    {
        if (form.form_pass1.value != form.form_pass2.value)
        {
            form.form_pass1.style.backgroundColor = "#ffff99";
            form.form_pass2.style.backgroundColor = "#ffff99";
            errors.push("Введеные пароли не совпадают");
        }
    }

    if (errors.length > 0)
    {
        var err_inner = "";
        for (i = 0; i < errors.length; i++)
        {
            err_inner = err_inner + "<b>(!)</b>&nbsp;" + errors[i] + "<br>\n";
        }
        err.innerHTML = err_inner;
        return false;
    }

    var url = "/include/forum/check-email-exist.inc";
    var params = "email=" + escape(form.form_email.value) + "&rand=" + Math.random();
    postRequest(url, params, function (req)
    {
        if (req.readyState == 4)
        {
            if (req.responseText == "exist")
            {
                var form = document.getElementById('form_settings');
                form.form_email.style.backgroundColor = "#ffff99";
                var err = document.getElementById('errors');
                err.innerHTML = "<b>(!)</b>&nbsp;Адрес эл. почты уже зарегистрирован";
                return false;
            }
            else if (req.responseText == "invalid")
            {
                var form = document.getElementById('form_settings');
                form.form_email.style.backgroundColor = "#ffff99";
                var err = document.getElementById('errors');
                err.innerHTML = "<b>(!)</b>&nbsp;Указан неверный адрес эл. почты";
                return false;
             }
             else
             {
                var form = document.getElementById('form_settings');
                form.submit();
             }
        }
    });
}

function insertText(open, close, input)
{
    element = document.getElementById(input);
    // IE support
    if (document.selection && document.selection.createRange)
    {
        element.focus();
        sel = document.selection.createRange();
        sel.text = open + sel.text + close;
        element.focus();
    }
    // Moz support
    else if (element.selectionStart || element.selectionStart == '0')
    {
        var startPos = element.selectionStart;
        var endPos = element.selectionEnd;

        element.value = element.value.substring(0, startPos) + open + element.value.substring(startPos, endPos) + close + element.value.substring(endPos, element.value.length);
        element.selectionStart = element.selectionEnd = endPos + open.length + close.length;
        element.focus();
    }
    // Fallback support for other browsers
    else
    {
        element.value += open + close;
        element.focus();
    }

    return;
}

function checkSendMessageForm()
{
    var form = document.getElementById('form_send_message');
    if (!form) return false;

    var err = document.getElementById('errors_send_message');
    if (!err) return false;
    err.innerHTML = "";
    
    var errors = new Array;
    form.form_recipient.style.backgroundColor = '#ffffff';
    form.form_subject.style.backgroundColor = '#ffffff';
    form.form_message.style.backgroundColor = '#ffffff';

    if (form.form_recipient.value == '')
    {
        form.form_recipient.style.backgroundColor = '#ffff99';
        errors.push("Не указано имя получателя");
    }
    if (form.form_subject.value == '')
    {
        form.form_subject.style.backgroundColor = '#ffff99';
        errors.push("Не указана тема сообщения");
    }
    if (form.form_message.value == '')
    {
        form.form_message.style.backgroundColor = '#ffff99';
        errors.push("Не введен текст сообщения");
    }

    if (errors.length > 0)
    {
        var err_inner = "";
        for (i = 0; i < errors.length; i++)
        {
            err_inner = err_inner + "<b>(!)</b>&nbsp;" + errors[i] + "<br>\n";
        }
        err.parentNode.id = "carrot";
        err.innerHTML = err_inner;
        return false;
    }

    var url = "/include/forum/check-user-exist.inc?username=" + escape(form.form_recipient.value) + "&rand=" + Math.random();
    reqCheckUserExist = undefined;
    reqCheckUserExist = show(url, function ()
    {
        if (reqCheckUserExist)
        {
            if (reqCheckUserExist.readyState == 4)
            {
                if (reqCheckUserExist.responseText == "not exist")
                {
                    var form = document.getElementById('form_send_message');
                    form.form_recipient.style.backgroundColor = "#ffff99";
                    var err = document.getElementById('errors_send_message');
                    err.innerHTML = "<b>(!)</b>&nbsp;Пользователя с таким именем не существует";
                    return false;
                }
                else
                {
                    var form = document.getElementById('form_send_message');
                    form.submit();
                }
            }
        }
    });
}

function showSendMessagePreview()
{
    var subject = document.getElementById('form_subject');
    if (!subject) return false;
    var message = document.getElementById('form_message');
    if (!message) return false;
    var url = "/include/show-preview.inc?subject=" + escape(subject.value) + "&message=" + escape(message.value) + "&rand=" + Math.random();
    reqShowSendMessagePreview = undefined;
    reqShowSendMessagePreview = show(url, function ()
    {
        if (reqShowSendMessagePreview)
        {
            if (reqShowSendMessagePreview.readyState == 4)
            {
                var preview = document.getElementById('preview_message_send');
                if (!preview) return false;
                preview.innerHTML = reqShowSendMessagePreview.responseText;
            }
        }
    });
}

function makeRequest(url, func) 
{
    var httpRequest;

    if (window.XMLHttpRequest) // Mozilla, Safari, ...
    { 
        httpRequest = new XMLHttpRequest();
//      if (httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/xml');
    } 
    else if (window.ActiveXObject) // IE
    { 
        try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } 
        catch (e) 
        {
            try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } 
            catch (e) {}
        }
    }

    if (!httpRequest) return false;

    httpRequest.onreadystatechange = function() { func(httpRequest); }
    httpRequest.open('GET', url, true);
    httpRequest.send(null);
}
                                                                                                            
function collapsePost(id)
{
    var box = document.getElementById('collapse-box-' + id);
    var img = document.getElementById('collapse-img-' + id);
    if (!box) return false;
    if (!img) return false;

    if (box.collapsed == true)
    {
        box.collapsed = false;
        box.style.height = box.scrollHeight + 'px';
        img.src = '/images/minus.gif';
    }
    else
    {
        box.collapsed = true;
        box.style.height = '15px';
        img.src = '/images/plus.gif';
    }
}

function ratePost(id, rate)
{
    var box = document.getElementById('collapse-box-' + id);
    if (!box) return false;

    var url = "/include/forum/rate-post.inc";
    var params = "post=" + id + "&rate=" + rate + "&rand=" + Math.random();

    ratePostId = id;
    postRequest(url, params, function (req)
    {
        if (req.readyState == 4)
        {
            if (req.status == 200)
            {
                if (req.responseText != 'error')
                {
                    var box = document.getElementById('collapse-box-' + id);
                    if (!box) return false;

                    box.innerHTML = req.responseText;
                }
            }
        }
    });
}

