function popPane(theURL, CSSclass, callback) {
	if (typeof(callback) == 'undefined') {
		callback = 'ad_fillPane';
	}
	if (getObject('pane') == null) {
		ad_createOverlay(theURL);
		var newdiv = document.createElement('div');
		newdiv.setAttribute('id','pane');
		document.body.appendChild(newdiv);
		getObject("pane").top = f_scrollTop() + 5 + 'px';
		changeClass("pane",CSSclass);
	}
	makeHttpRequest(theURL, callback, false);
}

function ad_createOverlay() {//this is reusable except for the requirement of having a 'container' div...
	var arrayPageSize = getPageSize();
	var newdiv = document.createElement('div');
	newdiv.setAttribute('id','overlay');
	newdiv.setAttribute('onclick','ad_hidePane()');
	document.body.appendChild(newdiv);
	getObject("overlay").position = 'absolute';
	getObject("overlay").top = '0px';
	getObject("overlay").left = '0px';
	getObject("overlay").height = (arrayPageSize[1] + 'px');
	getObject("overlay").width = '100%';
	getObject("overlay").backgroundColor = '#000';
	setOpacity(getRawObject('overlay'), 50);
}

function ad_hidePane() {
	document.body.removeChild(getRawObject('overlay'));
	document.body.removeChild(getRawObject('pane'));
}

function ad_fillPane(theHTML) {
	getRawObject('pane').innerHTML = theHTML;
}

//AJAX POST form, from http://www.captain.at/howto-ajax-form-post-request.php
//part of this (get(obj)) is in the PHP pane itself.
var http_request = false;

function makePOSTRequest(url, parameters, obj, URL, desiredURL) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}

http_request.onreadystatechange = function(){ alertContents(obj, URL, desiredURL)};
//http_request.onreadystatechange = alertContents;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	//http_request.setRequestHeader("Content-length", parameters.length);
	//http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

function alertContents(obj,URL,desiredURL) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			result = http_request.responseText;
			re = /There was an error/;
			//if result contains error
			if (re.exec(result) || URL == desiredURL) {
				getRawObject('pane').innerHTML = result;
			} else {
				popPane(desiredURL);
				//get(obj,desiredURL,desiredURL);
			}
			//show error page
			//else go to new requested page
		} else {
			alert('There was a problem with the request.');
		}
	}
}

function get(obj,URL,desiredURL) {
	var poststr = "";
	for (i=0; i<obj.elements.length; i++) {
		if (obj.elements[i].name) {
			if (obj.elements[i].type == 'checkbox') {
				if (!obj.elements[i].checked) {
					poststr = poststr + obj.elements[i].name + "=" + "&";
				} else {
					poststr = poststr + obj.elements[i].name + "=" + encodeURIComponent(addslashes(obj.elements[i].value)) + "&";
				}
			} else if (obj.elements[i].multiple) {
				for (j=0;j<obj.elements[i].options.length;j++) {
					if (obj.elements[i].options[j].selected) {
						poststr = poststr + obj.elements[i].name + "=" + encodeURIComponent(addslashes(obj.elements[i].options[j].value)) + "&";
					}
				}
			} else {
				poststr = poststr + obj.elements[i].name + "=" + encodeURIComponent(addslashes(obj.elements[i].value)) + "&";
			}
		}
	}
	makePOSTRequest(URL, poststr, obj, URL, desiredURL);
}

function addslashes(str) {
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}
