var req;
var req_callback;
var div;
var bgcolor;


function ajax_dark(url) {
	document.getElementById('dark_thing').style.visibility = 'visible';
	document.getElementById('form_container_div').innerHTML = '<center><img src="/images/icons/wait30trans.gif" style="padding: 100px;"></center>';
	document.getElementById('dark_form_div').style.display = 'block';
	ajax(url, 'form_container_div');
}



function small_popup(url, html, offset_x, offset_y) {
	document.getElementById('small_popup').style.left = mouseX + (offset_x ? offset_x : 0) + 'px;'
	document.getElementById('small_popup').style.top = mouseY + (offset_y ? offset_y : 0) + 'px;'
	if (html) {
		document.getElementById('small_popup').innerHTML = html;
	} else {
		document.getElementById('small_popup').innerHTML = '<center><img src="/images/icons/wait30trans.gif" style="padding: 5px;"></center>';
		ajax(url, 'small_popup');
	}
	document.getElementById('small_popup').style.display = 'block';
}

function close_small_popup() {
	document.getElementById('small_popup').style.display = 'none';
}



function ajax(p_url, p_div, p_bgcolor) {

	url = p_url;
	div = p_div;
	bgcolor = p_bgcolor;
	if (url.indexOf('?') == -1) url = url + '?';
	url = url + '&' + Math.floor ( Math.random ( ) * 100 + 1 );
	
//	document.getElementById(div).innerHTML = '...loading...';

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("Your browser does not support XMLHttpRequest");
		return false;
	}

	if (req) {
//		alert('URL: ' + url);
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	} else {
		alert("Error");
		return false;
	}
	return req;

}


function processReqChange() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var response = req.responseText;
//			alert(response);
//			document.getElementById(div).innerHTML = '...loading...';
//			if (myShow) {
//				myShow.pause(1);
//			}
			if (response != '' && document.getElementById(div)) {
				if (document.getElementById(div).style.display == 'none') {
					document.getElementById(div).style.display = 'block';
				}
				if (bgcolor) {
					document.getElementById(div).style.backgroundColor = bgcolor;
				}
				document.getElementById(div).innerHTML = response;
			}
		} else {
			if (req.status == '404') {
				problem = '404 / file not found';
			} else {
				problem = req.status;
			}
			alert("There was a problem retrieving the data [" + problem + "]");
		}
	}
}





/* WE DO AN AJAX2 - difference is that we can also pass a funcname to be executed when AJAX call is done */
var funcname_ajax2;
function ajax_callback(p_url, p_div, funcname) {

	url = p_url;
	div = p_div;
	funcname_ajax2 = funcname;
	if (url.indexOf('?') == -1) url = url + '?';
	url = url + '&' + Math.floor ( Math.random ( ) * 100 + 1 );

    if (window.XMLHttpRequest) {
        req_callback = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req_callback = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("Your browser does not support XMLHttpRequest");
		return false;
	}

	if (req_callback) {
		req_callback.onreadystatechange = processReqChange_callback;
		req_callback.open("GET", url, true);
		req_callback.send(null);
	} else {
		alert("Error");
		return false;
	}
	return req_callback;

}


function processReqChange_callback() {
	if (req_callback.readyState == 4) {
		if (req_callback.status == 200) {
			var response = req_callback.responseText;
			if (response != '' && document.getElementById(div)) {
				if (document.getElementById(div).style.display == 'none') {
					document.getElementById(div).style.display = 'block';
				}
				document.getElementById(div).innerHTML = response;

				if (funcname_ajax2) {
					funcname_ajax2();
				}

			}
		} else {
			if (req_callback.status == '404') {
				problem = '404 / file not found';
			} else {
				problem = req_callback.status;
			}
			alert("There was a problem retrieving the data [" + problem + "]");
		}
	}
}

