function isset( mixed_var ) {    // Determine whether a variable is set
    // 
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 
    var i = 0, argc = arguments.length, argv = arguments, set=true;
 
    for (i = 0; i< argc; i++){
        if( argv[i] === undefined ){
            set = false;
            break;
        }
    }
 
    return set;
}

var rubricator = [];
var rubricator_addsId = [];
var rubricatorById = [];
var all_rubricator = [];
var a_rid=0;
var filt_rub_ind = 0;

function rubricatorCreate()
{	
	var url = '/ajax/get_rubricator/';
	
    $.ajax({
        url:url,
        type:'POST',
        data:{'post':true},
        dataType:'xml',
        error:function(){alert('Ошибка при создании рубрикатора');},
        success:function(xml)
        {
            count=0;
            res = $(xml).find('res');
            res.find('bl').each(function()
            {
                par = $(this).attr('par');
                rubricator[par]=[];
                $(this).find('elm').each(function()
                {
                    var row = [$(this).attr('id'),$(this).text(),par];
                    rubricatorById[row[0]]=row;
                    rubricator[par].push(row);
                    count++;
                })
            });
            all_rubricator=rubricator.slice();
            rubricator_print_tree(false);             
        }
    })
}


function rubricator_clear()
{
    $("#rub_filter").val('');
    rubricator_filter(document.getElementById('rub_filter'));
    rubricator_blur();

}

function rubricator_focus()
{
    if ($("#rub_filter").val()=='Введите рубрику')
    {
        $("#rub_filter").val('');
        $("#rub_filter").css({'color':'#000000'});
    }
}

function rubricator_blur()
{
    if ($("#rub_filter").val()=='')
    {
        $("#rub_filter").val('Введите рубрику');
        $("#rub_filter").css({'color':'#A2A2A2'});
    }
}

function rubricator_print_tree(flag)
{
            if (isset(flag))
            {
                rubricator=all_rubricator.slice();
                tmpvars['rubr_all']=true;
                var expand=false;
            }
            else
            {   var expand=true;}
            tree  = getTree(0,false,expand);
            tree = tree;
            $("#rubricator_container").html(tree);
}

 var cocococ=0; 
 var filter_reg=null;
 
function rubricator_push(parent,elm,replace)
{
    if (!isset(rubricator_addsId[elm[0]]))
    {
        rubricator_addsId[elm[0]]=true;
        if (!isset(rubricator[parent])){rubricator[parent]=[];}
        rubricator[parent].push(elm);
    }
    else
    {
        //Если такой элемент есть и нужно его заменить - заменяем
        if (isset(replace))
        {
            var node=rubricator[parent];
            for (var i=0;i<node.length;i++)
            {
                if (node[i][0]==elm[0])
                {
                    rubricator[parent][i]=elm;
                    break;
                }
            }
        }
    }
} 


function rubricator_push_tree(parent)
{
    ///Если есть элементы то
    if (isset(all_rubricator[parent]))
    {
        var node = all_rubricator[parent];  ///элементы одного уровня
        for (var i =0;i< node.length;i++) // пробегаемся
        {
            rubricator_push(parent,node[i]);//добавляем текущий элемент
            rubricator_push_tree(node[i][0]);//Добавляем элементы данной ветки
        }
    }
}
 
function rubricator_filter(obj)
{
    var filt = obj.value;
    if (obj.value.length>=3)
    {
        $.ajax({
            url:"/ajax/get_filt_rubricator/",
            type:'POST',
            data:{'query':filt},
            success:function(data)
            {
                delete tmpvars['rubr_all']; 
                rubricator=[];
                rubricator_addsId=[];
                data = data.split(',');
                for (var i=0;i<data.length;i++)
                {
                    if (isset(rubricatorById[data[i]]))
                    {
                        var row = rubricatorById[data[i]].slice();
                        row[1]='<font style="color:#047EC4;">'+row[1]+'</font>';
                        
                        //Добавляем данный элемент к результату c принудительной заменой, чтобы сохранить выделение
                        rubricator_push(row[2],row, true);
                        //Добавляем дочерние эелементы элементы
                        rubricator_push_tree(row[0]);
                        //Добавляем элементы до текущего элемента
                        rrow=row;
                        while (rrow[2]!=0)
                        {
                            var rrow=rubricatorById[rrow[2]];
                            rubricator_push(rrow[2],rrow);
                        }
                    }
                }
                rubricator_print_tree();                
            }
            
        })
    }
    else
    {
        if (!isset(tmpvars['rubr_all'])) res = rubricator_print_tree(false);
    }
}

//Формируем дерево
function getTree(parent, noline, expand)
{
    if (!isset(expand)){var expand=false;}
    if (!isset(noline)){var noline=false;}
    
    var res=''; 
    
    if (isset(rubricator[parent]))
    if (rubricator[parent].length>0)
    {        
        if (parent!=0) 
        	st='hide'; 
        else
        	st='show';
        
        if (expand){st='show';}
        
        var none=true;
        if (noline)
        {
            noline='noline_points';
        }
        else
        {
            noline='points';
        }
        
        res='<div id ="rubbl'+parent+'" rid="'+parent+'" class="rubr_block '+noline+' '+st+'">';
        for (var i=0; i<rubricator[parent].length; i++)
        {
        
            if ((i==0)&(parent==0))
            {
                if (! expand){imgg="p_f_t";}
                        else {imgg="m_f_t";}
                none=false;        
            }
            else if (i!=(rubricator[parent].length-1))
            {
                imgg="n_m";
                if (isset(rubricator[rubricator[parent][i][0]]))
                if (rubricator[rubricator[parent][i][0]].length>0)
                {
                    if (! expand)
                    {imgg="p_f_m";}
                    else
                    {imgg="m_f_m";}
                    none=false;
                }
            }
            else
            {
                imgg="n_b";
                if (isset(rubricator[rubricator[parent][i][0]]))
                if (rubricator[rubricator[parent][i][0]].length>0)
                {
                    if (!expand)
                    {imgg="p_f_b";}
                    else
                    {imgg="m_f_b";}
                    none=false;
                }
            }
            
            if (i==(rubricator[parent].length-1))            
                noline=true;            
            else            
                noline=false;
                            
            var urst='';
            
            if (none)
            {
                //urst='color:#C9362F;';
            }
            
            res+='<a class = "'+imgg+'" id = "Arubr'+rubricator[parent][i][0]+'" rid="'+rubricator[parent][i][0]+'" style="'+urst+'" href="javascript:" onclick="rubricatorToggleTree('+rubricator[parent][i][0]+',this);">'+rubricator[parent][i][1]+'</a>'+getTree(rubricator[parent][i][0],noline,expand);
        }
        
        res+='</div>'
    }
    
    return res;
}

////Закрывание\раскрывание элементов дерева, переход в рубрику
function  rubricatorToggleTree(rid,linkobj,noline)
{   
    if (! isset(rubricator[rid]))
    {
        var count = 0;      
    }
    else{
    	var count = rubricator[rid].length;
    }

    var tmpp=false;
    
    if (count>0)
    {      
        if (!isset(linkobj)) return false;
        if (linkobj=='find')
        {
            linkobj=document.getElementById('Arubr'+rid);
        }
        
        $("#rubbl"+rid).toggle('fast');
        
        img = $(linkobj).css('background-image');
        
        var p_f_t = RegExp('plus_folder_top');
        var p_f_m = RegExp('plus_folder_middle');
        var p_f_b = RegExp('plus_folder_bottom');
        var m_f_t = RegExp('minus_folder_top');
        var m_f_m = RegExp('minus_folder_middle');
        var m_f_b = RegExp('minus_folder_bottom');
        var n_f   = RegExp('none');
        
        if (p_f_t.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/minus_folder_top.png)');}
        else if (m_f_t.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/plus_folder_top.gif)');}
        else if (p_f_m.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/minus_folder_middle.png)');}
        else if (m_f_m.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/plus_folder_middle.gif)');}
        else if (p_f_b.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/minus_folder_bottom.gif)');}
        else if (m_f_b.test(img))
        {$(linkobj).css('background-image','url(/public/img/rub/plus_folder_bottom.gif)');}
        else if (n_f)
        {tmpp=true;}
    }
    else
    {
    	tmpp=true;
    }
	
    $("#Arubr"+a_rid).removeClass('active');    
    $("#Arubr"+rid).addClass('active');     
    
    a_rid = rid;
    
    if (tmpp) {
    	addRubric('firm_rubs',$("#Arubr"+rid).text());    
    }
}

///Формируем поле для поиска
function rubricatorFormated (parent,level,pid,text)
{
    if (! isset(rubricator[parent])) return false;
    
    var block = rubricator[parent];
    for (var i=0;i<rubricator[parent].length;i++)
    {
        elm = rubricator[parent][i];
        if (level==1){pid=elm[0];}
        if (level!=3) rubricatorFormated (elm[0],level+1,pid,text+' '+elm[1]);
        if (level==3)
        {
            
            elm[2]=pid;
            elm[3]=text+' '+elm[1];
            rubricator_ar_all.push(elm);
        }
    }
}

function addRubric(rubrics_block,rub_name){
	//var rub_name = $("#active_rub span").text();
	
	var search = $("#"+rubrics_block+" input[value = "+a_rid+"]").attr('value');
	
	if (search!=a_rid){
	
	var len = rubrics_block.length;
	var num = $("#"+rubrics_block+" > tbody > tr:last-child").attr('id');
		
	if (!isset(num)) num=0;
	else num = num.substring(len,num.length);

	num++;

	if (rub_name!='')
		edit_f = '<tr id="'+rubrics_block+num+'">'
	        	+'<td>'+rub_name+'<input type="hidden" name="firm_rubrics[]" value="'+a_rid+'" />'
	        	+'<input type="hidden" name="firm_rubrics_name[]" value="'+rub_name+'" /></td>'	        	
	        	+'<td><img class="ajax_button" src="/public/img/icons/cross_small.png" onclick="deleteValue(\''+rubrics_block+'\','+num+')"/></td>'
	        	+'</tr>';

	//$("#Arubr"+a_rid).remove();
	$("#active_rub").html('');
	$("#"+rubrics_block).append(edit_f);
	}
	return false;
}

//Обработчик формы фильтра
function submitFiltForm(obj){
	
	var name = $(obj).find('input').attr('value');
	
	
	getFiltRubTree(name);
	
	return false;
}

//Возвращает html отфильтрованного рубрикатора
function getFiltRubTree(name){
	filt_rub_ind = filt_rub_ind+1;
	var i = filt_rub_ind;
	
	$.ajax({
		url:'/ajax/get_filt_rubricator_html/',
		data:{'query':name},
		type:'POST',
		async:true,
		success:function(data){
//			alert(name);
			if (data) {
				if (i==filt_rub_ind) {
					$(".edit_rubricator_filt").html(data);
				}
				$(".edit_rubricator_all").css("display", "none"); 
			} else {
				$(".edit_rubricator_all").css("display", "block");
				$(".edit_rubricator_filt").empty();
			}
		}
	});
}