var module_rev_subtype_filter = new Class(
	{
	originalDD: null,
	typeDD: null,
	subtypeDD: null,
	initialize: function() {
		this.originalDD = $('soustype');
		this.originalDD.erase('id').erase('name');
		var selected = this.originalDD.get('value');

		var typeSelected = '';

		if (selected) {
			var tmp = selected.split('|');
			typeSelected = tmp[0];
		}

		$('typesoustypeFS').setStyle('display', 'none');
		this.originalDD.setStyle('display', 'none');

		this.typeDD = new Element('select');

		this.typeDD = new Element('select');
		this.typeDD.inject($('typesoustypeFS'), 'after');
	
/*
		this.typeDD.grab(new Element('option',
			{
			label: 'Tous',
			text: '-= Type de VR =-',
			value: 'Tous'
			}));*/
			
this.typeDD.grab(this.originalDD.getChildren('option')[0]); //grr grr

		this.originalDD.getChildren('optgroup').each(function(el) {
			var vehiculeCountNode = (el.getChildren())[0];

			var nodeText = vehiculeCountNode.get('text');
			var optlabel = el.get('label');

			var option = new Element('option',
				{
				label: optlabel,
				text: optlabel,
				value: optlabel,
				selected: (typeSelected == optlabel)
				});

			this.typeDD.grab(option);
		}, this);

		this.typeDD.setProperty('name', 'JtypeSL');
		this.typeDD.set('value', typeSelected);

		this.subtypeDD = new Element('select',
			{
			id: 'subtype',
			name: 'subtype'
			});

		this.subtypeDD.inject(this.typeDD, 'after');

		this.updateSubtypes(true);

		this.subtypeDD.set('value', selected);
		this.subtypeDD.setProperty('name', 'JsubtypeSL');

		this.typeDD.addEvent('change', this.updateSubtypesEvent.bind(this));
	},
	clearSelect: function(select) {
		select.getChildren().each(function(el) {
			el.dispose();
		});
	},
	updateSubtypesEvent: function() {
		this.updateSubtypes();
	},
	updateSubtypes: function(forceUpdate) {
		var selectedType = this.typeDD.get('value');

		var currentSelected = this.subtypeDD.get('value');

		if (currentSelected) {
			currentSelected = currentSelected.split('|');
		}
		else {
			currentSelected = [''];
		}

		if (currentSelected[0] == selectedType && !forceUpdate) {
			return;
		}
		else {
			this.clearSelect(this.subtypeDD);

			if (selectedType == '') {
				this.subtypeDD.set('value', '');
			}
			else {
				this.originalDD.getChildren('optgroup').each(function(el) {
					if (el.get('label') == selectedType) {
						el.getChildren().each(function(opt) {
							var newOpt = opt.clone();
							newOpt.set('selected', newOpt.get('label') == selectedType);
							this.subtypeDD.adopt(newOpt);
						}, this);
					}
				}, this);

				this.subtypeDD.set('value', selectedType);
			}
		}
	}
	});
window.addEvent('domready', function() {
	new module_rev_subtype_filter();
});