var xmlHttp = createXmlHttpRequestObject();
var finds = "";
var page = 1;
var sel = "";

function show_table(num)
{
sel = "read";
page = num;
process();
}

function create_div()
{
var doc = document.body;
var HTML = "";
var W = doc.offsetWidth/2-220;
var H = doc.offsetHeight;
new_elem = document.createElement("div");
new_elem.id = "q_add";
new_elem.style.position = "absolute";
new_elem.style.top = 560;
new_elem.style.left = W;
doc.appendChild(new_elem);
HTML += "<FORM NAME='queschens'>";
HTML += "<table border='1' cellpadding='5' cellspacing='0' width='350px' height='150px' bgcolor='#a6b7fe'>";
HTML +=     "<tr><td><table border='0' cellpadding='2' cellspacing='0' width='100%' height='100%' class='forms'>";
HTML +=         "<tr valign='top'>";
HTML +=  "<td align='center'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Текст вопроса</b></td>";
HTML +=             "<td align='right'><img src='images/hidetoc2.gif' border='0' alt='закрыть окно' onclick='drop_frame()'>&nbsp;</td>";
HTML +=         "<tr><td align='center' colspan='2'>";
HTML +=             "<textarea name='descr' cols='60' rows='10' wrap='soft'></textarea></td></tr>";
HTML +=         "<tr height='30px' valign='bottom'>";
HTML +=             "<td align='center' colspan='2'><input type='button' value=' Отправить ' onclick='save_and_destroy()'>";
HTML +=             "&nbsp;&nbsp;<input type='button' value='Очистить' onclick='document.forms.queschens.reset()'></td></tr>";
HTML +=     "</table></td></tr>";
HTML += "</table></form>";
document.getElementById('q_add').innerHTML = HTML;
}

function save_and_destroy()
{
sel = "write";
finds = str_replace("\n","<br>",document.forms.queschens.descr.value);
if(finds.length < 10)
    {
    alert('Ваш вопрос подозрительно короткий!');
    return;
    }
process();
drop_frame();
}

function serch()
{
finds = document.forms.faq.find_value.value;
sel = "read";
process();
}

function drop_frame()
{
var d = document.getElementById('q_add');
d.parentNode.removeChild(d);
}


function createXmlHttpRequestObject() //функция создаёт экземпляр объекта xmlHttp для работы аякса
    {
    var xmlHttp;
    try
        {
        xmlHttp = new XMLHttpRequest();
        }
    catch(e)
        {
        var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microfoft.XMLHTTP')
        for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++)
            {
            try
                {
                xmlHttp = new ActiveXObject(XmlHttpVersions[i])
                }
            catch(e) {}
            }
        }
    if(!xmlHttp)
        {
        alert('Ошибка создания объекта xmlHttp');
        }
    else
        {
        return xmlHttp;
        }
    }

function process() //функция отсылает ассиметричный запрос для работы аяякса
    {
    if(xmlHttp)
        {
        try
            {
            xmlHttp.open('POST','faq_ajax.php?find='+finds+'&num_page='+page+'&sel='+sel, true );
            xmlHttp.onreadystatechange = handleServerResponse;
            xmlHttp.send(null);
            document.body.style.cursor = 'wait';
            }
        catch(e)
            {
            alert('Невозможно соедениться с сервером:\n' + e.toString())
            document.body.style.cursor = 'default';
            }
        }
    }

function handleServerResponse() //функция обрабатывает ответ аякса, парсит полученую XMLку и вставляет данные из неё в форму
    {
    if(xmlHttp.readyState == 4)
        {
        if(xmlHttp.status == 200)
            {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            dataResponse = xmlDocumentElement.firstChild.data;
            if(sel == "write")
                {
                alert(dataResponse);
                document.body.style.cursor = 'default';
                return;
                }

            if(sel == "read")
                {
                if(dataResponse == 0)
                    {
                    alert('По вашему запросу ничего не найдено!');
                    document.body.style.cursor = 'default';
                    document.forms.faq.find_value.value = "";
                    finds = "";
                    return;
                    }
                else
                    {
                    document.getElementById('faq_main').innerHTML = dataResponse;
                    document.body.style.cursor = 'default';
                    }
                }
            }
        else
            {
            alert('Ошибка: не получен XML файл от сервера');
            }
        }
    }

function str_replace(f, r, str)
    {
    if(!(r instanceof Array))
        {
        r = new Array(r);
        if(f instanceof Array)
            {
            while(f.length > r.length)
                {
                r[r.length] = r[0];
                }
            }
        }

    if(!(f instanceof Array)) f = new Array(f);
    while(f.length > r.length)
        {
        r[r.length] = '';
        }

    if(str instanceof Array)
        {
        for(k in str)
            {
            str[k] = str_replace(f,r,str[k]);
            }
        return str;
        }

    for(var k=0; k<f.length; k++)
        {
        var i = str.indexOf(f[k]);
        while(i>-1)
            {
            str = str.replace(f[k],r[k]);
            i = str.indexOf(f[k],i);
            }
        }
    return str;
    }
