function multiSelSpecial() {
	var s = 0, select, selects = document.getElementsByTagName('select');
	while (select = selects.item(s++))
		if (/multiple/.test(select.getAttribute('type'))) {
			select.oSelected = [];
			select.nSelected_before = 0;
			select.nSelected_after = 0;
			select.onclick = function()	{
				this.oSelected.length = 0;
				this.nSelected_before = 0;	
				for (var i = 0; i < this.options.length; ++i)
					if (this.options[i].selected)
						this.oSelected[this.oSelected.length] = this.options[i];
				this.nSelected_before = this.oSelected.length;
				if (1 == this.nSelected_before && 1 == this.nSelected_after)
					this.onchange();
			}
			select.onchange = function() {			
				if (this.options[this.selectedIndex].value == '') {
				}
				else {
					this.nSelected_after = 0;
					for (var i = 0; i < this.oSelected.length; ++i)
						this.oSelected[i].selected = !this.oSelected[i].selected;
					for (var i = 0; i < this.options.length; ++i)
						if (this.options[i].selected)
							++this.nSelected_after;							
					if (this.options[0].value == '') {
						this.options[0].selected = false;
					}							
				}				
			}
		}
}

onload = multiSelSpecial;
