function swap ( m1, m2 ) {
	m1len = m1.length ;

	for ( i=0; i < m1len ; i++){
		if (m1.options[i].selected == true ) {
			m2len = m2.length;
			m2.options[m2len]= new Option(m1.options[i].text, m1.options[i].value);
		}
	}

	for ( i = (m1len -1); i>=0; i--){
		if (m1.options[i].selected == true ) {
			m1.options[i] = null;
		}
	}
}

function joinselectandset ( optn, destinput ) {
	mylen = optn.length;
	destinput.value = '';
	for ( i=0; i < mylen ; i++){
		if (i > 0) {
			destinput.value = destinput.value+';';
		}
		destinput.value = destinput.value + optn.options[i].value;
	}
}

function loadselect (srcinput, checkoptn, destoptn) {
	var destlen = 0;
        var emailaddress = new RegExp('^[a-z0-9.-]+@[a-z0-9.-]+[a-z]$');
        var divider = /([a-z0-9@.-]+);/g;
        var splitted = srcinput.value.split(';');
        var found = false;

	if (srcinput.value == '') return 1;

        if (splitted != null) {
                for(var a = 0; a < splitted.length; a++) {
			found = false;
                        if (emailaddress.test(splitted[a])) {
				// Just add email addresses
				destoptn.options[a]= new Option(splitted[a], splitted[a]);
                        } else {
				for(var i = 0; i < checkoptn.options.length; i++) {
					if (
						checkoptn.options[i].value == splitted[a] ||
						checkoptn.options[i].value+';' == splitted[a]
					) {
						checkoptn.options[i].selected = true;
						found = true;
					}
				}
				swap(checkoptn, destoptn);
				if (!found) {
					destoptn.options[a]= new Option(splitted[a], splitted[a]);
				}
			}
		}
	}
}

function selectalloptions ( optn ) {
	var mylen = optn.length;
	for ( i=0; i < mylen ; i++){
		optn[i].selected = true;
	}
}
