var bc = '#dddddd'

//переименовываем слой

var wsNames1 = new Hashtable();
wsNames1.put('Адреса БТИ', 'Адреса');
wsNames1.put('Новые участки', 'Предложения участков')
wsNames1.put('Проекты отводов', 'Предложения участков')

var wsNames2 = new Hashtable();
wsNames2.put('Адреса БТИ', 'Адреса');
wsNames2.put('Новые участки', 'Предложения участков')
wsNames2.put('Проекты отводов', 'Предложения участков')

var wsNames3 = new Hashtable();
wsNames3.put('Адреса БТИ', 'Адреса');
wsNames3.put('Новые участки', 'Предложения участков')
wsNames3.put('Проекты отводов', 'Предложения участков')

var wsNames4 = new Hashtable();
wsNames4.put('Адреса БТИ', 'Адреса');
wsNames4.put('Зоны с особыми условиями использования территории', 'Особо охраняемые природные территории');
wsNames4.put('Новые участки', 'Предложения участков')
wsNames4.put('Проекты отводов', 'Предложения участков')

var wsNames5 = new Hashtable();
wsNames5.put('Адреса БТИ', 'Адреса');
wsNames5.put('Новые участки', 'Предложения участков')
wsNames5.put('Проекты отводов', 'Предложения участков')

var wsNames6 = new Hashtable();
wsNames6.put('Адреса БТИ', 'Адреса');
wsNames6.put('Новые участки', 'Предложения участков')
wsNames6.put('Проекты отводов', 'Предложения участков')
wsNames6.put('Сейсмозонирование', 'Фотопанорама - 3dtomsk.ru')

var wsNames7 = new Hashtable();
wsNames7.put('Адреса БТИ', 'Адреса');
wsNames7.put('Новые участки', 'Предложения участков')
wsNames7.put('Проекты отводов', 'Предложения участков')

var wsNames8 = new Hashtable();
wsNames8.put('Адреса БТИ', 'Адреса');
wsNames8.put('Зоны с особыми условиями использования территории', 'Зоны регулирования застройки и охраны культурного наследия');
wsNames8.put('Новые участки', 'Предложения участков')
wsNames8.put('Проекты отводов', 'Предложения участков')

var names = new Array(wsNames1, wsNames2, wsNames3, wsNames4, wsNames5, wsNames6, wsNames7, wsNames8);



function updateButtons(){
        $('.np_button').button();
        $('.gr_button').button({text: false, icons: {primary: 'ui-icon-home'}});
        $('.export_button').button({text: false, icons: {primary: 'ui-icon-document'}});
        $('.full_button').button({text: false, width: 16, height: 16, icons: {primary: 'ui-icon-clipboard'}});
}

//search
var autoHeight = true;

function getAlias(text){
    if(cur_ws < names.length){
        var alias = names[cur_ws].get(text);
        if(alias)
            text = alias;
    }
    return text;
}

function initSearchAspects(data){
    var searchSelect = document.getElementById("aspects_select");
    if(!searchSelect)
        return;

    $("#aspects_select").empty();

    for(var i = 0; i < data.search_aspects.length; i++)
    {
        var optgroup = document.createElement('OPTGROUP');
        optgroup.setAttribute("label", data.search_aspects[i].name);
        for(var j = 0; j < data.search_aspects[i].search_aspects_group.length;j++)
        {
            var option = document.createElement('option');
            option.setAttribute("value", data.search_aspects[i].search_aspects_group[j].value);
            option.appendChild(document.createTextNode(getAlias(data.search_aspects[i].search_aspects_group[j].Text)))
            optgroup.appendChild(option);
        }
        searchSelect.appendChild(optgroup);
    }
}


function startSearch()
{
    var search_string = $("#search_string").val();
    if(search_string == null)
        return;
    var fd_select = $("#aspects_select").val();
    if(fd_select == null)
        return;
    var url = url_server + 'ActionServlet?action=wl_search_component_xml&search_string=' + encodeURIComponent(search_string) + '&fd=' + fd_select;

    $("#search_result_block").dialog("open");
    $("#search_result_block").dialog( "option", "draggable", false );
    $("#search_result_block").dialog( "option", "resizable", false );
    jQuery('#search_result_block').showLoading();

    $.getJSON(url, function(data){
        jQuery('#search_result_block').hideLoading();
        if(autoHeight){
            $("#search_result_block").dialog( "option", "draggable", true );
            $("#search_result_block").dialog( "option", "resizable", true );
        }
        $("#search_result_content").detach();
        $("#search_result_block").append(addSearchResults(data));
        updateButtons();
        if(autoHeight){
            var h = parseInt($( "#search_result_content" ).height()) + 50;
            if(h > initH - 100){
                h = initH - 100;
            }
            $("#search_result_block").dialog({ height: h });
        }
        document.getElementById('search_string').focus();
    });

}

function addSearchResults(obj)
{
    var sr_tbl_cont = document.createElement('table');
    sr_tbl_cont.width = '100%';
    var table = document.createElement('tbody');
    var tr_p = document.createElement('tr');
    var td_p = document.createElement('td');
    sr_tbl_cont.appendChild(table);
    sr_tbl_cont.id = "search_result_content";
    table.appendChild(tr_p);
    tr_p.appendChild(td_p);
    td_p.appendChild(createSearchResultsTable(obj.results));
    td_p.appendChild(createNavigationTable(obj.navigation));
    return sr_tbl_cont;
}

function createSearchResultTable(obj)
{
    var tbl = document.createElement('table');
    tbl.width = '100%';
    var table = document.createElement('tbody');
    tbl.appendChild(table);
    table.style.marginBottom = '10px';
    printFactContent(obj,table, false);
    return tbl;
}

function createSearchResultsTable(results)
{
    var tbl = document.createElement('table');
    tbl.width = '100%';
    var table = document.createElement('tbody');
    tbl.appendChild(table);
    var grey = true;
    for(var i = 0; i < results.length; i++)
    {
        var tr_result = document.createElement('tr');
        if(grey)
            tr_result.style.backgroundColor = bc;
        grey = !grey;
        var td_result = document.createElement('td');
        var table_result = createSearchResultTable(results[i]);
        td_result.appendChild(table_result);
        tr_result.appendChild(td_result);
        table.appendChild(tr_result);
    }
    return tbl;
}

function searchPage(page)
{
  var url = url_server + 'ActionServlet?action=wl_search_component_xml&page='+page;
    $.getJSON(url, function(data){
        $("#search_result_content").detach();
        $("#search_result_block").append(addSearchResults(data));
        updateButtons();
        if(autoHeight){
            var h = parseInt($( "#search_result_content" ).height()) + 50;
            if(h > initH - 100){
                h = initH - 100;
            }
            $("#search_result_block").dialog({ height: h });
        }
        $("#search_result_block").dialog("open");
    });
}

//next-prev

function createNavigationTable(navig)
{
    var tbl = document.createElement('table');
    var table = document.createElement('tbody');
    tbl.appendChild(table);
    table.width = '100%';
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    var prev_page = parseInt(navig.prev_page);
    var next_page = parseInt(navig.next_page);
    if(prev_page >= 0)
    {
        var a_p = document.createElement('a');
        a_p.style.cursor = 'pointer';
        a_p.setAttribute("onclick",'searchPage("' + prev_page +'")');
        a_p.innerHTML = navigation_text_previous;
        a_p.className = 'np_button';
        td.appendChild(a_p);
    }
    td.innerHTML += '&nbsp&nbsp&nbsp&nbsp&nbsp';
    if(next_page > 0)
    {
        var a_n = document.createElement('a');
        a_n.style.cursor = 'pointer';
        a_n.onclick = new Function('searchPage(' + next_page + ')');
        a_n.innerHTML = navigation_text_next;
        a_n.className = 'np_button';
        td.appendChild(a_n);
    }
    tr.appendChild(td);
    var empty_td = document.createElement('td');
    empty_td.align = 'right';
    tr.appendChild(empty_td);
    table.appendChild(tr);
    return tbl;
}

function createNavigationFullNodeTable(navig, factName, contNodeId)
{
    var tbl = document.createElement('table');
    var table = document.createElement('tbody');
    tbl.appendChild(table);
    table.width = '100%';
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    var prev_page = parseInt(navig.prev_page);
    var next_page = parseInt(navig.next_page);
    if(prev_page >= 0)
    {
        var a_p = document.createElement('a');
        a_p.style.cursor = 'pointer';
        a_p.setAttribute("onclick",'fullPages("' + navig.factId +'","' + prev_page + '","' + contNodeId + '","' +navig.parentFact+ '","'+navig.parentFD+'")');
        a_p.innerHTML = navigation_text_previous;
        a_p.className = 'np_button';
        td.appendChild(a_p);
    }
    td.innerHTML += '&nbsp&nbsp&nbsp&nbsp&nbsp';
    if(next_page > 0)
    {
        var a_n = document.createElement('a');
        a_n.style.cursor = 'pointer';

        a_n.onclick = new Function('fullPages("' + navig.factId +'",' + '"' + next_page + '","' + contNodeId + '","' +navig.parentFact+ '","'+navig.parentFD+'")');
        a_n.innerHTML = navigation_text_next;
        a_n.className = 'np_button';
        td.appendChild(a_n);
    }
    tr.appendChild(td);
    var empty_td = document.createElement('td');
    empty_td.align = 'right';
    tr.appendChild(empty_td);
    table.appendChild(tr);
    return tbl;
}


//full view

function createFactRow(name, value)
{
    var trf = document.createElement('tr');
    var td0 = document.createElement('td');
    var td1 = document.createElement('td');
    td1.align = 'left';
    td1.innerHTML = name;
    td1.style.color = field_name_color;
    var td2 = document.createElement('td');
    td2.align = 'left';
    td2.innerHTML = value;
    td2.style.color = field_value_color;
    trf.appendChild(td0);
    trf.appendChild(td1);
    trf.appendChild(td2);
    return trf;
}

function printFactContent(obj, out_table, coloring)
{
    var factId;
    if(obj.factId)
        factId = obj.factId;
    var fact;
    if(obj.fact)
        fact = obj.fact;
    var name;
    var value
    if(obj.results)
    {
        if(obj.results.length > 0)
        {
            name = obj.results[0].name;
            value = obj.results[0].value;
        }

        var firstRow = createFactRowWithLink(factId,fact,name,value);
        if(coloring){
            firstRow.style.backgroundColor = bc;
        }
        out_table.appendChild(firstRow);
        for(var i = 1; i < obj.results.length; i++){
            var row = createFactRow(obj.results[i].name,obj.results[i].value)
            if(coloring){
                row.style.backgroundColor = bc;
            }
            out_table.appendChild(row);
        }
    }
}

function createXfileLink(name, fileId){
    var tr = document.createElement('tr');
    var th_a = document.createElement('th');
    th_a.colSpan = '3';
    th_a.align = 'left';
    var a = document.createElement('a');
    a.style.cursor = 'pointer';
    a.target = '_blank';
    a.href = url_server + 'ActionServlet?action=xfile&fileId='+fileId;
    a.innerHTML = name;
    th_a.appendChild(a);
    tr.appendChild(th_a);
    return tr;
}

var userInit = false;

function createFactRowWithLink(factId,fact, name, value)
{
    if(userInit){
        userInit = false;
        viewFullObject(factId, fact);
    }

    var tr = document.createElement('tr');
    var td_full = document.createElement('td');
    td_full.width = '24px';
    td_full.appendChild(createFactLink(factId,fact));
    tr.appendChild(td_full);
    var td0 = document.createElement('td');
    td0.align = "left";
    td0.width = '30%';
    td0.style.color = field_name_color;
    if(name)
        td0.innerHTML = name;
    else
        td0.innerHTML = 'Наименование';
    tr.appendChild(td0);
    var td1 = document.createElement('td');
    td1.align = "left";
    td1.style.color = field_value_color;
    if(value)
        td1.innerHTML = value;
    else
        td1.innerHTML = 'не указано';
    tr.appendChild(td1);
    return tr;
}

function createFactLink(factId,fact)
{
    var a_full = document.createElement('a');
    a_full.title = 'Перейти к детальному описанию объекта';
    a_full.style.cursor = 'pointer';
    a_full.onclick = new Function('viewFullObject(' + factId + ',' + fact + ')');
    a_full.innerHTML = goto_full_description_object;
    a_full.className = 'full_button';
    return a_full;
}

function viewFullObject(fd, fact)
{
    var url = url_server + 'ActionServlet?action=wl_full_component_xml&fd='+fd+"&fact="+fact;
    $("#full_block").dialog("open");
    $("#full_block").dialog( "option", "draggable", false );
    $("#full_block").dialog( "option", "resizable", false );
    jQuery('#full_block').showLoading();
    $.getJSON(url, function(data){
        jQuery('#full_block').hideLoading();
        if(autoHeight){
            $("#full_block").dialog( "option", "draggable", true );
            $("#full_block").dialog( "option", "resizable", true );
        }
        addFullView(data);
    });

}

var undoredo;

function addFullOneTab(obj)
{
    var full_cont = document.createElement('table');
    full_cont.id = "full_content";
    var full_tbody = document.createElement('tbody');
    full_cont.appendChild(full_tbody);

    for(var j = 0; j < obj.root.length; j++)
    {
        var full_tr = document.createElement('tr');
        var full_td = document.createElement('td');
        full_tbody.appendChild(full_tr);
        full_tr.appendChild(full_td);
        if(j == 0){
            full_td.appendChild(createFirstFullNodeDIV(obj.root[j].full_nodes[0],'node_container_'+j,0,0));
        }
        else{
            full_td.appendChild(createFirstFullNodeDIV(obj.root[j].full_nodes[0],'node_container_'+j,30,0));
        }
    }

    if(!undoredo){
        undoredo = new UndoRedo();
    }
    undoredo.push(full_cont, '&nbsp&nbsp'+getAlias(obj.root[0].full_nodes[0].factName), false);
}

var oneTab = true;

function addFullView(obj)
{
    if(obj.root[0].full_nodes.length > 1 || obj.root[0].full_nodes[0].xfiles || obj.root[0].full_nodes[0].reports){
        oneTab = false;
    }
    else{
        oneTab = true;
    }
    if(oneTab == false){
        var full_cont = document.createElement('table');
        full_cont.id = "full_content";
        var full_tbody = document.createElement('tbody');
        full_cont.appendChild(full_tbody);

        for(var j = 0; j < obj.root.length; j++)
        {
            var full_tr = document.createElement('tr');
            var full_td = document.createElement('td');
            full_tbody.appendChild(full_tr);
            full_tr.appendChild(full_td);

            var div = document.createElement('div');
            div.id = 'fact_tab';
            var ul = document.createElement('ul');

            var firstRow;
            var firstRowDiv = document.createElement('div');
            firstRowDiv.id = 'node_container_'+0+'_'+0;

            if(j == 0){
                firstRow = createFirstFullNodeDIV(obj.root[j].full_nodes[0],0,0);
            }
            else{
                firstRow = createFirstFullNodeDIV(obj.root[j].full_nodes[0],30,0);
            }


            firstRowDiv.appendChild(firstRow);

            var li = document.createElement('li');
            var a = document.createElement('a');
            a.href = '#node_container_'+j+'_'+0;
            a.innerHTML = 'Детальное описание';
            li.appendChild(a);
            ul.appendChild(li);

            var xFilesDiv = addXFiles(obj.root[j].full_nodes[0]);
            if(xFilesDiv){
                var li = document.createElement('li');
                var a = document.createElement('a');
                a.href = '#xfiles';
                a.innerHTML = 'Приложения';
                li.appendChild(a);
                ul.appendChild(li);
            }

            var operationsDiv = addOperations(obj.root[j].full_nodes[0]);
            if(operationsDiv){
                var li = document.createElement('li');
                var a = document.createElement('a');
                a.href = '#operations';
                a.innerHTML = 'Операции';
                li.appendChild(a);
                ul.appendChild(li);
            }


            if(obj.root[j].full_nodes.length > 1){
                for(var i = 1; i < obj.root[j].full_nodes.length; i++){
                    var li = document.createElement('li');
                    var a = document.createElement('a');
                    a.href = '#node_container_'+j+'_'+i;
                    a.innerHTML = obj.root[j].full_nodes[i].factName;
                    li.appendChild(a);
                    ul.appendChild(li);
                }
                div.appendChild(ul);
                div.appendChild(firstRowDiv);
                if(xFilesDiv){
                    div.appendChild(xFilesDiv);
                }
                if(operationsDiv){
                    div.appendChild(operationsDiv);
                }
                for(var i = 1; i < obj.root[j].full_nodes.length; i++)
                    div.appendChild(createFullNodeDIV(obj.root[j].full_nodes[i],'node_container_'+j+'_'+i,10,20));
            }
            else{
                div.appendChild(ul);
                div.appendChild(firstRowDiv);
                if(xFilesDiv){
                    div.appendChild(xFilesDiv);
                }
                if(operationsDiv){
                    div.appendChild(operationsDiv);
                }
            }
            full_td.appendChild(div);
        }

        if(!undoredo){
            undoredo = new UndoRedo();
        }
        undoredo.push(full_cont, '&nbsp&nbsp'+getAlias(obj.root[0].full_nodes[0].factName), true);
    }
    else{
        addFullOneTab(obj);
    }
}

function addXFiles(obj){
    if(obj.xfiles){
        var div = document.createElement('div');
        div.id = 'xfiles';
        var tbl = document.createElement('table');
        var table = document.createElement('tbody');

        for(var k = 0; k < obj.xfiles.length; k++){
            table.appendChild(createXfileLink(obj.xfiles[k].docName, obj.xfiles[k].docId));
        }
        tbl.appendChild(table);
        div.appendChild(tbl);
        return div;
    }
}

function addOperations(obj){
}

var fileDownloadCheckTimer;
var token;
function opClick(obj, procId, pkValue){
    token = new Date().getTime();
    obj.href= url_server+'?action=wl_base_reports&procId='+procId+'&pkValue='+pkValue+'&token='+token;
    jQuery('#full_block').showLoading();
    fileDownloadCheckTimer = window.setInterval(function () {
        var cookieValue = jQuery.cookie(token);
        if (cookieValue == 'true'){
           finishDownload();
        }
    }, 1000);
}

function finishDownload(){
    window.clearInterval(fileDownloadCheckTimer);
    jQuery.cookie(token, 'false');
    jQuery('#full_block').hideLoading();
}



function clearFullView(fullContainer)
{
    var oldNodes = fullContainer.getElementsByTagName('div');
    if(oldNodes)
        if(oldNodes.length > 0)
            for(var i = oldNodes.length - 1; i >= 0; i--)
                fullContainer.removeChild(oldNodes[i]);
}

function createFullNodeDIV(obj,divId,marginTop,marginLeft)
{
    var div = document.createElement('div');
    div.id = divId;
    if(marginTop)
        div.style.marginTop = marginTop;
    if(marginLeft)
        div.style.marginLeft = marginLeft;

    div.appendChild(createFullNodeTable(obj));

    if(obj.navigation)
        div.appendChild(createNavigationFullNodeTable(obj.navigation, obj.factName, divId));
    return div;
}

function createFullNodeTable(obj)
{
    var tbl = document.createElement('table');
    var table = document.createElement('tbody');

    if(obj.facts){
        var grey = true;
        for(var i = 0; i < obj.facts.length; i++){
            printFactContent(obj.facts[i],table, grey);
            grey = !grey;
        }
    }
    tbl.appendChild(table);
    return tbl;
}


function createFirstFullNodeDIV(obj, divId, marginTop,marginLeft)
{
    var tbl = document.createElement('table');
    if(marginTop)
        tbl.style.marginTop = marginTop;
    if(marginLeft)
        tbl.style.marginLeft = marginLeft;
    var table = document.createElement('tbody');

     if(obj.facts)
     {
         var grey = true;
         for(var i = 0; i < obj.facts.length; i++){
            var row = createFactRow(obj.facts[i].name,obj.facts[i].value)
            if(grey){
                row.style.backgroundColor = bc;
            }
            table.appendChild(row);
            grey = !grey;
         }
     }
    tbl.appendChild(table);
    return tbl;
}

var curFullPagesContanerId;
function fullPages(fd, page, parentId, parentFactId, parentFD)
{
    curFullPagesContanerId = parentId;
    var url = url_server + 'ActionServlet?action=wl_full_component_xml&fd='+fd+'&parentFact='+parentFactId+'&page='+page+'&parentFD='+parentFD;
    $.getJSON(url, function(data){
        addFullViewPages(data);
    });

}

function addFullViewPages(full_node)
{
    var cont = document.getElementById(curFullPagesContanerId);
    if(cont == null)
    {
        alert("node_cont is null!\n" + cont + "\n" + curFullPagesContanerId);
        return;
    }

    cont.innerHTML = "";

    cont.appendChild(createFullNodeTable(full_node));

    if(full_node.navigation)
        cont.appendChild(createNavigationFullNodeTable(full_node.navigation, full_node.factName, curFullPagesContanerId));
    updateButtons();
}





