var req = new Array;
var req_data = new Array;
var dom = new Array;
var static_url = new Array();
var document_title = document.title;
var page_load = false;
static_url['section'] = static_url['subsection'] = static_url['answer'] = 0;
//dasdasdasdasdsad
/*instantiate our history object*/
window.dhtmlHistory.create({
    debugMode: false//set this to false, or just don't pass in an options bundle, to see real-world, non-debug conditions 
});
window.onload = function() {
    //initialize our DHTML history
    dhtmlHistory.initialize();

    //subscribe to DHTML history change events
    dhtmlHistory.addListener(historyChange);
    ajax_enable('section');
    ajax_enable('subsection');
    ajax_enable('answer');
    ajax_enable('vote');
    if(document.location.hash) {
        historyChange(document.location.hash.substring(1), true);
    } else {
        if(faq_subsection) faq_visible(1);
                    else   faq_visible(0);
        if(faq_section) ajax_getSubSection(faq_section);
        if(faq_subsection) ajax_getAnswer(faq_subsection);
        if(faq_question_id) {
            ajax_showAnswer(faq_question_id,true);
            setTimeout('ajax_showAnswer('+faq_question_id+',true);',500);
            setTimeout('ajax_showAnswer('+faq_question_id+',true);',1500);
        }
    }
};

function historyChange(newLocation, historyData) {
    var hs_section_pos = newLocation.indexOf('_');
    var hs_section = newLocation.substring(0,hs_section_pos);
    var hs_subsection_pos = newLocation.indexOf('_',hs_section_pos+1);
    var hs_subsection = newLocation.substring(hs_section_pos+1,hs_subsection_pos);
    var hs_answer = newLocation.substring(hs_subsection_pos+1);
    if(hs_section == 0) ajax_getSection();
    if(static_url['section'] != hs_section) ajax_getSubSection(hs_section);
    if(static_url['subsection'] != hs_subsection) ajax_getAnswer(hs_subsection);
    if(static_url['answer'] != hs_answer) {
        setTimeout('ajax_showAnswer('+hs_answer+');',400);
    }
}

/* Our event handler to add history change events */
function addHistoryEvent() {
	
	var new_doc = 'Hoster.ru / ';
    var add_doc = '';

    if(static_url['section'] && document.getElementById('sectionElement_'+static_url['section'])) add_doc+= document.getElementById('sectionElement_'+static_url['section']).innerHTML + ' / ';
    if(static_url['subsection'] && document.getElementById('subSectionElement_'+static_url['subsection'])) add_doc+= document.getElementById('subSectionElement_'+static_url['subsection']).innerHTML + ' / ';
    if(static_url['answer'] && document.getElementById('answerElement_'+static_url['answer'])) add_doc+= document.getElementById('answerElement_'+static_url['answer']).innerHTML;

    if(add_doc == '') add_doc = 'FAQ';

    document.title = new_doc + add_doc;

	
    //document.title = 'Раздел №'+static_url['section']+' Подраздел №'+static_url['subsection']+' Вопрос №'+static_url['answer'];
    dhtmlHistory.add(static_url['section']+'_'+static_url['subsection']+'_'+static_url['answer'],true);
 //   setTimeout('document.title = document_title;',100);
}

function dump_props(obj, obj_name) {
   var result = "";
   for (var i in obj) {
      try{result += obj_name + "." + i + " = " + obj[i] + "<br>";}
      catch(e) {}
   }
   result += "<hr>";
   return result;
}

function createRequestObject() {
    if (window.XMLHttpRequest) {
        try {
            return new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            return new ActiveXObject('MSXML2.XMLHTTP.3.0');
        } catch (e){
            try {
                return new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e){
                try {
                    return new ActiveXObject('Microsoft.XMLHTTP');
                } catch (e){}
            }
        }
    }
}


function ajax_data(param) {
    if(req[param]) {
        ajax_setObject(param); 
    }
}

function ajax_getData(param,url) {
    if(req[param]) {
        eval('req["'+param+'"].onreadystatechange = function() {ajax_data("'+param+'");}');
        url = url+"&"+Math.random();
        req[param].open("GET", url, true);
        if (req[param].overrideMimeType) {
            req[param].overrideMimeType('text/xml');
        }
        req[param].send(null);
    }
}

function ajax_enable(param) {
    if(document.getElementById(param))
        dom[param] = document.getElementById(param);
        
    req[param] = createRequestObject();

    if (req[param].overrideMimeType) {
        req[param].overrideMimeType('text/xml');
    }
    switch (param) {
        case 'section':
            ajax_getSection();
            break;
        case 'subsection':
            ajax_getSubSection();
            break;
        case 'answer':
            ajax_getAnswer();
            break;
    }
}

function ajax_setObject(param) {
    var rqdt = '';
    if(req[param].readyState == 1) {
        dom[param].innerHTML = "...загрузка...";
    } else if(req[param].readyState == 2) {
        dom[param].innerHTML = "...загрузка...";
    } else if(req[param].readyState == 3) {
        dom[param].innerHTML = "...загрузка...";
    } else if(req[param].readyState == 4) {
        var err = false;
        switch (param) {
            case 'section':
                rqdt = req[param].responseXML.documentElement;
                if(rqdt == null) {
                    req[param].responseXML.loadXML(req[param].responseText);
                    rqdt = req[param].responseXML.documentElement;
                }
                rqdt = rqdt.getElementsByTagName('sectionList');
                if(rqdt.length==0) {err = true;break;}
                rqdt = rqdt.item(0).getElementsByTagName('section');
                if(rqdt.length==0) {dom[param].innerHTML = "Нет разделов";break;}
                for(var row=0;row<rqdt.length;row++) {
                    req_data[param].push({
                                "name": rqdt.item(row).firstChild.nodeValue,
                                  "id": rqdt.item(row).getAttribute('id')
                                });
                }
                ajax_setSection();
                break;
            case 'subsection':
                ajax_setSection();
                rqdt = req[param].responseXML.documentElement;
                if(rqdt == null) {
                    req[param].responseXML.loadXML(req[param].responseText);
                    rqdt = req[param].responseXML.documentElement;
                }
                rqdt = rqdt.getElementsByTagName('subSectionList');
                if(rqdt.length==0) {err = true;break;}
                rqdt = rqdt.item(0).getElementsByTagName('subSection');
                if(rqdt.length==0) {dom[param].innerHTML = "Нет подразделов";break;}
                dom[param].innerHTML = "";
                for(var row=0;row<rqdt.length;row++) {
                    req_data[param].push({
                                "name": rqdt.item(row).firstChild.nodeValue,
                                  "id": rqdt.item(row).getAttribute('id')
                                });
                }
                ajax_setSubSection();
                break;
            case 'answer':
                ajax_setSubSection();
                rqdt = req[param].responseXML.documentElement;
                if(rqdt == null) {
                    req[param].responseXML.loadXML(req[param].responseText);
                    rqdt = req[param].responseXML.documentElement;
                }
                rqdt = rqdt.getElementsByTagName('AQlist');
                if(rqdt.length==0) {err = true;break;}
                var question = rqdt.item(0).getElementsByTagName('question');
                if(question.length==0) {if(static_url['subsection'] == 0) {document.getElementById('answer_div').style.display='none';} else {dom[param].innerHTML = "Нет вопросов";document.getElementById('aq').innerHTML = "";}break;}
                var answer = rqdt.item(0).getElementsByTagName('answer');
                dom[param].innerHTML = "";
                document.getElementById('aq').innerHTML = "";
                var aq_array = new Array;
                //var aq_ss = new Array;
                for(var row=0;row<answer.length;row++) {
                    var name = answer.item(row).firstChild.nodeValue;
                    var id = answer.item(row).getAttribute('id');
                    if(!aq_array[id]) {
                        aq_array[id] = new Array;
                    }
                    aq_array[id]['answer'] = name;
                }
                for(var row=0;row<answer.length;row++) {
                    var name = question.item(row).firstChild.nodeValue;
                    var id = question.item(row).getAttribute('id');
                    var sId = question.item(row).getAttribute('sectionID');
                    var ssId = question.item(row).getAttribute('subSectionID');
                    /*aq_ss[id]['section'] = sId;
                    aq_ss[id]['subsection'] = ssId;*/
                    if(aq_array[id]) {
                        aq_array[id]['question'] = name;
                    }
                }
                var rqdt_aq = document.getElementById('aq');
                var rqdt_questions = '';
                for(var id in aq_array) {
                    if((id*1 > 0) == false) continue;
                    rqdt_questions += '<li><a class="v_menu_no_bg" href="/faq/q'+id+'.htm" onclick="return !ajax_showAnswer('+id+');" id="answerElement_'+id+'">'+aq_array[id]['question']+'</a></li>';
                    rqdt_aq.innerHTML += aq_template(id,aq_array[id]['question'],aq_array[id]['answer']);
                }
                dom[param].innerHTML = '<ul style="margin-top:0px;padding-top:0px">'+rqdt_questions+'<li style="list-style-type: disc;color: #FF9000"><a class="v_menu_no_bg" href="?add_question" onclick="return !ajax_showAnswer(\'addQ\');" id="answerElement_addQ"><i>Задайте свой вопрос в этом разделе</i></a></li></ul>';
                /*var tags_a = document.getElementById('aq').getElementsByTagName('a');
                for(var row=0;row<tags_a.length;row++) {
                    if(!tags_a[row].getAttribute('aTop') && tags_a[row].href.indexOf('hoster.ru/faq/q') != -1) {
                        var element = tags_a[row];
                        var elm_q = element.href.substring(element.href.indexOf('/q')+3,element.href.indexOf('.htm'));
                        alert(elm_q);
                        eval('element.onclick = function() {document.location.hash = "#'+aq_ss[elm_q]['section']+'_'+aq_ss[elm_q]['subsection']+'_'+elm_q+'"; return false;}');
                    }
                }*/
                //if(document.location.hash) document.location.hash = document.location.hash;
                break;
            case 'vote':
                rqdt = req[param].responseXML.documentElement;
                if(rqdt == null) {
                    req[param].responseXML.loadXML(req[param].responseText);
                    rqdt = req[param].responseXML.documentElement;
                }
                rqdt = rqdt.getElementsByTagName('Vote');
                if(rqdt.length==0) {err = true;break;}
                
                rqdt_yes = rqdt.item(0).getElementsByTagName('yes');
                if(rqdt_yes.length==0) {dom[param].innerHTML = "Нет данных";break;}
                rqdt_not = rqdt.item(0).getElementsByTagName('not');
                if(rqdt_not.length==0) {dom[param].innerHTML = "Нет данных";break;}
                
                rqdt_already = rqdt.item(0).getElementsByTagName('already');
                
                req_data[param]['not'] = rqdt_not.item(0).firstChild.nodeValue;
                req_data[param]['yes'] = rqdt_yes.item(0).firstChild.nodeValue;
                req_data[param]['id']  =  rqdt_yes.item(0).getAttribute('id');
                req_data[param]['already'] =  (rqdt_already.length==0)?false:true;

                ajax_showVote(req_data[param]['id']);
                break;
        }
        //if(err == true) dom[param].innerHTML = "ошибка";
        req[param].abort();
    }
}


/******* SECTION *******/
function ajax_getSection() {

    faq_visible(0);
    document.getElementById('answer_div').style.display='none';
    document.getElementById('subsection_div').style.display='none';
    req_data['section'] = new Array;
    static_url['section'] = 0;
    static_url['subsection'] = 0;
    var ajax_url = '/faq/_r0.htm?ajax&section'+key_ksdnfj;
    ajax_getData('section',ajax_url);
    return true;
}

function ajax_setSection() {
    var param = 'section';
    var array = req_data[param];
    dom[param].innerHTML = "";
    for(var row=0;row<array.length;row++) {
        var name = array[row]['name'];
        var id = array[row]['id'];
        var element_p = document.createElement('P');
        var element = document.createElement('A');
        element.id = "sectionElement_"+id;
        element.innerHTML = name;
        if(static_url[param] == id) {
            element.className="faq_active";
        } else {
            element.className="faq";
        }
        eval('element.onclick = function() {return !ajax_getSubSection('+id+');}');
        element.href = "/faq/r"+id+".htm";
        element_p.insertBefore(element, null);
        dom[param].insertBefore(element_p, null);
    }
	
}

/******* SUBSECTION *******/
function ajax_getSubSection(section) {

//////Обнуляем номер ответа чтобы не отображался в title
static_url['answer'] = 0;
////////////////////////////////////////////////////////

    if(section) {
        faq_visible(1);
        document.getElementById('answer_div').style.display='none';
        document.getElementById('subsection_div').style.display='';
        req_data['subsection'] = new Array;
        static_url['section'] = section;
        static_url['subsection'] = 0;
        var ajax_url = '/faq/_r'+section+'.htm?ajax&subsection'+key_ksdnfj;
        if(page_load) addHistoryEvent();
        ajax_getData('subsection',ajax_url);
    } else {
        dom['subsection'].innerHTML = document.getElementById('nosubsection_text').innerHTML;
    }
    return true;
}

function ajax_setSubSection() {
    var param = 'subsection';
    var array = req_data[param];
    dom[param].innerHTML = "";
    for(var row=0;row<array.length;row++) {
        var name = array[row]['name'];
        var id = array[row]['id'];
        var element_p = document.createElement('P');
        var element = document.createElement('A');
        element.id = "subSectionElement_"+id;
        element.innerHTML = name;
        if(static_url[param] == id) {
            element.className="faq_active";
        } else {
            element.className="faq";
        }
        eval('element.onclick = function() {return !ajax_getAnswer('+id+');}');
        element.href = "/faq/r"+id+".htm";
        element_p.insertBefore(element, null);
        dom[param].insertBefore(element_p, null);
    }
    ajax_showAnswer(0,true);
}

/******* ANSWER *******/
function ajax_getAnswer(subsection) {
    if(subsection) {
        faq_visible(1);
        document.getElementById('answer_div').style.display='';
        static_url['subsection'] = subsection;
        static_url['answer'] = 0;
        var ajax_url = '/faq/_r'+subsection+'.htm?ajax&answer'+key_ksdnfj;
        if(page_load) addHistoryEvent();
        ajax_getData('answer',ajax_url);
    } else {
        document.getElementById('answer_div').style.display='none';
    }
    return true;
}

function ajax_showAnswer(id,param) {
    var aq = document.getElementById('aq');
    var aq_list = aq.getElementsByTagName('span');
    document.getElementById('add_question_div').style.display = 'none';
    for(var row=0;row<aq_list.length;row++) if((aq_list[row].id).substr(0,1) == 'q') aq_list[row].style.display = 'none';
    document.getElementById('aq_title').style.display = 'none';
    if(id == 'addQ') {
        if(document.getElementById('add_question_div')) {
            static_url['answer'] = 0;
            document.getElementById('add_question_div').style.display = '';
            var addQ_select = document.getElementById('addQ_select');
            for(var i=0;i<addQ_select.options.length;i++) {
                if(static_url['subsection'] == addQ_select.options[i].value) {
                    addQ_select.options.selectedIndex = i;
                    break;
                }
            }
            // addQ_select
            return true;
        }
    } else {
        if(document.getElementById('q'+id)) {
            static_url['answer'] = id;
            document.getElementById('aq_title').style.display = '';
            document.getElementById('q'+id).style.display = '';
            if(page_load && !param) {
                addHistoryEvent();
                ajax_getVote(id);
            }
            return true;
        }
    }
    //document.getElementById('aq_title').style.display = 'none';
    return false;
}

function aq_template(id,question,answer) {
    var ret = '';
    ret += '<span id="q'+id+'" style="display:none">';
    ret += '<UL style="margin-top:0px;padding-top:0px">';
    //ret += '<LI><P class="content"><A name="'+id+'"></A><B>'+question+'</B></p></LI>';
    ret += '<LI><P class="content"><B>'+question+'</B></p></LI>';
    ret += '<LI><P class="content">'+answer+'</p></LI>';
    ret += '</UL>';
    ret += '<div style="width:10px;float:left"><A href="#top" title="Вверх" aTop="1"><IMG border="0" src="/images/up.png"></A></div>';
    ret += '<div style="margin-left: 10px; width:600px;float:left" class="content">Постоянный адрес ответа на этот вопрос: <a href="http://www.hoster.ru/faq/q'+id+'.htm">http://www.hoster.ru/faq/q'+id+'.htm</a></div>';
    ret += '<span id="v'+id+'" style="display:none"><div style="width:300px;float:right;text-align:center" class="content">';
    ret += 'Была ли эта информация полезной для Вас?<br>';
    ret += '<span id="vv'+id+'"><div style="float:left;width:49%;text-align:right;"><a href="javascript: ajax_chVote('+id+',1);">ДА</a>&nbsp;&nbsp;</div><div style="float:left;width:2%">/</div><div style="float:left;width:49%;text-align:left;">&nbsp;&nbsp;<a href="javascript: ajax_chVote('+id+',-1);">НЕТ</a></div><br></span>';
    ret += '<div style="float:left;width:49%;text-align:right;"><b><span id="vry'+id+'">0</span></b>&nbsp;&nbsp;</div><div style="float:left;width:2%">/</div><div style="float:left;width:49%;text-align:left;">&nbsp;&nbsp;<b><span id="vrn'+id+'">0</span></b></div><br>';
    ret += '</div></span>';
    ret += '</span>';
    return ret;
}


/******* VOTE *******/
function ajax_getVote(id) {
    if(id) {
        req_data['vote'] = new Array;
        var ajax_url = '/faq/_q'+id+'.htm?ajax&vote'+key_ksdnfj;
        ajax_getData('vote',ajax_url);
    } else {
        document.getElementById('v'+id).style.display='none';
    }
    return true;
}

function ajax_showVote(id) {
    if(document.getElementById('v'+id)) {
        document.getElementById('vry'+id).innerHTML=req_data['vote']['yes'];
        document.getElementById('vrn'+id).innerHTML=req_data['vote']['not'];
        //document.getElementById('vv'+id).style.display = (req_data['vote']['already'])?'none':'';
        document.getElementById('v'+id).style.display = '';
        return true;
    }
    return false;
}

function ajax_chVote(id,param) {
    if(id) {
        req_data['vote'] = new Array;
        var ajax_url = '/faq/_q'+id+'.htm?ajax&vote&vote_ch='+param+key_ksdnfj;
        ajax_getData('vote',ajax_url);
    }
}

/******* ANSWER *******/
function faq_visible(param) {
    //if(document.getElementById('map_div')) document.getElementById('map_div').style.display = 'none';
    if(document.getElementById('map_div')) document.getElementById('map_div').style.display=(param)?'none':'';
    if(document.getElementById('map_div_listed')) document.getElementById('map_div_listed').style.display=(param)?'none':'';
    if(document.getElementById('map_div_not_listed')) document.getElementById('map_div_not_listed').style.display=(param)?'':'none';
}