$(document).ready(function() {
	$('body').on('change', '.checkParentChildRelation', function() {
		var $this = $(this);
		var id = $this.data('componentid');
		$this.closest('form').find('.checkParentChildRelation[data-parent="' + id + '"]').each(function() {
			var $thisSelect = $(this);
			var parentchilds = $thisSelect.data('parentchild');

			var showThese = new Array('0');
			for (i in parentchilds) {
				if(parentchilds[i] == $this.val()) {
					showThese[showThese.length] = i;
				}
			}
			showThese.push(0);
			showThese.push('');
			$thisSelect.hideSelectOptions('show' , showThese, $this.attr('name'), true);
			if ($thisSelect.hasClass('chosen')) {
				$thisSelect.trigger('chosen:updated');
			}
			if ($thisSelect.hasClass('autoSelectOneOption')) {
				autoSelectOneOption($thisSelect);
			}
		});
	});

	$('body').on('click', '.genericListMultiSelect .glms-add', function() {
		var $this = $(this);
		var $glms = $this.closest('.genericListMultiSelect');
		var $glmsThisSelected = $glms.find('.glms-select option:selected');
		if($glmsThisSelected.val() != 0 && $glmsThisSelected.val() != null){
			var glmsHiddenContainer = $glms.find('.glms-hiddenContainer');
			glmsHiddenContainer.append('<input type="hidden" name="' + $glms.data('componentname') + '[values][]" value="' + $glmsThisSelected.val() + '" />');
			$glms.find('.glms-select').hideSelectOptions('hide' , new Array($glmsThisSelected.val()), $glms.find('.glms-select').attr('id'));
				var $glmsSelectMulti = $glms.find('.glms-selected');
				$glmsSelectMulti.append($glmsThisSelected.clone());
				$glms.find('.glms-select').trigger('chosen:updated');
		}
	});
	$('body').on('click', '.genericListMultiSelect .glms-del', function() {
		var $this = $(this);
		var $glms = $this.closest('.genericListMultiSelect');
		var $glmsSelectMultiSelected = $glms.find('.glms-selected option:selected');
		var glmsHiddenContainer = $glms.find('.glms-hiddenContainer');

		$glmsSelectMultiSelected.each(function() {
			var $thisOption = $(this);
			$glms.find('.glms-select').hideSelectOptions('show' , new Array($thisOption.val()), $glms.find('.glms-select').attr('id'));
			$thisOption.remove();
			glmsHiddenContainer.find('input[value= ' + $thisOption.val() + ']').remove();
				$glms.find('.glms-select').trigger('chosen:updated');
		});
	});

	$('body').on('shown.bs.modal shown.bs.tab shown.supeo.content', function(event) {
		var $target;
		if (event.handleObj.namespace == 'bs.tab') {
			$target = $($(event.target).attr('href') || $(event.target).data('target'));
		} else {
			$target = $(event.target);
		}
		$target.find('.autoSelectOneOption').each(function() {
			autoSelectOneOption($(this));
		});
	});

	function autoSelectOneOption($select) {
		var $options = $select.find('option[value!=""]');
		if ($options.length == 1) {
			$select.val($options[0].value);
			if ($select.hasClass('chosen')) {
				$select.trigger('chosen:updated');
			}
		}
	};

});

function initComponents($target)
{
	$target.find('.checkParentChildRelation').hideSelectOptions().trigger('change');
	$target.find('.genericListMultiSelect').each(function(){
		var $this = $(this);
		var $glms = $this.closest('.genericListMultiSelect');
		var hideThese = new Array();
		$this.find('.glms-hiddenContainer input').each(function() {
				$this.find('.glms-selected').append($this.find('.glms-select option[value=' + $(this).val() + ' ]').clone());
			hideThese[hideThese.length] = $(this).val();
		});

		$this.find('.glms-select').hideSelectOptions();
		$this.find('.glms-select').hideSelectOptions('hide', hideThese, $this.find('.glms-select').attr('id'));
		$glms.find('.glms-select').trigger('chosen:updated');
	});
}

