var selected = new Array();

function updateSelections(divID){
	var handle = document.getElementById(divID);

	if(handle){
		var options = handle.options;
		var length = options.length;

		for(i=0;i<length;i++){
			var current = options[i];
			var pieces = current.value.split('-');
			var selectedLength = selected.length;
			var existed = false;
			
			if(pieces.length == 2){
				if(current.selected == true){
					selectChildren(current, handle);
					
					selected.push(current.value);
				} else {
					for(j=0;j<selectedLength;j++){
						var currentSelected = selected[j];
						
						if(currentSelected == current.value){
							existed = true;
							selected.splice(j, 1, '');
						}
					}
					
					if(existed == true){
						selectChildren(current, handle, true);
					}
				}
			}
		}
	}
}


function selectChildren(option, element, deselect){
	var options = element.options;
	var length = options.length;
	
	for(l=0;l<length;l++){
		var current = options[l];
		var currentLength = option.value.length;
		
		if(current.value.substring(0, currentLength) == option.value){
			if(deselect == true){
				if(current.selected == true){
					current.selected = false;
				}				
			} else {
				if(current.selected == false){
					current.selected = true;

				}
			}
		}
	}
}

function moveSelected(availableID, selectedID){
	//alert('am i here');
	if(available = document.getElementById(availableID)){
		var options = available.options;
		var length = options.length;
		var newOptions = new Array();
		
		for(i=0;i<length;i++){
			var current = options[i];
			
			if(current.selected == true){
				newOptions.push(current);
			}
		}
		
		if(selected = document.getElementById(selectedID)){
			if(newOptions.length > 0){
				var newLength = newOptions.length;
				var selectedOptions = selected.options;
				var selectedLength = selectedOptions.length;
				var found = false;
				
				for(j=0;j<newLength;j++){
					var newCurrent = newOptions[j];
					
					for(k=0;k<selectedLength;k++){
						var selectedCurrent = selectedOptions[k];
						
						if(selectedCurrent.value == newCurrent.value){
							found = true;
						}
					}
					
					if(!found){
						newOption = document.createElement('option');
						newOption.text = newCurrent.text;
						newOption.value = newCurrent.value;
						
						try{
							selected.add(newOption, null);
						} catch(e){
							selected.add(newOption);
						}
					}
					
					found = false;
				}
			}
		}
	}
}


function removeSelected(divID){
	if(element = document.getElementById(divID)){
		var options = element.options;
		var length = options.length;
		
		for(i=length - 1;i>=0;i--){
			var current = options[i];
			
			if(current.selected == true){
				element.remove(i);
			}
		}
	}
}


function removeAll(divID){
	if(element = document.getElementById(divID)){
		var options = element.options;
		var length = options.length;
		
		for(i=length - 1;i>=0;i--){
			var current = options[i];
			
			element.remove(i);
		}
	}
}
