var xmlHttp;

function can_ajax() {
	available = 0;
	if (window.xml_request || window.ActiveXObject) available = 1;
	return available;
}

function get_ajax_object (handler) { 
	var xml_obj = null;

	if (window.XMLHttpRequest) {
		xml_obj = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		xml_obj = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xml_obj;
}


function extract_form_variables (form_name) {
	var i, s; // index, string
	var f, e; // form, element
	var d = false; // done
	
	var x = 0;
	var dd;

	f = document.getElementById(form_name);
	//if (!f || !f.elements) f = document.forms[form_name];
	
	s = "";
	if (f) {
		if (f.elements) {
			for (i = 0; i < f.elements.length; i++) {
				e = f.elements[i];
				
				if (d) s += "&";
						
				if (e.type == 'checkbox' || e.type == 'radio') {
					/*
					s += e.name + "=";
					if (e.checked) s += '1';
					else s += '0';
					*/
					if (e.checked) s += e.name + "=" + e.value;
				}
				else if (e.type == 'select-multiple') {
					dd = false;
					for (var j = 0; j < e.options.length; j++) {
						if (dd) s += "&";
						if (e.options[j].selected) s += e.name + "=" + e.options[j].value;
						dd = true;
					}
				}
				else {
					s += e.name + "=" + e.value;
				}
				d = true;

			}
			
		}
	}
	return s;
}

function xaja (variables, do_post, form_name, post_to_url, post_div) {
	var xml_req = false;
	var queryString = "";
	
	//alert ("variables: " + variables + ", do_post: " + do_post + ", form_name: " + form_name + ", post_to_url: " + post_to_url + ", post_div: " + post_div);

	if (variables) queryString += variables;
	if (variables && do_post) queryString += "&";
	if (do_post) {
		x = extract_form_variables(form_name);
		if (x) queryString += x;
	}

	xml_req = get_ajax_object('');
	if (xml_req) {
		xml_req.open("POST", post_to_url, true);
		xml_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xml_req.onreadystatechange = function() {
			if (xml_req.readyState == 4 && xml_req.status == 200) {
				if (xml_req.responseText) {
					document.getElementById(post_div).innerHTML = xml_req.responseText;
				}
				else {
					//document.getElementById(post_div).innerHTML = 'An error occurred processing your request.';	
				}
			}
		}
		
		xml_req.send(queryString);
	}
}

function spinner (divId) {
	var spin = '';
	
	spin = '<div style="display: inline; width: 100%; height: 100%; vertical-align: middle; margin-top: auto; margin-bottom: auto; text-align: center;"><img src="/ava/pix/spinner.gif" alt="" border="0" /></div>';
	if (document.getElementById) document.getElementById(divId).innerHTML = spin;
	else if (document.all) document.all[divId].innerHTML = spin;
	else if (document.layers) document.layers[divId].innerHTML = spin;
}

/* not really ajax... */
function show_div (b) {
    var Display = arguments[1];
	if (!Display) Display = "";
	if (document.getElementById) document.getElementById(b).style.display = Display;
	else if (document.all) document.all[b].style.visibility = 'visible';
	else if (document.layers) document.layers[b].visibility = 'show';
}

function hide_div (b) {
	if (document.getElementById) document.getElementById(b).style.display = 'none';
	else if (document.all) document.all[b].style.visibility = 'hidden';
	else if (document.layers) document.layers[b].visibility = 'hide';
}

function toggle_div (b) {
    var Display = arguments[1];
	var status;

	if (document.getElementById) status = (document.getElementById(b).style.display == 'none') ? "h" : "v";
	else if (document.all)  status = (document.all[b].style.visibility == 'hidden') ? 'h' : 'v';
	else if (document.layers) status = (document.layers[b].visibility == 'hide') ? 'h' : 'v';

	if (Display) {
		if (status == 'v') hide_div(b);
		else if (status == 'h') show_div(b, Display);
	}
	else {
		if (status == 'v') hide_div(b);
		else if (status == 'h') show_div(b);
	}
}

function divIsVisible (b) {
	var v = 0;
	
	if (document.getElementById) v = (document.getElementById(b).style.display == 'none') ? 0 : 1;
	else if (document.all)  v = (document.all[b].style.visibility == 'hidden') ? 0 : 1;
	else if (document.layers) v = (document.layers[b].visibility == 'hide') ? 0 : 1;

	return v;
}
