// AJAX Globals, sorry
var req;
var ajaxElementID;
var ajaxRequestQueue = new Array();
var ajaxRequestParams = new Array();
var ajaxBusy = 0;
// AJAX Function
function ajax_request(url,elementID,postParams) {
	if (postParams) {
		ajaxRequestParams[elementID] = postParams;
	}
	if (ajaxBusy) {
	//	alert('Is ajax busy:'+ajaxBusy);
		ajaxRequestQueue[elementID] = url;
	} else {
		process_ajax_queue(url,elementID);
	}
}

function process_ajax_queue(url,elementID) {
	ajaxBusy = 1;
//	alert('about to process this:'+url+','+elementID);
	// Hacked using a global var because you can't pass vars when using onreadystatechange
	// branch for native XMLHttpRequest object
	// Mozilla, IE7, Safari
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.elementID = elementID;
		req.onreadystatechange = process_ajax_request;
		if (ajaxRequestParams[elementID]) {
			// Need to use Post
			params = ajaxRequestParams[elementID];
			req.open("POST", url, true);
			req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			req.setRequestHeader("Content-length", params.length);
			req.setRequestHeader("Connection", "close");
			req.send(params);
		} else {
			req.open("GET", url, true);
			req.send(null);
		}
	// branch for IE/Windows ActiveX version
	// IE 6 and Older
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			ajaxElementID = elementID;
			req.onreadystatechange = process_ajax_request;
			if (ajaxRequestParams[elementID]) {
				// Need to use Post
				params = ajaxRequestParams[elementID];
				req.open("POST", url, true);
				req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				req.setRequestHeader("Content-length", params.length);
				req.setRequestHeader("Connection", "close");
				req.send(params);
			} else {
				req.open("GET", url, true);
				req.send();
			}
		}
	}
}

// AJAX Function
function process_ajax_request() {
	// only if req shows "complete"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			myResults = req.responseText;
			if (window.XMLHttpRequest) {
				elementID = req.elementID;
			} else if (window.ActiveXObject) {
				elementID = ajaxElementID;
			}
			document.getElementById(elementID).innerHTML = myResults;
			for (var elementID in ajaxRequestQueue) { // process any queued requests
				url = ajaxRequestQueue[elementID];
	//			alert('hey i need to process this:'+elementID+','+url);
				delete ajaxRequestQueue[elementID];
				process_ajax_queue(url,elementID);
				return;
			}
			ajaxBusy = 0;
		} else {
			if (window.XMLHttpRequest) {
				elementID = req.elementID;
			} else if (window.ActiveXObject) {
				elementID = ajaxElementID;
			}
			document.getElementById(elementID).innerHTML = "<FONT SIZE=2>Error</FONT>";
			for (var elementID in ajaxRequestQueue) {
				var url = ajaxRequestQueue[elementID];
//				alert('hey i need to process this:'+elementID+','+url);
				delete ajaxRequestQueue[elementID];
				process_ajax_queue(url,elementID);
				return;
			}
			ajaxBusy = 0;
		}
	}
	return;
}


function detect_browser() {
	var userAgentString = navigator.userAgent;
	var fireFox = /Firefox/;
	var internetExplorer = /MSIE/;
	if (fireFox.test(userAgentString)) {
		return 'FF';
	} else if (internetExplorer.test(userAgentString)) {
		return 'IE';
	}
	return 'IE';
}

function initialize_menu() {
	var ua = detect_browser();
	//for (var i=0; i < bct_menu.length; i++) {
	for (var sub_menu in bct_menu) {
		//alert(sub_menu);
		if (ua == 'IE') {
			populate_sub_menu(sub_menu,100,20);
		} else {
			populate_sub_menu(sub_menu,100,0);
		}
		remove_sub_menu(sub_menu);
	}
}

function toggle_sub_menu(menu) {
	var myDivId = 'menu'+menu;
	if (document.getElementById(myDivId).style.display == 'none') {
		display_sub_menu(menu);
		return;
	} else {
		remove_sub_menu(menu);
		return;
	}
}

function populate_sub_menu(menu,myLeftMargin,myTopMargin) {
	//alert('a'+menu);
	var myDivId = 'menu'+menu;
	//alert(myDivId);
	//foo = document.getElementById('menu'+menu);
	//alert(foo);
	var myDiv = document.getElementById(myDivId);
	var content = '';
	for (var subMenuItem in bct_menu[menu]) {
		//alert(subMenuItem);
		content += '<nobr><a class=menu_item href="'+bct_menu[menu][subMenuItem]+'" onMouseOver="display_sub_menu(\''+menu+'\')">'+subMenuItem+'</a></nobr><br>';
	}
	//alert(content);
	myDiv.innerHTML = content;
	myDiv.style.left = myLeftMargin;
	myDiv.style.marginTop = myTopMargin;
	return;
}

function display_sub_menu(menu) {
	//alert('b'+menu);
	//for (var i=0; i < bct_menu.length; i++) {
	for (subMenu in bct_menu){
		if (subMenu != menu) {
			remove_sub_menu(subMenu);
		}
	}
	if (menu) {
		var myDivId = 'menu'+menu;
		var myDiv = document.getElementById(myDivId);
		if (myDiv.innerHTML.length > 0) {
			myDiv.style.display = '';
		}
	}
	return;
}

function remove_sub_menu(menu) {
	//alert('c'+menu);
	var myDivId = 'menu'+menu;
	var myDiv = document.getElementById(myDivId);
	myDiv.style.display = 'none';
	return;
}
