// http://en.wikipedia.org/wiki/XMLHttpRequest#History_and_support
// Provide the XMLHttpRequest class for IE 5.x-6.x:
if (typeof XMLHttpRequest == "undefined") XMLHttpRequest = function() {
	try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
	throw new Error("This browser does not support XMLHttpRequest.")
};

var working = 0;

function open_study_window() {
	var study_window = window.open("/s/", "study", "width=650px, height=480px, location=no, menubar=no, scrollbars=no, status=no, toolbar=no", true);
	if (study_window != null)
		study_window.focus();

	return false;
}

function enable_category() {
	var category_html_none = "<select id=\"category\" disabled><option value=\"\">choose a level/lesson</option></select>\n";

	var i, category_html_hsk, category_html_npcr, category_html_pcr, category_html_ic3, category_html_ic2;
	category_html_hsk = '<select id="category" onChange="enable_show();" enabled><option value="">choose a level</option>\n';
	category_html_ic2 = category_html_ic3 = category_html_pcr = category_html_npcr = '<select id="category" onChange="enable_show();" enabled><option value="">choose a lesson</option>\n';
	for (i = 0; i < 4; i++) {
		category_html_hsk += '<option value="' + (i + 1) + '">level ' + (i + 1) + '</option>\n';
	}
	category_html_hsk += '</select>\n';
	for (i = 0; i < 60; i++) {
		category_html_npcr += '<option value="' + (i + 1) + '">lesson ' + (i + 1) + '</option>\n';
	}
	category_html_npcr += '</select>\n';
	for (i = 0; i < 65; i++) {
		if (i < 30) {
			book = 1;
			lesson = i + 1;
		} else if (i < 50) {
			book = 2;
			lesson = i + 1;
		} else {
			book = 3;
			lesson = i - 49;
		}
		category_html_pcr += '<option value="' + (i + 1) + '">book ' + book + ' lesson ' + lesson + '</option>\n';
	}
	category_html_pcr += '</select>\n';
	for (i = 0; i < 20; i++) {
		category_html_ic3 += '<option value="' + (i + 1) + '">lesson ' + (i + 1) + '</option>\n';
	}
	category_html_ic3 += '</select>\n';
	for (i = 0; i < 23; i++) {
		category_html_ic2 += '<option value="' + (i + 1) + '">lesson ' + (i + 1) + '</option>\n';
	}
	category_html_ic2 += '</select>\n';

	var curriculum = document.getElementById("curriculum");
	var category_span = document.getElementById("category-span");
	var show = document.getElementById("show");

	document.getElementById("curriculum_name").innerHTML = curriculum.value.toUpperCase();
	show.disabled = true;
	switch (curriculum.value) {
	case "hsk":
		category_span.innerHTML = category_html_hsk;
		break;
	case "pcr":
		category_span.innerHTML = category_html_pcr;
		break;
	case "npcr":
		category_span.innerHTML = category_html_npcr;
		break;
	case "ic3":
		category_span.innerHTML = category_html_ic3;
		break;
	case "ic2":
		category_span.innerHTML = category_html_ic2;
		break;
	default:
		category_span.innerHTML = category_html_none;
		break;
	}
	enable_show();
}

function enable_show() {
	var category = document.getElementById("category");
	var show = document.getElementById("show");

	show.disabled = true && !category.value;
}

function do_show(sort) {
	if (start_working())
		return;

	var xmlhttp = new XMLHttpRequest();
	var curriculum = document.getElementById("curriculum");
	var category = document.getElementById("category");
	var browse_table = document.getElementById("browse-table");

	/*
	var browse_table_head =
		'<div class="browse-row head">' +
		'<div class="id">#</div>' +
		'<div class="simp">Chinese</div>' +
		'<div class="piny">Pinyin</div>' +
		'<div class="en">English</div>' +
		'</div>\n';
		*/

	url = "fetch_browse.php?curriculum=" + curriculum.value + "&category=" + category.value + "&sort=" + sort;

	xmlhttp.open("GET", url, true);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.responseText.length) {
				browse_table.innerHTML = xmlhttp.responseText;
/*				browse_table.innerHTML = browse_table_head;
				var i;
				var browse_table_values = xmlhttp.responseText.split("\n");
				for (i = 0; browse_table_values[i]; ) {
					browse_table.innerHTML +=
						'<a href="" onClick="return card_show(' +
						browse_table_values[i++] +
						');">' +
						'<div class="browse-row"><div class="id">' +
						browse_table_values[i++] +
						'</div><div class="simp">' +
						browse_table_values[i++] +
						'</div><div class="piny">' +
						browse_table_values[i++] +
						'</div><div class="en">' +
						browse_table_values[i++] +
						'</div></div></a>\n';
				}
//				browse_table_values = NULL;
*/
			}
			document.getElementById("browse-table").style.visibility = "visible";
			stop_working();
		}
	}
	xmlhttp.send(null);

	return false;
}

function center_card_outer() {
	var show_card_outer = document.getElementById("show-card-outer");
	var inner_width = document.body.clientWidth;
	show_card_outer.style.left = (inner_width - 652) / 2 + "px";
	show_card_outer.style.top = document.body.scrollTop + 100 + 'px';
}

function card_show(id) {
	//var card_window = window.open("card_show.php?id=" + id, "card", "width=650px, height=410px, location=no, menubar=no, scrollbars=no, status=no, toolbar=no", true);
	//card_window.focus();

//	var shade = document.getElementById("shade");
	var show_card_outer = document.getElementById("show-card-outer");
	var main = document.getElementById("main");

//	shade.style.visibility = "visible";

	var xmlhttp = new XMLHttpRequest();
	xmlhttp.open("GET", "fetch_flashcard.php?id=" + id, true);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				var row = xmlhttp.responseText.split("\n");
				var card_level = row[1];
				var card_number = row[2];
				var card_zh_trad = row[3];
				var card_zh_simp = row[4];
				var card_zh_piny = row[5];
				var card_en = row[6];
				var card_part_of_speech = row[7];
				document.getElementById("zh_small").style.backgroundImage = 'url("http://z.hskflashcards.com/ss' + (card_zh_trad == card_zh_simp ? card_zh_trad : card_zh_trad + '|' + card_zh_simp) + '.png")';
				if (card_part_of_speech.length)
					card_en = '<span class="part_of_speech">' + card_part_of_speech + ':</span> ' + card_en;
				document.getElementById("deck_name").innerHTML = card_level;
				document.getElementById("card_number").innerHTML = 'card: ' + card_number;
				document.getElementById("zh_text").innerHTML = card_zh_trad == card_zh_simp ? card_zh_trad : card_zh_trad + ' - ' + card_zh_simp;
				document.getElementById("zh_piny").innerHTML = card_zh_piny;
				document.getElementById("en").innerHTML = card_en;
				center_card_outer();
				show_card_outer.style.visibility = "visible";
			} else {
//				shade.style.visibility = "hidden";
			}
		}
	}
	xmlhttp.send(null);

	return false;
}

function card_hide() {
//	var shade = document.getElementById("shade");
	var show_card_outer = document.getElementById("show-card-outer");
	var comment = document.getElementById("comment-box");

	comment.style.visibility = "hidden";
	show_card_outer.style.visibility = "hidden";
//	shade.style.visibility = "hidden";

	return false;
}

function start_working() {
	// false means the lock was obtained
	if (working++) {
		working--;
		return true;
	} else {
//		document.getElementById("busy").style.visibility = "visible";
		return false;
	}
}

function stop_working() {
	// false means the lock was properly released
	if (working <= 0) {
		return true;
	} else {
		working--;
//		document.getElementById("busy").style.visibility = "hidden";
		return false;
	}
}

