﻿/*
 * funcoes para controlo da arvore de categorias
 */

/*
 * vars
 */
// colocar a 1 para debug via alerts
var debug_tree = 0;


/*
 * core
 */
function show_node(node) {
    if (debug_tree == 1) alert('show_node: ' + node);
    document.getElementById(node).style.display = 'block';
}

function hide_node(node) {
    if (debug_tree == 1) alert('hide_node: ' + node);
    document.getElementById(node).style.display = 'none';
}

function show_plus(node) {
    if (document.getElementById(node + '_mais')) {
        document.getElementById(node + '_mais').style.display = 'inline';
        document.getElementById(node + '_menos').style.display = 'none';
    }
}

function show_minus(node) {
    if (document.getElementById(node + '_mais')) {
        document.getElementById(node + '_mais').style.display = 'none';
        document.getElementById(node + '_menos').style.display = 'inline';
    }
}

function process_tree(parm) {
    // vars
    var id_pai = 0;
    var i = 0;
    var ids = 0;
    var node = 0;
    var r_pais = 0;
    var abre = 1;
    var id_categoria = 0;

    // apanha o id da categoria
    if (parm)
        id_categoria = getURLParam(parm);
    else
        id_categoria = getURLParam('catalogId');
    if (debug_tree == 1) alert('1. categoria id: ' + id_categoria);

    // encontra o no relativo ao id
    var expressao = 'd*_{1}' + id_categoria + '$';
    var reg_expressao = new RegExp(expressao);
    var r_node = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');
    if (r_node[0])
        node = r_node[0];
    else
        return 0;
    if (debug_tree == 1) alert('2. r_node: ' + r_node);

    open_tree_to_node(id_categoria);
}

function open_tree_to_node(id_categoria) {
    // abre os que estão abaixo do nó
    var i = 0;
    var ids = 0;
    var r_pais = 0;

    var id_pai = id_categoria;
    var expressao = '^' + id_pai + '{1}_d*';
    var reg_expressao = new RegExp(expressao);
    var r_filhos = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');
    for (i = 0; i < r_filhos.length; i++) {
        show_node(r_filhos[i]);
    }

    if (debug_tree == 1) alert('open_tree_to_node 1. r_filhos: ' + r_filhos);

    // mostra os de pai igual, enquanto pai = 0 e com pai = id em cada ciclo
    id_pai = id_categoria;
    i = 0;
    do {

        expressao = 'd*_{1}' + id_pai + '$';
        reg_expressao = new RegExp(expressao);
        r_pais = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');
        if (r_pais.length > 0) {
            ids = r_pais[0].split('_');
            id_pai = ids[0];
            expressao = '^' + id_pai + '{1}_d*';
            reg_expressao = new RegExp(expressao);
            r_pais = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');

            for (i = 0; i < r_pais.length; i++) {
                show_node(r_pais[i]);
            }

            if (debug_tree == 1) alert('open_tree_to_node 2. ' + (i++) + '. id_pai: ' + id_pai + ' / r_pais: ' + r_pais);
        }
        else break;
    }
    while (id_pai != 0);

    // mostra os sinais menos
    id_pai = id_categoria;
    do {
        expressao = 'd*_{1}' + id_pai + '$';
        reg_expressao = new RegExp(expressao);
        r_pais = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');
        node = r_pais[0];
        show_minus(node);
        if (node) {
            ids = node.split('_');
            id_pai = ids[0];
        }
        else break;
    }
    while (id_pai != 0);
}

/*
 * auxiliares
 */
function getURLParam(strParamName) {
    var strReturn = "";
    var strHref = window.location.href;
    if (strHref.indexOf("?") > -1) {
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
        var aQueryString = strQueryString.split("&");
        for (var iParam = 0; iParam < aQueryString.length; iParam++) {
            if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }
        }
    }
    return unescape(strReturn);
}

function change_node_style() {
    var node;
    var css_class;

    node = getURLParam('catalogId');
    
    var teste = 'd*_{1}' + node + '$';
    var reg_teste = new RegExp(teste);
    var rs = getElementsByRegExpId(reg_teste, document.forms[0], 'span');

    if (document.getElementById(rs[0])) {
        teste = '^' + node + '{1}_d*';
        reg_teste = new RegExp(teste);
        rs1 = getElementsByRegExpId(reg_teste, document.forms[0], 'span');
      //  alert(rs1);
        if (rs1.length > 0)
            css_class = "red_category";
        else {
            css_class = "sub_category_selected";

            var ids = rs[0].split('_');
            var id_pai = ids[0];
            teste = teste = 'd*_{1}' + id_pai + '$';
            reg_teste = new RegExp(teste);
            rs2 = getElementsByRegExpId(reg_teste, document.forms[0], 'span');
            document.getElementById(rs2[0]).className = "red_category";
        }
        document.getElementById(rs[0]).className = css_class;
    }
}

function change_node_style_outdoor() {
    var node;
    var css_class;

    node = getURLParam('catalogId');

    var teste = 'd*_{1}' + node + '$';
    var reg_teste = new RegExp(teste);
    var rs = getElementsByRegExpId(reg_teste, document.forms[0], 'span');

    if (document.getElementById(rs[0])) {
        teste = '^' + node + '{1}_d*';
        reg_teste = new RegExp(teste);
        rs1 = getElementsByRegExpId(reg_teste, document.forms[0], 'span');
        //  alert(rs1);
        if (rs1.length > 0)
            css_class = "orange_category";
        else {
            css_class = "sub_category_selected_outdoor";

            var ids = rs[0].split('_');
            var id_pai = ids[0];
            teste = teste = 'd*_{1}' + id_pai + '$';
            reg_teste = new RegExp(teste);
            rs2 = getElementsByRegExpId(reg_teste, document.forms[0], 'span');
            document.getElementById(rs2[0]).className = "orange_category";
        }
        document.getElementById(rs[0]).className = css_class;
    }
}

function getElementsByRegExpId(p_regexp, p_element, p_tagName) {
    p_element = p_element === undefined ? document : p_element;
    p_tagName = p_tagName === undefined ? '*' : p_tagName;
    var v_return = [];
    var v_inc = 0;
    for (var v_i = 0, v_il = p_element.getElementsByTagName(p_tagName).length; v_i < v_il; v_i++) {
        if (p_element.getElementsByTagName(p_tagName).item(v_i).id && p_element.getElementsByTagName(p_tagName).item(v_i).id.match(p_regexp)) {
            // v_return[v_inc] = p_element.getElementsByTagName(p_tagName).item(v_i);
            v_return[v_inc] = p_element.getElementsByTagName(p_tagName).item(v_i).id;
            v_inc++;
        }
    }
    return v_return;
}


/*
*  funções não utilizadas, incompletas ou com bugs
*/
 
//function close_tree_from_node(id_categoria) {
//    var i = 0;
//    var ids = 0;
//    var r_pais = 0;
//    
//    // encontra os que estao dentro do nó

//    // enquanto existirem, fecha-os
//    // em cada ciclo id = id_pai
//    var id_pai = id_categoria;
//    var expressao = '^' + id_pai + '{1}_d*';
//    var reg_expressao = new RegExp(expressao);
//    var r_filhos = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');
//    do {
//        
//        for (i = 0; i < r_filhos.length; i++) {
//            hide_node(r_filhos[i]);
//        }
//        
//        ids = r_filhos[0].split('_');
//        id_pai = ids[1];
//        expressao = '^' + id_pai + '{1}_d*';
//        reg_expressao = new RegExp(expressao);
//        r_filhos = getElementsByRegExpId(reg_expressao, document.forms[0], 'span');

//    }
//    while(r_filhos.length > 0);
//
//}

// abre e fecha o menuzinho.
//function do_menu(e) {

//    document.getElementById(e).className = "selectedMenuItem";
//    if (document.getElementById('hdnSelectedMenuItem').value)
//        if (document.getElementById('hdnSelectedMenuItem').value != e)
//            document.getElementById(document.getElementById('hdnSelectedMenuItem').value).className = '';
//    document.getElementById('hdnSelectedMenuItem').value = e;
//    
//    var ids = e.split('_');
//    var id_pai = ids[0];
//    var id = ids[1];

//    var teste = '^' + id + '{1}_d*';
//    var reg_teste = new RegExp(teste);

//    var r = getElementsByRegExpId(reg_teste, document.forms[0], 'span');

//    var display = '';
//    var status = '0';
//    var menos = '';
//    var mais = '';
//    
//    // fecha ramo
//    if (document.getElementById(e + '_status').value == '1') {
//        display = 'none';
//        status = '1';
//        mais = 'none';
//        menos = 'inline';
//        document.getElementById(e + '_status').value = '0';
//        document.getElementById(e + '_menos').style.display = 'none';
//        document.getElementById(e + '_mais').style.display = 'inline';
//    }
//    else if (document.getElementById(e + '_status').value == '0') {
//    // abre ramo
//        display = 'block';
//        status = '0';
//        mais = 'inline';
//        menos = 'none';
//        document.getElementById(e + '_status').value = '1';
//        document.getElementById(e + '_menos').style.display = 'inline';
//        document.getElementById(e + '_mais').style.display = 'none';
//    }

//    for (i = 0; i < r.length; i++) {
//      // alert('> ' + r[i]);
//        document.getElementById(r[i] + '_status').value = status;
//        document.getElementById(r[i] + '_mais').style.display = mais;
//        document.getElementById(r[i] + '_menos').style.display = menos;
//        document.getElementById(r[i]).style.display = display;

//        if (display == 'none') {
//            ids = r[i].split('_');
//            reg_teste = new RegExp('^' + ids[1] + '{1}_d*');
//            r = r.concat(getElementsByRegExpId(reg_teste, document.forms[0], 'span'));
//        }
//    }

//
//}



//function open_sub_menu_left(id) {
//    if (!document.getElementById('sub_menu_left_' + id))
//        return;
//    else {
//        var ul = document.getElementById('sub_menu_left_' + id);
//        ul.style.display = 'block';
//    }
//}
