var request = false;

var selected_genre = undefined;
var selected_display = undefined;
var selected_section = undefined;

var old_genre = undefined;
var old_display = undefined;
var old_section = undefined;

var settle_genre = undefined;
var settle_display = undefined;
var settle_section = undefined;

var settle_timeout = undefined;

var can_change = true;

function set_selected_section(genre, display, section) {
	if(genre != selected_genre || display != selected_display || section != selected_section) {
		old_genre = selected_genre;
		old_section = selected_section;
		old_display = selected_display;

		selected_genre = genre;
		selected_display = display;
		selected_section = section;

		wait_settle();
	}
}

function wait_settle() {
	if(settle_genre != selected_genre || settle_display != selected_display || settle_section != selected_section) {
		settle_genre = selected_genre;
		settle_display = selected_display;
		settle_section = selected_section;

		settle_timeout = setTimeout("wait_settle()", 500);
	}
	else {
		settle_timeout = undefined;
		request_section_data();
	}
}

function cancel_selection_change(genre, display, section) {
	if(settle_timeout != undefined) {
		if(genre == selected_genre && display == selected_display && section == selected_section) {
			clearTimeout(settle_timeout);

			selected_genre = old_genre;
			selected_display = old_display;
			selected_section = old_section;

			settle_genre = undefined;
			settle_display = undefined;
			settle_section = undefined;
		}
	}
}


function request_section_data() {
	if(can_change == true) {
		try {
			request = new XMLHttpRequest();
		} catch (itty) {
			try {
				request = new ActiveXObject('Msxml2.XMLHTTP');
			} catch (bitty) {
				try {
					request = new ActiveXObject('Microsoft.XMLHTTP');
				} catch (teapot) {
					  request = false;
					  return;
				}
			}
		}

		if(old_section != undefined) {
			document.getElementById('section_selection_' + old_section).style.backgroundColor= '#EDEBDF';
		}

		document.getElementById('section_selection_' + selected_section).style.backgroundColor = '#CECBB8';

		document.getElementById('section_view').innerHTML = "Loading...";

		var url = "/dmspublic/ajax_section.php?arg_genre="+ selected_genre +"&arg_display="+ selected_display +"&arg_section="+ selected_section +"";
		request.open('GET', url, true);
		request.onreadystatechange = update_section_data;
		request.send(null);
	}
}

function update_section_data() {
	if(request.readyState == 4) {
		if(can_change == true) {
			if(request.status == 200) {
				document.getElementById('section_view').innerHTML = request.responseText;
			}
			else {
				document.getElementById('section_view').innerHTML = "Error: Server communication failed! ("+ request.status + ")";
			}
		}
	}
}