var programs = new Array(), program, courses = new Array(), course, electives = new Array(), elective;

function showProgram() {
	for (var i = 0; i < programs.length; i++) {
		if (programs[i] != "None") {
			var element = document.getElementById(programs[i]);
			if (element) {
				if (programs[i] == program.value){
				element.style.display = "";
			}
			else {
				element.style.display = "none";
			}

			}
		}
	}
}

function showCourse() {
	for (var i = 0; i < courses.length; i++){
		if (courses[i] != "None") {
			var element = document.getElementById(courses[i]);
			if (element) {
				if (courses[i] == course.value){
					element.style.display = "";
				}
				else {
					element.style.display = "none";
				}
			}
		}
	}
}

function showElective() {
	for (var i = 0; i < electives.length; i++) {
		if (electives[i] != "None") {
			var element = document.getElementById(electives[i]);
			if (element) {
				if (electives[i] == elective.value){
					element.style.display = "";
				}
				else {
					element.style.display = "none";
				}
			}
		}
	}
}

var academic_availability = {
	'2': [ /*St.Andrews*/
		'program_english',
		'program_youth',
		'program_bac',
		'program_writing',
		'program_debating'
	],
	'3': [ /*Cambridge*/
		'program_english',
		'program_debating',
		'program_pre_bac',
		'program_study_skills',
		'program_journalism',
		'program_bus'
	]
};

var elective_availability = {
	'2': [ /*St. Andrews*/
		'elective_golf',
		'elective_tennis',
		'elective_theatre',
		'elective_film',
		'elective_art'
	],
	'3': [ /*Cambridge*/
		'elective_tennis',
		'elective_theatre',
		'elective_photography',
		'elective_outdoor_leadership',
		'elective_fencing'
	]
};

var addEvents = function() {
	program = document.getElementById('id_academic_choice');
	program.onchange = showProgram;
	for (var i = 0; i < program.options.length; i++) programs[i] = program.options[i].value;
	showProgram();

	course = document.getElementById('id_bac_course');
	course.onchange = showCourse;
	for (var i = 0; i < course.options.length; i++) courses[i] = course.options[i].value;
	showCourse();

	elective = document.getElementById('id_elective_choice');
	elective.onchange = showElective;
	for (var i = 0; i < elective.options.length; i++) electives[i] = elective.options[i].value;
	showElective();
}

window.addEvent('domready', function(){
	addEvents();
	var academic_backup = $('id_academic_choice').clone();
	var elective_backup = $('id_elective_choice').clone();

	var campusEvent = function(){
		var campus = "" + $('id_campus').get('value');
		var elective_list = elective_availability[campus];
		var academic_list = academic_availability[campus];
		if(!elective_list) elective_list = null;
		if(!academic_list) academic_list = null;

		showCourse();

		$('id_academic_choice').empty();
		$('id_academic_choice').disabled = false;
		if(!academic_list){
			$('id_academic_choice').adopt(new Element('option', {'value':''}).set('text', 'Please choose a campus first'));
			$('id_academic_choice').disabled = true;
		}else{
			academic_backup.getChildren().each(function(e, i){
				if(e.value == "None" || academic_list.contains(e.value)) {
					$('id_academic_choice').adopt(e.clone());
				}
			});
		}
		showProgram();

		$('id_elective_choice').empty();
		$('id_elective_choice').disabled = false;
		if(!elective_list){
			$('id_elective_choice').adopt(new Element('option', {'value':''}).set('text', 'Please choose a campus first'));
			$('id_elective_choice').disabled = true;
		}else{
			elective_backup.getChildren().each(function(e, i){
				if(e.value == "None" || elective_list.contains(e.value)) {
					$('id_elective_choice').adopt(e.clone());
				}
			});
		}
		showElective();
	};

	$('id_campus').addEvent('change', campusEvent);
	campusEvent();
});

