// JavaScript Document

/**
 * Functions used in Offer Admin form
 */
Drupal.behaviors.x200_adminOfferForm = function(context) {
	if (Drupal.settings.x200_off_dependencies) {
		for (field in Drupal.settings.x200_off_dependencies) {
			$('select#edit-'+field).change(function () {		
			  x200_adm_off_process_elements($(this).attr('name'));
			});
			x200_adm_off_process_elements(field);
		}
	}
}

/**
 * This function process all form elements defined in type-specific array,
 * hide all no type-defined fields, and make ajax call for type specific options for selectboxes
 */
function x200_adm_off_process_elements(parent) {
	var val = $('select#edit-'+parent).selectedValues()[0];
	var arr = Drupal.settings.x200_off_dependencies[parent];
	var nfield, posValues;
	
	for (field in arr['show']) {
		nfield = field.replace(/_/g, '-');
		posValues = arr['show'][field].toString().split(';');
		if (posValues.indexOf(val) != -1) {
			// this should be visible - we just change classes to wrapper
			$('div#edit-'+nfield+'-wrapper').removeClass('x200_adm_off_hidden');
		} else {
			//we must hide this one
			$('div#edit-'+nfield+'-wrapper').addClass('x200_adm_off_hidden');
		}
	}
	for (field in arr['data']) {
		$.get(x200_cmn_get_app_path()+'x200/offers/vocabulary', { 'dict': arr['data'][field], 'parent': val, 'field': field }, x200_adm_off_replace_terms);
	}
}

function x200_adm_off_replace_terms(data) {
	var result = Drupal.parseJson(data);
	var field_id = "select#edit-"+result['field'].replace(/_/g, '-');
	var data = result['data'];
	var selected = $(field_id).selectedValues();
	var selText = $(field_id+" option:selected").text();

	$(field_id).removeOption(/./);
	if (!data[selected]) {
		$(field_id).addOption(selected[0], selText, true);
		$(field_id).addOption(data, false);
	} else {
		$(field_id).addOption(data, false);
		$(field_id).selectOptions(selected);
	}
}