// ############################################################################
// ###################  Global variables
// ############################################################################

prodModule = '/redbox/ajaxProduction.php';

function selectProduction(objSelect, hiddenValue) {
	
	$(hiddenValue).value = objSelect.value;
	if (objSelect.value <= 0) return;
	
	frontEnd_model(false, hiddenValue);
	
	var url = prodModule + '?parent_id=' + objSelect.value 
		+ '&sel_type=' + objSelect.getAttribute('sel_type')
		+ '&table=' + objSelect.getAttribute('table_name')
		+ '&group_id=' + objSelect.getAttribute('group_id')
		+ '&hidden=' + hiddenValue;
	
	$('img_loading_' + hiddenValue).show();
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
			var childId = appendSelect(transport.responseText, objSelect, hiddenValue);
			objSelect.writeAttribute('child_id', childId);
			$('img_loading_' + hiddenValue).hide();
		}
	});
}

function appendSelect(selectCode, parentSelect, hiddenValue) {
	if (!selectCode) {
		frontEnd_model(true, hiddenValue);
		return null;
	}
	
	var childId = parentSelect.getAttribute('child_id');
	if (childId) removeChilds(childId, hiddenValue);
	
	var newSelect = '<span style="padding: 0px 5px" id="' + hiddenValue + '_production_sep_' + parentSelect.value 
		+ '"> > </span>' + selectCode;
	new Insertion.After(parentSelect, newSelect);
		
	return parentSelect.value;
}

function removeChilds(parent_id, hiddenValue) {
	var child_id = $(hiddenValue + '_production_' + parent_id).getAttribute('child_id');
	if (child_id) {
		removeChilds(child_id, hiddenValue);
	}
	$(hiddenValue + '_production_' + parent_id).parentNode.removeChild($(hiddenValue + '_production_' + parent_id));
	$(hiddenValue + '_production_sep_' + parent_id).parentNode.removeChild($(hiddenValue + '_production_sep_' + parent_id));
}

function frontEnd_model(really, hiddenValue) {
	if (really) {
		$('block_chain_' + hiddenValue).style.className = 'finished';
	}
	else {
		$('block_chain_' + hiddenValue).style.className = 'odd';
	}
}

// ##################################################################################################
// ###################################   Functions for select production and catalog
// ##################################################################################################

function requireJS(libName) {
  document.write('<script type="text/javascript" src="'+libName+'"><\/script>');
}

function loadRootSelect(block, select_system, hiddenValue, table, group_id) {
	var url = "";
	
	if (select_system == "production") url = prodModule + '?show_root=prod&name=' + hiddenValue + '&sel_type=cats&table=' + table;
	else if (select_system == "catalog") url = prodModule + '?show_tree_select=1&name=' + hiddenValue;
	else if (select_system == "city") url = prodModule + '?show_root=city&name=' + hiddenValue;
	else if (select_system == "adv_cat") url = prodModule + '?show_root=adv_cat&name=' + hiddenValue + '&sel_type=adv_cats&table=' + table + '&group_id=' + group_id;
	
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
			$(block).innerHTML = transport.responseText;
		}
	});
}

// ##################################################################################################
// ###################################   Functions for select city
// ##################################################################################################

function getRegions(objSelect, name) {
	if (objSelect.value <= 0) return;
	
	frontEnd_model(false, name);
	
	var url = prodModule + '?act=get_regions&district_id=' + objSelect.value;
	
	$('img_loading_' + name).show();
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
				
			//$('sel_region_' + name).innerHTML = transport.responseText;		 // Old version non compatible IE
			fillSelect($('sel_region_' + name), transport.responseText);
			$('img_loading_' + name).hide();
		}
	});
}


function getCities(objSelect, name) {
	if (objSelect.value <= 0) return;
	
	frontEnd_model(false, name);
	
	var url = prodModule + '?act=get_cities&region_id=' + objSelect.value;
	
	$('img_loading_' + name).show();
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(transport) {
				
			//$('sel_city_' + name).innerHTML = transport.responseText;	// Old version non compatible IE
			fillSelect($('sel_city_' + name), transport.responseText);	
			$('img_loading_' + name).hide();
		}
	});
}

function setCity(objSelect, name) {
	if (objSelect.value <= 0) return;
	frontEnd_model(true, name);
	
	$(name).value = objSelect.value;
}

function fillSelect(objSelect, responseText) {
	objSelect.length = 0;
  var text = '', value = '', item = null;
  var values = responseText;
  
  values = values.split("[|]");
  for (var i=0; i < values.length; i++) {
	  item = values[i].split("[_]");
	  text = item[0]; value = item[1];
	  if (document.createElement) {
	    var newOption = document.createElement("OPTION");
	    newOption.text = text;
	    newOption.value = value;
	    try {
	      if (value) {
	        objSelect.add(newOption, null); // Вставляем по DOM стандарту
	      }
	    } 
	    catch(ex) {
	      objSelect.add(newOption); // Только для осла
	    }
	  }
  }
}