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;
var tmpvars = [];

function rubricatorCreate()
{	
	var url = '/addfirm/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:"/addfirm/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:'/catalog/filt_rubric/',
		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();
			}
		}
	});
}
