/*
Charas Complete Resources Javascript
by Michael Kelly (Osmose)

Seperated parts are delimted by the string "[SPLITMARKER]"

Request Types:
1 - REMOVED - Use the 'returnpage' flag instead.
2 - Returns the content for cr_main only. Used when section doesn't change.
3 - Used by thickbox to retreive table displayed by clicking the "Read More" link on a resource.
4 - Conducts a basic search and returns content for cr_search_results.
5 - Conducts an advanced search and returns content for cr_search_results.
6 - Conducts a basic search and returns content for cr_main.
7 - Conducts an advanced search and returns content for cr_main.
8 - Requests specific download handler for MIDI files.

Category Filetypes:
0 - Normal image category.
1 - Midi category.

Sorting Types
0 - Approval Date (Descending)
1 - Approval Date (Ascending)
2 - Name
3 - Author
4 - Ranking
*/

var g_section = "";
var g_page = 1;
var g_type = 1;
var searchAdvanced = 0;
var searchQuery;
var returnpage = 0;
var sort_type = 0;

//Functions used in the Complete Resources New Interface. LOAD AFTER VARIABLES.

//Open a new thickbox, because setting the class to thickbox does not work.
function thickboxOpen(element){
	var t = element.title || element.name || null;
	var a = element.href || element.alt;
	var g = element.rel || false;
	tb_show(t,a,g);
	element.blur();
	return false;
};

//Alter the page once content is returned from the processing page.
function handleHttpResponse() {
	if (http.readyState == 4) {
		if (g_type == 2 || g_type == 6 || g_type == 7) {
			if (returnpage == 1) {
				var returned = http.responseText.split("[SPLITMARKER]");
				document.getElementById("cr_pages").innerHTML = returned[0];
				document.getElementById("cr_select_page").style.display = "inline";
				document.getElementById("cr_main").innerHTML = returned[1];
				document.getElementById("cr_pagecount").innerHTML = "Page " + g_page;
				returnpage = 0;
			} else {
				var returned = http.responseText;
				document.getElementById("cr_main").innerHTML = returned;
				document.getElementById("cr_pagecount").innerHTML = "Page " + g_page;
			}
		} else if (g_type == 4 || g_type == 5) {
			var returned = http.responseText;
			clearArray(search_tree_open);
			document.getElementById("cr_search_results").innerHTML = returned;
			document.getElementById("cr_search_container").style.display = "inline";
			document.getElementById("cr_main").innerHTML = "";
			page = 0;
			clearArray(search_tree_open);
		} else if (g_type == 2) {
			var returned = http.responseText;
			document.getElementById("cr_main").innerHTML = returned;
			document.getElementById("cr_pagecount").innerHTML = "Page " + g_page;
		}
	}
}

//Send a request to the processing page.
function cr_refresh(query) {
	http.open("GET", url + query, true);
	http.onreadystatechange = handleHttpResponse; http.send(null);
}

//Set up a new object for XMLHttpRequests.
function getHTTPObject() {
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xmlhttp = false;
			}
		}
	@else
	xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}

var http = getHTTPObject(); 

//Open or close a category in the normal list.
function catChange(cat) {
	if (tree_open[cat]==0) {
		tree_open[cat] = 1;
		document.getElementById("sect_"+cat).style.display = "inline";
		return;
	} else {
		tree_open[cat] = 0;
		document.getElementById("sect_"+cat).style.display = "none";
		return;
	}
}

//Open or close a category in the search list.
function searchCatChange(cat) {
	if (search_tree_open[cat]==0) {
		search_tree_open[cat] = 1;
		document.getElementById("search_sect_"+cat).style.display = "inline";
		return;
	} else {
		search_tree_open[cat] = 0;
		document.getElementById("search_sect_"+cat).style.display = "none";
		return;
	}
}

//Load up a section from the normal category list.
function sectLoad(sect) {
	g_section = sect;
	g_page = 1;
	sort_type = 0;
	returnpage = 1;
	g_type = 2;
	cr_refresh("sect=" + g_section + "&page=" + g_page + "&type=" + g_type + "&returnpage=" + returnpage + "&sort=" + sort_type);
	return;
}

//Load up a new section from the last search performed.
function searchSectLoad(sect,adv) {
	g_section = sect;
	g_page = 1;
	sort_type = 0;
	returnpage = 1;
	if (adv) {
		g_type = 7;
	} else {
		g_type = 6;
	}
	cr_refresh("sect=" + g_section + "&page=" + g_page + "&type=" + g_type + "&query=" + searchQuery + "&returnpage=" + returnpage + "&sort=" + sort_type);
	return;
}

//Load up another page in the current section.
function pageLoad(page) {
	if (document.getElementById("select_pages").options[page - 1].value > 0) {
		g_page = page;
		cr_refresh("sect=" + g_section + "&page=" + g_page + "&type=" + g_type + "&query=" + searchQuery + "&sort=" + sort_type);
	}
	return;
}

//Send in a request for a search.
function searchLoad(searchform) {
	searchQuery = escape(searchform.cr_search_box.value);
	if (searchAdvanced == 0) { //Basic Search
		if (!searchQuery) {
				return;
		}
		g_type = 4;
	} else { //Advanced search
		g_type = 5;
		var temp_cats;
		var i;
		if (searchform.cr_search_section.options[0].selected) {
			temp_cats = "all";
		} else {
			for (i = 1; i < searchform.cr_search_section.options.length; i++) {
				if (searchform.cr_search_section.options[i].selected) {
					temp_cats += "," + searchform.cr_search_section.options[i].value;
				}
			}
		}
		var authquery = escape(searchform.cr_search_author.value);
		searchQuery += "&cats=" + temp_cats + "&authquery=" + authquery;
	}
	cr_refresh("type=" + g_type + "&query=" + searchQuery);
	return;
}

//Switch between an advanced and basic search and hide or show the controls.
function switchSearchAdvanced() { 
	if (searchAdvanced==0) {
		searchAdvanced = 1;
		document.getElementById("cr_search_advanced").style.display = "inline";
		document.getElementById("cr_search_adv_link").innerHTML = "Go Basic";
	} else {
		searchAdvanced = 0;
		document.getElementById("cr_search_advanced").style.display = "none";
		document.getElementById("cr_search_adv_link").innerHTML = "Go Advanced";
	}
}
