function addEvent(el, ev, fn) {
	
	if(el.attachEvent) {

		el.attachEvent('on' + ev , fn);

	} else if(el.addEventListener) {

		el.addEventListener(ev, fn, false);
	}
}

addEvent(window, 'load', buildMultiselects);

function buildMultiselects() {

	do{
		found = 0;
		a = document.getElementsByTagName('select');
		
		for(b=0; b < a.length, !found; b++) {
			
			var ms = a[b];
			
			if(ms == null) {
				
				break;
			}

			if(ms.className != 'subject') {
				
				continue;
			}

			if(ms.name.substring(ms.name.length-2, ms.name.length) != '[]') {
				
				continue;
			}
			
			found = 1;
			
			disabled = (ms.disabled)?1:0;
			
			width = ms.offsetWidth;
			height = ms.offsetHeight;
			
			el = document.createElement('div');
			el.className = 'subjectSelect';
			c = ms.getElementsByTagName('option');
			
			for(d = 0; d < c.length; d++) {
				
				el2 = document.createElement('label');
				el3 = document.createElement('input');
				el3.type = "checkbox";
				el3.onclick = function() {colorRow(this);};
				
				if(c[d].selected) {

					el3.checked = 'checked';
					el3.defaultChecked = true;
				}
		
				if(c[d].disabled) {

					el3.disabled = 'disabled';
				}

				el3.value = c[d].value;
				el3.style.marginLeft = '-22px';
				el3.style.marginTop = '-2px';
				el3.name = ms.name;
				el4 = document.createTextNode(c[d].innerHTML);
				el2.appendChild(el3);
				el2.appendChild(el4);
				el.appendChild(el2);

				if(el3.checked) {
					
					colorRow(el3);
				}
			}

		ms.parentNode.insertBefore(el,ms);
		ms.parentNode.removeChild(ms);

		}

	} while(found);
}

function colorRow(checkbox) {

	if(checkbox.checked) {
		
		checkbox.parentNode.className = 'selected';

	} else {
		
		checkbox.parentNode.className = '';
	}

}
