/* Program View Library
 * Adam J. Baker <adam@unb.ca>
 * November 1, 2010
 */

$(document).ready(function() {
	var i = 0;
	for (i = 0; i < LABELS.length - 1; i++) { 
		xxDisableField(LABELS[i]);
	$('#' + LABELS[i]).bind('change', {level: i+2}, function(event) {Level(event.data.level);});
	}
	if (VIEW_BUTTON.toLowerCase() == 'yes') {
		$('#' + LABELS[i]).change(EnableView);
	} else {
		$('#' + LABELS[i]).change(FollowLink);
	}
	Level(1);
});

function EnableView() {
	if (VIEW_BUTTON.toLowerCase() == "yes") { 
		if ($('#' + LABELS[LABELS.length -1]).val() != DEFAULT_OPTION) {
			$('#' + VIEW).removeClass('hide');
		} else {
			$('#' + VIEW).addClass('hide');
		}
	}
}

function FollowLink() {
	if ($('#' + LABELS[LABELS.length - 1]).val() != DEFAULT_OPTION) {
		document.forms[FORM_ID].submit();
	}
}

function LoadList(action, field, data, default_option) {
		action = {'action': action, 'config': CONFIGURATION};
		$.ajax({
			url:AJAX_URL,
      	data: $.extend(action, data),
			async: false,
			type: "POST",
			success: function(resp) {
				$(field).html(resp);
				if (default_option != '') {
					$(field + " option[value='" + default_option + "']").attr('selected', 'selected');
				} else {
					$(field + " option[value='" + DEFAULT_OPTION + "']").attr('selected', 'selected');
				}
			}, 	
			error: function() {}
		});
}

function Level(level) {
	if (level == 1) { // Level 1 only
		LoadList('Level' + level, '#' + LABELS[level - 1], {}, DEFAULTS[level - 1]);
		xxEnableField(LABELS[level - 1]);
		Level(2);
	} else { // Levels 2 and above
		if ($('#' + LABELS[level - 2]).val() != DEFAULT_OPTION && $('#' + LABELS[level - 2]).val() != null) {
			data = {};
			for (i = 0; i < LABELS.length; i++) {
				data[LABELS[i]] = $('#' + LABELS[i]).val(); 	
			}
			LoadList('Level' + level, '#' + LABELS[level - 1], data, DEFAULTS[level -1]); 
			xxEnableField(LABELS[level - 1]);
			if (level < LABELS.length) {
					Level(level + 1);
			}
		} else {
			for (i = (level - 1); i < LABELS.length; i++) {
				xxDisableField(LABELS[i]);
			}
		}	
	}
	// handle special jump conditions
	if (JUMP_VALUES[level - 2] != '' && JUMP_VALUES[level -2 ] != undefined) {
		if ($('#' + LABELS[level - 2]).val() == JUMP_VALUES[level - 2]) {
			window.location = JUMP_URLS[level - 2];
		}
	}
        EnableView();
}

