function populateDaysInMonth(daysElement, monthElement, yearsElement) {
	var i;
	var leadingZero;
	var numElements = monthElement.length;

	var year = yearsElement.options[yearsElement.selectedIndex].value;
			
	var currentDaySelection = daysElement.selectedIndex;

	var numDays = (32 - new Date(year, monthElement.options[monthElement.selectedIndex].value-1, 32).getDate());
	for (i=0; i < numElements; i++) {
		daysElement.options[i] = null;
	}

	for(i=0 ; i < numDays ;i++) {
		if(i<9) {
			leadingZero = '0';
		} else {
			leadingZero = '';
		}
		daysElement.options[i] = new Option(String(leadingZero+(i+1)), i+1);
	}
	
	if(currentDaySelection > (numDays -1)){
		currentDaySelection = numDays - 1;
	}
	daysElement.selectedIndex = currentDaySelection;
}


function openMinimalWindow(url){
	window.open(url,"mywindow","resizable=1");
}

function checkEmailsMatch(inputOne, inputTwo, outputBox){
	var textOne = inputOne.value;
	var textTwo = inputTwo.value;
	var message = "";
	
	if(textOne != textTwo){
		message = "The E-mail addresses you have entered do not match.";
	}
	
	outputBox.innerHTML = message;
	
}

function inArray(value, array){
	for(arrayIndex = 0; arrayIndex < array.length; arrayIndex++){
		if(array[arrayIndex] == value){
			return arrayIndex;
		}
	}
	return false;
}

function compareOptions(a, b){
	var aValue = a['text'].toLowerCase();
	var bValue = b['text'].toLowerCase();
	
	return (aValue < bValue) ? -1 : 1;
} 

function sortOptionsAlphabetically(id){
	var box = document.getElementById(id);
	var newOrder = Array();
	
	for(i = 0; i < box.options.length; i++){
		newOrder[newOrder.length] = {'text': box.options[i].text, 'value': box.options[i].value};
	}
	
	newOrder.sort(compareOptions);
	
	box.options.length = 0;
	for(i = 0; i < newOrder.length; i++){
		box.options[box.options.length] = new Option(newOrder[i]['text'], newOrder[i]['value']);
	}
} 

function multiBoxSelect(fromID, toID, deleteFrom, sortTo){
	var fromBox = document.getElementById(fromID);
	var toBox = document.getElementById(toID);
	
	for(i = fromBox.options.length - 1; i >= 0; i--){
		if(fromBox.options[i].selected){
			toBox.options[toBox.options.length] = new Option(fromBox.options[i].text, fromBox.options[i].value);
			if(deleteFrom){
				fromBox.options[i] = null;
			}
		}
	}
	
	if(sortTo){
		sortOptionsAlphabetically(toID);
	}
}

function cleanString(string){
	string = string.toLowerCase();
	string = string.replace(/&/g, 'and');
	string = string.replace(/[^a-z0-9]/g, '');
	return string;
}

function removeFromOtherBox(selectionBoxID, removeFromBoxID, removeOnlySelected){
	var selectionBox = document.getElementById(selectionBoxID);
	var removeFromBox = document.getElementById(removeFromBoxID);
	
	if(removeOnlySelected){
		var selectedValues = getSelectedValues(selectionBox, false);
	} else {
		var selectedValues = Array();
		for(i = 0; i < selectionBox.options.length; i++){
			selectedValues[selectedValues.length] = selectionBox.options[i].value;
		}
	}
		
	for(i = removeFromBox.options.length - 1; i >= 0; i--){
		key = inArray(removeFromBox.options[i].value, selectedValues);
		if(key !== false){
			removeFromBox.options[i] = null;
		}
	}
}

function copyItemsToOtherBox(selectionBoxID, copyToBoxID, copyOnlySelected, sortTo){
	var selectionBox = document.getElementById(selectionBoxID);
	var copyToBox = document.getElementById(copyToBoxID);
	
	if(copyOnlySelected){
		var selectedValues = getSelectedValues(selectionBox, true);
	} else {
		var selectedValues = Array();
		for(i = 0; i < selectionBox.options.length; i++){
			selectedValues[selectedValues.length] = Array(selectionBox.options[i].value, selectionBox.options[i].text);
		}
	}
	
	for(i = 0; i < selectedValues.length; i++){
		copyToBox.options[copyToBox.options.length] = new Option(selectedValues[i][1], selectedValues[i][0]);
	}
	
	if(sortTo){
		sortOptionsAlphabetically(copyToBoxID);
	}
}

function getSelectedValues(selectionBox, getTextToo){
	var selectedValues = Array();
	
	for(i = 0; i < selectionBox.options.length; i++){
		if(selectionBox.options[i].selected){
			if(getTextToo){
				selectedValues[selectedValues.length] = Array(selectionBox.options[i].value, selectionBox.options[i].text);
			} else {
				selectedValues[selectedValues.length] = selectionBox.options[i].value;
			}
		}
	}
	return selectedValues;
}

function selectAllItemsFromArray(array, arrayKey, mustBeSelectedToo, selectFromID, selectToID, deleteFrom, sortTo){
	var selectFrom = document.getElementById(selectFromID);
	var selectTo = document.getElementById(selectToID);
	
	if(arrayKey === false){
		var selectionArray = array;
	} else {
		var selectionArray = array[arrayKey]
	}
	
	for(i = selectFrom.options.length - 1; i >= 0; i--){
		if((mustBeSelectedToo && selectFrom.options[i].selected) || !mustBeSelectedToo){
			if(inArray(selectFrom.options[i].value, selectionArray) !== false){
				selectTo.options[selectTo.options.length] = new Option(selectFrom.options[i].text, selectFrom.options[i].value);
				if(deleteFrom){
					selectFrom.options[i] = null;
				}
			}
		}
	}
	if(sortTo){
		sortOptionsAlphabetically(selectToID);
	}
}