
var load_rubr = function (){
	Rubr.make_changes = false;

	elements = document.getElementById("rubr_container").childNodes;
	for(i = 0; i<elements.length; i++){
		el = elements[i];
		if (el.id && el.id.match("rubr_")){
			el_id = el.id.replace("rubr_", "");
			Rubr.copy_to_parent(el_id, 0);
		}
	}
	Rubr.disable_unchecked();
	Rubr.make_changes = true;
};


var commonRubr = function() {

	this.allow_main_rubr = 0;
	this.make_changes = true;
	this.max_rubr = 5;




	this.rubr_length = function  (){
		elements = document.getElementById("rubr_container").childNodes;
		var count = 0;
		for(el_num = 0; el_num<elements.length; el_num++){
			if (elements[el_num].id && elements[el_num].id.match("rubr_")) count++;
		}
		return count;
	};


	this.change_display = function(id){
		if(document.getElementById("rubrikator_hidden_id" + id).style.display == 'none')
		{
			this.show_parent(id, 0);
		}
		else
		{
			this.hide_parent(id, 0);
		}
	};

	this.show_parent= function(id, slide) {
		document.getElementById("rubrikator_display_id_" + id).className = "catopen";
		if (slide) dropdowncontent.slideit('rubrikator_hidden_id'+id, "down", { speed: 400});
		else  document.getElementById("rubrikator_hidden_id" + id).style.display = 'block';

	};

	this.hide_parent= function(id, slide) {
		document.getElementById("rubrikator_display_id_" + id).className = "";
		if (slide) dropdowncontent.slideit('rubrikator_hidden_id'+id, "up", { speed: 400});
		else  document.getElementById("rubrikator_hidden_id" + id).style.display = 'none';
	};


	this.copy_to_parent= function (id, is_checker_clicked)
	{
		var cheker_id ='rubrikator_check_id' + id;
		var cheker=document.getElementById(cheker_id);
		if (!cheker) return;
		if (cheker.disabled) return;
		
		if (!cheker.getAttribute("parent_id")){
			var rubr_main_id = id;
			var rubr_child_id = 0;
		} else {
			var rubr_main_id = cheker.getAttribute("parent_id");
			var rubr_child_id = id;
		}

		var parent_id = 'rubrikator_main_id' + rubr_main_id;
		var secondary_id = 'rubrikator_secondary_id' + rubr_child_id;

		if (!rubr_child_id && !this.allow_main_rubr) return;
		if (!document.getElementById(parent_id)) return;

		if(!cheker.checked && !is_checker_clicked){
			cheker.checked = true;
		} else if (cheker.checked && !is_checker_clicked){
			cheker.checked = false; 		
		}

		if(cheker.checked)
		{
			 
			 this.show_parent(rubr_main_id);
			 
			 if (this.rubr_length() <= this.max_rubr)
			{

				// Убираем все secondary, если указан только main
				if (rubr_child_id == 0){
					var chekers_sec = document.getElementsByName('rubrikator_checkboxes');
					for (var y=0;y<chekers_sec.length;y++){
						var cheker_sec = chekers_sec[y];
						if (cheker_sec.getAttribute("parent_id") == rubr_main_id && cheker_sec.id != cheker_id){
							if (cheker_sec.checked) {
								this.copy_to_parent(cheker_sec.id.replace("rubrikator_check_id", ""),  0);
							}
							cheker_sec.disabled = true;
						}
					}
				}

				// Меняем класс у parent label
				document.getElementById(parent_id).className = "choosed";
			
				if (!document.getElementById('rubr_' + id)){
					document.getElementById('rubr_zero').style.display = "none";
					var newdiv = document.createElement('div');
					newdiv.id = 'rubr_' + id;
					newdiv.style.display = 'block';
					var buffer = document.getElementById("rubr_template").innerHTML;
					buffer = buffer.replace(/#id#/ig, id);
					buffer = buffer.replace(/#parent#/ig, document.getElementById(parent_id).innerHTML);
					buffer = buffer.replace(/#child#/ig, rubr_child_id > 0 ? (" / " + document.getElementById(secondary_id).innerHTML) : "");
					newdiv.innerHTML =  buffer;
					document.getElementById('rubr_container').appendChild(newdiv);
					

					this.disable_unchecked();
					if (this.make_changes && window.make_changes != undefined) window.make_changes();
				}
			 }
		}
		else
		{
			if ((this.allow_main_rubr == 1 && document.getElementById("rubrikator_check_id" + rubr_main_id).checked == false) || !this.allow_main_rubr)
			{
				this.enable_unchecked();
			}

			// Меняем класс у parent label
			var chekers = document.getElementsByName('rubrikator_checkboxes');
			var change_class = 1;
			for (var y=0;y<chekers.length;y++){
				if (chekers[y].getAttribute("parent_id") == rubr_main_id && chekers[y].checked){
					change_class=0; break;
				}
			}
			if (change_class) document.getElementById(parent_id).className = "";


			var x = document.getElementById('rubr_'+ id);
			if (x) {
				x.parentNode.removeChild(x);

				// Убираем все secondary, если указан только main
				if (!rubr_child_id){
					chekers_sec = document.getElementsByName('rubrikator_checkboxes');
					for (y=0;y<chekers_sec.length;y++){
						cheker_sec = chekers_sec[y];
						if (cheker_sec.getAttribute("parent_id") && cheker_sec.getAttribute("parent_id") == rubr_main_id){
							cheker_sec.disabled = false;
						}
					}
				}

				if (!this.rubr_length()) document.getElementById('rubr_zero').style.display = "block";


				if (this.make_changes && window.make_changes != undefined) window.make_changes();
			}
		}

	};

	this.disable_unchecked = function (){

		if (this.rubr_length() >= this.max_rubr)
		{
			var chekers = document.getElementsByName('rubrikator_checkboxes');
			for (var y=0;y<chekers.length;y++){
				var checker = chekers[y];
				if (!checker.checked){
					checker.disabled = true;
				}
			}
			
		}
	};

	this.enable_unchecked= function (){

		var chekers = document.getElementsByName('rubrikator_checkboxes');
		for (var y=0;y<chekers.length;y++){
			var checker = chekers[y];
			// Восстанавливаем только те, у которых оснавная рубрика не включена\
			var parent_id = checker.getAttribute("parent_id");
			if (parent_id && document.getElementById("rubrikator_check_id" + parent_id) && document.getElementById("rubrikator_check_id" + parent_id).checked){
				continue;
			}
			checker.disabled = false;
		}
	};
};


Rubr = new commonRubr();
